OpenClaw

OpenClaw users map six reliability failures in beta.7

A three-week OpenClaw field report describes six failure classes across persistence, delivery and restart recovery. Two fresh patches address lost HTTP subagent announcements and a workspace-delete guard that could miss shared storage when realpath resolution fails.

← Back to homeOriginal source ↗

openclaw/openclaw issue #128067 is the inspected primary source: “beta.7 field report: 6 reliability defect classes (persistence, delivery, restart-recovery) + 3 minor.” The related records below were inspected as supporting context rather than independent confirmation.

The facts

- openclaw/openclaw issue #128067 was created 2026-08-23T00:15:21Z and was open at inspection; its title is “beta.7 field report: 6 reliability defect classes (persistence, delivery, restart-recovery) + 3 minor.” - openclaw/openclaw PR #128068 was created 2026-08-23T00:31:53Z and was open at inspection; its title is “fix(gateway): restore HTTP subagent completion announces [AI-assisted].” - openclaw/openclaw PR #128063 was created 2026-08-23T00:12:59Z and was open at inspection; its title is “fix(agents): fail closed on workspace delete guard when realpath is unresolvable.” - The repository reported 387150 stars, 6100 open issues, default branch main, and last push 2026-08-23T00:32:53Z. - The latest tagged-release baseline checked was v2026.8.1-beta.2 published 2026-08-15T05:36:23Z.

What changed

openclaw/openclaw issue #128067 reports: Field report: six reliability defect classes in beta.7 (multi-agent gateway, 3 weeks of evidence) Production-style deployment: single gateway (macOS arm64, node 24), 6 agents, telegram+webchat, heavy cron use. All items reproduced multiple times over ~3 weeks; happy to provide redacted logs per item. 1. Silent-empty turns + retry gap (HIGH) Cron-triggered agent turns intermittently end with empty output and no surfaced error. Auto-retry engages for timeout-class failures but NOT hard failures → a hard-failed cron turn is a silent no-op (no retry, no alert). Mitigation we use: failureAlert(after:1) everywhere critical. 2. Nightly memory-consolidation scrubs sibling agents' fresh sessions (HIGH) The dreaming/memory-consolidation maintenance lane treats other agents' just-created sessions as stale and scrubs them mid-window → "changed while starting work" / "transcript header not persisted". Event rate scaled with enrollment (2 agents → ~0/night; 6 agents → 19/night). Suspected root: busyTimeoutMs:0 lease design on the transcript store. We disabled dreaming fleet-wide as mitigation. 3. Phantom active-run after gateway restart (HIGH) Restart-recovery can resurrect a run marker that pins a session "active" until turn-budget expiry — the session accepts no work for the whole budget. Freed only by mechanical transcript truncation. Related: gateway restart while a Code-Mode exec is suspended on a pending tool = guaranteed loss of that turn (non-replay-safe). 4. Rapid-second-inbound loss (HIGH) A second inbound message arriving quickly behind

openclaw/openclaw PR #128068 reports: Closes #128003 Related: #128060 What Problem This Solves Fixes an issue where users driving agents through POST /v1/responses or POST /v1/chat/completions would silently lose every subagent completion announcement. The parent and child runs complete, but the deferred announce cannot dispatch back into the requester session because the HTTP-originated run retains no Gateway instance binding. Why This Change Was Made The HTTP request boundary now captures the active Gateway context's own lifecycle-fenced resolver and passes it to both OpenAI-compatible handlers. Those handlers use the trusted agentCommandFromGatewayIngress entrypoint and its private onAdmittedRunContext hook to bind that resolver to the admitted run. This intentionally leaves the shared prepareAgentCommandExecutionIdentity path and public agentCommandFromIngress sanitizer unchanged. It also avoids retaining the raw process-level context getter: the resolver stored by deferred work is the context's own resolveGatewayContext, which returns undefined after that Gateway instance retires. This narrower request-boundary design was suggested by Sally's local Codex during investigation. The implementation is AI-assisted. User Impact Subagent completion announces run again for HTTP-only integrations on both OpenAI-compatible endpoints. Active requests can dispatch into their owning Gateway instance, while work finishing after lifecycle retirement still fails closed instead of using a stale context. No delivery-target behavior changes here. External channel delivery still depends on the session's existing route; this fix restores the announce run and requester-session transcript path. Evidence node

openclaw/openclaw PR #128063 reports: Closes #106558 What Problem This Solves normalizeWorkspacePathForComparison in src/agents/agent-delete-safety.ts falls back to lexical path.resolve whenever fs.realpathSync.native fails. For a path that still exists (transient permission/traversal errors, reparse-point quirks), that fallback silently skips symlink resolution. Two workspaces that share storage through a symlink but differ lexically then compare as non-overlapping, so the delete guard reports no shared agents and recursive workspace deletion proceeds against the shared host directory. Why This Change Was Made The lexical fallback is only sound for directories that do not exist (not-yet-created workspaces). For an existing directory whose realpath cannot be resolved, inequality of lexical paths proves nothing about overlap, and the failure direction of this guard is catastrophic data loss. The fix keeps the fallback for missing paths and fails closed otherwise: normalization now returns { path, unverifiable }; unverifiable is set when realpath fails but fs.existsSync(resolved) confirms the path is live; workspacePathsOverlap returns true when either side is unverifiable-existing, so callers retain the workspace exactly as they already do for proven overlap (agents.commands.delete.ts, gateway agent delete, claw lifecycle delete). No legitimate workflow deletes through an unresolvable-but-live workspace path; worst case is a retained workspace with a retry after the transient condition clears. User Impact Deleting an agent can no longer destroy a shared host directory just because symlink resolution failed at check time; the guard

Why it matters

The report connects separate symptoms to one operator problem: terminal state and ownership can become untrustworthy exactly when the gateway is restarting or working through deferred delivery. The operator test is whether the system remains bounded and its receipts still describe the action after failure, retry or restart.

Current

The primary record was open when captured on 2026-08-23. The tagged-release baseline was v2026.8.1-beta.2 published 2026-08-15T05:36:23Z. Repository metadata, full source bodies, current pull requests and 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/128067. Supporting records are https://github.com/openclaw/openclaw/pull/128068 and https://github.com/openclaw/openclaw/pull/128063. 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

Treat the six classes as reported evidence, test them separately, retain workspaces when overlap cannot be proved safe, and bind deferred completion delivery to the live gateway lifecycle. 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.