/model on 2.1.280 shows stale "Update to 2.1.280+" disabled row cached by an older concurrent session

Status Open
Reported on v2.1.280
Maintainer reply None cached
Activity 1 comment · opened Sep 22, 2026

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:

  1. Keep a session on an older version running (here 2.1.278, started before the native auto-update).
  2. It refreshes the bootstrap response and caches the update-required placeholder in ~/.claude.json.
  3. 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-file on 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).

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗