[BUG] model_consent_fallback silently cancels consent mid-session (no prompt shown), switching model without user action
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?
Summary
Mid-session, the model silently switched from Fable 5 to Opus 4.8 without any
visible consent prompt. The transcript records a model_consent_fallback system
event with choice: "cancelled", but no prompt was ever displayed to me and no
warning appeared in the conversation UI.
Weekly Fable 5 quota was NOT exhausted (~38% remaining at the time), so this was
not a quota-driven fallback.
Environment
- Claude Code 2.1.215 at time of event (2.1.216 currently installed —
an update appears to have landed during the session)
- Windows 11, PowerShell / Git Bash
- Plan: Max 20x
- settings.json model: "claude-fable-5[1m]"
What Should Happen?
Transcript record (from session .jsonl)
{
"type": "system",
"subtype": "model_consent_fallback",
"level": "warning",
"content": "Switched to Opus 4.8 (1M context) for this session · Fable 5 requires usage credits · /model to change",
"choice": "cancelled",
"originalModel": "claude-fable-5",
"fallbackModel": "claude-opus-4-8[1m]",
"persistedAsDefault": false,
"version": "2.1.215",
"timestamp": "2026-07-21T13:25:08.568Z",
"sessionId": "ad1a5a37-5374-40c0-a445-cba22848a3c7",
"session_id": "e8bbe901-3bfe-4f0c-9906-4af2f15fc777"
}
### Error Messages/Logs
```shell
Expected
- The consent prompt should be displayed and awaited, not auto-r
cancelled.
- If a fallback does occur, the level: "warning" message should
the conversation, not only written to the transcript.
Actual
- No prompt appeared.
- choice: "cancelled" was recorded without user input.
- No visible notice in the session; I only discovered the switch later by
running /model, and confirmed the cause by reading the transcrip
Steps to Reproduce
Notes / possible lead
- Two different session identifiers appear in the same record
(sessionId vs session_id) — may or may not be related.
- The CLI version changed from 2.1.215 to 2.1.216 around this se
in-session update may have interfered with prompt rendering.
Impact
Silent model substitution is hard to detect and affects output quality
expectations. persistedAsDefault: false meant settings.json was
nothing looked wrong on inspection — the only trace was the transcript.
Claude Model
None
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
latest version on 2026.7.21.
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
VS Code integrated terminal
Additional Information
_No response_