Tool calls (WebFetch) can hang indefinitely with no timeout, causing permanent process stall
Description
A single WebFetch call that never returns (no response, no error) causes the entire Claude Code process to hang permanently. No timeout mechanism exists at the tool-call level.
Reproduction
Session 283dd388 on Claude Code 2.1.76 (Opus), --permission-mode bypassPermissions.
A subagent issued 2 parallel WebFetch calls to PubMed:
[39] 17:39:11 CALL id=toolu_019EmHv5aN2k2TiCRhbW33GU WebFetch (PubMed efetch)
[40] 17:39:12 CALL id=toolu_01SQ2BWcP7oNyb2AYncxytcK WebFetch (PubMed efetch)
[41] 17:39:12 RESULT id=toolu_01SQ2BWcP7oNyb2AYncxytcK err=True
id=toolu_019EmHv5aN2k2TiCRhbW33GU — never returned
One returned an error. The other silently disappeared — no response, no error, no timeout. The subagent waited indefinitely. The main agent waited for the subagent indefinitely. The process ran for 11 hours 35 minutes doing nothing (confirmed via ps -eo etime and session file not growing).
Expected behavior
Tool calls should have a timeout (e.g. 60s for WebFetch). On timeout, return an error so the model can retry or degrade gracefully.
Actual behavior
Process hangs permanently. kill is the only recovery path. All in-progress work is lost.
Impact
Makes long-running autonomous tasks (Skills, multi-step agents) unreliable. Any single tool call can permanently stall the process with no diagnostic output.
Environment
- Claude Code version: 2.1.76
- Model: Opus
- OS: macOS (Darwin 25.3.0)
- Permission mode: bypassPermissions
This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗