Conversation
Anthropic released Claude Opus 5.5 on 2026-09-22 and the picker still stops at Opus 5, so the only way to reach the new model from Happy is to leave the app and pass --model on the machine running the session. Both rows carry full model IDs for the reason the list already documents: the short aliases do not all resolve to the model the row names. The 1M-context build is a separate row, as Opus 5's is, because the bracket suffix is part of the ID Claude Code accepts rather than a flag it ignores. Both spellings were run against the installed CLI (2.1.280) before being offered here, so neither row can send a session to an ID the harness rejects. The rows sit at the head of the Opus group rather than the top of the list, so the picker keeps grouping by family with each family's newest member first. Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>
Proof — the picker offers Opus 5.5Captured locally: a throwaway standalone The row order was read back from the live DOM as well as screenshotted, so the frame is not the only evidence:
One framing note: the capture uses a 1000px-wide viewport on purpose. At ≥1100px the picker renders embedded and scrolls at ~4 rows ( |
![Claude model picker showing Opus 5.5 and Opus 5.5 [1M] above Opus 5](https://github.com/chphch/happy/releases/download/pr-proofs/1827-model-picker-opus55.png)
Claude Opus 5.5 shipped on 22 September and the Claude picker still stops at Opus 5, so reaching the new model from Happy means leaving the app and passing
--modelon the machine running the session. This adds two rows —claude-opus-5-5and the 1M-contextclaude-opus-5-5[1m]— at the head of the Opus group. Every existing row is untouched, and so is the code default (claude-opus-5).Why these exact keys
[1m]row, following Opus 5's precedent rather than Fable 5.1's. The bracket suffix is part of the ID Claude Code accepts rather than a flag it drops, so the 1M build is a real second variant. Fable 5.1 has no such row because 1M is that model's default; Opus 5.5 has both.claude --model claude-opus-5-5andclaude --model 'claude-opus-5-5[1m]'each returned a completion — so neither row can hand a session an ID the harness rejects.Placement
At the head of the Opus group, not the top of the list. The catalog groups by family with each family's newest member first, and this keeps that.
Opus 5.5 [1M]therefore sits betweenOpus 5.5andOpus 5, matching how the Opus 5 pair is already ordered.Proof
Screenshot in the comment below: the
/newmodel picker open, showing all seven Anthropic rows in one frame withOpus 5.5andOpus 5.5 [1M]above the currently-selectedOpus 5. Captured on a throwaway standalonehappy-server(PGlite) + Expo web, authenticated via the dev-token URL bypass and driven headlessly with Playwright; the row order was also read back from the live DOM rather than eyeballed.vitest run sources/components/modelModeOptions.test.tspasses with the assertions updated alongside, andtsc --noEmitis clean.🤖 Generated with Claude Code