openclaw - 💡(How to fix) Fix Dynamic reload doesn't disable a running WhatsApp account when its enabled flag flips to false

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…

OpenClaw detects an accounts.<name>.enabled true→false change on hot reload but does not tear down the running WhatsApp provider; the session stays connected and keeps processing inbound until a cold gateway restart.

Root Cause

OpenClaw detects an accounts.<name>.enabled true→false change on hot reload but does not tear down the running WhatsApp provider; the session stays connected and keeps processing inbound until a cold gateway restart.

Fix Action

Fix / Workaround

No provider teardown (sock.end()) follows; inbound from the allowlisted number is still processed. Workaround:

Code Example

Gateway log on the toggle:

[reload] config change detected
[reload] config change applied (dynamic reads: ...accounts.default.enabled)

No provider teardown (`sock.end()`) follows; inbound from the allowlisted number is still processed. Workaround:

systemctl --user restart openclaw-gateway.service

(~60s of agent unavailability + full plugin reload.)
RAW_BUFFERClick to expand / collapse

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

OpenClaw detects an accounts.<name>.enabled true→false change on hot reload but does not tear down the running WhatsApp provider; the session stays connected and keeps processing inbound until a cold gateway restart.

Steps to reproduce

  1. Configure a WhatsApp account with an active session (enabled: true, allowlist set); confirm [whatsapp] [default] starting provider and Listening for personal WhatsApp inbound messages. in the gateway log.
  2. Edit openclaw.json, set accounts.default.enabled to false, save.
  3. Watch the log: [reload] config change detected, then [reload] config change applied (dynamic reads: ...accounts.default.enabled).
  4. Send a DM to that account from an allowlisted number.
  5. Bug: the message is still received and processed — the session was not torn down.

Expected behavior

When accounts.<name>.enabled flips true→false, the running provider should stop the Baileys socket cleanly (sock.end() or equivalent), stop processing inbound for that account, and leave credentials on disk for later re-enable — all without a full gateway restart.

Actual behavior

The reload is detected and reported as 'applied', but the provider connection is not torn down. The account keeps receiving and processing inbound messages until a cold systemctl --user restart openclaw-gateway.service.

OpenClaw version

2026.4.26 (first observed 2026.4.20; upstream 2026.5.7 not yet tested)

Operating system

Debian 13 "trixie" (arm64), Raspberry Pi 5, kernel 6.12.75

Install method

npm global: sudo npm install -g openclaw@<version>; gateway run via systemd --user as user piserver. Node 22.22.0 / 24.14.1.

Model

N/A — WhatsApp channel / config-reload bug, not model-related

Provider / routing chain

N/A — not model/routing related

Additional provider/model setup details

No response

Logs, screenshots, and evidence

Gateway log on the toggle:

[reload] config change detected
[reload] config change applied (dynamic reads: ...accounts.default.enabled)

No provider teardown (`sock.end()`) follows; inbound from the allowlisted number is still processed. Workaround:

systemctl --user restart openclaw-gateway.service

(~60s of agent unavailability + full plugin reload.)

Impact and severity

  • Affected: anyone using accounts.<name>.enabled to soft-disable a WhatsApp account without losing credentials.
  • Severity: there is no way to disable a running account without a ~60s gateway outage.
  • Frequency: every time enabled is toggled true→false on a running account.
  • Consequence: discourages the 'soft retire / re-enable later' pattern the config field was designed to support.

Additional information

WhatsApp library bundled: @whiskeysockets/[email protected] (also tested with @innovatorssoft/[email protected] via npm alias — same behaviour). Expected teardown on disable: stop the socket, stop inbound, keep creds on disk for later reconnect. Reported as part of a hardening sprint on a self-hosted Pi 5 OpenClaw build.

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…

FAQ

Expected behavior

When accounts.<name>.enabled flips true→false, the running provider should stop the Baileys socket cleanly (sock.end() or equivalent), stop processing inbound for that account, and leave credentials on disk for later re-enable — all without a full gateway restart.

Still need to ship something?

×6

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

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix Dynamic reload doesn't disable a running WhatsApp account when its enabled flag flips to false