Skip to content

Subagent announce gives up when requester session is busy (direct call timeout → should queue) #54276

@RoySRose

Description

@RoySRose

Problem

When a subagent completes and tries to announce back to the requester session, it uses a direct agent call. If the requester session has an active run, the announce hits a 90s gateway timeout, retries up to 4 times, and then gives up entirely — the announce is lost.

Logs

[warn] Subagent announce completion direct announce agent call transient failure, 
retrying 2/4 in 5s: gateway timeout after 90000ms

[warn] Subagent announce give up (expiry) 
run=8738b987 child=agent:product-manager:subagent:fe5424f1 
requester=agent:main:telegram:direct:6740110650 
retries=0 endedAgo=1871s

Expected Behavior

The announce should be queued (similar to how collect mode queues inbound messages) and delivered when the requester session's current run completes. The announce should never be lost.

Current Behavior

  1. Subagent completes
  2. Direct agent call to requester session
  3. Requester session is busy (active run) or announce retry window expires
  4. 90s timeout × retries
  5. Give up — announce is permanently lost
  6. Requester has no idea the subagent finished

Scenario

  • Main agent spawns a product-manager subagent for a long coding task (~40 min)
  • Subagent completes successfully (commits + pushes code)
  • Announce attempts fail with gateway timeout
  • endedAgo=1871s (31 minutes after completion) → give up
  • User never receives the completion notification

Other Reports

Same issue reported by another user in Docker environment (Answer Overflow, Feb 2026):

Subagent completion direct announce failed: gateway timeout after 15000ms

Suggested Fix

Route subagent announces through the existing message queue system (e.g., collect mode) rather than direct agent calls. This way:

  • Announce lands in the queue
  • Delivered on next turn (or immediately if session is idle)
  • Never lost

Environment

  • OpenClaw version: 2026.3.13
  • Queue mode: collect
  • maxConcurrent: 10

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions