/model on 2.1.280 shows stale "Update to 2.1.280+" disabled row cached by an older concurrent session
Version: 2.1.280, native install, macOS arm64
What happened: /model listed "Opus 5.5 (disabled) — Update to 2.1.280+ to use Opus 5.5" (value cc-update-required-1). This client already meets that requirement, so the row should not appear.
Repro:
- Keep a session on an older version running (here 2.1.278, started before the native auto-update).
- It refreshes the bootstrap response and caches the update-required placeholder in
~/.claude.json. - Start a new session on 2.1.280 and open
/model: the placeholder shows as a disabled row.
Evidence:
additionalModelOptionsAnsweredAt= 2026-09-22 19:13:40Z. That was 9 minutes before the 2.1.280 session started, and a 2.1.278 session was the only Claude process running at the time. The value was still unchanged after the 2.1.280 session started.- A fresh
claude -p --debug-fileon 2.1.280 at 19:30:16Z logged[Bootstrap] Fetch ok/Cache updated, persisting to disk, and its list had no placeholder.
Likely cause: additionalModelOptionsCache is one global key in ~/.claude.json, but the /api/claude_cli/bootstrap response depends on the client version (User-Agent: claude-code/<ver>). An older concurrent session's answer is therefore shown by a newer client until that client refreshes the cache.
Also: filed here because /feedback returns "server returned 403" on a Max account, with and without the transcript attached (same as #55348).
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗