-
-
Notifications
You must be signed in to change notification settings - Fork 54.4k
Description
Problem
When a sub-agent is spawned via sessions_spawn (e.g., for deep research), the completion announcement sometimes fails to deliver back to the requester session. The sub-agent completes successfully and writes its output, but the originating session never receives the result.
This means the user has to manually ask "did it come back?" and the agent has to go hunting through the session store and filesystem to find the output — defeating the purpose of the push-based announce mechanism.
Expected Behavior
When a sub-agent completes, deliverSubagentAnnouncement() should reliably deliver the result to the requester session. If delivery fails, it should retry and/or surface the failure visibly rather than silently dropping it.
Observed Behavior
- Sub-agent spawned from a Slack thread session (
agent:main:main:thread:<ts>) - Sub-agent completes, writes output file
- No announcement received in the requester session
subagents listfrom the requester session shows 0 active and 0 recent- The sub-agent session exists in the session store but the requester session has no record of it
Context
We're aware of the prior fixes:
- Gateway timeout causes message memory loss during sub-agent announcement delivery #16729 — Preserve queued announce items on delivery errors, retry failed announce drains
- Sub-agent announcements silently dropped on gateway timeout (hardcoded 60s, no retry) #17000 — Sub-agent announcements silently dropped on 60s gateway delivery timeout
These fixes are in our version (2026.2.19), but the issue persists. It's possible the announce is being delivered to a different session context than expected (e.g., main session vs. thread session), or the delivery is timing out and the retry isn't working.
Reproduction
- From a Slack DM thread session, spawn a sub-agent via
sessions_spawn(e.g., deep research task) - Wait for the sub-agent to complete (~10-20 minutes)
- Check if the requester session received the announcement
- In our case, the announcement was never received — had to manually locate the output
Environment
- OpenClaw 2026.2.19
- macOS arm64, Node 22.22.0
- Channel: Slack (socket mode)
- Sub-agent was spawned from a thread session (
agent:main:main:thread:<ts>)