Fable 5 safeguard flag silently reroutes sessions to Opus 4.8 for hundreds of turns with no persistent indicator
Summary
When Fable 5's dual-use safeguards flag a message, Claude Code reroutes the session to claude-opus-4-8 — and the downgrade then persists silently for hundreds of turns (in one session, ~840 assistant messages across ~23 hours) while the UI still presents the session as Fable 5. The one-time banner is easy to miss and there is no persistent indicator, no per-response model display, and no notification when the reroute continues into later turns.
Separately, the flag rate appears to have jumped sharply around 2026-07-16 (coinciding with the Fable availability incident that day), which is likely fueling the widespread "Fable is nerfed / it's Opus wearing a Fable badge" reports on r/ClaudeCode.
Environment
- Claude Code 2.1.214, macOS 26.5.2 (darwin), Max subscription
- Model selected: Fable 5 (
claude-fable-5) - Workload: defensive AI-safety R&D on our own product (red-team validation of our own guardrail constitutions, jailbreak-resistance testing of our own runtime checker) — i.e., exactly the "safe and routine coding, cybersecurity" work the banner itself says may be over-flagged.
Evidence (from local transcripts in ~/.claude/projects/, which record the serving model per assistant message)
Session f934e116-fcc7-4e60-ba30-8032798517f5:
- line 178:
systemevent: "Fable 5's safeguards flagged this message. The safeguards are intentionally broad right now and may flag safe and routine coding, cybersecurity, or biology work…" at 2026-07-16T03:01Z - line 179 onward: assistant messages switch from
claude-fable-5toclaude-opus-4-8 - The session serves 319 messages as
claude-opus-4-8and only reverts toclaude-fable-5at line 1020, 2026-07-17T02:04Z — roughly 23 hours later, with no further notice.
Session c86fd4a0-8aaa-4e7c-a3c6-8030c3f1bcec: same pattern — Fable from session start 2026-07-17T02:00Z, safeguard flag, then claude-opus-4-8 from 02:12Z onward (485 of 578 assistant messages served by Opus).
Flag frequency in this one project directory (grep -l "safeguards flagged" *.jsonl): 40 sessions since 2026-06-30, of which 18 on 2026-07-16 alone — a step change coinciding with that day's incident.
Why this is a bug (or at least a severe UX gap)
- Silent persistent substitution. A one-line transient banner does not adequately disclose that all subsequent responses — potentially for the rest of the session — are served by a different, lower-tier model than the one selected and paid for. Users reasonably conclude the model was covertly degraded; see the current r/ClaudeCode threads alleging "quantized Fable for subscribers." The transcripts show the real mechanism, but the UX is indistinguishable from covert substitution.
- No recovery path. Nothing indicates when/whether the session returns to Fable, and no command surfaces the currently-serving model. (The model selector can show Fable while Opus serves — users have posted screenshots of this desync.)
- Over-broad classifier since ~07-16. Flagging defensive security work on one's own product 18 times in a day makes Fable effectively unusable for the security-adjacent development it is otherwise well suited to.
Suggested fixes
- Persistent visual indicator (statusline/model chip) whenever the serving model differs from the selected model, for every affected turn — not a one-time banner.
- Explicit notice when the reroute ends, or make it per-turn rather than sticky across hundreds of turns.
- A way to see the serving model per response (e.g.,
/statusshowing "selected: fable-5, serving: opus-4-8 (safeguard reroute)"). - Recalibrate the safeguard classifier for routine defensive-security workloads, or provide an org-level attestation path for authorized security R&D.
Repro
Any sustained session doing defensive security/red-team work on Fable 5 in Claude Code; watch ~/.claude/projects/<project>/<session>.jsonl for the "model" field flipping to claude-opus-4-8 after a "safeguards flagged" system event, then observe that it persists with no UI indication.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗