diff --git a/lib/gitlab/sidekiq_cluster/cli.rb b/lib/gitlab/sidekiq_cluster/cli.rb
index cc05fabcd9a93dad1a87b157620b3beb95963df0..dd2bcca7f0f40d15b14d82b63581e53bbca8e6c0 100644
--- a/lib/gitlab/sidekiq_cluster/cli.rb
+++ b/lib/gitlab/sidekiq_cluster/cli.rb
@@ -30,14 +30,16 @@ def run(argv = ARGV)
 
         option_parser.parse!(argv)
 
+        parsed_queues = SidekiqCluster.parse_queues(argv)
+
         queues =
-          if @negated_queues&.any?
-            parsed_queues = SidekiqCluster.parse_queues(@negated_queues)
+          if @negate_queues
             parsed_queues.map { |queues| SidekiqConfig.queues(@rails_path, except: queues) }
           else
-            SidekiqCluster.parse_queues(argv)
+            parsed_queues
           end
 
+
         @logger.info("Starting cluster with #{queues.length} processes")
 
         @processes = SidekiqCluster.start(queues, @environment, @rails_path)
@@ -99,8 +101,8 @@ def option_parser
             @rails_path = path
           end
 
-          opt.on('-n', '--negate "[QUEUE,QUEUE] [QUEUE]"', "Run workers for all queues except these") do |queues|
-            @negated_queues = queues.split
+          opt.on('-n', '--negate', 'Run workers for all queues on sidekiq_queues.yml except the given ones') do
+            @negate_queues = true
           end
 
           opt.on('-i', '--interval INT', 'The number of seconds to wait between worker checks') do |int|
diff --git a/spec/lib/gitlab/sidekiq_cluster/cli_spec.rb b/spec/lib/gitlab/sidekiq_cluster/cli_spec.rb
index 77ead22fc7053aaf0687a8e5c23868af1404891e..56740340ecc173660bf37db27033033b886c4c2d 100644
--- a/spec/lib/gitlab/sidekiq_cluster/cli_spec.rb
+++ b/spec/lib/gitlab/sidekiq_cluster/cli_spec.rb
@@ -20,17 +20,17 @@
         cli.run(%w(foo))
       end
 
-      context 'with --negate argument' do
-        it 'starts Sidekiq workers for all queues except the negated ones' do
-          expect(Gitlab::SidekiqConfig).to receive(:queues).twice.and_return(['baz'])
+      context 'with --negate flag' do
+        it 'starts Sidekiq workers for all queues on sidekiq_queues.yml except the ones on argv' do
+          expect(Gitlab::SidekiqConfig).to receive(:queues).and_return(['baz'])
           expect(Gitlab::SidekiqCluster).to receive(:start)
-                                              .with([['baz'], ['baz']], 'test', Dir.pwd)
+                                              .with([['baz']], 'test', Dir.pwd)
                                               .and_return([])
           expect(cli).to receive(:write_pid)
           expect(cli).to receive(:trap_signals)
           expect(cli).to receive(:start_loop)
 
-          cli.run(['-n', 'foo,bar foo,bar'])
+          cli.run(%w(foo -n))
         end
       end
     end