anthropics / anthropics/claude-code

[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

Ouverte
#87,832 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
area:desktop area:model duplicate platform:macos stale
Langage dominant
Python
Étoiles
145k
Forks
23.1k
Métriques de merge des PR
Métriques de PR en attente

Description

## 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:

```json
{"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

1. The consent prompt should be **displayed and blocking** (as documented for interactive sessions), or the switch clearly surfaced in the desktop app. Recording `cancelled` for a choice never offered is misleading.
2. 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*.
3. 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.

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

The report names no source files, tests, or entry points; start by locating the model_consent_fallback event and the desktop-app session model-switch handling. Reproduce the silent switch on Claude Code 2.1.233, then verify that consent is shown or the switch is visibly surfaced and that an unoffered choice is not recorded as cancelled.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
macos, python
Domaine
desktop
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
Active
Clarté
Plutôt claire
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.