Originally created by: imshaikot
The agent picker's model select offers a curated list per agent, from models in src/lib/agents/catalog.ts, whose comment says "the CLIs have no list command". Four of them now do, and the curated lists have already gone stale. Measured on 25 Sep 2026:
gemini-3-pro nor gemini-3-flash is among the 14 models agy models (1.2.11) lists, which are spelled like gemini-3.8-flash-high.claude-opus-4-8, gpt-5, sonnet-4-thinking) are missing from the 241 that cursor-agent models prints.claude-opus-5 and claude-fable-5 are a version behind; its own aliases opus and fable resolve to claude-opus-5-5 and claude-fable-5-1.Picking one of those gives a run that fails on an unknown model. And a model released after a Browsentic build can only be reached with browsentic agent model, never from the picker.
| Agent | Source | Signed out |
|---|---|---|
| Codex | its own cache, ~/.codex/models_cache.json: models[].slug where visibility is list. No process needed |
no file until Codex has run once |
| Antigravity | agy models: id<TAB>label lines, ~5 s over the network |
exit 1, Please sign in to view available models |
| Grok Build | grok models: * id (default) and - id lines |
exit 0, with You are not authenticated and a built-in list the account may not have |
| Cursor CLI | cursor-agent models: id - label lines under a heading; accepts bracket overrides such as claude-opus-4-8[effort=high] |
exit 1, Authentication required |
| OpenCode | opencode models (provider/model) |
not yet recorded |
| Claude Code, Vibe, Qwen Code | no command | — |
A live list is only worth having if every way it can fail leaves the picker no worse than today:
--model <id>. An id that starts with a dash, or holds whitespace or control characters, must never reach argv, from a listing, from the panel, or from a hand-edited config.json. Cursor's bracketed ids must still pass.Runner contract (a command or a file, plus a parser), implemented for Codex, Antigravity, Grok Build and Cursor CLI.agentInfo again when one changes. RunnerStatus carries the list and where it came from, which bumps the socket protocol.browsentic agent models <name> [--refresh].Not in scope: the macOS app's picker, which keeps building from catalog.models (it decodes the new field and ignores it); and an OpenCode lister, until a real opencode models run has been recorded.
Ticket changed by: imshaikot