{
  "title": "Health Checks (CLI)",
  "content": "Short guide to verify channel connectivity without guessing.\n\n* `openclaw status` — local summary: gateway reachability/mode, update hint, linked channel auth age, sessions + recent activity.\n* `openclaw status --all` — full local diagnosis (read-only, color, safe to paste for debugging).\n* `openclaw status --deep` — also probes the running Gateway (per-channel probes when supported).\n* `openclaw health --json` — asks the running Gateway for a full health snapshot (WS-only; no direct Baileys socket).\n* Send `/status` as a standalone message in WhatsApp/WebChat to get a status reply without invoking the agent.\n* Logs: tail `/tmp/openclaw/openclaw-*.log` and filter for `web-heartbeat`, `web-reconnect`, `web-auto-reply`, `web-inbound`.\n\n* Creds on disk: `ls -l ~/.openclaw/credentials/whatsapp/<accountId>/creds.json` (mtime should be recent).\n* Session store: `ls -l ~/.openclaw/agents/<agentId>/sessions/sessions.json` (path can be overridden in config). Count and recent recipients are surfaced via `status`.\n* 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.)\n\n## When something fails\n\n* `logged out` or status 409–515 → relink with `openclaw channels logout` then `openclaw channels login`.\n* Gateway unreachable → start it: `openclaw gateway --port 18789` (use `--force` if the port is busy).\n* 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`).\n\n## Dedicated \"health\" command\n\n`openclaw health --json` 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 `--timeout <ms>` to override the 10s default.",
  "code_samples": [],
  "headings": [
    {
      "level": "h2",
      "text": "Quick checks",
      "id": "quick-checks"
    },
    {
      "level": "h2",
      "text": "Deep diagnostics",
      "id": "deep-diagnostics"
    },
    {
      "level": "h2",
      "text": "When something fails",
      "id": "when-something-fails"
    },
    {
      "level": "h2",
      "text": "Dedicated \"health\" command",
      "id": "dedicated-\"health\"-command"
    }
  ],
  "url": "llms-txt#health-checks-(cli)",
  "links": []
}