#2026.4.24 plugin runtime install collides with ~/node_modules
1 messages · Page 1 of 1 (latest)
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.
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.
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.jsonpresent- runtime deps landing in
~/node_modules - npm
ENOTEMPTY renameraces across gateway restarts doctor --fixwrites “successfully” butdoctorimmediately disagreesopenclaw-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