Named Agent-tool subagent dispatch intermittently goes idle without ever returning its result
Summary
When dispatching a background subagent via the Agent tool with a name parameter (making it addressable later via SendMessage), the subagent occasionally starts, appears to run, then goes idle without ever delivering its final result back to the calling session. idle_notification events arrive (idleReason: "available") but carry no content. Follow-up SendMessage calls asking the named agent directly for its result sometimes recover the content and sometimes do not.
Frequency
Observed independently at least 4 times over roughly 10 days in the same project, across different unrelated tasks and different subagent types:
- A research/audit subagent went idle twice, was re-pinged once, went idle again with no content ever recovered in that session.
- Two independent review subagents (different names/types) both went idle after apparently completing — but in this case their full results were successfully retrieved by the parent session. So
idle_notificationalone isn't sufficient signal to distinguish a real completion from a stall. - A build subagent "went dead" mid-task; the parent session gave up waiting and did the work directly instead.
- (Most recently investigated in detail) A code-review subagent (
subagent_type: deep-reasoner,model: opus) was dispatched with a clear, self-contained review prompt. It reported spawning successfully, then sent threeidle_notificationpings over about 5 minutes withidleReason: "available"and no content, despite two directSendMessagefollow-ups explicitly asking for its verdict.ListAgentsdid not list this agent at all when checked shortly after. The user independently confirmed no such process was visibly running on their end.
What I ruled out
For case 4, I checked whether a local PreToolUse permission hook could be blocking the subagent's tool calls and causing it to silently stall waiting on an approval that would never arrive. I found no evidence of this: the task was read-only by design (Read + running local test commands), none of which match the hook's high-risk patterns, and there are no matching "block" decisions logged in the relevant time window. So this doesn't look like a permission-hook interaction on my end — it looks like something in the subagent dispatch/completion-notification path itself.
Environment
- Claude Code CLI, macOS (Darwin 25.6.0)
- Involves the
Agenttool (named, non-fork dispatch) plus cross-session addressing viaSendMessage/ListAgents - Case 4 used
model: opus; other cases used different models/subagent types, so this doesn't appear to be tied to one specific model or agent type
Why this matters
Named background subagents are the recommended pattern for independent review/verification work (e.g. "a builder should not accept its own work"). When the dispatch silently stalls instead of erroring, there's no clean signal to fall back on — you just wait on idle pings that never resolve, with no way to tell from the outside whether the agent is genuinely working, finished-but-lost, or stuck.
Request
This is intermittent and I don't have a reliable repro yet, but the pattern — idle_notification with no content, sometimes recoverable via a follow-up SendMessage and sometimes not, and the agent sometimes not appearing in ListAgents at all — suggests a race or drop in how a named/addressable subagent's completion gets surfaced back to the dispatching session. Flagging in case this is already known, or the pattern above is useful for reproducing it internally.