OpenClaw
OpenClaw can bury a user session under subagent announcements
An operator report counted 112 pending completion notices against one Telegram session and 73 terminal updates aimed at vanished cron-run sessions. The gateway stayed responsive; full agent turns serialized the announcements until ordinary replies and compaction could no longer get through.
openclaw/openclaw issue #120402 is the inspected primary source: “Subagent completion announcements can permanently saturate a user session (unbounded announce runs + undeliverable cron run-session targets).” The related records below were inspected as supporting context rather than independent confirmation.
The facts
- openclaw/openclaw issue #120402 was created 2026-08-08T00:58:22Z and was open at inspection; its title is “Subagent completion announcements can permanently saturate a user session (unbounded announce runs + undeliverable cron run-session targets).” - openclaw/openclaw issue #99551 was created 2026-07-03T13:36:19Z and was open at inspection; its title is “[Tracker]: Codex worker runaway hardening sprint.” - openclaw/openclaw PR #119778 was created 2026-08-05T23:54:07Z and was open at inspection; its title is “fix(gateway): return retryable chat send error during transcript rebuild.” - The repository reported 385494 stars, 5599 open issues, default branch main, and last push 2026-08-08T00:56:29Z. - The latest tagged-release baseline checked was v2026.7.1-2 published 2026-08-04T00:41:26Z.
What changed
openclaw/openclaw issue #120402 reports: Summary Subagent completion announcements can permanently saturate the user's chat session. Once a backlog builds, every user message queues behind multi-minute announce runs, and the session becomes effectively unusable. Recovery is blocked because sessions compact refuses to run while an announce holds the session. Observed on 2026.7.2-beta.5 (ee929db), macOS, local gateway. Symptoms Replies to Telegram DMs took minutes to hours. sessions compact always failed with Session has an active run; retry after it finishes. Gateway itself was healthy: event loop ok max=68ms p99=24ms util=0.074. So this is not gateway load — it is session-level serialization. Evidence openclaw tasks list --json, aggregated by deliveryStatus: All 112 pending deliveries targeted a single session — the user's Telegram DM session: openclaw tasks audit reported 73 warnings, all identical: Grouping the 73 failures: Two distinct defects 1. Announce runs are unbounded and execute as full agent turns An announce is dispatched into the *requester's* session and runs as a
openclaw/openclaw issue #99551 reports: Goal Harden the Codex/OpenClaw worker failure modes exposed by incident worker 019f18dc-0080-7201-a969-4efa8dd87949, without changing PR #98186 and without publishing raw private transcripts. Child Issues #99464: Codex app-server deferred OpenClaw tools are exposed but tool_search resolves app connectors. #99465: Codex app-server raw replay lets large tool output dominate worker input tokens. #99466: Add protected-root and broad-search guardrails for Codex shell search. Non-Goals No tokenjuice changes. No GitNexus optimization lane. No PR #98186 implementation work. No merge/release action without maintainer approval. No raw private JSONL, transcript, token, cookie, or endpoint-secret disclosure. Ordered Work 1. Fix the OpenClaw session-control tool surface so critical OpenClaw delegation/control tools do not depend on a misrouted tool_search. 2. Cap replay-bound/native tool-output projection before large command results can dominate later worker input. 3. Add runtime and prompt-level guardrails for high-risk broad shell search shapes. Acceptance Criteria Critical OpenClaw session/control tools remain callable in Codex subagent runs even when tool_search is unavailable or resolves
openclaw/openclaw PR #119778 reports: What Problem This Solves Fixes #119754. A chat.send request with expectedLeafEntryId reads the active SQLite transcript leaf during lifecycle revalidation. When that projection is rebuilding, the typed projection-unavailable error currently falls through to INVALID_REQUEST and exposes the raw error. Why This Change Was Made Treat that transient error at the admission boundary as UNAVAILABLE, with the existing short retry hint. This retains stale-leaf protection and does not wait under the lifecycle fence. User Impact Webchat callers receive a recoverable, typed retry response rather than a raw projection error while a transcript projection rebuilds. Evidence Regression uses the existing SQLite chat-send fixture, dirties the matching projection, sends with expectedLeafEntryId, and verifies no run or transcript write starts. Run the focused gateway tests and pnpm check:changed. Credit: reported by @AgentSolomon in #119754. Labels: clawsweeper:autogenerated, clawsweeper:autofix.
Why it matters
This is a queue-ownership failure, not generic load. A seven-minute completion notice can become a denial of service when eight workers finish faster than one long-lived session can announce them. The operator test is whether the visible result, retained state and authority still describe the same event after retries, background work or restart.
Current
The primary record was open when captured on 2026-08-08. The release baseline was v2026.7.1-2 published 2026-08-04T00:41:26Z. Repository metadata, source bodies, pull requests, issues, releases, Google News, Hacker News, Lobsters, Metamesh and the rendered ClawCharts row were inspected. ClawCharts selected the subject; it did not prove the claim.
Evidence
The primary URL is https://github.com/openclaw/openclaw/issues/120402. Supporting records are https://github.com/openclaw/openclaw/issues/99551 and https://github.com/openclaw/openclaw/pull/119778. Source bodies, timestamps and states are preserved in the daily evidence bundle. Test counts and reproductions remain attributed to their authors unless identified as independently rerun.
Source boundary
Open work is described as open, closed work as closed, and operator reports as reports. A pull request is evidence of proposed or reviewed direction, not proof of a shipped release. Search residue, package mirrors and historically published source spines were excluded.
Operator take
Bound announcement work, resolve ephemeral requesters to durable owners, and let maintenance reap terminally undeliverable records before the queue can become the product. Preserve a before-state receipt, make the smallest reversible change, and verify the original failure independently.
Caveat
Public project records are mutable. Status, scope and evidence can change after publication. This brief records the inspected state and does not authorize changes to a reader’s deployment.
Source inspected; source state, environment and release boundary remain explicit.