[BUG] Second SubagentHandback after resume is rejected and the subagent stops instead of reporting via SendMessage — follow-up report is silently lost

Status Open
Reported on v2.1.281
Maintainer reply None cached
Activity 1 comment · opened Sep 24, 2026

What's wrong

A subagent that has already delivered its report via SubagentHandback and is then woken up again can no longer report back. Its second SubagentHandback is rejected:

Nothing was sent: your report was already delivered (SubagentHandback delivers one report). Use SendMessage for anything further, then stop.

The subagent follows the second half of the message ("then stop") but not the first. It does not send its report via SendMessage, it just ends its turn. The caller never receives the result of the follow-up work. It still gets a completed task notification, so from the outside nothing looks wrong. The only symptom is silence.

This happened three times in one session. Each time I only noticed because I checked the side effects myself (pushed commits, PR comments) after an hour without a report.

When it happens and when it doesn't

In the same session, a different subagent was resumed via SendMessage 27 times after its first handback. It delivered all 27 follow-up reports via SubagentHandback without a problem ("Report delivered to your caller."). So a second handback is not always rejected.

The difference I could see:

| | rejected (3×) | delivered (27×) |
|---|---|---|
| Subagent type | general-purpose (has SendMessage, Agent) | custom agent with tools: Read, Grep, Glob, Bash (no SendMessage) |
| Had its own background children | yes (it spawned review subagents) | no |
| Woken by | caller's SendMessage and/or its own children's task notifications | caller's SendMessage only |

My guess is that the rejection happens when a subagent is woken by its own background children after it has already handed back. I have not verified this.

Expected behavior

One of these:

  • A resumed subagent can hand back again. Each resume is a new request from the caller, so it should get a new report.
  • Or, if only one handback is allowed per agent, the rejection should not end in a lost report. For example, deliver the text anyway as a SendMessage, or at least tell the caller that a report was rejected.

Telling the model "use SendMessage, then stop" is not reliable. In all three cases the model just stopped. A subagent without SendMessage in its tool list couldn't follow that advice anyway.

Repro (approximate)

  1. Background job session.
  2. Spawn a general-purpose subagent that spawns its own background subagents (e.g. reviewers), waits for them and hands back its report.
  3. From the main session, SendMessage the subagent with follow-up work, which again spawns background children.
  4. When the subagent tries to SubagentHandback its follow-up report, the call is rejected with the message above, and the subagent ends without reporting.

Environment

  • Claude Code 2.1.281, Linux
  • Background job session (claude started as a background job)
  • Parent session model: Opus 5.5 (1M context)

Related

  • #96225: SubagentHandback is rejected with a different "Nothing was sent" message (teammate's subagent). Same failure mode, different trigger.
  • #95601: every background agent completion delivers two events. The task notification says the same task-id may fire more than once after resume, but handback only allows one report.
  • #88741: reply of a resumed agent is lost (older, different mechanism, same symptom).

View original on GitHub ↗

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