openclaw - 💡(How to fix) Fix v2026.3.13: `openclaw message send` and delivery system broken - 'No active WhatsApp Web listener' [2 comments, 3 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#49446Fetched 2026-04-08 00:55:11
View on GitHub
Comments
2
Participants
3
Timeline
4
Reactions
0
Author
Timeline (top)
commented ×2closed ×1locked ×1

Error Message

GatewayClientRequestError: Error: No active WhatsApp Web listener (account: default).

Root Cause

The openclaw message send CLI runs in a separate process from the gateway. It loads its own copy of the WhatsApp module with its own listeners Map, which is always empty because the CLI process never connects to WhatsApp directly — only the gateway process does.

The gateway process registers the listener via setActiveWebListener() in channel-web-BZO9MGfW.js, but the CLI process has a separate module instance with an empty Map.

The delivery system within the gateway also fails, suggesting the outbound send path (outbound-DhwoE4j7.js or similar) may reference a different module's listener Map than the one channel-web registers with.

Fix Action

Workaround

None found. Agent auto-replies work but there is no way to send outbound messages programmatically.

Code Example

GatewayClientRequestError: Error: No active WhatsApp Web listener (account: default).
RAW_BUFFERClick to expand / collapse

Bug Description

In v2026.3.13, openclaw message send --channel whatsapp always fails with:

GatewayClientRequestError: Error: No active WhatsApp Web listener (account: default).

The WhatsApp channel IS connected and working — agent auto-replies to inbound messages go through fine. Only standalone sends and the delivery system (including --deliver flag on openclaw agent) fail.

Root Cause Analysis

The openclaw message send CLI runs in a separate process from the gateway. It loads its own copy of the WhatsApp module with its own listeners Map, which is always empty because the CLI process never connects to WhatsApp directly — only the gateway process does.

The gateway process registers the listener via setActiveWebListener() in channel-web-BZO9MGfW.js, but the CLI process has a separate module instance with an empty Map.

The delivery system within the gateway also fails, suggesting the outbound send path (outbound-DhwoE4j7.js or similar) may reference a different module's listener Map than the one channel-web registers with.

Steps to Reproduce

  1. Start gateway with WhatsApp linked: openclaw gateway run
  2. Verify WhatsApp is connected: openclaw channels status --probe → shows "linked, running, connected"
  3. Try to send: openclaw message send --channel whatsapp --target "<group-jid>" --message "test"
  4. Fails with "No active WhatsApp Web listener"
  5. Meanwhile, sending a message TO the WhatsApp group triggers the agent auto-reply successfully

Environment

  • OpenClaw v2026.3.13
  • Linux 6.8.0-106-generic (x64), Node 25.6.1
  • Gateway running as systemd service
  • WhatsApp channel: linked, connected (verified via channels status --probe)

Workaround

None found. Agent auto-replies work but there is no way to send outbound messages programmatically.

Impact

Any workflow using openclaw message send or openclaw agent --deliver for WhatsApp is broken. This affects bridge/relay setups where external processes need to send messages through OpenClaw.

Previously working on v2026.3.12 config (lastTouchedVersion: "2026.3.12"), but downgrading to v2026.3.12 fails with ANTHROPIC_MODEL_ALIASES initialization error.

extent analysis

Fix Plan

To resolve the issue, we need to ensure that the WhatsApp listener is shared between the gateway and CLI processes. We can achieve this by implementing a centralized listener registry.

Step 1: Create a Centralized Listener Registry

Create a new file listener-registry.js with the following code:

const listeners = new Map();

export function registerListener(account, listener) {
  listeners.set(account, listener);
}

export function getListener(account) {
  return listeners.get(account);
}

Step 2: Update the Gateway Process

In channel-web-BZO9MGfW.js, update the setActiveWebListener() function to use the centralized registry:

import { registerListener } from './listener-registry';

// ...

setActiveWebListener(account, listener) {
  registerListener(account, listener);
}

Step 3: Update the CLI Process

In openclaw message send, update the code to use the centralized registry:

import { getListener } from './listener-registry';

// ...

const listener = getListener('default');
if (!listener) {
  throw new GatewayClientRequestError('No active WhatsApp Web listener');
}

Step 4: Update the Delivery System

In outbound-DhwoE4j7.js, update the code to use the centralized registry:

import { getListener } from './listener-registry';

// ...

const listener = getListener('default');
if (!listener) {
  throw new GatewayClientRequestError('No active WhatsApp Web listener');
}

Verification

After implementing the fix, verify that openclaw message send and openclaw agent --deliver work as expected. You can test this by sending a message using the CLI and checking if it is delivered successfully.

Extra Tips

To prevent similar issues in the future, consider implementing a centralized registry for all listeners and ensure that all processes use this registry to access listeners. Additionally, review the code to ensure that all processes are using the same instance of the listener registry.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING