diff --git a/Library/Homebrew/cli/args.rb b/Library/Homebrew/cli/args.rb
index a32c50b01c0cbaa44f35f73545907f7ccdf489ba..f494047c376a6fb51b3caf8bb8e19b0e47460ecb 100644
--- a/Library/Homebrew/cli/args.rb
+++ b/Library/Homebrew/cli/args.rb
@@ -59,6 +59,8 @@ module Homebrew
       end
 
       def named
+        return [] if remaining.nil?
+
         remaining
       end
 
diff --git a/Library/Homebrew/cmd/--cellar.rb b/Library/Homebrew/cmd/--cellar.rb
index 859d90b6d8e11407e7b976d7fb149b273ade7927..096c31bbd6165d70d1278f84965a27f78a8dfb92 100644
--- a/Library/Homebrew/cmd/--cellar.rb
+++ b/Library/Homebrew/cmd/--cellar.rb
@@ -22,7 +22,7 @@ module Homebrew
   def __cellar
     __cellar_args.parse
 
-    if ARGV.named.empty?
+    if Homebrew.args.named.blank?
       puts HOMEBREW_CELLAR
     else
       puts ARGV.resolved_formulae.map(&:rack)
diff --git a/Library/Homebrew/cmd/--prefix.rb b/Library/Homebrew/cmd/--prefix.rb
index 04135da0ac883d163880e91cd7720286dd7b771d..6969a00b260372f6cd8b927bb84fbaafee003ce2 100644
--- a/Library/Homebrew/cmd/--prefix.rb
+++ b/Library/Homebrew/cmd/--prefix.rb
@@ -22,7 +22,7 @@ module Homebrew
   def __prefix
     __prefix_args.parse
 
-    if ARGV.named.empty?
+    if Homebrew.args.named.blank?
       puts HOMEBREW_PREFIX
     else
       puts ARGV.resolved_formulae.map { |f|
diff --git a/Library/Homebrew/cmd/info.rb b/Library/Homebrew/cmd/info.rb
index 0f95eaa9e7ac6ec241902385ddc416b279fe0cee..30e0c3f3b786c590caed751c33f2af5ff0261379 100644
--- a/Library/Homebrew/cmd/info.rb
+++ b/Library/Homebrew/cmd/info.rb
@@ -67,7 +67,7 @@ module Homebrew
     end
 
     if args.category.present?
-      if ARGV.named.present? && !VALID_FORMULA_CATEGORIES.include?(args.category)
+      if Homebrew.args.named.present? && !VALID_FORMULA_CATEGORIES.include?(args.category)
         raise UsageError, "--category must be one of #{VALID_FORMULA_CATEGORIES.join(", ")} when querying formulae"
       end
 
@@ -78,13 +78,13 @@ module Homebrew
 
     if args.json
       raise UsageError, "Invalid JSON version: #{args.json}" unless ["v1", true].include? args.json
-      if !(args.all? || args.installed?) && ARGV.named.blank?
+      if !(args.all? || args.installed?) && Homebrew.args.named.blank?
         raise UsageError, "This command's option requires a formula argument"
       end
 
       print_json
     elsif args.github?
-      raise UsageError, "This command's option requires a formula argument" if ARGV.named.empty?
+      raise UsageError, "This command's option requires a formula argument" if Homebrew.args.named.blank?
 
       exec_browser(*Homebrew.args.formulae.map { |f| github_info(f) })
     else
@@ -93,7 +93,7 @@ module Homebrew
   end
 
   def print_info
-    if ARGV.named.empty?
+    if Homebrew.args.named.blank?
       if args.analytics?
         Utils::Analytics.output
       elsif HOMEBREW_CELLAR.exist?
@@ -101,7 +101,7 @@ module Homebrew
         puts "#{count} #{"keg".pluralize(count)}, #{HOMEBREW_CELLAR.dup.abv}"
       end
     else
-      ARGV.named.each_with_index do |f, i|
+      Homebrew.args.named.each_with_index do |f, i|
         puts unless i.zero?
         begin
           formula = if f.include?("/") || File.exist?(f)
diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb
index 44fb8bd961b448c39a763d9e7a32f6e72db1ac52..82f21b1751947fc4a794f4cd7aad08cc40f051ba 100644
--- a/Library/Homebrew/cmd/install.rb
+++ b/Library/Homebrew/cmd/install.rb
@@ -92,7 +92,9 @@ module Homebrew
   end
 
   def install
-    ARGV.named.each do |name|
+    install_args.parse
+
+    Homebrew.args.named.each do |name|
       next if File.exist?(name)
       next if name !~ HOMEBREW_TAP_FORMULA_REGEX && name !~ HOMEBREW_CASK_TAP_CASK_REGEX
 
@@ -100,8 +102,6 @@ module Homebrew
       tap.install unless tap.installed?
     end
 
-    install_args.parse
-
     raise FormulaUnspecifiedError if args.remaining.empty?
 
     if args.ignore_dependencies?
diff --git a/Library/Homebrew/cmd/list.rb b/Library/Homebrew/cmd/list.rb
index bcc05edc61a47c1a312eb6012873be64487dbee1..252cd7f75195bb7d60a535819934c96c986eae64 100644
--- a/Library/Homebrew/cmd/list.rb
+++ b/Library/Homebrew/cmd/list.rb
@@ -55,14 +55,14 @@ module Homebrew
     # Unbrewed uses the PREFIX, which will exist
     # Things below use the CELLAR, which doesn't until the first formula is installed.
     unless HOMEBREW_CELLAR.exist?
-      raise NoSuchKegError, ARGV.named.first unless ARGV.named.empty?
+      raise NoSuchKegError, Hombrew.args.named.first if Homebrew.args.named.present?
 
       return
     end
 
     if args.pinned? || args.versions?
       filtered_list
-    elsif ARGV.named.empty?
+    elsif Homebrew.args.named.blank?
       if args.full_name?
         full_names = Formula.installed.map(&:full_name).sort(&tap_and_name_comparison)
         return if full_names.empty?
@@ -123,10 +123,10 @@ module Homebrew
   end
 
   def filtered_list
-    names = if ARGV.named.empty?
+    names = if Homebrew.args.named.blank?
       Formula.racks
     else
-      racks = ARGV.named.map { |n| Formulary.to_rack(n) }
+      racks = Homebrew.args.named.map { |n| Formulary.to_rack(n) }
       racks.select do |rack|
         Homebrew.failed = true unless rack.exist?
         rack.exist?
diff --git a/Library/Homebrew/cmd/migrate.rb b/Library/Homebrew/cmd/migrate.rb
index d15b9998304bb769a682d93e6e5da84f84d1b740..cce46897c7eeb9ac6a86c3765952f16584b9ebe5 100644
--- a/Library/Homebrew/cmd/migrate.rb
+++ b/Library/Homebrew/cmd/migrate.rb
@@ -25,7 +25,7 @@ module Homebrew
   def migrate
     migrate_args.parse
 
-    raise FormulaUnspecifiedError if ARGV.named.empty?
+    raise FormulaUnspecifiedError if Homebrew.args.named.blank?
 
     ARGV.resolved_formulae.each do |f|
       if f.oldname
diff --git a/Library/Homebrew/cmd/missing.rb b/Library/Homebrew/cmd/missing.rb
index c8e41387f7be1c16cf1bb4cd854713898e5e325e..027b5110dc2fe9e212760e4c84e16b5a4804976d 100644
--- a/Library/Homebrew/cmd/missing.rb
+++ b/Library/Homebrew/cmd/missing.rb
@@ -30,7 +30,7 @@ module Homebrew
 
     return unless HOMEBREW_CELLAR.exist?
 
-    ff = if ARGV.named.empty?
+    ff = if Homebrew.args.named.blank?
       Formula.installed.sort
     else
       ARGV.resolved_formulae.sort
diff --git a/Library/Homebrew/cmd/style.rb b/Library/Homebrew/cmd/style.rb
index 560329f679e6ae41b0ee9d5720ef845088f64c49..65f17ba504f531ecc71d10721a01d97951c03715 100644
--- a/Library/Homebrew/cmd/style.rb
+++ b/Library/Homebrew/cmd/style.rb
@@ -38,12 +38,12 @@ module Homebrew
   def style
     style_args.parse
 
-    target = if ARGV.named.empty?
+    target = if Homebrew.args.named.blank?
       nil
-    elsif ARGV.named.any? { |file| File.exist? file }
-      ARGV.named
-    elsif ARGV.named.any? { |tap| tap.count("/") == 1 }
-      ARGV.named.map { |tap| Tap.fetch(tap).path }
+    elsif Homebrew.args.named.any? { |file| File.exist? file }
+      Homebrew.args.named
+    elsif Homebrew.args.named.any? { |tap| tap.count("/") == 1 }
+      Homebrew.args.named.map { |tap| Tap.fetch(tap).path }
     else
       Homebrew.args.formulae.map(&:path)
     end
diff --git a/Library/Homebrew/cmd/tap-info.rb b/Library/Homebrew/cmd/tap-info.rb
index 73ff8097d45d79e9cdcca228cfb6777d8ba6b63b..d71e273b8d1c607f8d0b2dcdcfd213d5080d0f4e 100644
--- a/Library/Homebrew/cmd/tap-info.rb
+++ b/Library/Homebrew/cmd/tap-info.rb
@@ -30,7 +30,7 @@ module Homebrew
     if args.installed?
       taps = Tap
     else
-      taps = ARGV.named.sort.map do |name|
+      taps = Homebrew.args.named.sort.map do |name|
         Tap.fetch(name)
       end
     end
diff --git a/Library/Homebrew/cmd/upgrade.rb b/Library/Homebrew/cmd/upgrade.rb
index 02533042e666679b9d1edc1179babd80cb700a44..ed2765d7fb25bf531f8c955e4b5dff1fe3c51128 100644
--- a/Library/Homebrew/cmd/upgrade.rb
+++ b/Library/Homebrew/cmd/upgrade.rb
@@ -61,7 +61,7 @@ module Homebrew
 
     Install.perform_preinstall_checks
 
-    if ARGV.named.empty?
+    if Homebrew.args.named.blank?
       outdated = Formula.installed.select do |f|
         f.outdated?(fetch_head: args.fetch_HEAD?)
       end
@@ -170,7 +170,7 @@ module Homebrew
     fi = FormulaInstaller.new(f)
     fi.options = options
     fi.build_bottle = args.build_bottle?
-    fi.installed_on_request = !ARGV.named.empty?
+    fi.installed_on_request = Homebrew.args.named.present?
     fi.link_keg           ||= keg_was_linked if keg_had_linked_opt
     if tab
       fi.build_bottle          ||= tab.built_bottle?
diff --git a/Library/Homebrew/cmd/uses.rb b/Library/Homebrew/cmd/uses.rb
index 9f6e235bf27aa0399e7545e06242711c733d12ce..e9151f71a2e90fccd08bbaad5e47de49e58ce749 100644
--- a/Library/Homebrew/cmd/uses.rb
+++ b/Library/Homebrew/cmd/uses.rb
@@ -55,7 +55,7 @@ module Homebrew
       opoo e
       used_formulae_missing = true
       # If the formula doesn't exist: fake the needed formula object name.
-      ARGV.named.map { |name| OpenStruct.new name: name, full_name: name }
+      Homebrew.args.named.map { |name| OpenStruct.new name: name, full_name: name }
     end
 
     use_runtime_dependents = args.installed? &&
diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb
index 2b43cba6cec7ba63d77a9f584801773b976f69b5..13a706a333d0f0b9eb891f04d27af5ac0ea92ed9 100644
--- a/Library/Homebrew/dev-cmd/audit.rb
+++ b/Library/Homebrew/dev-cmd/audit.rb
@@ -79,7 +79,7 @@ module Homebrew
     ENV.activate_extensions!
     ENV.setup_build_environment
 
-    if ARGV.named.empty?
+    if Homebrew.args.named.blank?
       ff = Formula
       files = Tap.map(&:formula_dir)
     else
diff --git a/Library/Homebrew/dev-cmd/bottle.rb b/Library/Homebrew/dev-cmd/bottle.rb
index 25d073e8a82a7fb7ac61150da0d1242605cce23d..b870e8d9aed11df0d40b1a076cd9a44394a4e5bb 100644
--- a/Library/Homebrew/dev-cmd/bottle.rb
+++ b/Library/Homebrew/dev-cmd/bottle.rb
@@ -427,9 +427,9 @@ module Homebrew
 
   def merge
     write = args.write?
-    raise UsageError, "--merge requires a JSON file path argument" if ARGV.named.empty?
+    raise UsageError, "--merge requires a JSON file path argument" if Homebrew.args.named.blank?
 
-    bottles_hash = ARGV.named.reduce({}) do |hash, json_file|
+    bottles_hash = Homebrew.args.named.reduce({}) do |hash, json_file|
       hash.deep_merge(JSON.parse(IO.read(json_file)))
     end
 
diff --git a/Library/Homebrew/dev-cmd/formula.rb b/Library/Homebrew/dev-cmd/formula.rb
index 75b2ed1590b4af1ea57106f7a35d08d5cfb82e7d..1bb5fba2f92bf0b3209e057475ce67c6aa899fab 100644
--- a/Library/Homebrew/dev-cmd/formula.rb
+++ b/Library/Homebrew/dev-cmd/formula.rb
@@ -21,7 +21,7 @@ module Homebrew
   def formula
     formula_args.parse
 
-    raise FormulaUnspecifiedError if ARGV.named.empty?
+    raise FormulaUnspecifiedError if Homebrew.args.named.blank?
 
     ARGV.resolved_formulae.each { |f| puts f.path }
   end