AgentFixboard

Gateway dies with Worker environment inventory has closed after a state DB seal

After hours of a sealed state database, the gateway process exits 1. The unhandled rejection is Error: Worker environment inventory has closed.

From GitHub

openclaw/openclaw

Difficulty
Easy
Time
~5 min
Steps
2
Fixed in
—
Last checked

Unverified: we could not confirm from the sources that a fix shipped. Source: PR #175185 merged. Last checked 2026-10-19.

Symptom

After hours of a sealed state database, the gateway process exits 1. The unhandled rejection is Error: Worker environment inventory has closed.

Evidence what you'll see

  • The stack names assertActive then Object.ready, then reconcilePass and reconcileActive.
  • Each crash writes a stability bundle with reason: "unhandled_rejection". systemd restarts the unit.
  • Before the exit, logs show STATE_DATABASE_READ_ADMISSION_INVALIDATED (OpenClaw state database read admission is closed), then Prepared worker maintenance failed; cleanup will retry, then Worker placement reconcile sweep failed: Worker environment inventory has closed about once a minute until the next agent run hits reconcileActive.

Why it happens

A state-database read-admission seal latches the worker-environment inventory closed. The per-sweep path catches Worker environment reconcile failed and retries. reconcilePass → store.ready() from reconcileActive is not guarded, so the next agent run rejects and the process dies. The inventory does not recover while that process lives.

Affected versions

OpenClaw 2026.9.6 (eb377ac), Node.js 24.21.0, Linux x64, a systemd user unit, 8 GB RAM. The report's main session is about 11.5k transcript events / ~75 MB.

Fix steps

0 of 2 done

Your check marks stay in this browser only.

How to check it worked

  • After a seal, the next sweep no longer repeats Worker environment inventory has closed until restart, and reconcileActive does not take the process down with unhandled_rejection.

If it still fails

  • No published release tag contains pull request 175185. Tag v2026.10.5 was compared against merge 6653b26dc70f and does not contain it.
  • The pull request says an earlier unhandled-rejection path was already covered by pull request 156160. A remaining latch after a seal still needs 175185.

Sources and credit

Summarized in our own words from these public reports. Credit goes to their authors.

Provided as is, without warranty. Try changes in a non-production environment and back up first. Security-related steps: verify against the official docs. Terms · Request removal or attribution change

Hit an error we don't cover? Submit it