[BUG] claude-fable-5 (xhigh): parent session permanently wedges — parallel subagent results never reconcile, event stream goes silent (repro 3x, 0.3.197 & 0.3.251)

Status Open
Maintainer reply None cached
Activity 1 comment · opened Aug 31, 2026

Summary

Headless Agent SDK sessions running claude-fable-5 at xhigh effort on tasks that trigger heavy parallel subagent fan-out reliably enter a permanent, silent wedge: subagents demonstrably complete their work (hundreds of files written to the workspace), but their results are never reconciled back to the parent session. The parent's task ledger keeps every task active with zero results, the SDK event stream stops entirely, and the session never recovers. Because no terminal result is emitted, the session's total_cost_usd is also never reported.

Reproduced 3 times across two SDK versions (0.3.197 and 0.3.251). The identical harness, prompt, and tool surface complete normally on claude-opus-5 and on non-Anthropic models via a different provider runtime — the failure is specific to Fable-5 xhigh parallel orchestration.

Environment

  • @anthropic-ai/claude-agent-sdk 0.3.197 and 0.3.251 (TypeScript), headless query(), streaming input mode
  • Bun 1.3.x, Linux Docker container (1 GiB limit; ~35% peak usage in failing runs — not memory pressure)
  • Model claude-fable-5, effort xhigh; large tool surface (~60 skills, 18 HTTP MCP servers)
  • All MCP/API calls proxied with ~120s per-call timeouts + circuit breaker — a hung tool returns an error event, it cannot block indefinitely

Failure signature

  1. Parent fans out a large parallel batch of Task subagents (observed 13–34 tracked tasks).
  2. Subagents execute real work — in the clearest occurrence, 256+ files of research output were written.
  3. The parent's ledger never advances: activeTaskIds stays full, resultCount = 0, awaiting_post_task_result = true.
  4. The SDK event stream stops completely — no assistant messages, no task events, no activity pings — while the container stays healthy.
  5. No terminal result ⇒ no cost accounting for the burned tokens.

Watchdog classification of occurrence 3 (SDK 0.3.251):

stalled: no container activity for 900s with autonomous work unsettled;
autonomous work did not settle before timeout
(active_tasks=34 awaiting_post_task_result=true results=0)

Occurrences

| # | Date (UTC) | SDK | Behavior |
|---|---|---|---|
| 1 | 2026-08-27 | 0.3.197 | Delivered its final answer at ~42 min, then 6 subagent tasks never settled; zero further events until a 45-min timeout |
| 2 | 2026-08-31 | 0.3.197 | Fully silent at ~34 min mid-work, 13 subagents outstanding, no final answer |
| 3 | 2026-08-31 | 0.3.251 | Silent at ~13 min; 34 tasks active, 0 results — while subagents had produced 256+ files |

Ruled out

  • Hung tools: gateway-enforced ~120s call timeouts; the clearest wedged run made zero MCP/API calls at all (subagents used tunneled fetches, which completed — the files exist).
  • Host harness: same harness/prompt/tools complete with kimi-k3, gpt-5.6-sol, and claude-opus-5.
  • Resources: ~358 MiB of 1 GiB, healthy liveness signal until silence onset.
  • Known fixes: upgrading to 0.3.251 (incl. the 0.3.225 background-subagent resume fix and 0.3.217 concurrency/nesting caps) did not resolve it — onset was faster. The 0.3.217 caps did fix claude-opus-5 on the same task (82-subagent OOM → disciplined single-subagent hour), while fable-5 xhigh still tracked 34 active tasks.

Likely related

#47936 (async subagents stopping early; ~14–30% of runs), #59962 (completed subagent work stuck in_progress), #37521 (indefinite freeze, no timeout/error), #61547 (subagents idle immediately), #28482 (indefinite mid-task hang in headless use).

Asks

  1. Fix parent-side result reconciliation for parallel subagents.
  2. Interim guidance: a known-good configuration for Fable-5 xhigh fan-out, if one exists.
  3. A diagnostic affordance: an SDK event (or on-demand task-state dump) when the parent idles with unsettled tasks for N minutes.
  4. Cost accounting for interrupted sessions — spend incurred before a wedge/kill is currently unreported.

Happy to provide correlated session data and rerun the reproduction on request.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗