-
-
Notifications
You must be signed in to change notification settings - Fork 80.7k
[Feature]: Add one-way dispatch mode for A2A handoffs without reply-back ping-pong #44309
Copy link
Copy link
Open
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:message-lossChannel message delivery can be lost, duplicated, or misrouted.Channel message delivery can be lost, duplicated, or misrouted.impact:session-stateSession, memory, transcript, context, or agent state can drift or corrupt.Session, memory, transcript, context, or agent state can drift or corrupt.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.maturity:stableIssue affects a taxonomy feature currently scored M4/M5.Issue affects a taxonomy feature currently scored M4/M5.staleMarked as stale due to inactivityMarked as stale due to inactivity
Description
Metadata
Metadata
Assignees
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:message-lossChannel message delivery can be lost, duplicated, or misrouted.Channel message delivery can be lost, duplicated, or misrouted.impact:session-stateSession, memory, transcript, context, or agent state can drift or corrupt.Session, memory, transcript, context, or agent state can drift or corrupt.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.maturity:stableIssue affects a taxonomy feature currently scored M4/M5.Issue affects a taxonomy feature currently scored M4/M5.staleMarked as stale due to inactivityMarked as stale due to inactivity
Type
Fields
Priority
None yet
Summary
Add a dispatch-only / handoff mode for agent-to-agent message delivery that drops a task into the target session without reply-back ping-pong or announce back to the requester.
Problem to solve
Current
sessions_sendsemantics are great for agent-to-agent conversation, but they are a poor fit for a very common controller/worker workflow:In that workflow, Agent A's job should end after dispatch.
Today,
sessions_sendalways carries the reply-back ping-pong + announce lifecycle. That creates several problems for pure handoff scenarios:inter_sessionmessageinter_sessionmessage can be visually confused with a user-authored messageThis is not just cosmetic. It changes the workflow semantics. A one-way handoff ends up behaving like an internal conversation, which adds token cost, transcript noise, and routing confusion.
Proposed solution
Add an explicit dispatch-only mode for A2A delivery.
Any of the following shapes would solve the problem:
sessions_sendwith an explicit mode or flags, for example:mode: "dispatch"replyBack: falseannounce: falsesessions_deliver/sessions_enqueuewith one-way semanticsRequested behavior for dispatch mode:
This would cleanly separate two valid A2A patterns:
Alternatives considered
sessions_sendas-is and relying on prompting to suppress reply/announce behavior is brittle because the current lifecycle is framework-driven, not just model-driven.timeoutSeconds: 0is not enough because it changes waiting behavior, not the underlying reply-back / announce semantics.Impact
Affected: multi-agent controller/worker setups, especially when one agent routes work to another agent's main session
Severity: Medium to High for orchestrated workflows
Frequency: Common whenever
sessions_sendis used for handoff instead of negotiationConsequence: extra token usage, polluted requester transcripts, confusing turn ownership, and workflow drift from "dispatch" into "conversation"
Evidence/examples
Observed behavior in the current flow:
sessions_sendto Agent B with a fully-formed task orderinter_sessionuser messageRelated issues that touch adjacent parts of the same lifecycle:
Feature request: config option to suppress sub-agent announce[Feature]: Structured Callback Actions and Thread Context Inheritance for Agent HandoffsA2A sessions_send: target agent can call sessions_send back, causing duplicate messagesAdditional information
The current
sessions_sendbehavior makes sense for agent-to-agent coordination. The missing piece is a first-class dispatch semantic for cases where the caller wants a clean handoff and does not want the requester session pulled back into the loop.This should ideally be an explicit framework-level mode rather than something enforced through prompt conventions or magic strings.