On this page
On this page
CLI commands
Health
openclaw health
Fetch a health snapshot from the running Gateway over WebSocket RPC (no direct channel sockets from the CLI).
Options
| Flag | Default | Description |
|---|---|---|
--json |
false |
Print machine-readable JSON instead of text. |
--timeout <ms> |
60000 |
Connection timeout in milliseconds. |
--verbose |
false |
Forces a live check and expands output across all configured accounts and agents. |
--debug |
false |
Alias for --verbose. |
Examples:
Behavior
-
Local Gateway startup uses the shared 60-second readiness budget and reports its observed phase. An explicit
--timeoutoverrides that budget. Startup still in progress at the deadline returns a non-failing result; JSON reports{ "status": "starting", "startupPhase": "…" }instead of a health snapshot. -
Local readiness recognizes wildcard listeners that serve loopback, including on macOS where a separate loopback bind can succeed on the same port.
-
On Windows, read-only diagnostics can verify a running service whose listener command line is unavailable through a successful Gateway handshake and health response. This does not establish process ownership for restart or termination.
-
Without
--verbose, the Gateway can return a cached snapshot and refresh it in the background for the next caller. A cached snapshot is fresh for up to 60 seconds and unchanged from live channel runtime state. -
--verboseforces a live check of each channel account. It also prints Gateway connection details. It expands human-readable output across all configured accounts and agents, instead of just the default agent. -
An unconfigured or disabled preferred account does not hide check results from other active accounts. Ordinary output still follows the default agent's account bindings.
--verboseincludes all accounts. -
When the displayed account is disabled, health text shows
disabledandstatus --deepmarks itOFF, even if the account remains configured. -
Unhealthy channel lines include the recorded startup error when available, so a stopped channel reports its failure cause alongside its state.
-
Human-readable output includes failures for plugins enabled explicitly, automatically, or by default, and warnings for configured plugins that are unavailable. It shows at most 20 plugin diagnostics plus an omitted count. These warnings also appear in
openclaw gateway healthand the Health table inopenclaw status --deep. Plugin diagnostics are sanitized for single-line terminal output; JSON retains the snapshot values. -
Once ready,
--jsonreturns the full snapshot: channels, per-account checks, plugin load state, context-engine quarantine state, model-pricing cache state, event-loop health, delivery-queue warnings, and per-agent session stores. -
Config read failures report the unreadable path and underlying error instead of a missing-credentials diagnostic. This also applies to
openclaw gateway health. -
Session ages in text and JSON use the Gateway's clock.
-
Namespaces whose agent deletion has committed are omitted from session summaries while cleanup drains. Undeleted namespaces in shared stores remain visible, and unexpected store errors still fail the refresh.
-
If the configured default is omitted during deletion, plain output shows the first surviving agent's heartbeat and session store in roster order. This display choice does not change runtime or System Agent ownership.
-
The compatibility heartbeat summary reads the persisted migrated/default proactive job. Intervals show its cadence without rounding away milliseconds; week units remain visible for long intervals. Edit the job in Automations to change its schedule or delivery.
-
Top-level
ok: truemeans the health RPC succeeded and the Gateway produced a snapshot. Queue and plugin warnings do not change it tofalse. -
When outbound or session deliveries, or inbound channel events, are dead-lettered, text output reports their counts and oldest failure age. Inbound counts are grouped by channel account. Inspect or recover individual events with
openclaw channels dead-letters. -
Optional
deliveryQueues.ingressPressuresummarizes durable inbound lanes that may be blocking later events. It is grouped by channel account and never exposes event, lane, payload, error, owner, token, session, or target identifiers. See Gateway health for the exact qualification and counting semantics.
Related
- CLI reference
openclaw status— local diagnosis and channel checks without a full health snapshot- Gateway health