fix(cli): guard remaining embedded state writers (#121282)

This commit is contained in:
Peter Steinberger
2026-08-09 17:09:35 -07:00
committed by GitHub
parent 6efd013c25
commit 08507909ed
19 changed files with 773 additions and 120 deletions
+1 -1
View File
@@ -28,7 +28,7 @@ By default, the command creates and later removes a temporary state directory, a
Config is layered in three parts, entirely in memory: exec composes the run config and publishes it as this process's runtime config rather than writing a copy to disk. Exec defaults apply only where your config leaves a setting unset: workspace bootstrap files are skipped, the agent sandbox is off, the `coding` tool profile is selected, filesystem tools are restricted to `--cwd`, and exec runs under the full execution policy a headless turn needs. Anything your config sets wins over those defaults, so a configured sandbox, shell env, or tool profile is never downgraded, and exec host routing stays with the sandbox when your config enables one. The invocation itself always wins last: the run is scoped to `--cwd` and never bootstraps.
Use `--state-dir <dir>` to retain sessions and other run state. The directory must already exist and is never created or deleted by the command.
Use `--state-dir <dir>` to retain sessions and other run state. The directory must already exist and is never created or deleted by the command. A retained state directory requires exclusive ownership: exec refuses to start while a Gateway or another embedded writer owns it, then holds the state lock for the complete run. Omit `--state-dir` for isolated temporary state, or stop the Gateway first with `openclaw gateway stop`.
When exec uses the ambient or a pinned config, installed plugins continue to resolve from the operator's ordinary plugin roots while sessions and other run state use the ephemeral directory. In those modes, `--state-dir` controls run state only; it is not required for configured providers, channels, or harnesses supplied by installed plugins.
+2
View File
@@ -56,6 +56,8 @@ Options:
Probe rows can come from auth profiles, env credentials, or `models.json`. Probe status buckets: `ok`, `auth`, `rate_limit`, `billing`, `timeout`, `format`, `unknown`, `no_model`.
Direct `models status --probe` runs create temporary internal sessions in the selected agent's canonical database, so the command requires exclusive ownership of the configured state directory. Stop a running Gateway with `openclaw gateway stop` before probing; the command removes its internal sessions and releases the state lock when it finishes or is interrupted.
Probe detail/reason codes to expect when a probe never reaches a model call:
- `excluded_by_auth_order`: a stored profile exists, but explicit `auth.order.<provider>` omitted it, so probe reports the exclusion instead of trying it.
+4
View File
@@ -77,6 +77,10 @@ Aliases: `openclaw chat` and `openclaw terminal` invoke this command with
`agent:<id>:...`).
- Local mode uses the embedded agent runtime directly. Most local tools work,
but Gateway-only features are unavailable.
- Local mode requires exclusive ownership of the configured state directory. It
refuses to start while a Gateway or another embedded writer owns that state;
run without `--local` to use the active Gateway, or stop it first with
`openclaw gateway stop`.
- Local mode adds `/auth [provider]` to the TUI command surface.
- Plugin approval gates still apply in local mode: tools that require approval
prompt for a decision in the terminal, nothing is silently auto-approved.