[BUG] Fable→Opus model_consent_fallback auto-cancels without displaying the prompt (186 events, 0 shown) — still occurring on 2.1.233 after #79337 closed
Summary
Sessions on a Max 20x plan with "model": "claude-fable-5[1m]" silently switch to Opus 5 mid-life. The transcript records a consent event the user was never shown:
{"type":"system","subtype":"model_consent_fallback",
"content":"Switched to Opus 5 (1M context) for this session · Fable 5 requires usage credits · /model to change",
"choice":"cancelled","originalModel":"claude-fable-5",
"fallbackModel":"claude-opus-5[1m]","persistedAsDefault":false}
Across all local transcripts: 186 such records since 2026-07-24 — every single one choice: "cancelled", zero accepted, because the prompt is never displayed. In the desktop app it resolves itself instantly; the user's only signal is noticing later that the writing style changed.
Related: #79337 (closed COMPLETED 2026-08-17). This is not fixed for this account: 80 of the 186 switches occurred on 2026-08-18, running 2.1.233 — the same build that issue was triaged against. That issue centered on the consent demand firing with quota available; this report adds the auto-cancel defect and burst evidence.
Environment
- Claude Code 2.1.233, macOS 15 (Darwin 25.5.0)
- Max 20x;
settings.json→"model": "claude-fable-5[1m]" - Used primarily through the desktop app (statusline not visible there)
Evidence from 186 events (deduplicated)
| Observation | Detail |
|---|---|
| Prompt never shown | 186/186 choice:"cancelled", 0 accepted, persistedAsDefault:false on all |
| Account-wide bursts | ~40 bursts; one burst flips 4–8 different open sessions within ~90 minutes (worst on 8/18: 41 switches, 8:00–9:30 PM) |
| Fires with all in-app gauges low | Switches on 8/18 landed while the usage panel read 5-hour 21% · Weekly all-models 48% · Weekly Fable 23% |
| Not context-size related | Fable ran 477 turns above 400K context in 9 days; switch points span 72K–676K with no threshold |
| Usage credits exhausted at the time | $996.77 of a $1,000 cap already consumed — so the auto-cancelled "consent" had nothing to draw on anyway |
Why it compounds
persistedAsDefault: false means every new session starts on Fable and re-hits the wall, while each downgraded session stays on Opus for its entire remaining life — 13 of 14 never returned to Fable. That extra Opus load draws on the same shared pool, making the next cutoff arrive sooner. One measured week ran 63% Opus / 32% Fable on a Fable-default account, with the heaviest conversations all previously-downgraded ones.
Expected behavior
- The consent prompt should be displayed and blocking (as documented for interactive sessions), or the switch clearly surfaced in the desktop app. Recording
cancelledfor a choice never offered is misleading. - The message "Fable 5 requires usage credits" together with the in-app gauges points the user at numbers that don't explain the event (all gauges low at switch time). Whatever the real trigger is, surface that.
- A setting to refuse the downgrade and fail loudly would let users who care about model identity keep it.
Suggested minimum fix
A persistent one-line indicator in the desktop app — "this session is now on Opus" — would have made all 186 of these self-evident.