-
-
Notifications
You must be signed in to change notification settings - Fork 52.6k
Description
Environment
- OS: Debian 13, Linux 6.12.63
- Node: v22.22.0
- Package manager: pnpm 10.29.2 (global install)
- Previous version: 2026.2.22-2 (working)
- Updated version: 2026.2.26 (broken)
Description
After upgrading from 2026.2.22-2 to 2026.2.26 via pnpm add -g openclaw@latest, the gateway fails to start. All bundled plugins in extensions/ are rejected with:
unsafe plugin manifest path: .../extensions/telegram/openclaw.plugin.json (validation)
unsafe plugin manifest path: .../extensions/memory-core/openclaw.plugin.json (validation)
... (all ~35 bundled plugins)
plugins.slots.memory: plugin not found: memory-core
openclaw doctor --fix also fails with the same validation error, making recovery impossible without a rollback.
Root cause
The new openBoundaryFileSync security check in 2026.2.26 sets rejectHardlinks: true by default. pnpm's content-addressable store uses hardlinks (typical Links: 3 on plugin manifest files), so every bundled plugin manifest is rejected as "unsafe".
The relevant code path:
// openBoundaryFileSync in openclaw-root-*.js
const opened = openVerifiedFileSync({
filePath: absolutePath,
resolvedPath,
rejectHardlinks: params.rejectHardlinks ?? true, // <-- hardlinks rejected by default
maxBytes: params.maxBytes,
ioFs
});Related changelog entries:
- Security/Plugins/Hooks: enforce runtime/package path containment with realpath checks...
- Security/Plugins: harden plugin discovery by blocking unsafe candidates...
Steps to reproduce
- Install OpenClaw globally with pnpm:
pnpm add -g openclaw@2026.2.26 - Start the gateway:
openclaw gateway --port 18789 - Gateway crashes with "unsafe plugin manifest path" for all bundled plugins
Expected behavior
Bundled plugins shipped inside the OpenClaw package should be trusted regardless of filesystem hardlink count, since pnpm's hardlinks are a standard package manager behavior.
Workaround
Rollback to 2026.2.22-2: pnpm add -g openclaw@2026.2.22-2
Possible fix
- Skip hardlink validation for bundled plugins (those inside the package's own
extensions/directory) - Or allow
pnpm install --config.package-import-method=copyas a documented workaround (not tested)
Additional context
This affects any pnpm global install. npm installs may not be affected since npm copies files instead of hardlinking.