diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php
index 02c8c00e6..11c8018c8 100644
--- a/app/Console/Kernel.php
+++ b/app/Console/Kernel.php
@@ -2,11 +2,8 @@
 
 namespace BookStack\Console;
 
-use BookStack\Facades\Theme;
-use BookStack\Theming\ThemeService;
 use Illuminate\Console\Scheduling\Schedule;
 use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
-use Symfony\Component\Console\Command\Command;
 
 class Kernel extends ConsoleKernel
 {
@@ -38,13 +35,6 @@ class Kernel extends ConsoleKernel
      */
     protected function commands()
     {
-        // Default framework command loading from 'Commands' directory
         $this->load(__DIR__ . '/Commands');
-
-        // Load any user commands that have been registered via the theme system.
-        $themeService = $this->app->make(ThemeService::class);
-        foreach ($themeService->getRegisteredCommands() as $command) {
-            $this->registerCommand($command);
-        }
     }
 }
diff --git a/app/Theming/ThemeService.php b/app/Theming/ThemeService.php
index f095c7a8e..f0f8f033c 100644
--- a/app/Theming/ThemeService.php
+++ b/app/Theming/ThemeService.php
@@ -3,17 +3,13 @@
 namespace BookStack\Theming;
 
 use BookStack\Auth\Access\SocialAuthService;
+use Illuminate\Contracts\Console\Kernel;
 use Symfony\Component\Console\Command\Command;
 
 class ThemeService
 {
     protected $listeners = [];
 
-    /**
-     * @var Command[]
-     */
-    protected $commands = [];
-
     /**
      * Listen to a given custom theme event,
      * setting up the action to be ran when the event occurs.
@@ -54,15 +50,9 @@ class ThemeService
      */
     public function registerCommand(Command $command)
     {
-        $this->commands[] = $command;
-    }
-
-    /**
-     * Get the custom commands that have been registered.
-     */
-    public function getRegisteredCommands(): array
-    {
-        return $this->commands;
+        /** @var \Illuminate\Foundation\Console\Kernel $consoleKernel */
+        $consoleKernel = app()->make(Kernel::class);
+        $consoleKernel->registerCommand($command);
     }
 
     /**
diff --git a/tests/ThemeTest.php b/tests/ThemeTest.php
index 9aa7873b0..f04250bff 100644
--- a/tests/ThemeTest.php
+++ b/tests/ThemeTest.php
@@ -7,8 +7,10 @@ use BookStack\Entities\Models\Page;
 use BookStack\Entities\Tools\PageContent;
 use BookStack\Facades\Theme;
 use BookStack\Theming\ThemeEvents;
+use Illuminate\Console\Command;
 use Illuminate\Http\Request;
 use Illuminate\Http\Response;
+use Illuminate\Support\Facades\Artisan;
 use Illuminate\Support\Facades\File;
 use League\CommonMark\ConfigurableEnvironmentInterface;
 
@@ -206,6 +208,16 @@ class ThemeTest extends TestCase
         $this->assertStringContainsString('donkey=donut', $redirect);
     }
 
+    public function test_register_command_allows_provided_command_to_be_usable_via_artisan()
+    {
+        Theme::registerCommand(new MyCustomCommand);
+
+        Artisan::call('bookstack:test-custom-command', []);
+        $output = Artisan::output();
+
+        $this->assertStringContainsString('Command ran!', $output);
+    }
+
     protected function usingThemeFolder(callable $callback)
     {
         // Create a folder and configure a theme
@@ -220,3 +232,10 @@ class ThemeTest extends TestCase
         File::deleteDirectory($themeFolderPath);
     }
 }
+
+class MyCustomCommand extends Command {
+    protected $signature = 'bookstack:test-custom-command';
+    public function handle() {
+        $this->line('Command ran!');
+    }
+}
\ No newline at end of file