openclaw - 💡(How to fix) Fix [Bug] openclaw-weixin channel not registered in gateway runtime - invalid channels.start channel on WSL2

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…

Error Message

  1. Gateway startup log: http server listening (7 plugins: browser, canvas, device-pair, file-transfer, memory-core, phone-control, talk-voice) - no weixin channel, no error about being skipped channels.start handler ? normalizeChannelId("openclaw-weixin") ? normalizeAnyChannelId ? findRegisteredChannelPluginEntry ? buildRegisteredChannelPluginLookup().byKey.get("openclaw-weixin") ? returns undefined ? null ? "invalid channels.start channel" error
  2. Scan QR code with WeChat ? observe error
  • Symlink to stock extensions dir (causes different error)

Root Cause

The gateway runtime channel registry does not contain openclaw-weixin. The channel register() function (which calls api.registerChannel()) is never invoked because the gateway does not load non-stock channel plugins at startup.

The full call chain: channels.start handler ? normalizeChannelId("openclaw-weixin") ? normalizeAnyChannelId ? findRegisteredChannelPluginEntry ? buildRegisteredChannelPluginLookup().byKey.get("openclaw-weixin") ? returns undefined ? null ? "invalid channels.start channel" error

The CLI can load the plugin on-the-fly via resolveInstallableChannelPlugin() ? loadScopedChannelPlugin() and the QR login flow works perfectly. But the gateway startup never loads non-stock channel plugins, so channels.start fails.

Fix Action

Fix / Workaround

Workarounds Tried (10+, all failed)

  • Remove plugins.allow for auto-discovery
  • Add openclaw-weixin to plugins.allow
  • openclaw doctor --fix
  • openclaw plugins registry --refresh
  • Copy plugin to ~/.openclaw/extensions/openclaw-weixin/
  • Symlink to stock extensions dir (causes different error)
  • Reinstall with --force
  • Downgrade to 2026.5.20 then re-upgrade
  • Toggle bundledDiscovery between compat and allowlist
  • openclaw channels add guided setup
RAW_BUFFERClick to expand / collapse

Environment

  • OpenClaw: 2026.5.22 (also 2026.5.20)
  • Plugin: @tencent-weixin/openclaw-weixin v2.4.4
  • Node.js: v23.11.1
  • OS: Windows 11 + WSL2 (Ubuntu, kernel 6.6.114.1)
  • Gateway: local mode, systemd user service

Symptoms

  1. openclaw channels login --channel openclaw-weixin: QR code shows, scans successfully
  2. Auth saved to ~/.openclaw/openclaw-weixin/accounts/ correctly
  3. CLI sends channels.start via WebSocket after login
  4. Gateway responds: errorCode=INVALID_REQUEST errorMessage=invalid channels.start channel
  5. Gateway startup log: http server listening (7 plugins: browser, canvas, device-pair, file-transfer, memory-core, phone-control, talk-voice) - no weixin channel, no error about being skipped

Root Cause

The gateway runtime channel registry does not contain openclaw-weixin. The channel register() function (which calls api.registerChannel()) is never invoked because the gateway does not load non-stock channel plugins at startup.

The full call chain: channels.start handler ? normalizeChannelId("openclaw-weixin") ? normalizeAnyChannelId ? findRegisteredChannelPluginEntry ? buildRegisteredChannelPluginLookup().byKey.get("openclaw-weixin") ? returns undefined ? null ? "invalid channels.start channel" error

The CLI can load the plugin on-the-fly via resolveInstallableChannelPlugin() ? loadScopedChannelPlugin() and the QR login flow works perfectly. But the gateway startup never loads non-stock channel plugins, so channels.start fails.

Steps to Reproduce

  1. Install OpenClaw 2026.5.20+ on WSL2 (Windows 11)
  2. openclaw plugins install @tencent-weixin/openclaw-weixin
  3. openclaw config set channels.openclaw-weixin.enabled true
  4. openclaw gateway restart
  5. openclaw channels login --channel openclaw-weixin
  6. Scan QR code with WeChat ? observe error

Workarounds Tried (10+, all failed)

  • Remove plugins.allow for auto-discovery
  • Add openclaw-weixin to plugins.allow
  • openclaw doctor --fix
  • openclaw plugins registry --refresh
  • Copy plugin to ~/.openclaw/extensions/openclaw-weixin/
  • Symlink to stock extensions dir (causes different error)
  • Reinstall with --force
  • Downgrade to 2026.5.20 then re-upgrade
  • Toggle bundledDiscovery between compat and allowlist
  • openclaw channels add guided setup

Expected Behavior

After QR scan, gateway should recognize openclaw-weixin, start it via plugin.gateway.startAccount(), and begin long-polling for WeChat messages.

Additional Notes

  • Plugin openclaw.plugin.json correctly declares channels: ["openclaw-weixin"]
  • Plugin dist/index.js correctly exports register() with api.registerChannel()
  • Account auth data (token, userId) correctly saved after QR scan
  • openclaw channels capabilities shows accounts with Probe: "unavailable"
  • This appears to be a gap in how non-stock channel plugins are loaded at gateway startup vs discovered by CLI

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