Subagents are resumable conversations but cannot be resumed on a different model — model-scoped failures force a full restart
Summary
When a background subagent dies from an environmental failure that is specific to the model it was spawned on — the concrete case here: Agent terminated early due to an API error: You're out of usage credits. Run /usage-credits to keep using Fable 5 or /model to switch models. — there is no supported way for the orchestrating agent to resume it on a different model.
SendMessage resumes a stopped agent from its transcript, which is the right primitive. But it takes only to / message / summary. There is no model parameter, so resuming a credit-exhausted agent resumes it into the same failing condition. The only path the orchestrator actually has is Agent(...) again with model: set, which discards the whole transcript and redoes the work.
Interactive sessions do not have this problem: the user hits /model, switches, and the same conversation continues. Subagents are conversations too. They should get the same affordance.
Repro
- Session on model A. Spawn background subagents without a
modeloverride, so they inherit A. - Exhaust credits for model A while they are running.
- Agents fail with the credit error above.
/modelto model B (which has credits).- Try to resume a failed agent.
SendMessageaccepts no model, so the resumed turn has no documented way to land on B.
Observed: the orchestrator's only reliable recovery is a fresh Agent() call with model: B, losing all accumulated context.
Expected: resume the existing transcript on B.
Why this bites orchestration specifically
The failure is silent about recovery cost. The task notification says the agent can be resumed, which reads as "resume is available", but for a model-scoped failure it isn't a real option. An orchestrator running several long-lived research/proof lanes therefore throws away hours of agent context for a condition that has nothing to do with the work.
Asks (in priority order)
modelparameter onSendMessage(or an explicitAgentResumewithmodel) — resume this transcript on a different model.- Make the failure notification state the recovery path, including which model a resume would run on. Right now the orchestrator has to infer it.
- Deterministic resume-model semantics. Related open issues report that resume already changes the effective model in undocumented ways (#73879, #74591, #76386, docs #78006). Whatever the rule is, it should be stated and stable — an orchestrator cannot recover reliably from a failure whose recovery model is unspecified.
Items 1 and 3 are the same underlying gap seen from two directions: today the model on resume is neither controllable nor documented.
Environment
- Claude Code CLI, macOS (Darwin 25.5.0)
- Session model at spawn: Fable 5; switched to Opus 5 after the failures
- Subagents spawned via the
Agenttool withrun_in_backgroundandisolation: "worktree"
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗