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=dev
npm 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.json after 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 — the pnpm publish workspace protocol rewrite only applies to dependencies, not devDependencies
openclaw update (which runs npm 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-sdk lands in the parent node_modules, sometimes it doesn't
Two possible fixes:
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 itsnode_modules, and the gateway fails to load the plugin withCannot find module '@larksuiteoapi/node-sdk'. The root cause is the sameworkspace:*issue from #14042 and #10941 — but it keeps coming back after everyopenclaw update.Steps to reproduce
openclaw update(upgrades from any recent version to latest)openclaw gateway restart~/.openclaw/logs/gateway.err.log:package.json:cd /opt/homebrew/lib/node_modules/openclaw/extensions/feishu && npm install --omit=devExpected 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 updatewipes the extension'snode_modules(becausenpm install -g openclaw@latestreplaces the entire package tree). The freshextensions/feishu/package.jsonstill ships with"openclaw": "workspace:*"in devDependencies, so runningnpm installin that directory fails withEUNSUPPORTEDPROTOCOLbefore installing any deps.The bundled extension sometimes works because its production deps (
@larksuiteoapi/node-sdk,@sinclair/typebox,zod) get hoisted into the parentopenclaw/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
Impact and severity
openclaw updatepackage.jsonafter every single upgrade, or Feishu messages are silently dropped with no user-visible errorAdditional 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:"openclaw": "workspace:*"in the Feishu extension's devDependencies — thepnpm publishworkspace protocol rewrite only applies todependencies, notdevDependenciesopenclaw update(which runsnpm install -g openclaw@latest) replaces the entire package tree, wiping any manual fixes@larksuiteoapi/node-sdklands in the parentnode_modules, sometimes it doesn'tTwo possible fixes:
workspace:*entries from all extensionpackage.jsonfiles beforenpm publish(or add a CI check that fails the publish if anyworkspace:protocol remains in the tarball)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