openclaw - ✅(Solved) Fix [Bug] WhatsApp channel broken in v2026.3.22 — bundled extension removed but @openclaw/whatsapp never published to npm [1 pull requests, 3 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#52857Fetched 2026-04-08 01:18:26
View on GitHub
Comments
3
Participants
3
Timeline
13
Reactions
1
Author
Timeline (top)
cross-referenced ×6commented ×3closed ×1locked ×1

Error Message

WhatsApp was a working built-in channel in v2026.3.13. After upgrading to v2026.3.22, it silently breaks. openclaw channels login --channel whatsapp throws Error: Unsupported channel: whatsapp and WhatsApp no longer appears in openclaw channels status. → Error: Unsupported channel: whatsapp

Root Cause

Root Cause In v2026.3.13, WhatsApp shipped as a bundled extension:

  • extensions/whatsapp/index.ts
  • extensions/whatsapp/src/channel.ts
  • extensions/whatsapp/src/runtime.ts

Fix Action

Fixed

PR fix notes

PR #52846: fix: keep whatsapp and acpx bundled, show install hint for missing channel plugins [AI-assisted]

Description (problem / solution / changelog)

Problem

Upgrading from 2026.3.13 to 2026.3.22 silently breaks WhatsApp and ACPX. Both were added to optionalBundledClusters but:

  • Neither has a published npm package (@openclaw/whatsapp, @openclaw/acpx return 404)
  • The ClawHub [email protected] package is broken (missing openclaw.extensions metadata)
  • The validation warning says "stale config entry ignored; remove it from plugins config" — the opposite of what users should do

6 of 13 optional bundled plugins are completely unavailable on 2026.3.22 (not bundled, not on npm): whatsapp, acpx, googlechat, diffs, memory-lancedb, ui.

Fix

Single commit with three targeted changes to ease the transition to channels-as-plugins:

1. Keep whatsapp and acpx in default builds (scripts/lib/optional-bundled-clusters.mjs)

Remove whatsapp and acpx from the optional list. Both are core functionality — WhatsApp is a primary messaging channel (bundled since day one) and ACPX is the ACP/Codex runtime. Once their npm packages are published and stable, they can move back to optional with proper migration guidance.

2. Include WhatsApp runtime API entries in the extension build (extensions/whatsapp/package.json)

The WhatsApp plugin uses a lazy boundary pattern that resolves light-runtime-api, runtime-api, and other modules at runtime. These were not listed in openclaw.extensions, so tsdown never compiled them into dist/extensions/whatsapp/. Without this, tarball installs crash with:

WhatsApp plugin runtime is unavailable: missing light-runtime-api for plugin 'whatsapp'

3. Show install hint for configured-but-missing channel plugins (src/config/validation.ts)

When a missing plugin matches a known channel ID with active configuration, show an actionable install command. This covers both plugins.entries and plugins.allow paths.

Before:

plugin not found: whatsapp (stale config entry ignored; remove it from plugins config)

After:

plugin not installed: whatsapp — channel is configured but the plugin is not bundled
in this build. Install it with: openclaw plugins install whatsapp

Changes

FileChange
scripts/lib/optional-bundled-clusters.mjsRemove whatsapp and acpx from optional list
extensions/whatsapp/package.jsonAdd runtime API entries to openclaw.extensions
src/plugins/bundled-plugin-metadata.generated.tsRegenerated (reflects new extension entries)
src/config/validation.tsInstall hint for configured-but-missing channel plugins
src/config/config.plugin-validation.test.tsTest for install hint behavior

Testing

  • Unit tests: pnpm vitest run src/config/config.plugin-validation.test.ts — 16/16 pass
  • Extension tests: pnpm test:extension whatsapp — 297/305 pass (8 pre-existing failures in login.test.ts timer mocks, unrelated to this change)
  • Build from source: pnpm build → verified dist/extensions/whatsapp/ includes light-runtime-api.js, runtime-api.js, etc.
  • Tarball install: npm packnpm install -g openclaw-2026.3.23.tgz → gateway restart → WhatsApp connected and processing messages (not a symlink — real tarball install)
  • Fully tested end-to-end on macOS arm64

Review feedback addressed

  • Hoisted KNOWN_CHANNEL_ID_SET to module scope (greptile P2)
  • Added expect(res.ok).toBe(true) assertion (greptile P2)
  • Install hint fires for plugins.allow entries too, not just plugins.entries (codex P1)
  • Extracted isConfiguredChannel() helper (codex P1)

AI-assisted

Fixes #52838

Changed files

  • .gitignore (modified, +1/-0)
  • pnpm-lock.yaml (modified, +3/-0)
  • scripts/copy-bundled-plugin-metadata.mjs (modified, +28/-0)
  • scripts/lib/optional-bundled-clusters.mjs (modified, +7/-2)
  • src/config/config.plugin-validation.test.ts (modified, +39/-0)
  • src/config/validation.ts (modified, +22/-0)

Code Example

npm view @openclaw/whatsapp
404 Not Found
RAW_BUFFERClick to expand / collapse

Summary WhatsApp was a working built-in channel in v2026.3.13. After upgrading to v2026.3.22, it silently breaks. openclaw channels login --channel whatsapp throws Error: Unsupported channel: whatsapp and WhatsApp no longer appears in openclaw channels status.

Root Cause In v2026.3.13, WhatsApp shipped as a bundled extension:

  • extensions/whatsapp/index.ts
  • extensions/whatsapp/src/channel.ts
  • extensions/whatsapp/src/runtime.ts

In v2026.3.22, this directory was removed. The compiled runtime still exists in dist/ (whatsapp-core-BxmLm1zq.js, runtime-whatsapp-boundary-CWceJs-_.js) but there is no loadable extension wrapper. The docs reference @openclaw/whatsapp as a separate npm package but it does not exist:

npm view @openclaw/whatsapp
→ 404 Not Found

Steps to Reproduce

  1. npm install -g openclaw (installs v2026.3.22)
  2. openclaw channels login --channel whatsappError: Unsupported channel: whatsapp
  3. openclaw channels status → WhatsApp not listed

Evidence

  • v2026.3.13: extensions/whatsapp/ bundled in package (TS source present)
  • v2026.3.22: no dist/extensions/whatsapp/ directory
  • @openclaw/whatsapp on npm: 404 Not Found
  • WhatsApp runtime files confirmed in dist/: whatsapp-core-BxmLm1zq.js, runtime-whatsapp-boundary-CWceJs-_.js, whatsapp-DiZX3r_W.js

Expected Behavior Either:

  1. Restore dist/extensions/whatsapp/ with compiled index.js (matching pattern of dist/extensions/discord/, dist/extensions/telegram/)
  2. Publish @openclaw/whatsapp to npm so openclaw plugins install @openclaw/whatsapp works

Environment OpenClaw v2026.3.22, Node.js v22.22.0, Ubuntu 24.04 LTS

cc @steipete

extent analysis

Fix Plan

To resolve the issue, we need to either restore the WhatsApp extension or publish it as a separate npm package. Since the package is not available on npm, we will focus on restoring the extension.

Step-by-Step Solution

  1. Downgrade to v2026.3.13: Temporarily downgrade OpenClaw to the version where WhatsApp was working.

npm install -g [email protected]

2. **Extract WhatsApp Extension**: Extract the WhatsApp extension from the downgraded version.
   ```bash
mkdir -p ~/openclaw-extensions/whatsapp
cp -r node_modules/openclaw/extensions/whatsapp ~/openclaw-extensions/whatsapp
  1. Upgrade OpenClaw: Upgrade OpenClaw back to the latest version.

npm install -g [email protected]

4. **Link WhatsApp Extension**: Link the extracted WhatsApp extension to the new OpenClaw version.
   ```bash
mkdir -p ~/.openclaw/extensions
ln -s ~/openclaw-extensions/whatsapp ~/.openclaw/extensions/whatsapp
  1. Compile WhatsApp Extension: Compile the WhatsApp extension.

cd ~/.openclaw/extensions/whatsapp npm install npm run build


#### Code Changes
No code changes are required in this case, as we are restoring the existing extension.

### Verification
To verify that the fix worked:
1. Run `openclaw channels login --channel whatsapp` to check if WhatsApp is recognized.
2. Run `openclaw channels status` to ensure WhatsApp is listed.

### Extra Tips
* This is a temporary fix until the `@openclaw/whatsapp` package is published on npm.
* Keep an eye on the OpenClaw repository for updates on the WhatsApp extension.
* If you encounter any issues, consider reaching out to the OpenClaw community or the maintainer (@steipete) for further assistance.

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