Skip to content

[Bug]: openclaw update regresses Feishu plugin — workspace:* in devDependencies reappears after upgrade #24211

@doomsday616

Description

@doomsday616

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

  1. Have a working OpenClaw install with Feishu plugin functional
  2. Run openclaw update (upgrades from any recent version to latest)
  3. Run openclaw gateway restart
  4. Send a message via Feishu — no reply
  5. 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
    
  6. Inspect the plugin's package.json:
    "devDependencies": {
        "openclaw": "workspace:*"
    }
  7. 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:

  1. 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
  2. openclaw update (which runs npm install -g openclaw@latest) replaces the entire package tree, wiping any manual fixes
  3. 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:

Metadata

Metadata

Assignees

No one assigned

    Labels

    staleMarked as stale due to inactivity

    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