-
-
Notifications
You must be signed in to change notification settings - Fork 69.6k
[Bug]: openclaw update regresses Feishu plugin — workspace:* in devDependencies reappears after upgrade #24211
Description
Summary
After running openclaw update (from 2026.2.21 to 2026.2.22), the bundled Feishu extension at /opt/homebrew/lib/node_modules/openclaw/extensions/feishu/ loses its node_modules, and the gateway fails to load the plugin with Cannot find module '@larksuiteoapi/node-sdk'. The root cause is the same workspace:* issue from #14042 and #10941 — but it keeps coming back after every openclaw update.
Steps to reproduce
- Have a working OpenClaw install with Feishu plugin functional
- Run
openclaw update(upgrades from any recent version to latest) - Run
openclaw gateway restart - Send a message via Feishu — no reply
- Check
~/.openclaw/logs/gateway.err.log:Error: Cannot find module '@larksuiteoapi/node-sdk' Require stack: - /opt/homebrew/lib/node_modules/openclaw/extensions/feishu/src/client.ts - Inspect the plugin's
package.json:"devDependencies": { "openclaw": "workspace:*" }
- Try to fix:
cd /opt/homebrew/lib/node_modules/openclaw/extensions/feishu && npm install --omit=devnpm error code EUNSUPPORTEDPROTOCOL npm error Unsupported URL Type "workspace:": workspace:*
Expected behavior
After openclaw update, all bundled extensions should have their production dependencies intact and the Feishu plugin should load without manual intervention.
Actual behavior
Every openclaw update wipes the extension's node_modules (because npm install -g openclaw@latest replaces the entire package tree). The fresh extensions/feishu/package.json still ships with "openclaw": "workspace:*" in devDependencies, so running npm install in that directory fails with EUNSUPPORTEDPROTOCOL before installing any deps.
The bundled extension sometimes works because its production deps (@larksuiteoapi/node-sdk, @sinclair/typebox, zod) get hoisted into the parent openclaw/node_modules/. But this hoisting is not guaranteed — npm's hoisting behavior depends on version conflicts and tree shape. When hoisting doesn't happen, the plugin breaks silently.
OpenClaw version
2026.2.22-2
Operating system
macOS 26.3 (Apple Silicon M3 Pro)
Install method
npm global (npm install -g openclaw)
Logs, screenshots, and evidence
# gateway.err.log after openclaw update + gateway restart
Error: Cannot find module '@larksuiteoapi/node-sdk'
Require stack:
- /opt/homebrew/lib/node_modules/openclaw/extensions/feishu/src/client.ts
# Attempting manual fix
$ cd /opt/homebrew/lib/node_modules/openclaw/extensions/feishu
$ npm install --omit=dev
npm error code EUNSUPPORTEDPROTOCOL
npm error Unsupported URL Type "workspace:": workspace:*
# Workaround that works
$ npm pkg delete devDependencies
$ npm install --omit=dev
# Plugin loads successfully after gateway restart
Impact and severity
- Affected: All npm global users who rely on the bundled Feishu plugin
- Severity: High — Feishu channel goes completely silent after every upgrade
- Frequency: 100% repro on every
openclaw update - Consequence: Users must manually patch
package.jsonafter every single upgrade, or Feishu messages are silently dropped with no user-visible error
Additional information
#14042 and #10941 addressed this same workspace:* root cause and were closed, but the fix doesn't survive the upgrade cycle. The problem keeps regressing because:
- The npm-published tarball still contains
"openclaw": "workspace:*"in the Feishu extension's devDependencies — thepnpm publishworkspace protocol rewrite only applies todependencies, notdevDependencies openclaw update(which runsnpm install -g openclaw@latest) replaces the entire package tree, wiping any manual fixes- Whether the plugin works or not depends on npm's non-deterministic dep hoisting — sometimes
@larksuiteoapi/node-sdklands in the parentnode_modules, sometimes it doesn't
Two possible fixes:
- Publish-time: Strip
workspace:*entries from all extensionpackage.jsonfiles beforenpm publish(or add a CI check that fails the publish if anyworkspace:protocol remains in the tarball) - Runtime: In the extension loader, sanitize
workspace:entries before runningnpm install, similar to the suggestion in [Bug]: openclaw channels addfails for Feishu plugin —workspace:*in devDependencies breaksnpm install --omit=dev #14042