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: /status is 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

  1. Make a mid-session /model switch fully re-initialize the model context (identity/system prompt included), not just the UI label.
  2. Add an authoritative model check (/status, or /model with no args printing the currently active model) reflecting the real inference model, not the UI selection.
  3. 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

  1. Start a session on model A (here: Fable 5).
  2. Mid-session, switch to model B via /model — e.g. /model opus. Local output confirmed: Set model to claude-opus-4-8[1m].
  3. The model indicator updates to B (Opus) everywhere.
  4. 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_

View original on GitHub ↗

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