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

TierNothing to try yethow much it should matter to you
Useful4my rating, 1 to 5
Signal4worth watching, 1 to 5
AreaSubagentswhat it touches
KindIn Developmentin v2.1.267,
Group of 6 Nothing to try yet

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.

Read from
Names in the bundleSubagentHandback
Feature flag
tengu_lively_waffle Not enough to say

Nothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.

This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.267: off

Read once, for one account on one subscription tier, against v2.1.267. It isn't a statement about your account. What a flag value here can and cannot tell you

What the documentation says
Documented inclaude-code/hooks
Since it was published

The entry above is what we published on the day. These lines were added later, as Anthropic's own pages caught up, and they sit beside the original rather than replacing it.

Added since A small documentation edit on Create custom subagents touched a line naming SubagentHandback after this was published. The second filter applies to subagents running in the background. Apart from `Agent` and `ExitPlanMode`, which follow the first filter's conditions wherever the subagent runs, a background subagent keeps every MCP tool but only these built… sub-agents see the edit
Confirmed since Anthropic's documentation has since written up SubagentHandback, on Hooks reference. | `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | The subagent's final text blocks, or, for a subagent whose report goes through `SubagentHandback`, a short note about that hand-back in their place | hooks see the edit
What has happened since
Flag reading moved The flag server now returns on for tengu_lively_waffle, read as this account. A reading is one sample. Claude Code evaluates its flags remotely, so no client sees the targeting rule behind a value and this says nothing about your account.
Flag reading moved The flag server now returns off for tengu_lively_waffle, read as this account. A reading is one sample. Claude Code evaluates its flags remotely, so no client sees the targeting rule behind a value and this says nothing about your account.
Flag reading moved The flag server now returns on for tengu_lively_waffle, read as this account. A reading is one sample. Claude Code evaluates its flags remotely, so no client sees the targeting rule behind a value and this says nothing about your account.

See this across every release →

How sure we are
Something disagreesSomething we can check disagrees with this entry, or the writer said they could not settle it.
The writer flagged doubtNothing has been read yet about whether the `tengu_lively_waffle` flag that controls this is on or off by default.
Anthropic's documentation agreesAnthropic's documentation has since written up SubagentHandback, on Hooks reference.
The name it cites is new in this buildNew in this build: tengu_lively_waffle

See this entry in the whole of v2.1.267 →

Feedback