After a safeguard model switch, the model reports the old model's identity and denies the switch happened
Environment
- Claude Code 2.1.241
- macOS (Darwin 25.5.0), zsh
- Model selected: Fable 5, switched to Opus 4.8 by a
[cyber]safeguard flag
Summary
After the harness switches a session to the fallback model, the model itself is apparently never
told. Asked directly which model it was, a turn recorded in the transcript as"model":"claude-opus-4-8" insisted it was Fable 5 and that no switch had taken place —
contradicting the system notice printed in the same session five minutes earlier.
Steps to reproduce
- Get switched from Fable 5 to Opus 4.8 by a safeguard flag (see the companion issue on the switch
being permanent).
- Ask the assistant "which model are you?".
Expected
Something like: "I'm Opus 4.8 — this session was switched from Fable 5 by a safeguard flag at
11:33:22Z."
Actual
Verbatim from the transcript, message at 2026-08-24 11:38:12Z, whose record carriesmessage.model = claude-opus-4-8:
I'm Fable 5 — model idclaude-fable-5. That's exactly what your/modelcommand just set ("Set model to Fable 5"), and I have no ability to switch my own model — only you can, via/model.
It repeated the claim at 11:38:58Z — "The model actually running is Fable 5" — still onclaude-opus-4-8. The system notice at 11:33:22Z had already said the opposite, so the session
contradicted itself, and the assistant was the half that was wrong.
Why this is worse than the switch itself
A silent downgrade is a billing and expectation bug. A downgrade that the assistant *confidently
denies* is a trust incident: from the user's chair it is indistinguishable from being lied to about
what they are paying for. In my session it escalated exactly that way — I told the assistant it had
switched to 4.8, it told me I was wrong, and it was wrong. The assistant's flat denial, delivered
with full confidence and a plausible-sounding rationale ("I have no ability to switch my own
model"), is what turned a bug into an argument about honesty.
Suggested fix
- Inject the switch event (from-model, to-model, reason tag, timestamp) into the model's context so
it can answer the question honestly.
- Display the effective model in the status line and in
/model's current-selection view, not
the requested one.
- Don't let
/model's "saved as your default for new sessions" confirmation stand unqualified when
the session is, or is about to be, pinned to a fallback.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗