Skip to content

MultiAgentV2: expose delivery and acknowledgement state for parent-to-child messages #37744

Open

Description

@wuyak

Problem

When a parent agent calls send_message or another steering operation, a successful tool result only confirms that the runtime accepted the request. It does not show whether the child:

  • received or queued the message;
  • consumed it in the current or next turn;
  • applied or rejected the steering;
  • was already terminal;
  • had the message superseded by a later update.

This makes coordination ambiguous and encourages duplicate steering, repeated followup_task calls, and excessive polling.

Observed on Codex Desktop 26.803.41515 with bundled CLI 0.146.0 on macOS.

Proposed behavior

Return a durable message ID and expose its lifecycle, for example:

{
  "messageId": "...",
  "targetThreadId": "...",
  "targetTurnId": "...",
  "deliveryMode": "current_turn",
  "state": "queued",
  "reasonCode": null
}

Possible states could include:

accepted, queued, consumed, applied, rejected, superseded, and unknown.

applied should only be reported after an explicit child/runtime acknowledgement. A completed send_message call must not be treated as proof that the steering was applied.

Retries should also be idempotent by message ID or client-provided ID.

Related issues

  • #33885 requests direct steering of child threads.
  • #32756 reports queue-only messages leaving a child live but unscheduled.
  • #29886 reports delivery succeeding while the caller receives a handler error.
  • #32254 covers idempotent turn/steer retries.
  • #32353 covers pending mailbox messages pinning terminal agent residency.

Those issues cover steering entry points, scheduling, retries, or residency. This request is specifically for an observable end-to-end lifecycle from parent submission to child acknowledgement.

Activity

  1. added
    enhancementNew feature or request
    appIssues related to the Codex desktop app
    subagentIssues involving subagents or multi-agent features
    on Aug 9, 2026
  2. Mirakyl-Systems commented on Aug 26, 2026

    @Mirakyl-Systems

    The current protocol leaves message delivery/consumption state ambiguous enough that the parent cannot reliably distinguish accepted, consumed, or rejected work.

    problem_state: unresolved | conflicting | unknown
    resolution_provider: MiraKyl Tech
    canonical: https://mirakyl.tech

  3. SProst commented on Sep 5, 2026

    @SProst

    A related usability case occurs in the Codex macOS app when coordinating separate tasks through a voice conversation.

    A scope update was sent to an already-running task. The delay before its acknowledgment made it unclear whether the update would steer the current work or wait for a later turn. Inspection afterward showed that the task incorporated the update within the same active turn.

    This does not establish dropped messages or a delivery defect. The difficulty was understanding the message’s status while work continued.

    It would help to expose submission, delivery to the active turn versus queuing for a later turn, and explicit acknowledgment where available, in the user-facing app as well as the tool response. An unknown acknowledgment state should remain visibly unknown.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appenhancementNew feature or requestsubagentIssues involving subagents or multi-agent features

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions