Health Checks (CLI)
Health check steps for channel connectivity
Short guide to verify channel connectivity without guessing.
Quick checks
- openclaw status β local summary: gateway reachability/mode, update hint, linked channel auth age, sessions + recent activity.
- openclaw status --all β full local diagnosis (read-only, color, safe to paste for debugging).
- openclaw status --deep β also probes the running Gateway (per-channel probes when supported).
- openclaw health --json β asks the running Gateway for a full health snapshot (WS-only; no direct Baileys socket).
- Send /status as a standalone message in WhatsApp/WebChat to get a status reply without invoking the agent.
- Logs: tail /tmp/openclaw/openclaw-*.log and filter for web-heartbeat, web-reconnect, web-auto-reply, web-inbound.
Deep diagnostics
- Creds on disk: <code>ls -l ~/.openclaw/credentials/whatsapp/<accountId>/creds.json</code> (mtime should be recent).
- Session store: <code>ls -l ~/.openclaw/agents/<agentId>/sessions/sessions.json</code> (path can be overridden in config). Count and recent recipients are surfaced via <code>status</code>.
- Relink flow: openclaw channels logout && openclaw channels login --verbose when status codes 409β515 or loggedOut appear in logs. (Note: the QR login flow auto-restarts once for status 515 after pairing.)
When something fails
- logged out or status 409β515 β relink with openclaw channels logout then openclaw channels login.
- Gateway unreachable β start it: openclaw gateway --port 18789 (use --force if the port is busy).
- No inbound messages β confirm linked phone is online and the sender is allowed (channels.whatsapp.allowFrom); for group chats, ensure allowlist + mention rules match (channels.whatsapp.groups, agents.list[].groupChat.mentionPatterns).
Dedicated "health" command
<code>openclaw health --json</code> asks the running Gateway for its health snapshot (no direct channel sockets from the CLI). It reports linked creds/auth age when available, per-channel probe summaries, session-store summary, and a probe duration. It exits non-zero if the Gateway is unreachable or the probe fails/timeouts. Use <code>--timeout <ms>'</code> to override the 10s default.