Follow Discord
Sweep 22 Sep 2026 · 17:19Z Build v2.1.280 501 read Stable v2.1.267 Latest v2.1.280 Next v2.1.280 Feeds RSS JSON llms.txt Unofficial
Claude Code v2.1.267 ·

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

TierUnder the hoodhow much it should matter to you
Useful2my rating, 1 to 5
Signal3worth watching, 1 to 5
AreaSubagentswhat it touches
KindInternal Changesin v2.1.267,
Group of 6 Under the hood

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 handback payload (and a handbackInterim variant), 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 the CLAUDE_CODE_SENDMESSAGE_HANDBACK environment variable or an internal rollout gate.
  • Depending on the handback outcome (send, flagged, or withheld), 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.

See this entry in the whole of v2.1.267 →

Feedback