CLI commands
openclaw status
Diagnostics for channels + sessions.
openclaw statusopenclaw status --allopenclaw status --deepopenclaw status --usageopenclaw status --all --usageopenclaw status --usage --agent work| Flag | Description |
|---|---|
--all |
Full diagnosis (read-only, pasteable). Includes security audit, plugin compatibility, and memory-vector probes. |
--deep |
Requests channel health (live probes where supported). Also enables the security audit. |
--usage |
Prints normalized provider usage windows as X% left. |
--agent <id> |
Selects the agent auth/profile scope for --usage. Required when an explicit multi-agent fleet has no default. |
--json |
Machine-readable output. |
--timeout <ms> |
Probe timeout in milliseconds (default: 10000). |
--verbose / --debug |
Also print the raw Gateway target resolution before the report. |
Channels without a probe, such as WhatsApp, report lifecycle health instead.
In the Health table, healthy is OK; degraded lifecycle states and failed
probes remain WARN. A lifecycle OK does not mean a live probe ran.
--deep and --all also show delivery queue warnings for dead-lettered messages
and pressured inbound lanes. These warnings include pending, claimed, and blocked
message counts even when a channel connection is healthy. See
Queue warnings.
Plain openclaw status stays on the fast read-only path and marks memory as
not checked instead of unavailable when it skips memory inspection. Heavy
security audit, plugin compatibility, and memory-vector probes are left to
openclaw status --all, openclaw status --deep, openclaw security audit,
and openclaw memory status --deep.
For Git installs, plain status compares cached remote-tracking refs without a
network fetch. If the latest recorded update fetch failed and no later update
run records a completed fetch, the Update row shows
update check stale: last update fetch failed 5m ago (network error) instead of
up to date, with ahead/behind counts labeled cached. JSON exposes this under
update.git.stale (reason, failedAtMs, detail, and runId) and sets
update.git.countsCached to true. Without a recorded fetch failure, the usual
cached comparison is unchanged. The history belongs to the current state
directory. A later run that completes its fetch clears the warning even if the
rest of that update is skipped, fails, or rolls back. A manual git fetch does
not clear the recorded warning. Use openclaw update status for a fresh check
and the last update run, or run openclaw update again. openclaw status --deep
also fetches for that check; it does not change the ledger. See
Release channels.
Skills diagnosis
status --all reports eligible skills and skills with missing prerequisites for
the workspace shown in the Skills row. Missing prerequisites use the same category as
openclaw skills check: intentionally disabled skills and skills blocked by the
bundled allowlist are excluded; agent allowlist exclusions remain independent.
Unmet OS requirements are included in this count, although Doctor does not disable
skills for OS incompatibility.
Use openclaw skills check --agent <id> to inspect the missing requirements.
Session and model resolution
- Session status output separates
Execution:fromRuntime:.Executionis the sandbox path (direct,docker/*), whileRuntimetells you whether the session is usingOpenClaw Default,OpenAI Codex, a CLI backend, or an ACP backend such ascodex (acp/acpx). See Agent runtimes for the provider/model/runtime distinction. - When the current session snapshot is sparse, the
/statuschat command (see Slash commands) can backfill token and cache counters from the most recent transcript usage log. Existing nonzero live values still win over transcript fallback values. - Transcript fallback can also recover the active runtime model label when the live session entry is missing it. If that transcript model differs from the selected model, status resolves the context window against the recovered runtime model instead of the selected one.
- For prompt-size accounting, transcript fallback prefers the larger
prompt-oriented total when session metadata is missing or smaller, so
custom-provider sessions do not collapse to
0token displays. - When a session is pinned to a model that differs from the configured
primary, status prints both values, the reason (
session override), and the hint/model default. The configured primary applies to new or unpinned sessions; existing pinned sessions keep their session selection until cleared. - Output includes per-agent session stores when multiple agents are configured.
- Fleet status works without a System Agent owner. Pending events include each
agent's main queue; a shared global queue is counted once.
--agentselects credentials only for--usage.
Usage and quota
--usageprints normalized provider usage windows asX% left. It also adds usage snapshots to--all;--agentkeeps the same usage-only scope.- In an explicit multi-agent setup,
--usagereads the auth profiles owned byagents.defaults.systemAgent.agentIdby default. Pass--agent <id>to inspect another agent; without either owner, OpenClaw does not guess one agent's credentials from an ambiguous roster. - MiniMax's raw
usage_percent/usagePercentfields are remaining quota, so OpenClaw inverts them before display; count-based fields win when present.model_remainsresponses prefer the chat-model entry, derive the window label from timestamps when needed, and include the model name in the plan label. - Model pricing refresh failures are shown as optional pricing warnings. They do not mean the Gateway or channels are unhealthy.
Overview and update status
- Overview includes Gateway + node host service install/runtime status when available, plus compact Gateway process uptime and host system uptime.
status --allshows returned host, IP, version, and platform in Gateway self. It usesunknownonly when those fields are unavailable.- On Linux, a readable installed node service remains listed when the service manager is unavailable; its runtime status stays unknown.
- Overview includes update channel + git SHA (for source checkouts).
- Update info surfaces in the Overview; if an update is available, status
prints a hint to run
openclaw update(see Updating). statusandstatus --allkeep current availability in Update and show active or recent update history separately in Update run. A distinct Update restart report remains visible unless it names that same run ID.status --allincludes a Telemetry exporters diagnosis with the latest trusted per-signal exporter state and transport. Endpoint values, headers, certificates, payloads, and raw errors are not shown.
Secrets
- When the running Gateway has any isolated SecretRef owner from startup, reload, or a config write, status includes
degradedSecretOwnersin JSON and a Degraded secrets overview row in human output. Each entry names the owner, degradation state (coldorstale), config paths, and redacted reason. Cold owners are unavailable; stale owners continue with last-known-good values. - Read-only status surfaces (
status,status --json,status --all) resolve supported SecretRefs for their targeted config paths when possible. - If a supported channel SecretRef is configured but unavailable in the
current command path, status stays read-only and reports degraded output
instead of crashing. Human output shows warnings such as "configured token
unavailable in this command path", and JSON output includes
secretDiagnostics. - When command-local SecretRef resolution succeeds, status prefers the resolved snapshot and clears transient "secret unavailable" channel markers from the final output.
status --allincludes a Secrets overview row and a diagnosis section that summarizes secret diagnostics (truncated for readability) without stopping report generation.
Memory
status --json --all reports memory details from the active memory plugin
runtime selected by plugins.slots.memory. Custom memory plugins can leave
built-in memory.search.enabled disabled and still report
their own files, chunks, vector, and FTS state.
Related
- CLI reference
- Doctor
openclaw health— Gateway health snapshot over RPC