Subagents can hand results back to their parent via a new SubagentHandback tool#
A new SubagentHandback tool lets a subagent deliver its final report directly to the agent that spawned it, with delivery tracked end to end
What
- A new tool,
SubagentHandback, lets a subagent send its final report straight to the agent (or main thread) that spawned it, as its one and only last tool call. It isn't a progress-update channel — it can only be called once, requires a non-empty message, and only works when the agent has an active "handback contract" with a recorded recipient. - Long reports are compacted or summarized before delivery, and get safety-review framing (blocked/refused/unavailable) attached.
- The subagent's completion result now carries a
handbackpayload (and ahandbackInterimvariant), and the finalize step computes whether the handback was sent, flagged, or withheld, appending a message to the result accordingly. - Async subagents can now explicitly hand control back to a specific owning agent (tracked as
handbackRecipient) rather than only running to completion or being polled. - For subagents running in "auto" mode, this mechanism is what actually counts as the final answer: plain trailing text is discarded unless delivered through
SubagentHandback. The feature is off by default, controlled by theCLAUDE_CODE_SENDMESSAGE_HANDBACKenvironment variable or an internal rollout gate. - Depending on the handback outcome (
send,flagged, orwithheld), the step that classifies a sub-agent's final output is skipped or has its text discarded, so results aren't double-processed.
Why This gives subagents a reliable, explicit way to report back to whatever spawned them, instead of relying on trailing text that might get lost, mis-parsed, or double-classified — useful for orchestration flows where a parent agent needs a clean, single final report from a subagent it dispatched.
Related
Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.
-
v2.1.242
Subagent reports get an anti-injection wrapper, switched off in this build
Both mention handback