openclaw - 💡(How to fix) Fix [Bug]: openclaw status crashes loading channel setup fallback runtime loader [4 comments, 5 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#74693Fetched 2026-04-30 06:21:12
View on GitHub
Comments
4
Participants
5
Timeline
5
Reactions
2
Author
Timeline (top)
commented ×4cross-referenced ×1

openclaw status crashes on 2026.4.27 when read-only channel resolution enters the channel setup runtime fallback path for an external channel plugin.

The failure appears to be a packaged/bundled path issue in dist/read-only-*.js: it tries to resolve ../../plugins/loader.js relative to a bundled file under dist/, which points outside the OpenClaw package.

Error Message

[openclaw] Failed to start CLI: Error: Could not load plugin runtime loader for channel setup fallback. at loadPluginLoaderModule (file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/read-only-B4EkEtUx.js:32:8) at resolveReadOnlyChannelPluginsForConfig (file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/read-only-B4EkEtUx.js:357:33) at listReadOnlyChannelPluginsForConfig (file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/read-only-B4EkEtUx.js:306:9) at buildChannelsTable (file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/status.scan.runtime-MRy8OcNY.js:284:23) at file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/status.scan-overview-BS9CQXl_.js:341:26 at async collectStatusScanOverview (file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/status.scan-overview-BS9CQXl_.js:328:93) at async file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/status.scan-ew-ttQ9c.js:29:20 at async withProgress (file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/progress-DEutg9EU.js:116:10) at async scanStatus (file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/status.scan-ew-ttQ9c.js:24:9) at async statusCommand (file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/status.command-DyU-5omL.js:267:15)

Root Cause

openclaw status crashes on 2026.4.27 when read-only channel resolution enters the channel setup runtime fallback path for an external channel plugin.

The failure appears to be a packaged/bundled path issue in dist/read-only-*.js: it tries to resolve ../../plugins/loader.js relative to a bundled file under dist/, which points outside the OpenClaw package.

Fix Action

Fix / Workaround

Verified local workaround

Code Example

openclaw status

---

[openclaw] Failed to start CLI: Error: Could not load plugin runtime loader for channel setup fallback.
    at loadPluginLoaderModule (file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/read-only-B4EkEtUx.js:32:8)
    at resolveReadOnlyChannelPluginsForConfig (file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/read-only-B4EkEtUx.js:357:33)
    at listReadOnlyChannelPluginsForConfig (file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/read-only-B4EkEtUx.js:306:9)
    at buildChannelsTable (file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/status.scan.runtime-MRy8OcNY.js:284:23)
    at file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/status.scan-overview-BS9CQXl_.js:341:26
    at async collectStatusScanOverview (file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/status.scan-overview-BS9CQXl_.js:328:93)
    at async file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/status.scan-ew-ttQ9c.js:29:20
    at async withProgress (file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/progress-DEutg9EU.js:116:10)
    at async scanStatus (file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/status.scan-ew-ttQ9c.js:24:9)
    at async statusCommand (file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/status.command-DyU-5omL.js:267:15)

---

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

---

~/.npm-global/lib/node_modules/openclaw/dist/read-only-B4EkEtUx.js

---

~/.npm-global/lib/node_modules/plugins/loader.js

---

~/.npm-global/lib/node_modules/openclaw/dist/loader-CPsG_3Jg.js

---

// ~/.npm-global/lib/node_modules/plugins/loader.js
export { r as loadOpenClawPlugins } from '../openclaw/dist/loader-CPsG_3Jg.js';

---

plugin openclaw-weixin: channel plugin manifest declares openclaw-weixin without channelConfigs metadata; add openclaw.plugin.json#channelConfigs so config schema and setup surfaces work before runtime loads
RAW_BUFFERClick to expand / collapse

Summary

openclaw status crashes on 2026.4.27 when read-only channel resolution enters the channel setup runtime fallback path for an external channel plugin.

The failure appears to be a packaged/bundled path issue in dist/read-only-*.js: it tries to resolve ../../plugins/loader.js relative to a bundled file under dist/, which points outside the OpenClaw package.

Environment

  • OpenClaw: 2026.4.27 (cbc2ba0)
  • OS: Linux WSL2 (6.6.87.2-microsoft-standard-WSL2, x64)
  • Node: v25.9.0
  • Install path: ~/.npm-global/lib/node_modules/openclaw
  • External channel plugin installed: @tencent-weixin/[email protected]

Reproduction

With an external channel plugin configured such that status needs channel setup fallback:

openclaw status

Actual result

[openclaw] Failed to start CLI: Error: Could not load plugin runtime loader for channel setup fallback.
    at loadPluginLoaderModule (file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/read-only-B4EkEtUx.js:32:8)
    at resolveReadOnlyChannelPluginsForConfig (file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/read-only-B4EkEtUx.js:357:33)
    at listReadOnlyChannelPluginsForConfig (file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/read-only-B4EkEtUx.js:306:9)
    at buildChannelsTable (file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/status.scan.runtime-MRy8OcNY.js:284:23)
    at file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/status.scan-overview-BS9CQXl_.js:341:26
    at async collectStatusScanOverview (file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/status.scan-overview-BS9CQXl_.js:328:93)
    at async file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/status.scan-ew-ttQ9c.js:29:20
    at async withProgress (file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/progress-DEutg9EU.js:116:10)
    at async scanStatus (file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/status.scan-ew-ttQ9c.js:24:9)
    at async statusCommand (file:///home/giangthb/.npm-global/lib/node_modules/openclaw/dist/status.command-DyU-5omL.js:267:15)

Investigation

In the packaged dist/read-only-B4EkEtUx.js:

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

Since import.meta.url is the bundled file under:

~/.npm-global/lib/node_modules/openclaw/dist/read-only-B4EkEtUx.js

../../plugins/loader.js resolves to:

~/.npm-global/lib/node_modules/plugins/loader.js

That file does not exist. The actual packaged runtime loader is a bundled chunk, e.g.:

~/.npm-global/lib/node_modules/openclaw/dist/loader-CPsG_3Jg.js

and it exports loadOpenClawPlugins as r.

Verified local workaround

Creating this shim makes openclaw status work again:

// ~/.npm-global/lib/node_modules/plugins/loader.js
export { r as loadOpenClawPlugins } from '../openclaw/dist/loader-CPsG_3Jg.js';

After that, openclaw status completes and shows the channels table normally.

Related plugin metadata issue

The external plugin @tencent-weixin/[email protected] also emits:

plugin openclaw-weixin: channel plugin manifest declares openclaw-weixin without channelConfigs metadata; add openclaw.plugin.json#channelConfigs so config schema and setup surfaces work before runtime loads

That missing channelConfigs likely makes the status path enter the setup fallback, exposing the core loader path bug. Even if that plugin should be fixed separately, the core CLI should not resolve the runtime loader outside the installed openclaw package.

Expected result

openclaw status should not crash. The read-only channel setup fallback should import the packaged plugin runtime loader from the correct bundled path, or use a stable package-relative/runtime import that survives bundling.

extent analysis

TL;DR

The most likely fix is to update the LOADER_MODULE_CANDIDATES to use a stable package-relative import that survives bundling, rather than relying on a relative path that points outside the OpenClaw package.

Guidance

  • Investigate using a package-relative import, such as new URL('./loader.js', import.meta.url), to load the plugin runtime loader from the correct bundled path.
  • Verify that the loader.js file is correctly bundled and exported in the dist directory.
  • Consider creating a shim, as in the verified local workaround, to temporarily resolve the issue until a more permanent fix is implemented.
  • Review the external plugin @tencent-weixin/[email protected] to ensure it is correctly configured and emits the required channelConfigs metadata.

Example

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

Notes

The issue appears to be specific to the 2026.4.27 version of OpenClaw, and may be resolved in a future update. Additionally, the external plugin @tencent-weixin/[email protected] has a separate issue with missing channelConfigs metadata, which should be addressed separately.

Recommendation

Apply the workaround by creating a shim, as described in the verified local workaround, until a more permanent fix is implemented. This will allow openclaw status to function correctly until the underlying issue is resolved.

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 - 💡(How to fix) Fix [Bug]: openclaw status crashes loading channel setup fallback runtime loader [4 comments, 5 participants]