{"version":"2.1.267","anchor":"async-sub-agents-gain-a-handback-mechanism-for-returning-c","canonical_anchor":"new-subagenthandback-tool-for-subagent-to-parent-reporting","heading":"Subagents can hand results back to their parent via a new SubagentHandback tool","tier":"use","area":"Subagents","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.267\/e\/async-sub-agents-gain-a-handback-mechanism-for-returning-c","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.267","markdown":"### Subagents can hand results back to their parent via a new SubagentHandback tool\n\nA new SubagentHandback tool lets a subagent deliver its final report directly to the agent that spawned it, with delivery tracked end to end\n\n**What**\n\n- 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 \u2014 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.\n\n- Long reports are compacted or summarized before delivery, and get safety-review framing (blocked\/refused\/unavailable) attached.\n\n- 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.\n\n- 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.\n\n- 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.\n\n- 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.\n\n**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 \u2014 useful for orchestration flows where a parent agent needs a clean, single final report from a subagent it dispatched.\n\n- Area: Subagents\n- Names: `handbackOptIn`, `handbackTool`\n- Tier: Use it now\n- Useful: 5\/5\n- Signal: 4\/5"}