Bug type
Regression (worked before, now fails)
Beta release blocker
No
Summary
OpenClaw 2026.5.3-1 gateway emits chronic 10-second timeouts on local WebSocket handshakes, outbound HTTP fetches, and pi-trajectory-flush cleanup. The downstream effect is Subagent announce failed: GatewayTransportError: gateway timeout after 10000ms events that prevent parent agents from receiving sub-agent output, leaving Discord/Slack chat sessions visibly unanswered.
Steps to reproduce
- Run OpenClaw 2026.5.3-1 gateway on macOS, single host, gateway transport
ws://127.0.0.1:18789.
- Configure at least one orchestrator agent that spawns a sub-agent via
sessions_spawn. In the observed environment: kirk (openai-codex/gpt-5.4, has sessions_spawn allowed and tyler in subagents.allowAgents) → spawns tyler (openai-codex/gpt-5.3-codex, has exec).
- After ~30+ minutes of gateway uptime, send the orchestrator a chat message that requires sub-agent delegation (e.g., a question that requires a
sf data query or local file rg search).
- Observe
~/.openclaw/logs/gateway.err.log. The sub-agent run completes (embedded run agent end ... result=success), then the announce-back path emits:
Subagent announce failed: GatewayTransportError: gateway timeout after 10000ms
Gateway target: ws://127.0.0.1:18789
repeated 3 times, followed by:
[warn] Subagent announce give up (retry-limit) run=<runId>
child=agent:tyler:subagent:<sessionId>
requester=agent:kirk
retries=3 endedAgo=135s
- The parent agent (
kirk) waits its full turn timeout (270 s by default), then falls back to embedded mode without sub-agent output. The chat client shows the typing indicator throughout; no reply lands.
Expected behavior
When a parent agent calls sessions_spawn and the child agent's run completes successfully, the child's output should be returned to the parent within the configured retry budget (default 3 × 10 s WS round-trips). The parent should then synthesize a reply that includes the child's results. This was the observed behavior in this same environment as recently as 2026-04-29 (last successful sub-agent-driven cron run for the fluidcloud-deal-intelligence skill). On 2026-05-04 the same skill begins emitting Subagent announce failed errors instead.
Actual behavior
Sub-agent run completes successfully (embedded run agent end ... result=success), but the announce-back to the parent fails 3× with GatewayTransportError: gateway timeout after 10000ms, after which Subagent announce give up (retry-limit) fires. The parent agent receives no payload from the child, waits the full turn timeout (270 s), then falls back to embedded execution with no sub-agent context. The end user sees a persistent typing indicator in Discord/Slack with no reply.
This is part of a broader pattern of 10-second timeouts across the gateway:
- 694
[fetch-timeout] fetch timeout after 10000ms events in current gateway.err.log (Discord users/@me, Telegram getMe)
- 470
[agent/embedded] agent cleanup timed out: step=pi-trajectory-flush timeoutMs=10000 events
- 34
[ws] handshake timeout events on the local loopback 127.0.0.1:18789
All three timeout types fire at the same 10 000 ms budget, simultaneously, in clustered intervals.
OpenClaw version
2026.5.3-1 (2eae30e)
Operating system
macOS 26.3 (build 25D125), Apple Silicon
Install method
npm global install (Homebrew Node 22). Resolved binary at /opt/homebrew/lib/node_modules/openclaw/dist/run-main-CWn0ToOV.js
Model
Parent: openai-codex/gpt-5.4 (kirk) Child: openai-codex/gpt-5.3-codex (tyler) Pattern observed across multiple parent/child combinations; not model-specific.
Provider / routing chain
chat client (Discord plugin or local CLI) → openclaw gateway (ws://127.0.0.1:18789) → embedded agent runner → openai-codex provider via OAuth (ChatGPT-account tier, profile [email protected]) → api.openai.com Codex Responses No proxy, no router, single-host loopback gateway, single OAuth profile per provider.
Additional provider/model setup details
- 31 agents across 6 pod-head workspaces. Pod heads: openai-codex/gpt-5.4. Sub-agents: openai-codex/gpt-5.5. Executors: openai-codex/gpt-5.3-codex.
- Per-agent fallback chain (pod heads): gpt-5.4 → gpt-5.4-mini → gemini-2.5-pro → mistral-large-2512 → claude-sonnet-4-6.
- Per-agent fallback chain (sub-agents and executors): primary → gpt-5.4-mini → mistral-medium/small → claude-haiku.
- agents.defaults.thinking is unset; per-agent thinking inherits openclaw default (medium for reasoning models).
- Memory plugin: memory-lancedb-pro v1.1.0-beta.10 (community, jiti-loaded from index.ts), autoCapture + autoRecall enabled, Jina v5 embeddings, hybrid BM25+vector retrieval.
- All provider auth verified working via direct API probe at the time of observation: openai-codex OAuth valid (10d remaining), Mistral 200, Gemini 200 on direct calls (different shape than gateway emits — see ruled-out cause below), Anthropic env-key present.
Logs, screenshots, and evidence
Sample sub-agent announce-back failure (parent: kirk, child: tyler):
2026-05-06T15:57:08 [agent/embedded] embedded run agent end:
runId=5b488235 model=gpt-5.3-codex provider=openai-codex result=success
2026-05-06T15:58:10 Subagent announce failed: GatewayTransportError: gateway timeout after 10000ms
Gateway target: ws://127.0.0.1:18789 Source: local loopback Bind: loopback
2026-05-06T15:58:20 Subagent announce failed: GatewayTransportError: gateway timeout after 10000ms
2026-05-06T15:58:30 Subagent announce failed: GatewayTransportError: gateway timeout after 10000ms
2026-05-06T16:00:00 [warn] Subagent announce give up (retry-limit)
run=5b488235 child=agent:tyler:subagent:b44e0fde
requester=agent:kirk:explicit:gateway-fallback-eb230810-dd4a-49f7-83f8-ab8750b71b88
retries=3 endedAgo=135s
Sample local WS handshake timeout:
2026-05-07T06:25:06.316-07:00 [ws] handshake timeout
conn=3afb56c1-f33e-4f85-bae5-480131cdb3ef
peer=127.0.0.1:49914->127.0.0.1:18789
remote=127.0.0.1
Sample outbound fetch timeout:
2026-05-07T09:40:33.736-07:00 [fetch-timeout] fetch timeout after 10000ms (elapsed 11224ms)
operation=fetchWithTimeout url=https://discord.com/api/v10/users/@me
Frequency in current `gateway.err.log` (single 24-hour window):
- fetch-timeout events: 694
- agent cleanup timed out (pi-trajectory-flush): 470
- ws handshake timeout (loopback :18789): 34
- Subagent announce failed: present across multiple distinct runIds; rotated logs show pattern recurring daily since 2026-05-04
Impact and severity
Affected users/systems/channels:
- All chat surfaces that depend on sub-agent delegation (Discord ask-* channels, Slack ask-* channels via
slack-openclaw-bridge, direct CLI invocation when the agent's logic spawns a sub-agent).
- Specifically affects orchestrator agents (pod heads in this setup: kirk, jessica, ralph, tammy, harrel, dr-attia, main) when they delegate to executor sub-agents (tyler, work, luther, gus, alan).
Severity: Blocks workflow.
- Direct CLI calls fall back to embedded mode (degraded but functional — no sub-agent output).
- Discord/Slack chat sessions show typing indicator with no reply, requiring user to manually retry or wait for gateway restart.
Frequency: Intermittent, increasing.
- First clearly observed 2026-05-04. Recurs ~daily, sometimes multiple times per day.
- A detached gateway restart (
openclaw gateway stop; openclaw gateway start via nohup) clears the cumulative state for ~30–60 minutes; cascade returns afterward.
- The 10-second timeout pattern is constant in the log; it just takes time to accumulate to user-visible levels.
Consequence:
- Sub-agent-driven cron jobs (e.g., daily Salesforce hygiene reports, daily Grain ingestion) intermittently produce incomplete output because parent agents synthesize without child input.
- Conversational queries to orchestrator agents that should delegate (e.g., "look up X in Salesforce") return either no reply or a guess-based reply rather than the queried data.
- Operator must manually recover via gateway restart on observation; no auto-recovery.
Additional information
Workaround in use:
A detached gateway restart restores normal operation for ~30–60 minutes. Implemented as a script that backgrounds the stop+start so the agent triggering the restart can finish replying first. This is a band-aid; the cascade returns.
Ruled-out causes (verified via direct probes at the time of observation):
- Network: Direct curl to https://discord.com/api/v10/users/@me and https://api.telegram.org/bot.../getMe from the same host returns HTTP 200 in <500 ms.
- Auth: All provider tokens validated. openai-codex OAuth has 10 days remaining. Other providers respond 200 on direct probe.
- CPU/memory: Gateway process consistently at 0.4% CPU, 382 MB RSS, 69 fds open (limit 1,048,576) at the time WS/fetch timeouts fire. No OS-level resource pressure.
- Specific LLM provider failure mode: Removed
google/gemini-2.5-flash-lite from agent fallback chains (was returning HTTP 400 with no body for openclaw's request shape, despite working on direct curl probes). Cascade persists post-removal.
- Specific noisy plugin: Disabled telegram polling and locally patched memory-lancedb-pro to disable its broken
runBackup loop (separate chronic TypeError [ERR_INVALID_ARG_TYPE]: path argument undefined). Cascade persists post-disable.
Observation that may help diagnosis:
The fact that loopback 127.0.0.1 WS handshakes time out at the same 10-second budget as outbound HTTP fetches suggests the timeouts share a common cause inside the gateway process rather than at the network or remote-service layer. Whether this is event-loop blocking, a shared timeout constant, or something else is not directly observable from my position — happy to capture additional traces if you can point me at debug flags.
Last known good: Sub-agent-driven workflows ran reliably as recently as 2026-04-29. The fluidcloud-deal-intelligence cron skill (which spawns Tyler then Josh from Kirk) executed cleanly on 2026-04-29 with full sub-agent output reaching the parent.
First known bad: 2026-05-04 — first observed agent cleanup timed out events and Subagent announce failed errors in this environment.
I am not aware of an OpenClaw version change between 2026-04-29 and 2026-05-04 in this install (openclaw was 2026.5.3-1 throughout the window), but I cannot rule out a plugin update or an upstream provider response-shape change as the trigger.
Bug type
Regression (worked before, now fails)
Beta release blocker
No
Summary
OpenClaw 2026.5.3-1 gateway emits chronic 10-second timeouts on local WebSocket handshakes, outbound HTTP fetches, and
pi-trajectory-flushcleanup. The downstream effect isSubagent announce failed: GatewayTransportError: gateway timeout after 10000msevents that prevent parent agents from receiving sub-agent output, leaving Discord/Slack chat sessions visibly unanswered.Steps to reproduce
ws://127.0.0.1:18789.sessions_spawn. In the observed environment:kirk(openai-codex/gpt-5.4, hassessions_spawnallowed andtylerinsubagents.allowAgents) → spawnstyler(openai-codex/gpt-5.3-codex, hasexec).sf data queryor local filergsearch).~/.openclaw/logs/gateway.err.log. The sub-agent run completes (embedded run agent end ... result=success), then the announce-back path emits:repeated 3 times, followed by:
kirk) waits its full turn timeout (270 s by default), then falls back to embedded mode without sub-agent output. The chat client shows the typing indicator throughout; no reply lands.Expected behavior
When a parent agent calls
sessions_spawnand the child agent's run completes successfully, the child's output should be returned to the parent within the configured retry budget (default 3 × 10 s WS round-trips). The parent should then synthesize a reply that includes the child's results. This was the observed behavior in this same environment as recently as 2026-04-29 (last successful sub-agent-driven cron run for thefluidcloud-deal-intelligenceskill). On 2026-05-04 the same skill begins emittingSubagent announce failederrors instead.Actual behavior
Sub-agent run completes successfully (
embedded run agent end ... result=success), but the announce-back to the parent fails 3× withGatewayTransportError: gateway timeout after 10000ms, after whichSubagent announce give up (retry-limit)fires. The parent agent receives no payload from the child, waits the full turn timeout (270 s), then falls back to embedded execution with no sub-agent context. The end user sees a persistent typing indicator in Discord/Slack with no reply.This is part of a broader pattern of 10-second timeouts across the gateway:
[fetch-timeout] fetch timeout after 10000msevents in currentgateway.err.log(Discordusers/@me, TelegramgetMe)[agent/embedded] agent cleanup timed out: step=pi-trajectory-flush timeoutMs=10000events[ws] handshake timeoutevents on the local loopback127.0.0.1:18789All three timeout types fire at the same 10 000 ms budget, simultaneously, in clustered intervals.
OpenClaw version
2026.5.3-1 (2eae30e)
Operating system
macOS 26.3 (build 25D125), Apple Silicon
Install method
npm global install (Homebrew Node 22). Resolved binary at /opt/homebrew/lib/node_modules/openclaw/dist/run-main-CWn0ToOV.js
Model
Parent: openai-codex/gpt-5.4 (kirk) Child: openai-codex/gpt-5.3-codex (tyler) Pattern observed across multiple parent/child combinations; not model-specific.
Provider / routing chain
chat client (Discord plugin or local CLI) → openclaw gateway (ws://127.0.0.1:18789) → embedded agent runner → openai-codex provider via OAuth (ChatGPT-account tier, profile [email protected]) → api.openai.com Codex Responses No proxy, no router, single-host loopback gateway, single OAuth profile per provider.
Additional provider/model setup details
Logs, screenshots, and evidence
Impact and severity
Affected users/systems/channels:
slack-openclaw-bridge, direct CLI invocation when the agent's logic spawns a sub-agent).Severity: Blocks workflow.
Frequency: Intermittent, increasing.
openclaw gateway stop; openclaw gateway startvia nohup) clears the cumulative state for ~30–60 minutes; cascade returns afterward.Consequence:
Additional information
Workaround in use:
A detached gateway restart restores normal operation for ~30–60 minutes. Implemented as a script that backgrounds the stop+start so the agent triggering the restart can finish replying first. This is a band-aid; the cascade returns.
Ruled-out causes (verified via direct probes at the time of observation):
google/gemini-2.5-flash-litefrom agent fallback chains (was returning HTTP 400 with no body for openclaw's request shape, despite working on direct curl probes). Cascade persists post-removal.runBackuploop (separate chronicTypeError [ERR_INVALID_ARG_TYPE]: path argument undefined). Cascade persists post-disable.Observation that may help diagnosis:
The fact that loopback
127.0.0.1WS handshakes time out at the same 10-second budget as outbound HTTP fetches suggests the timeouts share a common cause inside the gateway process rather than at the network or remote-service layer. Whether this is event-loop blocking, a shared timeout constant, or something else is not directly observable from my position — happy to capture additional traces if you can point me at debug flags.Last known good: Sub-agent-driven workflows ran reliably as recently as 2026-04-29. The fluidcloud-deal-intelligence cron skill (which spawns Tyler then Josh from Kirk) executed cleanly on 2026-04-29 with full sub-agent output reaching the parent.
First known bad: 2026-05-04 — first observed
agent cleanup timed outevents andSubagent announce failederrors in this environment.I am not aware of an OpenClaw version change between 2026-04-29 and 2026-05-04 in this install (openclaw was 2026.5.3-1 throughout the window), but I cannot rule out a plugin update or an upstream provider response-shape change as the trigger.