What happened
2026-09-15, the published build staging-20260915-4b6ec83cfbfa (dev@4b6ec83cf), linux/amd64:
$ codeaf --model deepseek/deepseek-v4-flash
error: there is no `codeaf --model`.
run `codeaf --help` for every command
codeaf chat --model deepseek/deepseek-v4-flash works. The refusal is well worded; the defect is that internal/manual/chat/starting-codeaf.md presents codeaf as the home screen and then a table titled "The flags you can start it with" (--model, --yolo, --once, …) without saying the flags belong after chat, so a reader of that page types the refused form first.
Replication
Deterministic (no model). bin/codeaf --model x prints the refusal above; bin/codeaf chat --help lists the flags. Read the manual page's flags section and note it never spells codeaf chat --model.
Field (real models). Not needed.
Where
cmd/codeaf (search there is no \codeaf) and internal/manual/chat/starting-codeaf.md(searchThe flags you can start it with`).
The fix
Either bare codeaf accepts the chat flags (it already opens the chat), or the manual page spells every example as codeaf chat --model … and says in one sentence that the flags follow chat. Pick one; the first is what a person expects from a command whose bare form is the chat.
Acceptance
- e2e:
bin/codeaf --model deepseek/deepseek-v4-flash in a workspace opens the chat with that model on the chip, exit 0 on /quit — or, if the manual road is chosen, the tmux suite's needle for the flags table quotes codeaf chat --model.
- Unit: the manual probe "how do I pick a model when I start it" reaches the page that spells the working form.
- The manual page quotes the new wording and the change entry's
invalidates names what people believed before.
What happened
2026-09-15, the published build
staging-20260915-4b6ec83cfbfa(dev@4b6ec83cf), linux/amd64:codeaf chat --model deepseek/deepseek-v4-flashworks. The refusal is well worded; the defect is thatinternal/manual/chat/starting-codeaf.mdpresentscodeafas the home screen and then a table titled "The flags you can start it with" (--model,--yolo,--once, …) without saying the flags belong afterchat, so a reader of that page types the refused form first.Replication
Deterministic (no model).
bin/codeaf --model xprints the refusal above;bin/codeaf chat --helplists the flags. Read the manual page's flags section and note it never spellscodeaf chat --model.Field (real models). Not needed.
Where
cmd/codeaf(searchthere is no \codeaf) andinternal/manual/chat/starting-codeaf.md(searchThe flags you can start it with`).The fix
Either bare
codeafaccepts the chat flags (it already opens the chat), or the manual page spells every example ascodeaf chat --model …and says in one sentence that the flags followchat. Pick one; the first is what a person expects from a command whose bare form is the chat.Acceptance
bin/codeaf --model deepseek/deepseek-v4-flashin a workspace opens the chat with that model on the chip, exit 0 on/quit— or, if the manual road is chosen, the tmux suite's needle for the flags table quotescodeaf chat --model.invalidatesnames what people believed before.