Desktop app "Check for Updates" reports current when embedded Claude Code engine is stale, blocking Opus 5.5/Sonnet 5.5
Environment
- Claude desktop app (macOS), app bundle version 1.52386.6
- Standalone CLI (
~/.local/bin/claude, native install): correctly updated to 2.1.287 - Desktop app's embedded Claude Code engine (
~/Library/Application Support/Claude/claude-code/): stuck at 2.1.270
Problem
The Code tab in the desktop app shows Opus 5.5 and Sonnet 5.5 as greyed out in the model picker, with the message "Update to 2.1.280+ to use Opus 5.5." However:
- Running
claude updateon the standalone CLI successfully updates it to 2.1.287. - Using the desktop app's own in-app "Check for Updates," it reports "You're up to date — installed version 2.1.287 matches the latest published on npm" — in a separate session from the one with the greyed-out models.
- Despite that, inspecting
~/Library/Application Support/Claude/claude-code/shows only2.1.266and2.1.270ever downloaded, andps auxconfirms the actually-running Code tab sessions are spawned from the2.1.270embedded binary.
So the app's update-check appears to be validating against the standalone CLI's version (or npm registry metadata) rather than the embedded engine it actually uses to spawn Code sessions, leaving users stuck on an old embedded build while being told they're current — with no way to force the embedded engine to actually update.
Impact
Opus 5.5 / Sonnet 5.5 are permanently unavailable in the desktop app's Code tab until this is fixed, regardless of restarting the app or running CLI updates. Plain Opus 5 still works.
Expected behavior
"Check for Updates" should verify and update the actual embedded Claude Code engine used by Code tab sessions, not just the separately-installed CLI/npm package version.
🤖 Generated with Claude Code