Skip to content

[Bug]: WhatsApp (and other optional bundled plugins) silently broken after upgrade to 2026.3.22 #52838

@armanddp

Description

@armanddp

Summary

Upgrading from 2026.3.13 to 2026.3.22 silently breaks WhatsApp, ACPX, and 4 other plugins. They were added to optionalBundledClusters in scripts/lib/optional-bundled-clusters.mjs, but the npm release workflow doesn't set OPENCLAW_INCLUDE_OPTIONAL_BUNDLED=1, so they're excluded from dist/extensions/ in the published tarball.

Users see a misleading warning and the channel silently stops working:

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

Impact: 6 of 13 optional bundled plugins have no install path

Status Plugins
Broken — not bundled, not on npm whatsapp, acpx, googlechat, diffs, memory-lancedb, ui
📦 Installable — on npm (older version) matrix, diagnostics-otel, msteams, nostr, tlon, twitch, zalouser

whatsapp and acpx are core functionality — WhatsApp is a primary messaging channel and ACPX is the ACP/Codex runtime.

Why there's no workaround via openclaw plugins install

Three failures compound:

  1. Not in dist/extensions/ — excluded from the npm build
  2. Not on npm@openclaw/whatsapp and @openclaw/acpx were never published
  3. ClawHub namespace squatted[email protected] is a broken community package (missing openclaw.extensions metadata), and 2026.3.22 changed plugin resolution to prefer ClawHub before npm

Reproduction

npm i -g [email protected]
# With existing WhatsApp config from 2026.3.13:
openclaw gateway start
# → plugin not found: whatsapp (stale config entry ignored)
# WhatsApp channel does not load

openclaw plugins install whatsapp
# → Resolves to ClawHub [email protected]
# → package.json missing openclaw.extensions

openclaw plugins install @openclaw/whatsapp
# → 404 Not Found (never published)

Manual workaround (confirmed working)

Copy the extension source from the repo into dist/extensions/ and install dependencies:

git clone --depth 1 --branch v2026.3.22 https://github.com/openclaw/openclaw.git /tmp/openclaw-src

cp -r /tmp/openclaw-src/extensions/whatsapp $(npm root -g)/openclaw/dist/extensions/whatsapp
cd $(npm root -g)/openclaw/dist/extensions/whatsapp

# Remove workspace: protocol refs that break npm install
python3 -c "import json; d=json.load(open('package.json')); d.pop('devDependencies',None); d.pop('peerDependencies',None); d.pop('peerDependenciesMeta',None); json.dump(d,open('package.json','w'),indent=2)"
npm install --omit=dev

openclaw gateway restart

This works because the plugin loader uses jiti to transpile TypeScript on the fly.

Fix: PR #52846

Two changes to ease the transition to channels-as-plugins:

1. Keep whatsapp and acpx in default builds

Remove whatsapp and acpx from the optionalBundledClusters list so they ship in npm and Docker releases. Once @openclaw/whatsapp and @openclaw/acpx are published to npm and stable, they can be moved back to optional with proper migration guidance.

2. Show install hint for configured-but-missing channel plugins

When a missing plugin matches a known configured channel, show an actionable message instead of the misleading "stale config entry" warning:

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

This helps users of other optional plugins (googlechat, matrix, msteams, etc.) find the right fix.

Remaining work (outside the PR)

  • Publish @openclaw/whatsapp and @openclaw/acpx to npm via the plugin-npm-release workflow
  • Delist or fix the broken ClawHub [email protected] package
  • Add migration guidance to release notes when plugins move from bundled to optional
  • Consider openclaw doctor --fix auto-installing configured-but-missing channel plugins

Environment

  • OpenClaw 2026.3.22 (npm, macOS arm64)
  • Upgraded from 2026.3.13 where WhatsApp and ACPX were bundled

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions