v0.0.94 is being cut (#7468 writes the dated release entry ahead of the tag), reconciling the 26 commits merged since v0.0.93. It's a recovery-and-lifecycle release — mostly fixes for ways a sandbox could end up in a bad state. The three most likely to have bitten you:
- Shields no longer destroy
openclaw.jsonwhen.config-hashis absent (#7467). See the callout above — this is the headline fix and the reason to upgrade if you useshields up/shields down. The guard now regenerates the missing hash from the captured config instead of failing closed and quarantining the config file. - The OpenClaw Discord bot can manage its own application commands again (#7303). The Discord policy preset scoped
DELETEto messages and reactions only, so the bot couldn't clear its stale slash commands and stalled at "awaiting gateway readiness" with apolicy_denied(403). The preset now allowsDELETEon the bot's ownapplications/{id}/commands, reaching parity with the Hermes preset. Destructive guild-resource deletes stay blocked. stoptears down the dashboard port-forward it created (#7228).nemoclaw <sandbox> stopreturned success but left its host-side dashboardssh -Llistener alive, sostatusthen misreported the stopped sandbox as a foreignsandbox_dashboard_port_conflictandstart/recoverintermittently failed contending for the held port. The forward is now released on stop.
The rest of the recovery batch:
- Cross-sandbox snapshot restore re-establishes gateway pairing (#7437). A sandbox created by
snapshot restore --to <new>started with no gateway device credentials — pairing tokens are deliberately never captured into snapshots — so its firstopenclaw agentrun failed withGatewayCredentialsRequiredError. The restore path now runs the same pairing finalization onboard does, so a restored sandbox's agent runs immediately. - Two v0.0.91 Hermes-sandbox regressions fixed (#7436): a
snapshot restoreleft post-snapshot files behind in directories that were empty at snapshot time, so a "clean" restore didn't match the snapshot; and the Hermes venv was built with permissions the sandbox user couldn't read, crashing everypython3call before any user code ran. Both are fixed, with a build-time check that fails fast on a bad-umask build. policy-add <preset>re-applies edited presets (#7352). Naming an already-applied preset used to refuse, forcing a destructivepolicy-remove/policy-addcycle; it now diffs the preset against the live policy and re-applies through the normal preview/confirm path when they differ. The same change documents a new raw TLS passthrough recipe (access: full+tls: skip) for CDN/Cloudflare-fronted endpoints whose connections reset because the egress proxy re-originates TLS.upgrade-sandboxes --checkis now genuinely read-only (#7284). The documented read-only check was starting a new gateway and switching the active one, stranding sandboxes bound to a non-default-port gateway — after which a lateruninstall --yescould target the wrong gateway and leave the sandbox behind. Check mode now queries the recorded gateway without selecting or starting it.- External gateway lifecycle authority (#7246): an external systemd supervisor can now be the sole OpenShell gateway lifecycle authority while NemoClaw validates and attaches to its exact endpoint, failing closed rather than creating or tearing down the wrong gateway. Also: DGX Spark managed-vLLM Express intent is preserved on
onboard --resume(#7234) instead of dropping into the interactive provider menu. - Performance: collapsing the Hermes image payload layers cut the production build step from 205s to 101s in the first hosted comparison (#7461). Housekeeping: Fern CLI bumped to 5.80.1 (#7458, docs tooling only), plus E2E telemetry and stability work.
Who should care: anyone running shields up/shields down should upgrade for the config-destruction fix alone. If you run an OpenClaw Discord bot, the slash-command policy fix unblocks startup. And if you rely on snapshots or the dashboard port-forward, the restore-pairing and stop-teardown fixes remove two ways a sandbox could get stuck.