You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/reference/commands.mdx
+13-2Lines changed: 13 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2578,7 +2578,13 @@ If deletion fails after hardening, the command keeps the surviving sandbox's loc
2578
2578
By default, unattended final-sandbox destroys (`--yes`, `--force`, or `NEMOCLAW_NON_INTERACTIVE=1`) remove the shared NemoClaw gateway on macOS so the host listener is released, while Linux preserves it for reuse.
2579
2579
Pass `--cleanup-gateway` to force removal, or `--no-cleanup-gateway` to force preservation.
2580
2580
These flags always override both `NEMOCLAW_CLEANUP_GATEWAY` and the platform default.
2581
-
If the pre-delete workspace wipe cannot run, use a different sandbox name for a clean start.
2581
+
If the pre-delete workspace wipe completes with a nonzero status, `destroy` continues, but the retained volume may still contain old files.
2582
+
Use a different sandbox name to avoid reusing that retained volume.
2583
+
If workspace cleanup reaches its 60-second timeout, NemoClaw cannot confirm the remote result.
2584
+
NemoClaw stops before provider cleanup and sandbox deletion, attempts to restore any prepared MCP state, and preserves the local registry entry.
2585
+
Run `$$nemoclaw <name> status` to check or start the recorded OpenShell gateway.
2586
+
If a shields auto-restore timer remains active, run `$$nemoclaw <name> shields status` to verify bounded recovery or follow its durable-containment guidance, then retry `destroy` only after shields recovery permits it.
2587
+
If no timer remains active, retry after the recorded gateway is available.
2582
2588
Cleaning up the gateway after the last sandbox also purges the shared cluster volume that retains the per-name persistent volume.
2583
2589
If NemoClaw detects active SSH sessions before destroy, it warns that destroy terminates them with a Broken pipe error and lists their process IDs.
2584
2590
This warning prints before the confirmation prompt and when `--yes` or `--force` skips that prompt.
@@ -2593,9 +2599,14 @@ If the recorded PID is live, its command line must match the exact gateway name
2593
2599
If the recorded process has exited, `destroy` continues only after it verifies that the gateway port is free.
2594
2600
If a live PID does not prove gateway ownership or the port remains occupied, `destroy` exits non-zero and preserves the runtime evidence for inspection.
2595
2601
For any other service stop failure, `destroy` exits non-zero after sandbox and registry deletion, prints the status command for the service, and skips gateway and volume removal.
2596
-
If the OpenShell gateway is unreachable and the sandbox has no managed MCP ownership state, `--force` removes only NemoClaw's local registry entry and local artifacts.
2602
+
If the OpenShell command completes with a gateway transport error and the sandbox has no managed MCP ownership state, `--force` removes only NemoClaw's local registry entry and local artifacts.
2597
2603
Gateway-side deletion remains unconfirmed, shared host-service and gateway teardown are skipped, and the sandbox and retained volume may still exist if the gateway returns.
2598
2604
Start the gateway with `$$nemoclaw <name> status` and retry destroy when you need a confirmed deletion.
2605
+
If the OpenShell sandbox deletion command reaches its 60-second timeout, NemoClaw cannot confirm whether OpenShell deleted the sandbox.
2606
+
NemoClaw preserves the local registry entry under both `--yes` and `--force`.
2607
+
Run `$$nemoclaw <name> status` to check or start the recorded OpenShell gateway.
2608
+
If the preceding output also reports a failed pre-delete re-lock, run `$$nemoclaw <name> shields status` to verify recovery or follow its durable-containment guidance, then retry `destroy` only after shields recovery permits it.
2609
+
Otherwise, retry after the recorded gateway is available.
2599
2610
Managed MCP ownership disables the local-only fallback because exact provider cleanup requires the retained ownership state, and other delete failures remain fatal.
2600
2611
A failed pre-delete re-lock also disables the local-only fallback, because the auto-restore timer is then the only authority that can lock the configuration again after the gateway returns.
Copy file name to clipboardExpand all lines: internal/security-reviews/openclaw-2026.6.10-dependency-review.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -190,7 +190,7 @@ The published `@openclaw/msteams@2026.6.10` artifact was re-reviewed after integ
190
190
191
191
## Bundled Weather Skill Egress Review
192
192
193
-
The SRI-verified `openclaw@2026.6.10` artifact's `package/skills/weather/SKILL.md` has SHA-256 `62ab4821aa873949d1c1091836be1659a42b32caadce4bd145f5505a1ceaeec1`, unchanged from the reviewed 2026.6.9 artifact. The reviewed skill prefers `web_fetch` to HTTPS `wttr.in` paths and lists HTTPS `wttr.in` curl fallbacks using read-only requests; it mentions `wttr.is` only as an optional retry when the primary service is unreliable. NemoClaw's weather preset therefore continues to allow only GET/HEAD to `wttr.in` at that boundary and intentionally leaves `wttr.is` denied unless a future pinned runtime makes the fallback required. `test/weather-policy.test.ts` binds that host/method contract to the reviewed OpenClaw version.
193
+
The SRI-verified `openclaw@2026.6.10` artifact's `package/skills/weather/SKILL.md` has SHA-256 `62ab4821aa873949d1c1091836be1659a42b32caadce4bd145f5505a1ceaeec1`, unchanged from the reviewed 2026.6.9 artifact. The reviewed skill prefers `web_fetch` to HTTPS `wttr.in` paths and lists HTTPS `wttr.in` curl fallbacks using read-only requests; it mentions `wttr.is` only as an optional retry when the primary service is unreliable. NemoClaw's weather preset therefore continues to allow only GET/HEAD to `wttr.in` at that boundary and intentionally leaves `wttr.is` denied unless a future pinned runtime makes the fallback required. `test/onboarding/effective-policy-contracts.test.ts` binds that host/method contract to the reviewed OpenClaw version.
194
194
195
195
## PR Review Follow-ups
196
196
@@ -295,7 +295,7 @@ The pinned OpenClaw 2026.6.10 devices CLI normally requests the scopes it is try
295
295
296
296
At the host-caller boundary, NemoClaw no longer reads or writes device state during approval. Inside the reviewed compiled pairing module, Patch 8 writes a fixed-version, exact-schema `idle` / `prepared` / `committed` journal beside the pairing files with mode `0600` and a `0700` directory contract. Before publication it records the exact before/after snapshots and request/device identity in `prepared`; because those snapshots can contain device tokens, the journal is never logged, remains permission-bounded, and drops all snapshots when it returns to `idle`. The module waits for both canonical pending and paired writes with `Promise.allSettled`, records `committed` only after both succeed, and finally returns the journal to `idle`. Recovery runs from pairing-state loads under the module lock, rejects a malformed journal or any current file that is neither its exact before-image nor after-image, restores `prepared` transactions backward, completes `committed` transactions forward, and returns to `idle`, so a fresh process deterministically settles either one-sided publication direction. A synchronous publication failure uses the same prepared recovery before the approval error is returned.
297
297
298
-
`scripts/lib/openclaw_device_approval_policy.py` remains a pure allowlist/environment helper that requires the explicit `cli`, `openclaw-cli`, or `openclaw-control-ui` client identity and never accepts an unknown identity merely for claiming `cli` or `webchat` mode; the startup, interactive-shell, and connect-time callers count only an OpenClaw CLI exit status of zero. Invalid state: any caller without device-token auth, signed same-device identity, exact CLI/operator metadata, existing `operator.pairing`, or complete bounded non-admin scopes receives the self-approval exception; current pending state is not revalidated inside the pairing lock; a host caller reads or publishes `pending.json` / `paired.json`; a failed CLI result is counted as approved; concurrent canonical approvals lose an unrelated pending request or paired token; or an interrupted two-file publication cannot recover to the journal's exact before/after state. Source boundary: the reviewed OpenClaw CLI, session producer, canonical session-authz resolver, gateway dispatcher/device handler, pairing-state dist module and its fixed-version journal, the pure policy module, and the three host callers. Source-fix constraint: OpenClaw owns pairing state; keeping recovery inside its reviewed compiled module and existing lock is safer than a host-side writer, while native atomic/recoverable publication belongs upstream. Regression detection: `test/agents/openclaw/openclaw-device-self-approval-patch.test.ts`, `test/agents/openclaw/openclaw-device-approval-policy.test.ts`, `test/nemoclaw-start-scope-replacement.test.ts`, connect-time auto-pair tests, the exact-dist linkage/real-handler/concurrent-publication/restart-recovery proof, and the issue #4462/device-auth live lanes. Removal condition: delete Patch 8 when a reviewed OpenClaw release completes this bounded same-device flow natively, but only if that release also publishes the pending/paired transition atomically or with equivalent durable restart recovery; retain the no-admin live assertion and behavioral proof that host callers leave device state untouched.
298
+
`scripts/lib/openclaw_device_approval_policy.py` remains a pure allowlist/environment helper that requires the explicit `cli`, `openclaw-cli`, or `openclaw-control-ui` client identity and never accepts an unknown identity merely for claiming `cli` or `webchat` mode; the startup, interactive-shell, and connect-time callers count only an OpenClaw CLI exit status of zero. Invalid state: any caller without device-token auth, signed same-device identity, exact CLI/operator metadata, existing `operator.pairing`, or complete bounded non-admin scopes receives the self-approval exception; current pending state is not revalidated inside the pairing lock; a host caller reads or publishes `pending.json` / `paired.json`; a failed CLI result is counted as approved; concurrent canonical approvals lose an unrelated pending request or paired token; or an interrupted two-file publication cannot recover to the journal's exact before/after state. Source boundary: the reviewed OpenClaw CLI, session producer, canonical session-authz resolver, gateway dispatcher/device handler, pairing-state dist module and its fixed-version journal, the pure policy module, and the three host callers. Source-fix constraint: OpenClaw owns pairing state; keeping recovery inside its reviewed compiled module and existing lock is safer than a host-side writer, while native atomic/recoverable publication belongs upstream. Regression detection: `test/agents/openclaw/openclaw-device-self-approval-patch.test.ts`, `test/agents/openclaw/openclaw-device-approval-policy.test.ts`, `test/agents/openclaw/runtime/nemoclaw-start-scope-replacement.test.ts`, connect-time auto-pair tests, the exact-dist linkage/real-handler/concurrent-publication/restart-recovery proof, and the issue #4462/device-auth live lanes. Removal condition: delete Patch 8 when a reviewed OpenClaw release completes this bounded same-device flow natively, but only if that release also publishes the pending/paired transition atomically or with equivalent durable restart recovery; retain the no-admin live assertion and behavioral proof that host callers leave device state untouched.
0 commit comments