Mid-session model switch not applied — UI shows the new model, session keeps running the previous one (+ silent budget loss)
Open 💬 1 comment Opened Jul 3, 2026 by drodysill
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Environment
- Claude Code v2.1.191, VS Code extension (model-switch also observed earlier in the Claude desktop app)
- macOS (Darwin 25.5.0)
- Models: Fable 5 (
claude-fable-5) → Opus 4.8 (claude-opus-4-8), switched with the[1m]context flag
Summary
Switching the model mid-session does not reliably take effect. The client UI (status line / model indicator) updates to the newly selected model, but the session continues generating on the previously active model. There is no reliable in-session way to confirm which model is actually serving requests, so the discrepancy is silent — and it spends the wrong model's budget without the user knowing.
Observed
- UI reflects model B (Opus) everywhere.
- Session identity/behavior still corresponds to model A (Fable) — the system identity remained Fable after the switch (context not regenerated to B).
- No authoritative in-session confirmation of the active model:
/statusis NOT a recognized command, and model self-report is unreliable. Neither user nor assistant could determine the truth from inside the session. - Previously reproduced in the Claude desktop app: switched there and the session kept running the prior model.
Impact
- Real, quantifiable budget loss — the core complaint. The switch's whole purpose was to move rote work OFF the scarce higher-tier (Fable) budget onto Opus. Because the switch didn't reliably take (or couldn't be confirmed), a considerable portion of the user's limited weekly Fable budget was consumed by work explicitly intended for Opus. That budget is capped and expires at week's end — burned budget is unrecoverable and directly reduces the high-value work still possible before the cap resets.
- Silent wrong-model spend, with no in-session indication.
- No way to verify, so the loss compounds — the user can't tell whether a switch worked without checking the billing dashboard afterward, by which point it's already spent. A user actively trying to conserve a scarce budget is exactly who this harms most.
Suggested fixes
- Make a mid-session
/modelswitch fully re-initialize the model context (identity/system prompt included), not just the UI label. - Add an authoritative model check (
/status, or/modelwith no args printing the currently active model) reflecting the real inference model, not the UI selection. - If a mid-session switch requires a fresh session, have the UI say so explicitly.
What Should Happen?
Expected
- The switch takes effect next turn (inference AND identity move to B), or
- if a mid-session switch can't be fully applied, the client says a restart is required — instead of showing B while continuing on A.
Error Messages/Logs
Steps to Reproduce
- Start a session on model A (here: Fable 5).
- Mid-session, switch to model B via
/model— e.g./model opus. Local output confirmed:Set model to claude-opus-4-8[1m]. - The model indicator updates to B (Opus) everywhere.
- Continue the conversation.
Claude Model
Not sure / Multiple models
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
Claude Code v2.1.191
Platform
Other
Operating System
macOS
Terminal/Shell
VS Code integrated terminal
Additional Information
_No response_
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗