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:
- Not in
dist/extensions/ — excluded from the npm build
- Not on npm —
@openclaw/whatsapp and @openclaw/acpx were never published
- ClawHub namespace squatted —
whatsapp@0.0.5-Alpha 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 openclaw@2026.3.22
# 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 whatsapp@0.0.5-Alpha
# → 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.
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
whatsapp@0.0.5-Alpha 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
Summary
Upgrading from 2026.3.13 to 2026.3.22 silently breaks WhatsApp, ACPX, and 4 other plugins. They were added to
optionalBundledClustersinscripts/lib/optional-bundled-clusters.mjs, but the npm release workflow doesn't setOPENCLAW_INCLUDE_OPTIONAL_BUNDLED=1, so they're excluded fromdist/extensions/in the published tarball.Users see a misleading warning and the channel silently stops working:
Impact: 6 of 13 optional bundled plugins have no install path
whatsapp,acpx,googlechat,diffs,memory-lancedb,uimatrix,diagnostics-otel,msteams,nostr,tlon,twitch,zalouserwhatsappandacpxare core functionality — WhatsApp is a primary messaging channel and ACPX is the ACP/Codex runtime.Why there's no workaround via
openclaw plugins installThree failures compound:
dist/extensions/— excluded from the npm build@openclaw/whatsappand@openclaw/acpxwere never publishedwhatsapp@0.0.5-Alphais a broken community package (missingopenclaw.extensionsmetadata), and 2026.3.22 changed plugin resolution to prefer ClawHub before npmReproduction
Manual workaround (confirmed working)
Copy the extension source from the repo into
dist/extensions/and install dependencies:This works because the plugin loader uses
jitito 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
whatsappandacpxfrom theoptionalBundledClusterslist so they ship in npm and Docker releases. Once@openclaw/whatsappand@openclaw/acpxare 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:
This helps users of other optional plugins (googlechat, matrix, msteams, etc.) find the right fix.
Remaining work (outside the PR)
@openclaw/whatsappand@openclaw/acpxto npm via the plugin-npm-release workflowwhatsapp@0.0.5-Alphapackageopenclaw doctor --fixauto-installing configured-but-missing channel pluginsEnvironment