openclaw - ✅(Solved) Fix 2026.4.27: Missing plugins/loader.js causes 'Could not load plugin runtime loader for channel setup fallback' on startup [1 pull requests, 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#75237Fetched 2026-05-01 05:36:26
View on GitHub
Comments
1
Participants
2
Timeline
5
Reactions
2
Author
Timeline (top)
closed ×1commented ×1cross-referenced ×1mentioned ×1

After upgrading to 2026.4.27, openclaw status (and any CLI command) fails immediately with:

[openclaw] Failed to start CLI: Error: Could not load plugin runtime loader for channel setup fallback.
    at loadPluginLoaderModule (file:///...openclaw/dist/read-only-B4EkEtUx.js:32:8)
    at resolveReadOnlyChannelPluginsForConfig (...)
    at listReadOnlyChannelPluginsForConfig (...)
    at buildChannelsTable (...)

Error Message

[openclaw] Failed to start CLI: Error: Could not load plugin runtime loader for channel setup fallback. at loadPluginLoaderModule (file:///...openclaw/dist/read-only-B4EkEtUx.js:32:8) at resolveReadOnlyChannelPluginsForConfig (...) at listReadOnlyChannelPluginsForConfig (...) at buildChannelsTable (...)

Root Cause

dist/read-only-B4EkEtUx.js (new in 2026.4.27) looks for a plugin runtime loader at:

const LOADER_MODULE_CANDIDATES = [
  new URL("../../plugins/loader.js", import.meta.url),
  new URL("../../plugins/loader.ts", import.meta.url)
];

From dist/read-only-B4EkEtUx.js, ../../ resolves two levels up from the dist/ directory — landing at node_modules/plugins/loader.js, not openclaw/plugins/loader.js. This file is not created by the installer/postinstall script, so the loader always fails.

This code path is triggered for any user with an externally-installed channel plugin (e.g. openclaw-channel-zulip installed via npm). The previous version (2026.4.26, read-only-CJhnSL6J.js) did not have this code path.

Fix Action

Workaround

Create the missing shim manually:

mkdir -p ~/.nvm/versions/node/v22.22.2/lib/node_modules/plugins
echo 'export { r as loadOpenClawPlugins } from "../openclaw/dist/loader-CPsG_3Jg.js";' \
  > ~/.nvm/versions/node/v22.22.2/lib/node_modules/plugins/loader.js

(Adjust the node path and the hash suffix on loader-CPsG_3Jg.js to match your installation.)

This workaround is fragile — the file is wiped on reinstall/upgrade and the hash suffix on the loader filename will change with each release.

PR fix notes

PR #13: fix: import jsonResult from core instead of removed browser-support subpath

Description (problem / solution / changelog)

Summary

  • openclaw/plugin-sdk/browser-support was removed from openclaw's exports map in the current release (the subpath no longer exists and the file is absent from dist/plugin-sdk/)
  • jsonResult is exported from openclaw/plugin-sdk/core and has been all along — this is a one-line redirect
  • Without this fix the plugin fails to load entirely with Error: Cannot find module '.../root-alias.cjs/browser-support'

How to reproduce

Install [email protected] against [email protected] and run openclaw status --deep — the plugin load error appears immediately.

Test plan

  • Run openclaw status after applying the fix and confirm no zulip failed to load error
  • Verify jsonResult is still re-exported correctly by the plugin

🤖 Generated with Claude Code

Changed files

  • src/sdk.ts (modified, +1/-1)

Code Example

[openclaw] Failed to start CLI: Error: Could not load plugin runtime loader for channel setup fallback.
    at loadPluginLoaderModule (file:///...openclaw/dist/read-only-B4EkEtUx.js:32:8)
    at resolveReadOnlyChannelPluginsForConfig (...)
    at listReadOnlyChannelPluginsForConfig (...)
    at buildChannelsTable (...)

---

const LOADER_MODULE_CANDIDATES = [
  new URL("../../plugins/loader.js", import.meta.url),
  new URL("../../plugins/loader.ts", import.meta.url)
];

---

mkdir -p ~/.nvm/versions/node/v22.22.2/lib/node_modules/plugins
echo 'export { r as loadOpenClawPlugins } from "../openclaw/dist/loader-CPsG_3Jg.js";' \
  > ~/.nvm/versions/node/v22.22.2/lib/node_modules/plugins/loader.js
RAW_BUFFERClick to expand / collapse

Summary

After upgrading to 2026.4.27, openclaw status (and any CLI command) fails immediately with:

[openclaw] Failed to start CLI: Error: Could not load plugin runtime loader for channel setup fallback.
    at loadPluginLoaderModule (file:///...openclaw/dist/read-only-B4EkEtUx.js:32:8)
    at resolveReadOnlyChannelPluginsForConfig (...)
    at listReadOnlyChannelPluginsForConfig (...)
    at buildChannelsTable (...)

Root Cause

dist/read-only-B4EkEtUx.js (new in 2026.4.27) looks for a plugin runtime loader at:

const LOADER_MODULE_CANDIDATES = [
  new URL("../../plugins/loader.js", import.meta.url),
  new URL("../../plugins/loader.ts", import.meta.url)
];

From dist/read-only-B4EkEtUx.js, ../../ resolves two levels up from the dist/ directory — landing at node_modules/plugins/loader.js, not openclaw/plugins/loader.js. This file is not created by the installer/postinstall script, so the loader always fails.

This code path is triggered for any user with an externally-installed channel plugin (e.g. openclaw-channel-zulip installed via npm). The previous version (2026.4.26, read-only-CJhnSL6J.js) did not have this code path.

Steps to Reproduce

  1. Install openclaw-channel-zulip (or any external channel plugin) via openclaw install
  2. Upgrade openclaw to 2026.4.27
  3. Run openclaw status

Workaround

Create the missing shim manually:

mkdir -p ~/.nvm/versions/node/v22.22.2/lib/node_modules/plugins
echo 'export { r as loadOpenClawPlugins } from "../openclaw/dist/loader-CPsG_3Jg.js";' \
  > ~/.nvm/versions/node/v22.22.2/lib/node_modules/plugins/loader.js

(Adjust the node path and the hash suffix on loader-CPsG_3Jg.js to match your installation.)

This workaround is fragile — the file is wiped on reinstall/upgrade and the hash suffix on the loader filename will change with each release.

Expected Behavior

The postinstall script (or the package itself) should create node_modules/plugins/loader.js pointing at the correct bundled loader, or the URL path in read-only-B4EkEtUx.js should be corrected so it resolves within the openclaw package rather than two levels above it.

Environment

  • openclaw: 2026.4.27 (cbc2ba0)
  • Node: v22.22.2
  • OS: Linux 6.17.0-22-generic x64
  • Install method: npm global (npm install -g openclaw)

extent analysis

TL;DR

Create a manual shim for the missing plugin runtime loader or wait for a fix in a future version of openclaw.

Guidance

  • The issue is caused by a change in the read-only-B4EkEtUx.js file that looks for the plugin runtime loader in the wrong location.
  • To verify the issue, check if the node_modules/plugins/loader.js file exists and points to the correct bundled loader.
  • As a temporary workaround, create the missing shim manually using the provided bash commands, adjusting the node path and hash suffix as needed.
  • Be aware that this workaround is fragile and may need to be reapplied after reinstalling or upgrading openclaw.

Example

mkdir -p ~/.nvm/versions/node/v22.22.2/lib/node_modules/plugins
echo 'export { r as loadOpenClawPlugins } from "../openclaw/dist/loader-CPsG_3Jg.js";' \
  > ~/.nvm/versions/node/v22.22.2/lib/node_modules/plugins/loader.js

Notes

The provided workaround is temporary and may not be suitable for all environments. A more permanent fix would require changes to the openclaw package or postinstall script.

Recommendation

Apply the workaround, as a fix is not available in the current version of openclaw. This will allow users to continue using the CLI commands until a future version addresses the issue.

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…

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 - ✅(Solved) Fix 2026.4.27: Missing plugins/loader.js causes 'Could not load plugin runtime loader for channel setup fallback' on startup [1 pull requests, 1 comments, 2 participants]