-
-
Notifications
You must be signed in to change notification settings - Fork 69.5k
WhatsApp outbound sends broken in v2026.3.12+ — duplicate listeners Map instances #46251
Description
Bug Description
WhatsApp outbound sends via the message tool fail with:
Error: No active WhatsApp Web listener (account: default). Start the gateway, then link WhatsApp with: openclaw channels login --channel whatsapp --account default.
Inbound messages and auto-replies work perfectly. Only the message tool outbound path is broken.
Versions Affected
Root Cause
Two separate listeners Map instances exist in the bundle due to a bundling issue:
dist/reply-*.js— contains anew Map()that themessagetool reads from viarequireActiveWebListener()dist/plugin-sdk/thread-bindings-*.js— contains a separatenew Map()that the WhatsApp channel writes to viasetActiveWebListener()
The WhatsApp plugin successfully registers its listener in Map #2, but the message tool looks it up in Map #1 — which is always empty.
How to reproduce
# Find the two separate Map instances
grep -rl "new Map" /opt/homebrew/lib/node_modules/openclaw/dist/ | xargs grep -l "Listener\|listener" On v2026.3.12 this returns two files with separate Maps:
dist/reply-BEN3KNDZ.jsdist/plugin-sdk/thread-bindings-CPgqjJz5.js
On v2026.3.8, the listener registry is shared correctly (single Map instance).
Evidence from Logs
Gateway logs confirm WhatsApp IS fully connected:
[whatsapp] [default] starting provider (+971582031744)
[whatsapp] Listening for personal WhatsApp inbound messages.
[whatsapp] Inbound message +97155812399 -> +971582031744 (direct, 57 chars)
[whatsapp] Auto-replied to +97155812399
But the message tool fails immediately after:
[ws] ⇄ res ✗ send 9ms errorCode=UNAVAILABLE errorMessage=Error: No active WhatsApp Web listener (account: default).
Steps to Reproduce
- Install openclaw v2026.3.12 or v2026.3.13
- Configure WhatsApp channel, link with QR code
- Receive an inbound WhatsApp message — works fine, auto-reply works
- Try to send an outbound message via the
messagetool — fails with "No active WhatsApp Web listener"
Workaround
Downgrade to v2026.3.8: npm install -g [email protected]
Environment
- macOS (arm64), Node v25.4.0
- WhatsApp channel with
channels.whatsapp.enabled: true - Tested with and without
plugins.entries.whatsapp.enabled: true— same result - Tested with and without
channels.whatsapp.defaultAccount: "default"— same result - Fresh QR re-link (deleted credentials, re-scanned) — same result
Notes
The v2026.3.13 changelog mentions: "bundle plugin-sdk subpath entries in one shared build pass so published packages stop duplicating shared chunks" — this fix may not have fully resolved the shared state issue, or it introduced a regression that also affects v2026.3.12.