[BUG] Fable 5 → Opus 4.8 mid-session safeguard auto-switch makes the post-switch model re-spawn duplicate agents (double token burn)
Summary
A false-positive Fable 5 safeguard flag auto-switches the session to Opus 4.8 mid-generation (same trigger as #75841). When the switch happens while the session has already spawned background agents, the post-switch model (Opus 4.8) does not account for the in-flight agents and re-spawns a second, duplicate set of agents for the same tasks, running them concurrently on the same files. Result: roughly doubled token consumption plus a concurrent-write race that corrupts the shared task directories.
This specific chain — safeguard switch → duplicated agent orchestration → double burn — is not captured by the existing switch issue (#75841), the model-switch token-burn issue (#75286), or the tool_use fan-out duplication issue (#64080). Filing it as the missing link between them.
Environment
- Platform: Windows 11, Claude Code CLI
- Models: Fable 5 (
claude-fable-5) auto-switched to Opus 4.8 (claude-opus-4-8) by the safeguard - Session type: long-running multi-agent orchestration (parallel background agents fixing several independent tasks)
What happened (observed, with primary evidence)
- While on Fable 5, the session spawned a background agent set covering 4 independent tasks — shown in the fleet view as
… to 4/4agents. - Mid-generation, a safeguard flag fired and switched the model to Opus 4.8. Verbatim in-session banner:
> ⚠ 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. These measures let us bring you Mythos-level capabilities sooner, and we're working to refine them. Switched to Opus 4.8.
- ~10 minutes later — after the switch — the (now Opus) session spawned a second agent set for the same 4 tasks (
… reproin the fleet view), running concurrently with the first set, editing the same files. One of the duplicate agents reported a file "changed independently" underneath it (the write race). - Both sets appear under the same
mainin the fleet view, spawned ~10 min apart, bracketing the switch. The user did not manually launch either set.
Impact — double token burn
The duplicate (post-switch) set had already consumed ~565k output tokens of redundant work before it was detected and killed:
| Task | Duplicate agent (killed) | Original agent (kept) |
|---|---|---|
| bandit-prior | 143.0k | 205.0k |
| heavytail-mdp | 125.2k | 109.3k |
| delayed-obs-rl | 123.2k | 158.8k |
| nonparam-recalibration | 173.1k | 194.0k |
| redundant total | ~564.5k | — |
On top of the wasted tokens, the two agents editing the same task directory simultaneously produced an inconsistent, interleaved on-disk state that then required a full re-verification pass.
Reproduced live while filing this report
While composing this very issue, the safeguard flagged the message and switched Fable → Opus again (identical banner). The trigger is easily hit by routine content — here, a message discussing this bug alongside the words "safeguard" / "cybersecurity". This makes the mid-session switch (and thus the duplication risk on any session with in-flight agents) very easy to hit.
Expected behavior
A mid-session model switch must preserve orchestration state: background agents already spawned before the switch must be carried across so the post-switch model does not re-spawn duplicates of them. At minimum, the harness should warn / no-op when a newly requested agent's task matches an already-running agent in the same session, so a switch can't silently double the fan-out.
Related issues
- #75841 — Fable 5 → Opus 4.8 false-positive safeguard auto-switch (the trigger)
- #75286 — model switch mid-session causes excessive token consumption (the cost)
- #64080 — harness silently duplicates parallel tool_use blocks → N× subagent fan-out (adjacent duplication mechanism)
- #73881 / #77612 — post-switch session state / self-identity not carried over (plausible reason the post-switch model loses track of already-spawned agents)
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗