Skip to content

health --json misreports channel state: running/connected always false #17105

Description

@jane-alesi

Bug Description

openclaw health --json reports "running": false, "connected": false for all channels (WhatsApp and Mattermost) even when they are actively running and connected. All timestamp fields (lastConnectedAt, lastDisconnect, lastMessageAt, lastEventAt, lastStartAt, lastStopAt) are null. The botTokenSource for Mattermost shows "none" despite the bot being authenticated and operational.

The overall health reports "ok": true, and the Mattermost probe embedded in the same response shows "ok": true, "status": 200 — contradicting the running: false at the channel level.

Affected Version

  • First observed: v2026.2.9
  • Still present: v2026.2.15 (latest as of 2026-02-15)
  • Install type: source (git clone + pnpm build)
  • Platform: Linux (Docker container, Node.js 22)

Steps to Reproduce

  1. Start the gateway with WhatsApp and Mattermost channels configured
  2. Verify channels are working: openclaw channels status --probe shows both running + connected
  3. Run openclaw health --json
  4. Observe running: false, connected: false for both channels

Expected Behavior

health --json should report running: true, connected: true when channels are actively connected and processing messages, consistent with channels status --probe.

Actual Behavior

{
  "ok": true,
  "channels": {
    "whatsapp": {
      "configured": true,
      "linked": true,
      "running": false,
      "connected": false,
      "lastConnectedAt": null,
      "lastMessageAt": null,
      "lastEventAt": null
    },
    "mattermost": {
      "configured": true,
      "botTokenSource": "none",
      "running": false,
      "connected": false,
      "lastStartAt": null,
      "lastStopAt": null,
      "baseUrl": null,
      "probe": { "ok": true, "status": 200 }
    }
  }
}

Meanwhile openclaw channels status --probe correctly shows:

- WhatsApp default: enabled, configured, linked, running, connected
- Mattermost default: enabled, configured, running, connected, bot:@luca, works

Impact

  • Monitoring tools that rely on health --json for channel state get false negatives
  • Watchdog scripts must use the slower channels status --probe CLI as a workaround
  • The running/connected fields and all timestamp fields appear to never be populated after gateway startup

Workaround

Use openclaw channels status --probe (or --probe --json) instead of health --json for accurate channel state.

Metadata

Metadata

Assignees

No one assigned

    Labels

    staleMarked as stale due to inactivity

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions