[MODEL] Main agent burns consecutive no-op turns idle-waiting for a backgrounded subagent
Preflight
- [x] I searched existing issues (closest matches are #80350 and #74050 — see "Related" below; this one is neither
ScheduleWakeupnor/loop, it is plain empty assistant turns) - [x] No sensitive information included
Type of Behavior Issue
Subagent behaved unexpectedly — the main agent burns consecutive no-op turns idle-waiting for a backgrounded subagent instead of doing independent work.
Environment
- Claude Code 2.1.241
- Windows 11, PowerShell
- Model: Opus 5 (1M context)
- Plan mode on, subagent spawned via the
Agenttool withsubagent_type: Plan
What You Asked Claude to Do
I asked it to validate a dashboard side-panel design and produce a plan. Claude decided on its own to delegate the validation to a Plan subagent (Plan(Validate dashboard side panel plan)), which was backgrounded.
What Claude Actually Did
After spawning the subagent, it produced eight consecutive turns that did nothing but announce it was waiting:
● Plan(Validate dashboard side panel plan)
⎿ Backgrounded agent (↓ to manage · ctrl+o to expand)
Thought for 31s, read 2 files, ran 1 shell command
● Updated plan
⎿ /plan to preview
● I'm waiting for the Plan agent's validation. Thought for 16s, read 2 files
● I'm waiting for the Plan agent to return. Thought for 21s, read 1 file, ran 2 shell commands
● The Plan agent is still running; waiting for it. Ran 3 shell commands
● I'm waiting for the Plan agent's result. Thought for 22s, ran 4 shell commands
● The Plan agent is still running; waiting for it. Thought for 7s, ran 3 shell commands
● I'm waiting for the Plan agent to return. Thought for 8s, read 1 file, ran 4 shell commands
● I'm waiting for the Plan agent's result. Thought for 1m 33s, ran 1 shell command
● The Plan agent is still running; I'm writing the plan with what I have and will cross-check when its result arrives.
⎿ Interrupted · What should Claude do instead?
(The transcript is Turkish; the lines above are translated. The screenshot below is the original — the red lines mark every wasted turn, all converging on the same non-event.)
Notes:
- These are not tool-blocked turns. Each one ended — a full assistant turn, thinking time included, whose entire user-visible content is "I'm still waiting."
- The thinking and shell calls in between are not progress on the task; they are re-checks of whether the agent had returned.
- It only started doing real work ("writing the plan with what I have") on the ninth turn, at which point I interrupted.
- Cost of the wait: ~7 minutes wall clock and 18% of the context window, for zero output.
Expected Behavior
The system prompt already says a subagent "runs in the background" and "you'll be notified when one completes." The model should therefore either:
- spawn the subagent and immediately continue with independent work in the same turn, or
- yield the turn once and stay silent until the completion notification arrives — not emit N status-only turns,
and never spend a turn whose only content is "still waiting." Polling a harness-tracked background task is exactly what the notification exists to replace.
A harness-side guard would help too: if an assistant turn produces no tool calls and no user-actionable text while a tracked subagent is pending, it should not be billed as a turn / consume context.
Related
- #80350 — agent calls
ScheduleWakeupprematurely instead of waiting for subagent notifications (same root cause, different symptom: there it schedules a wakeup, here it just spins turns) - #74050 — main agent uses
/loopto wait - #81002 —
/simplifyhangs waiting for subagents
Screenshot
<img width="976" height="648" alt="Image" src="https://github.com/user-attachments/assets/42000cf7-5929-4ddd-9cb4-ad50acc71f88" />
<!-- image attached below -->
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗