Skip to content

[Bug] Subagent announce completion fails consistently on v2026.3.7+ — lane wait times up to 60min #45075

Description

@Adam-Researchh

Summary

Subagent completion announcements consistently fail to deliver results back to the parent session. Sub-agents complete their work but the announce mechanism times out, causing the parent agent to never receive the result. User must manually prompt for the final answer.

This regression worsened after upgrading to v2026.3.11 code (previously less frequent on earlier versions).

Related: #38300, #24923, #24514

Environment

  • OpenClaw version: 2026.3.7 (also reproduced on 2026.3.11)
  • OS: macOS (Darwin 25.3.0 arm64, Mac Studio M1 Ultra)
  • Channel: Telegram
  • Model: anthropic/claude-opus-4-6
  • Node: v25.8.0

Evidence from gateway.log

Announce failures (12 total in last week)

2026-03-06 — 1 failure
2026-03-09 — 5 failures (up to retry 4/4)
2026-03-11 — 2 failures
2026-03-12 — 4 failures

Sample log lines:

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

Lane wait times (gateway.err.log) — extreme values

lane=session:agent:main:main waitedMs=139151   (2.3 min)
lane=session:agent:main:main waitedMs=289957   (4.8 min)
lane=session:agent:main:main waitedMs=619720   (10.3 min)
lane=session:agent:main:main waitedMs=2419771  (40.3 min)
lane=session:agent:main:main waitedMs=3599865  (60.0 min)

When lane waits exceed the 60s announce timeout + retry budget, the announce silently falls back to channel-only delivery. Parent agent session never gets a continuation turn.

Expected Behavior

Sub-agent completes → result injected into parent session → parent agent processes result and responds to user.

Actual Behavior

Sub-agent completes → direct announce times out on lane contention → falls back to Telegram channel post only → parent agent never gets triggered → user must manually ask "what happened?" to get the result.

Impact

  • Every sub-agent task (coding, research, analysis) requires manual follow-up
  • Breaks the spawn → delegate → return workflow that sessions_spawn is designed for
  • Effectively makes sub-agents unusable for autonomous pipelines

Suggested Improvements

  1. Announce should bypass lane contention — inject result as a priority system event, not queue behind normal messages
  2. Fallback should still trigger parent turn — even if direct announce fails, queue a system event so the parent gets a continuation turn eventually
  3. Configurable timeoutannounceTimeoutMs in agent config, since Opus turns on large context can easily exceed 60s
  4. Better observability — log clearly when announce downgrades from session-inject to channel-only

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions