openclaw - 💡(How to fix) Fix [Bug]: Windows Control UI update leaves external Discord plugin in stale/broken install state [2 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#80459Fetched 2026-05-11 03:14:23
View on GitHub
Comments
2
Participants
2
Timeline
4
Reactions
2
Author
Timeline (top)
commented ×2closed ×1cross-referenced ×1

On Windows, a Control UI update from 2026.5.2 to 2026.5.7 completed with status=error, left the Gateway service metadata and external Discord plugin install in a stale/broken state, and the managed openclaw plugins update/install repair path later failed with npm arborist Cannot read properties of undefined (reading 'spec'); a direct npm install into %USERPROFILE%\.openclaw\npm was required to restore Discord.

Error Message

2026-05-10 16:21 KST: Control UI update button/run

2026-05-10T16:21:14.597+09:00 update.run completed actor=openclaw-control-ui ... restartReason=update.run status=error 2026-05-10T16:21:14.600+09:00 ⇄ res ✓ update.run 97819ms ...

2026-05-10 16:25 KST: second Control UI update run returned error quickly

2026-05-10T16:25:00.469+09:00 update.run completed actor=openclaw-control-ui ... restartReason=update.run status=error 2026-05-10T16:25:00.472+09:00 ⇄ res ✓ update.run 212ms ...

Gateway did not immediately stop; later logs continued.

2026-05-10 19:34+ KST: external Discord plugin discovered from source/TS path

[plugins] plugins.allow is empty; discovered non-bundled plugins may auto-load: discord (....openclaw\npm\node_modules@openclaw\discord\index.ts)

Repeated plugin/runtime errors also appeared

Error: Unable to resolve bundled plugin public surface speech-core/runtime-api.js

2026-05-10 19:54 KST: plugin install attempt downloaded/extracted package but could not replace stale dir

19:54:34 Downloading @openclaw/discord… 19:54:35 Extracting ... openclaw-discord-2026.5.7.tgz… 19:54:37 ERROR plugin already exists: C:\Users....openclaw\npm\node_modules@openclaw\discord (delete it first)

Use openclaw plugins update <id-or-npm-spec> to upgrade the tracked plugin, or rerun install with --force to replace it.

19:54:52 ERROR Plugin not found: discord

2026-05-11 KST: service metadata drift after update attempt

Gateway service definition needs repair:

  • service was installed by OpenClaw 2026.5.2, current CLI is 2026.5.7

Gateway repair failed: Error: schtasks create failed: Access is denied.

2026-05-11 KST: Gateway starts without Discord while plugin package is broken

Config warnings:

  • plugins.entries.discord: plugin discord: installed plugin package requires compiled runtime output for TypeScript entry setup-entry.ts: expected ./dist/setup-entry.js, ./dist/setup-entry.mjs, ./dist/setup-entry.cjs, setup

[plugins] installed plugin package requires compiled runtime output for TypeScript entry index.ts: expected ./dist/index.js, ./dist/index.mjs, ./dist/index.cjs, index.js, index.mjs, index.cjs (plugin=discord, source=$OPENCLAW_STATE_DIR\npm...)

http server listening (7 plugins: browser, device-pair, file-transfer, google, memory-core, phone-control, talk-voice; 7.7s)

Managed plugin repair/update attempts on 2026.5.7

openclaw plugins update discord → npm install failed: Cannot read properties of undefined (reading 'spec')

openclaw plugins install @openclaw/discord --force --pin → npm install failed: Cannot read properties of undefined (reading 'spec')

Direct npm install workaround succeeded

cd %USERPROFILE%.openclaw\npm npm install @openclaw/[email protected] --omit=dev --omit=peer --legacy-peer-deps --ignore-scripts --no-audit --no-fund --save-exact

added 18 packages in 5s DIST_INDEX_OK

After Gateway restart

Discord default: enabled, configured, running, connected bot:@clawed-bot-home works, audit ok

Remaining audit drift after runtime recovery

Plugin index includes unpinned npm specs Plugin index records drift from installed package versions

  • discord (recorded 2026.5.2, installed 2026.5.7)

Root Cause

  1. Start with OpenClaw installed on Windows via npm global, with Gateway service installed by OpenClaw 2026.5.2 and an external Discord channel plugin configured/tracked.
  2. In the Control UI, run the update button/update flow toward 2026.5.7.
  3. Observe update.run completed actor=openclaw-control-ui ... restartReason=update.run status=error in gateway logs.
  4. Observe the Gateway continues running, but the external Discord plugin is discovered from %USERPROFILE%\.openclaw\npm\node_modules\@openclaw\discord\index.ts / TypeScript entry paths instead of compiled dist output.
  5. Observe a later Discord plugin install attempt downloads/extracts openclaw-discord-2026.5.7.tgz but fails because the plugin directory already exists, followed by Plugin not found: discord.
  6. On 2026.5.7, run managed repair/update attempts:
    • openclaw plugins update discord
    • openclaw plugins install @openclaw/discord --force --pin
  7. Observe both managed plugin commands fail with npm arborist Cannot read properties of undefined (reading 'spec').
  8. Run direct npm install from %USERPROFILE%\.openclaw\npm:
    • npm install @openclaw/[email protected] --omit=dev --omit=peer --legacy-peer-deps --ignore-scripts --no-audit --no-fund --save-exact
  9. Observe direct npm install succeeds and Discord loads again after Gateway restart, but plugin install-record drift remains (recorded 2026.5.2, installed 2026.5.7).

Fix Action

Fix / Workaround

Direct npm install workaround succeeded

cd %USERPROFILE%.openclaw\npm npm install @openclaw/[email protected] --omit=dev --omit=peer --legacy-peer-deps --ignore-scripts --no-audit --no-fund --save-exact

Code Example

# 2026-05-10 16:21 KST: Control UI update button/run
2026-05-10T16:21:14.597+09:00 update.run completed actor=openclaw-control-ui ... restartReason=update.run status=error
2026-05-10T16:21:14.600+09:00 ⇄ res ✓ update.run 97819ms ...

# 2026-05-10 16:25 KST: second Control UI update run returned error quickly
2026-05-10T16:25:00.469+09:00 update.run completed actor=openclaw-control-ui ... restartReason=update.run status=error
2026-05-10T16:25:00.472+09:00 ⇄ res ✓ update.run 212ms ...

# Gateway did not immediately stop; later logs continued.
# 2026-05-10 19:34+ KST: external Discord plugin discovered from source/TS path
[plugins] plugins.allow is empty; discovered non-bundled plugins may auto-load:
discord (...\.openclaw\npm\node_modules\@openclaw\discord\index.ts)

# Repeated plugin/runtime errors also appeared
Error: Unable to resolve bundled plugin public surface speech-core/runtime-api.js

# 2026-05-10 19:54 KST: plugin install attempt downloaded/extracted package but could not replace stale dir
19:54:34 Downloading @openclaw/discord…
19:54:35 Extracting ... openclaw-discord-2026.5.7.tgz…
19:54:37 ERROR plugin already exists:
C:\Users\...\.openclaw\npm\node_modules\@openclaw\discord
(delete it first)

Use `openclaw plugins update <id-or-npm-spec>` to upgrade the tracked plugin,
or rerun install with `--force` to replace it.

19:54:52 ERROR Plugin not found: discord

# 2026-05-11 KST: service metadata drift after update attempt
Gateway service definition needs repair:
- service was installed by OpenClaw 2026.5.2, current CLI is 2026.5.7

Gateway repair failed: Error: schtasks create failed: Access is denied.

# 2026-05-11 KST: Gateway starts without Discord while plugin package is broken
Config warnings:
- plugins.entries.discord: plugin discord: installed plugin package requires compiled runtime output for TypeScript entry setup-entry.ts: expected ./dist/setup-entry.js, ./dist/setup-entry.mjs, ./dist/setup-entry.cjs, setup

[plugins] installed plugin package requires compiled runtime output for TypeScript entry index.ts: expected ./dist/index.js, ./dist/index.mjs, ./dist/index.cjs, index.js, index.mjs, index.cjs (plugin=discord, source=$OPENCLAW_STATE_DIR\npm\...)

http server listening (7 plugins: browser, device-pair, file-transfer, google, memory-core, phone-control, talk-voice; 7.7s)

# Managed plugin repair/update attempts on 2026.5.7
openclaw plugins update discord
→ npm install failed: Cannot read properties of undefined (reading 'spec')

openclaw plugins install @openclaw/discord --force --pin
→ npm install failed: Cannot read properties of undefined (reading 'spec')

# Direct npm install workaround succeeded
cd %USERPROFILE%\.openclaw\npm
npm install @openclaw/discord@2026.5.7 --omit=dev --omit=peer --legacy-peer-deps --ignore-scripts --no-audit --no-fund --save-exact

added 18 packages in 5s
DIST_INDEX_OK

# After Gateway restart
Discord default: enabled, configured, running, connected
bot:@clawed-bot-home
works, audit ok

# Remaining audit drift after runtime recovery
Plugin index includes unpinned npm specs
Plugin index records drift from installed package versions
- discord (recorded 2026.5.2, installed 2026.5.7)
RAW_BUFFERClick to expand / collapse

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

On Windows, a Control UI update from 2026.5.2 to 2026.5.7 completed with status=error, left the Gateway service metadata and external Discord plugin install in a stale/broken state, and the managed openclaw plugins update/install repair path later failed with npm arborist Cannot read properties of undefined (reading 'spec'); a direct npm install into %USERPROFILE%\.openclaw\npm was required to restore Discord.

Steps to reproduce

Observed sequence from local logs; this is not yet a minimal clean-room repro:

  1. Start with OpenClaw installed on Windows via npm global, with Gateway service installed by OpenClaw 2026.5.2 and an external Discord channel plugin configured/tracked.
  2. In the Control UI, run the update button/update flow toward 2026.5.7.
  3. Observe update.run completed actor=openclaw-control-ui ... restartReason=update.run status=error in gateway logs.
  4. Observe the Gateway continues running, but the external Discord plugin is discovered from %USERPROFILE%\.openclaw\npm\node_modules\@openclaw\discord\index.ts / TypeScript entry paths instead of compiled dist output.
  5. Observe a later Discord plugin install attempt downloads/extracts openclaw-discord-2026.5.7.tgz but fails because the plugin directory already exists, followed by Plugin not found: discord.
  6. On 2026.5.7, run managed repair/update attempts:
    • openclaw plugins update discord
    • openclaw plugins install @openclaw/discord --force --pin
  7. Observe both managed plugin commands fail with npm arborist Cannot read properties of undefined (reading 'spec').
  8. Run direct npm install from %USERPROFILE%\.openclaw\npm:
    • npm install @openclaw/[email protected] --omit=dev --omit=peer --legacy-peer-deps --ignore-scripts --no-audit --no-fund --save-exact
  9. Observe direct npm install succeeds and Discord loads again after Gateway restart, but plugin install-record drift remains (recorded 2026.5.2, installed 2026.5.7).

Expected behavior

Based on the 2026.5.2 and 2026.5.7 release notes, the update/repair flow should recover external npm channel plugins without requiring manual npm surgery: the Control UI/CLI update path should either complete plugin update sync or leave a clear recoverable error, and openclaw plugins update/install/repair should be able to replace a stale/broken external plugin package directory.

Actual behavior

The Control UI update flow returned status=error twice, Gateway stayed alive, and the Discord external plugin directory/metadata was left in a broken state: OpenClaw detected TypeScript/source entry paths and missing compiled runtime output, blocked reinstall because the plugin directory already existed, then still reported Plugin not found: discord. Subsequent managed plugin update/install commands failed with npm arborist Cannot read properties of undefined (reading 'spec'). Direct npm install into the OpenClaw-managed npm root restored the runtime package, but OpenClaw's plugin install record still reported drift.

OpenClaw version

Observed during transition from 2026.5.2 to 2026.5.7. Final CLI/runtime after manual recovery: OpenClaw 2026.5.7 (eeef486).

Operating system

Windows 11 / Windows_NT 10.0.26200 x64

Install method

npm global on Windows; Gateway installed as a Windows Scheduled Task service.

Model

N/A (channel/plugin update/install path; not model-specific)

Provider / routing chain

N/A (Discord external channel plugin update/install path; not provider/model routing-specific)

Additional provider/model setup details

N/A

Logs, screenshots, and evidence

# 2026-05-10 16:21 KST: Control UI update button/run
2026-05-10T16:21:14.597+09:00 update.run completed actor=openclaw-control-ui ... restartReason=update.run status=error
2026-05-10T16:21:14.600+09:00 ⇄ res ✓ update.run 97819ms ...

# 2026-05-10 16:25 KST: second Control UI update run returned error quickly
2026-05-10T16:25:00.469+09:00 update.run completed actor=openclaw-control-ui ... restartReason=update.run status=error
2026-05-10T16:25:00.472+09:00 ⇄ res ✓ update.run 212ms ...

# Gateway did not immediately stop; later logs continued.
# 2026-05-10 19:34+ KST: external Discord plugin discovered from source/TS path
[plugins] plugins.allow is empty; discovered non-bundled plugins may auto-load:
discord (...\.openclaw\npm\node_modules\@openclaw\discord\index.ts)

# Repeated plugin/runtime errors also appeared
Error: Unable to resolve bundled plugin public surface speech-core/runtime-api.js

# 2026-05-10 19:54 KST: plugin install attempt downloaded/extracted package but could not replace stale dir
19:54:34 Downloading @openclaw/discord…
19:54:35 Extracting ... openclaw-discord-2026.5.7.tgz…
19:54:37 ERROR plugin already exists:
C:\Users\...\.openclaw\npm\node_modules\@openclaw\discord
(delete it first)

Use `openclaw plugins update <id-or-npm-spec>` to upgrade the tracked plugin,
or rerun install with `--force` to replace it.

19:54:52 ERROR Plugin not found: discord

# 2026-05-11 KST: service metadata drift after update attempt
Gateway service definition needs repair:
- service was installed by OpenClaw 2026.5.2, current CLI is 2026.5.7

Gateway repair failed: Error: schtasks create failed: Access is denied.

# 2026-05-11 KST: Gateway starts without Discord while plugin package is broken
Config warnings:
- plugins.entries.discord: plugin discord: installed plugin package requires compiled runtime output for TypeScript entry setup-entry.ts: expected ./dist/setup-entry.js, ./dist/setup-entry.mjs, ./dist/setup-entry.cjs, setup

[plugins] installed plugin package requires compiled runtime output for TypeScript entry index.ts: expected ./dist/index.js, ./dist/index.mjs, ./dist/index.cjs, index.js, index.mjs, index.cjs (plugin=discord, source=$OPENCLAW_STATE_DIR\npm\...)

http server listening (7 plugins: browser, device-pair, file-transfer, google, memory-core, phone-control, talk-voice; 7.7s)

# Managed plugin repair/update attempts on 2026.5.7
openclaw plugins update discord
npm install failed: Cannot read properties of undefined (reading 'spec')

openclaw plugins install @openclaw/discord --force --pin
npm install failed: Cannot read properties of undefined (reading 'spec')

# Direct npm install workaround succeeded
cd %USERPROFILE%\.openclaw\npm
npm install @openclaw/[email protected] --omit=dev --omit=peer --legacy-peer-deps --ignore-scripts --no-audit --no-fund --save-exact

added 18 packages in 5s
DIST_INDEX_OK

# After Gateway restart
Discord default: enabled, configured, running, connected
bot:@clawed-bot-home
works, audit ok

# Remaining audit drift after runtime recovery
Plugin index includes unpinned npm specs
Plugin index records drift from installed package versions
- discord (recorded 2026.5.2, installed 2026.5.7)

Relevant upstream/release context checked:

  • v2026.5.7 release notes include plugin/install lifecycle improvements and Plugins/channel setup: forward setChannelRuntime from non-bundled external plugin setup entries... fixing #77779 via #77799.
  • appcast.xml for 2026.5.2 mentions external plugin installation/update/doctor repair, stale configured installs, missing package payloads, npm-first cutover, and beta-channel plugin fallback.
  • Updating docs say openclaw update detects install type, fetches latest, runs doctor, and restarts Gateway; package-manager updates via live Gateway control-plane force a non-deferred update restart after package swap.

Impact and severity

Affected: Windows OpenClaw install with external Discord channel plugin.

Severity: High for the affected channel. Gateway survived, but Discord channel was not loaded/connected until manual npm recovery.

Frequency: Observed once in this environment across the 2026.5.2 -> 2026.5.7 update path; managed repair/update commands failed reproducibly after the broken plugin state was present.

Consequence: Discord channel unavailable, Gateway plugin state/audit metadata drift, and user had to perform manual npm install in %USERPROFILE%\.openclaw\npm to recover.

Additional information

This may involve two related failure surfaces rather than one root cause:

  1. Control UI/live Gateway update path can end with status=error while leaving a partially updated install/service state (current CLI 2026.5.7, service metadata from 2026.5.2).
  2. Once the external Discord plugin package directory exists but is stale/broken/missing compiled dist, managed plugin update/install does not recover it on this Windows setup and instead fails through npm arborist Cannot read properties of undefined (reading 'spec').

The Scheduled Task service repair failure may require administrator privileges and may be separate from the npm arborist/plugin install-record issue, but it contributed to the local half-updated state.

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

Based on the 2026.5.2 and 2026.5.7 release notes, the update/repair flow should recover external npm channel plugins without requiring manual npm surgery: the Control UI/CLI update path should either complete plugin update sync or leave a clear recoverable error, and openclaw plugins update/install/repair should be able to replace a stale/broken external plugin package directory.

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]: Windows Control UI update leaves external Discord plugin in stale/broken install state [2 comments, 2 participants]