diff --git a/Library/Homebrew/brew.rb b/Library/Homebrew/brew.rb
index c4a34d2981caee6737c944e45fc89704b823aefe..985a93de94a0b84830a66d02945c99c6d577b3c4 100644
--- a/Library/Homebrew/brew.rb
+++ b/Library/Homebrew/brew.rb
@@ -75,12 +75,9 @@ begin
   end
 
   # Usage instructions should be displayed if and only if one of:
-  # - a help flag is passed AND an internal command is matched
+  # - a help flag is passed AND a command is matched
   # - a help flag is passed AND there is no command specified
   # - no arguments are passed
-  #
-  # It should never affect external commands so they can handle usage
-  # arguments themselves.
   if empty_argv || help_flag
     require "cmd/help"
     Homebrew.help cmd, empty_argv: empty_argv
diff --git a/Library/Homebrew/cmd/help.rb b/Library/Homebrew/cmd/help.rb
index c8845b086e9b30a60e5bfdec0ef0c479a93d3907..bfcb6838d7ba53c1dcefee196119a7595b1a6b25 100644
--- a/Library/Homebrew/cmd/help.rb
+++ b/Library/Homebrew/cmd/help.rb
@@ -39,6 +39,8 @@ module Homebrew
     if cmd
       cmd = HOMEBREW_INTERNAL_COMMAND_ALIASES.fetch(cmd, cmd)
       path = Commands.path(cmd)
+      path ||= which("brew-#{cmd}")
+      path ||= which("brew-#{cmd}.rb")
     end
 
     # Display command-specific (or generic) help in response to `UsageError`.
@@ -61,7 +63,7 @@ module Homebrew
       exit 0
     end
 
-    # Resume execution in `brew.rb` for external/unknown commands.
+    # Resume execution in `brew.rb` for unknown commands.
     return if path.nil?
 
     # Display help for internal command (or generic help if undocumented).