Repository navigation
Closed
Labels
app/fleetpkgs/fleet multicall binary + platform cratespkgs/fleet multicall binary + platform crateskind/bugSomething isn't working (prefixed form of the classic bug label)Something isn't working (prefixed form of the classic bug label)priority/normalOrdinary priority (the default)Ordinary priority (the default)source/creatorFiled by the new-issue-creator jobFiled by the new-issue-creator jobstatus:donetask/small-fixQueue packet kind: bounded fix with reproduction and targeted testsQueue packet kind: bounded fix with reproduction and targeted tests
Description
fleet(queue): fleet queue --version / repo-queue --version silently ignore trailing arguments
Summary
The queue domain's --version shortcut in the fleet multicall binary checks only the first argument and returns success no matter what follows it:
pkgs/fleet/crates/fleet/src/main.rs:458-475(run_domain,#[cfg(feature = "queue")]arm): whenargs.first()is--versionor-V, it prints the version and returnsEXIT_OK—args[1..]is never inspected.- The root built-ins in the same file got exactly this fix in fleet: root built-ins (version / capabilities / --version) silently ignore trailing arguments #5572:
run_root's--version/-V/version/capabilitiesarms all callreject_extra_argsfirst (main.rs:661-682), and the queue client's own verbs got the same treatment in fleet(queue): repo-queue silently ignores extra positional arguments on every verb #5592. The domain-level shortcut that sits in front of the queue client is the one surface both fixes missed — it intercepts the invocation beforefleet_queue::client::run(args)is ever reached.
So fleet queue --version --bogus reports success for a command line that contains an unrecognized flag, and the argv0 form repo-queue --version junk does the same.
Verified this run (2026-11-04, laptop, binary rebuilt from main 18f0aa1a6)
$ fleet queue --version → "fleet 0.1.0", exit 0 (control, correct)
$ fleet queue --version junkextra → "fleet 0.1.0", exit 0 (trailing arg silently ignored)
$ fleet queue --version --bogus → "fleet 0.1.0", exit 0 (unrecognized flag silently ignored)
$ fleet queue -V junk → "fleet 0.1.0", exit 0 (same for -V)
$ repo-queue --version junk → "repo-queue 0.1.0", exit 0 (argv0 alias route, same arm)
$ fleet --version junk → usage error, exit 2 (control: root arm, fixed by #5572)
Why it matters
- A version probe in a script or CI step that accidentally appends an argument (or a caller who mistypes a flag) gets a clean success and a version string instead of the usage error every sibling surface now returns — the exact silent-misparse class fleet: root built-ins (version / capabilities / --version) silently ignore trailing arguments #5572/fleet(queue): repo-queue silently ignores extra positional arguments on every verb #5592/fleet: serve <broker-role> silently ignores all trailing arguments — a typo'd flag starts the daemon instead of erroring #5568/fleet:
proxy serve --help(and any trailing argument) silently starts the session-proxy daemon #5575 have been eliminating across the fleet surfaces one leaf at a time. - The shortcut is also the argv0
repo-queuebinary's only version surface (the census fix noted in the arm's own comment), so the laxity ships in two binaries' shapes from one arm.
Acceptance criteria
-
fleet queue --version <anything-else>andfleet queue -V <anything-else>(including via therepo-queueargv0 alias) exit 2 with a usage error naming the unexpected argument, before printing the version — mirroringrun_root'sreject_extra_argsbehavior for the root built-ins. - Bare
fleet queue --version/-Vandrepo-queue --versionstill print the version and exit 0. - A pinning test covers the queue-domain version arm with and without a trailing argument, alongside the existing
root_builtins_reject_trailing_argumentstest inmain.rs.
Evidence
pkgs/fleet/crates/fleet/src/main.rs:458-475(unguarded queue-domain version arm),:661-682(root arms with thereject_extra_argsguard),:626-639(reject_extra_argsitself)- Probe:
fleetbinary rebuilt on the laptop from main18f0aa1a6(2026-11-04), outputs above - Related: fleet: root built-ins (version / capabilities / --version) silently ignore trailing arguments #5572 (root built-ins, closed), fleet(queue): repo-queue silently ignores extra positional arguments on every verb #5592 (repo-queue client verbs, closed), epic: one
fleetmulticall binary — search, queue, dispatch, proxy — with capability-selected builds #5412 (fleet multicall epic, open)
Metadata
Metadata
Assignees
Labels
app/fleetpkgs/fleet multicall binary + platform cratespkgs/fleet multicall binary + platform crateskind/bugSomething isn't working (prefixed form of the classic bug label)Something isn't working (prefixed form of the classic bug label)priority/normalOrdinary priority (the default)Ordinary priority (the default)source/creatorFiled by the new-issue-creator jobFiled by the new-issue-creator jobstatus:donetask/small-fixQueue packet kind: bounded fix with reproduction and targeted testsQueue packet kind: bounded fix with reproduction and targeted tests
Activity
developing-today commentedon Nov 4, 2026
CODE-1386
dezren39 commentedon Nov 4, 2026
🤖 Agent note · state: filed
fleet queue --version junkextra/--bogusandrepo-queue --version junkall print the version and exit 0, while the root controlfleet --version junkexits 2. Guarded self-solve this run (trivial, clearly scoped, low-risk): the queue-domain version arm in run_domain gets the same arity guard the root built-ins got in fleet: root built-ins (version / capabilities / --version) silently ignore trailing arguments #5572, plus a pinning test.creator-a/5603-queue-version-args(incoming)fix(fleet): queue-domain --version rejects trailing arguments (#5603) (…
dezren39 commentedon Nov 4, 2026
🤖 Agent note · state: done
--version/-Varm in run_domain now rejects a trailing argument with a usage error naming it (exit 2), and the new pinning testqueue_domain_version_rejects_trailing_argumentscovers both flags with and without a trailing argument.