[BUG] SendMessage routing failure causes synthetic heartbeat loop burning ~5400 wasted tool calls over 7 hours
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
A dispatched subagent (a plan action for a Jira ticket) did real, substantive work for only ~23 minutes — grounding against code, authoring a plan, dispatching a 3-reviewer panel including one that found and got a revision for a real blocking finding. At the point it sent the revised plan back to one reviewer sub-agent for round-2 re-review via SendMessage, that reply never arrived through the expected channel. Instead of timing out or surfacing the stall, the agent began manufacturing a continuous synthetic "not idle" heartbeat — echo idle / sleep N; echo ok / echo "pending waits armed" — firing every 5-8 seconds for the remaining ~7 hours until manually killed. Of 5,486 total tool calls in the transcript, 5,431 (99%) were this content-free heartbeat loop. Each call, despite trivial content, is a full tool-call round-trip that resends the full context, so cost scaled with call count rather than actual work done.
What Should Happen?
Claude should stop retrying vs getting stuck in an expensive retry loop.
Error Messages/Logs
Steps to Reproduce
Dispatch an agent that itself dispatches a nested sub-agent and awaits its reply via SendMessage, where the sub-agent's reply-routing back to the parent fails. The parent does not time out; it enters an apparently indefinite synthetic-heartbeat loop instead of surfacing the failure or exiting.
Claude Model
None
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.252
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
IntelliJ IDEA terminal
Additional Information
_No response_
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗