openclaw - 💡(How to fix) Fix [Bug]: Optional npm-installed plugins appear to disappear after installing another plugin [1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#77049Fetched 2026-05-05 05:53:01
View on GitHub
Comments
1
Participants
2
Timeline
3
Reactions
2
Author
Timeline (top)
closed ×1commented ×1labeled ×1

Optional npm-installed plugins appear to disappear after installing another plugin / restarting the gateway. The config and plugin install registry still contain entries for multiple installed plugins, but ~/.openclaw/npm/node_modules/@openclaw only contains the most recently installed plugin. On the next restart/registry refresh, previously installed plugins become “plugin not found” warnings.

This looks like the plugin installer is not preserving multiple npm plugin installs under ~/.openclaw/npm, possibly because that directory has no package.json and the generated node_modules/.package-lock.json only tracks the latest installed plugin.

Root Cause

This looks like the plugin installer is not preserving multiple npm plugin installs under ~/.openclaw/npm, possibly because that directory has no package.json and the generated node_modules/.package-lock.json only tracks the latest installed plugin.

Code Example

- plugins.entries.codex: plugin not found: codex (stale config entry ignored; remove it from plugins config)
- plugins.entries.brave: plugin not found: brave (stale config entry ignored; remove it from plugins config)
- plugins.entries.msteams: plugin not found: msteams (stale config entry ignored; remove it from plugins config)
- plugins.allow: plugin not found: codex (stale config entry ignored; remove it from plugins config)
- plugins.allow: plugin not found: brave (stale config entry ignored; remove it from plugins config)
- plugins.allow: plugin not found: msteams (stale config entry ignored; remove it from plugins config)

---
RAW_BUFFERClick to expand / collapse

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

Optional npm-installed plugins appear to disappear after installing another plugin / restarting the gateway. The config and plugin install registry still contain entries for multiple installed plugins, but ~/.openclaw/npm/node_modules/@openclaw only contains the most recently installed plugin. On the next restart/registry refresh, previously installed plugins become “plugin not found” warnings.

This looks like the plugin installer is not preserving multiple npm plugin installs under ~/.openclaw/npm, possibly because that directory has no package.json and the generated node_modules/.package-lock.json only tracks the latest installed plugin.

Steps to reproduce

  1. On OpenClaw 2026.5.2, install an official npm plugin, e.g. openclaw plugins install @openclaw/codex or openclaw plugins install @openclaw/brave-plugin.
  2. Restart the gateway when prompted.
  3. Run openclaw plugins list and observe the installed plugin appears.
  4. Restart the gateway again.
  5. Run openclaw plugins list again.

Expected behavior

Installed plugins should remain discoverable across gateway restarts once installed and enabled, especially official packages installed into ~/.openclaw/npm/node_modules.

Plugins involved

  • @openclaw/brave-plugin
  • @openclaw/codex
  • @openclaw/msteams

Actual behavior

After a subsequent gateway restart, previously visible installed plugins disappear from openclaw plugins list, and config warnings appear such as:

Config warnings:

- plugins.entries.codex: plugin not found: codex (stale config entry ignored; remove it from plugins config)
- plugins.entries.brave: plugin not found: brave (stale config entry ignored; remove it from plugins config)
- plugins.entries.msteams: plugin not found: msteams (stale config entry ignored; remove it from plugins config)
- plugins.allow: plugin not found: codex (stale config entry ignored; remove it from plugins config)
- plugins.allow: plugin not found: brave (stale config entry ignored; remove it from plugins config)
- plugins.allow: plugin not found: msteams (stale config entry ignored; remove it from plugins config)

Observed locally:

  • @openclaw/codex appeared after install/restart, then disappeared after a later restart.
  • @openclaw/brave-plugin appeared after install/restart, then later @openclaw/codex disappeared.
  • ~/.openclaw/plugins/installs.json still contained install records for brave, codex, and msteams.
  • ~/.openclaw/npm/node_modules/.package-lock.json showed only @openclaw/brave-plugin at one point, despite install records still referencing other plugins.
  • openclaw plugins registry reported State: fresh, so the registry did not present itself as stale.

OpenClaw version

2026.5.2

Operating system

macOS 15.7.5 x64

Install method

npm global

Model

Codex OpenAI GPT 5.5

Provider / routing chain

Local macOS OpenClaw CLI → local OpenClaw gateway/service → plugin discovery from bundled stock plugins plus npm-installed plugins under ~/.openclaw/npm/node_modules → persisted plugin registry at ~/.openclaw/plugins/installs.json

Additional provider/model setup details

No response

Logs, screenshots, and evidence

Impact and severity

No response

Additional information

The OpenClaw plugin installer may be installing into ~/.openclaw/npm without maintaining a real package.json dependency list, so npm treats installed plugins as extraneous. A later install or registry refresh may overwrite/prune the previous plugin state, leaving stale install records.

extent analysis

TL;DR

The issue can be fixed by maintaining a package.json file in the ~/.openclaw/npm directory to track dependencies and prevent npm from pruning installed plugins.

Guidance

  • Verify that the ~/.openclaw/npm directory does not have a package.json file, which is likely causing npm to treat installed plugins as extraneous.
  • Create a package.json file in the ~/.openclaw/npm directory and initialize it with npm init to track dependencies.
  • After installing a plugin, update the package.json file to include the plugin as a dependency using npm install --save <plugin-name> or npm install --save-dev <plugin-name>.
  • Check the ~/.openclaw/npm/node_modules/.package-lock.json file to ensure it reflects the installed plugins.

Example

// ~/.openclaw/npm/package.json
{
  "name": "openclaw-plugins",
  "version": "1.0.0",
  "dependencies": {
    "@openclaw/codex": "^1.0.0",
    "@openclaw/brave-plugin": "^1.0.0",
    "@openclaw/msteams": "^1.0.0"
  }
}

Notes

This solution assumes that the OpenClaw plugin installer is using npm to install plugins. If the installer uses a different package manager, the solution may vary.

Recommendation

Apply workaround: Create and maintain a package.json file in the ~/.openclaw/npm directory to track dependencies and prevent npm from pruning installed plugins. This will ensure that installed plugins are preserved across gateway restarts.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

Installed plugins should remain discoverable across gateway restarts once installed and enabled, especially official packages installed into ~/.openclaw/npm/node_modules.

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix [Bug]: Optional npm-installed plugins appear to disappear after installing another plugin [1 comments, 2 participants]