#2026.4.24 plugin runtime install collides with ~/node_modules

1 messages · Page 1 of 1 (latest)

fading yacht
#

"2026.4.24 plugin runtime install collides with ~/node_modules. Doctor --fix doesn't actually fix it. Had to roll back to 2026.4.23."

mystic lakeBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> ✅ Mark Solution

errant coveBOT
#

Yeah, rolling back to 2026.4.23 was the right safe move here.

This looks like a real 2026.4.24 bundled plugin runtime deps regression, not user config. There’s already #72058 tracking the broader “deps install / staging loop after 2026.4.24” shape, and #72168 tracking the browser/Playwright variant where doctor --fix installs deps but the packaged runtime still can’t resolve them. (github.com)

I’d stay pinned on 2026.4.23 until a fixed release lands. There’s an open PR for the Playwright/runtime-shim side (#72238), but it was still open/awaiting review in the GitHub view I checked. (github.com)

If you have a clean repro specifically involving ~/node_modules, please add it to the existing GitHub issue or file a new one with:

openclaw --version
node --version
npm --version
openclaw doctor --fix

plus the exact collision/error text. That distinction matters — ~/node_modules collision might be a separate resolver bug from the already-reported plugin-runtime cache issue.

GitHub

Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞 - Issues · openclaw/openclaw

fading yacht
#

Repro for the ~/node_modules collision (separate from #72058/#72168 it sounds like):

Versions:

  • openclaw 2026.4.24 (cbcfdf6) ‚Äî rolled back to 2026.4.23 to recover
  • node v22.22.2, npm 10.9.7, macOS 26.4 arm64

Trigger: host has a ~/package.json (declares @tobilu/qmd + express + playwright). With one in place, OpenClaw 2026.4.24 lands all bundled plugin runtime deps in ~/node_modules instead of an isolated path under ~/.openclaw/plugin-runtime-deps/. Each gateway restart triggers parallel npm installs that race-condition each other.

Error pattern (every gateway restart):

[plugins] 25 plugin(s) failed to initialize (validation: acpx, amazon-bedrock, anthropic, ..., discord, ..., telegram, ...)
[channels] failed to load bundled channel discord: npm error code ENOTEMPTY
npm error syscall rename
npm error path /Users/<USER>/node_modules/ast-types
npm error dest /Users/<USER>/node_modules/.ast-types-vAnMhAQh
npm error errno -66
npm error ENOTEMPTY: directory not empty, rename 'ast-types' -> '.ast-types-vAnMhAQh'

Notable: .NAME-RANDOMHASH temp dirs are deterministic across retries, so npm reproducibly collides with leftover dirs from prior failed installs. Rotation through different packages (ast-types, gaxios, @tobilu/qmd, bare-url) — same root cause.

Two plugin-runtime-deps dirs observed: openclaw-2026.4.24-da6bdffc3d96 and openclaw-unknown-58f52a79291f — the "unknown" suggests a partial install. doctor --fix reports installing all 35 deps successfully, but then openclaw doctor immediately reports them missing again — implying it's writing to one path and the gateway reads from another.

doctor --fix also auto-restarts the gateway as a side effect, which keeps re-breaking channels.

Recovery: npm install -g openclaw@2026.4.23 && launchctl kickstart -k gui/501/ai.openclaw.gateway ‚Üí 11 Discord + 2 Telegram ESTABLISHED in 3 min.

errant coveBOT
#

That repro is really useful — and yeah, this sounds distinct enough from #72058/#72168 to deserve its own GitHub issue.

The key new signal is:

  • ~/package.json present
  • runtime deps landing in ~/node_modules
  • npm ENOTEMPTY rename races across gateway restarts
  • doctor --fix writes “successfully” but doctor immediately disagrees
  • openclaw-unknown-* runtime dir appears

I searched quickly and didn’t find an existing issue matching openclaw-unknown-58f52a79291f, so I’d file this as a new regression:

https://github.com/openclaw/openclaw/issues

Suggested title:

2026.4.24 bundled plugin runtime deps install into ~/node_modules when ~/package.json exists