Bug: WhatsApp â âŻsendâŻâ fails with "No active WhatsApp Web listener" â but inbound + react work fine
Version: OpenClaw 2026.3.13-1 (61d171a) / macOS 13 / Node v24.13.1
Problem:
Both â âŻopenclaw message sendâŻâ (CLI) and the agent â âŻmessageâŻâ tool with â âŻaction=sendâŻâ always fail with:
No active WhatsApp Web listener (account: default)
However, inbound messages work perfectly and â âŻaction=reactâŻâ from the agent tool also works. Only outbound â âŻsendâŻâ is broken.
Diagnostics:
â âŻopenclaw gateway statusâŻâ â Config (cli) and Config (service) both point to â âŻ~/.openclaw/openclaw.jsonâŻâ â No mismatch.
â âŻopenclaw channels statusâŻâ :
WhatsApp default: enabled, configured, linked, running, connected, dm:allowlist
â âŻopenclaw channels status --probe --jsonâŻâ (WhatsApp section):
â âŻjson
{
"configured": true, "linked": true, "running": true,
"connected": true, "reconnectAttempts": 0,
"lastError": null, "lastOutboundAt": null
}
âŻâ
Note: â âŻlastOutboundAt: nullâŻâ â outbound has never worked.
What I tried:
â˘â â Restarting gateway multiple times
â˘â â Re-linking WhatsApp (â âŻchannels loginâŻâ says "â
Linked!")
â˘â â Clearing session data + fresh re-link
â˘â â Sending with and without â âŻ--account defaultâŻâ
â˘â â Different target formats (E.164, JID)
â˘â â â âŻ--json --verboseâŻâ â no extra info, same error
Expected: â âŻaction=sendâŻâ should work when WhatsApp shows as fully connected with no errors and other actions (receive, react) work fine.
Looks like the send codepath checks a listener map that isn't getting populated even though the WhatsApp monitor is running and connected.