anthropics / anthropics/claude-code
After a safeguard model switch, the model reports the old model's identity and denies the switch happened
- Langage dominant
- Python
- Étoiles
- 145k
- Forks
- 23.1k
- Métriques de merge des PR
- Métriques de PR en attente
Description
### 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
1. Get switched from Fable 5 to Opus 4.8 by a safeguard flag (see the companion issue on the switch
being permanent).
2. 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 carries
`message.model = claude-opus-4-8`:
> I'm **Fable 5** — model id `claude-fable-5`. That's exactly what your `/model` command 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 on
`claude-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.
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Piste de recherche
Reproduce the safeguard switch from Fable 5 to Opus 4.8, then inspect the model-switch path, the `/model` current-selection view, the status line, and the transcript context. Done means the effective model is shown consistently and the assistant can identify the fallback model and explain the switch without contradicting the session notice.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- ai, cli
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- Active
- Clarté
- Plutôt claire
- Accessibilité débutants
- 45/100