openclaw - 💡(How to fix) Fix [Bug] doctor --fix installs stable plugin version on beta host, ignoring matching pre-release in same channel [2 comments, 3 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#77085Fetched 2026-05-05 05:52:29
View on GitHub
Comments
2
Participants
3
Timeline
3
Reactions
2
Timeline (top)
commented ×2closed ×1

On a host running [email protected], openclaw doctor --fix resolves @openclaw/brave-plugin to the latest stable (2026.5.2) instead of the latest pre-release matching the host channel (2026.5.3-beta.2). When stable happens to be a broken release (see #77083 for the brave-plugin packaging bug), this leaves the host stuck — every subsequent doctor --fix reinstalls the same broken stable.

Root Cause

Impact and severity

  • Affected: anyone on a beta channel host using externalized plugins where the stable release is broken (currently anyone running 2026.5.3-beta.* with brave).
  • Severity: high when combined with #77083 — recovery becomes impossible without manual npm install and installs.json edits, because every doctor --fix reinstalls the broken stable.
  • Frequency: deterministic.

Fix Action

Fix / Workaround

Additional information

Workaround: manually run cd ~/.openclaw/npm && npm install '@openclaw/[email protected]' and edit ~/.openclaw/plugins/installs.json to remove the brave entry. Subsequent doctor --fix runs will undo this.

Code Example

$ npm view @openclaw/brave-plugin versions --json
[
  "2026.5.1-beta.1",
  "2026.5.2-beta.1",
  "2026.5.2-beta.2",
  "2026.5.2",
  "2026.5.3-beta.1",
  "2026.5.3-beta.2"
]

---

{
  "hostContractVersion": "2026.5.3-beta.3",
  "installRecords": {
    "brave": {
      "source": "npm",
      "spec": "@openclaw/brave-plugin",
      "installPath": "~/.openclaw/npm/node_modules/@openclaw/brave-plugin",
      "version": "2026.5.2",
      "resolvedSpec": "@openclaw/[email protected]",
      "integrity": "sha512-NF+v2ox7/...",
      ...
    }
  }
}
RAW_BUFFERClick to expand / collapse

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

On a host running [email protected], openclaw doctor --fix resolves @openclaw/brave-plugin to the latest stable (2026.5.2) instead of the latest pre-release matching the host channel (2026.5.3-beta.2). When stable happens to be a broken release (see #77083 for the brave-plugin packaging bug), this leaves the host stuck — every subsequent doctor --fix reinstalls the same broken stable.

Steps to reproduce

  1. Install [email protected] (npm global).
  2. Have plugins.entries.brave.enabled: true in config (clean install or carry-over).
  3. Run openclaw doctor --fix --non-interactive.
  4. Inspect ~/.openclaw/plugins/installs.jsoninstallRecords.brave.version shows "2026.5.2", not "2026.5.3-beta.2".

Expected behavior

When the host is on a pre-release channel (-beta.N), doctor's plugin resolver should prefer the latest pre-release version of the plugin from the same channel (newest 2026.5.3-beta.* here), falling back to stable only when no compatible pre-release exists. This matches how npm install <pkg>@<host-version-tag> would behave.

Actual behavior

Doctor always picks the latest stable matching minHostVersion, ignoring the host's own beta channel, so even when 2026.5.3-beta.2 is published and would work, doctor installs the broken 2026.5.2 stable.

OpenClaw version

2026.5.3-beta.3

Operating system

macOS 26.4.1 (arm64)

Install method

npm global

Model

openai-codex/gpt-5.5

Provider / routing chain

openclaw -> openai-codex

Logs, screenshots, and evidence

Available plugin versions on npm:

$ npm view @openclaw/brave-plugin versions --json
[
  "2026.5.1-beta.1",
  "2026.5.2-beta.1",
  "2026.5.2-beta.2",
  "2026.5.2",
  "2026.5.3-beta.1",
  "2026.5.3-beta.2"
]

What doctor picked (excerpt from ~/.openclaw/plugins/installs.json):

{
  "hostContractVersion": "2026.5.3-beta.3",
  "installRecords": {
    "brave": {
      "source": "npm",
      "spec": "@openclaw/brave-plugin",
      "installPath": "~/.openclaw/npm/node_modules/@openclaw/brave-plugin",
      "version": "2026.5.2",
      "resolvedSpec": "@openclaw/[email protected]",
      "integrity": "sha512-NF+v2ox7/...",
      ...
    }
  }
}

(Comment: doctor picked stable instead of the available 2026.5.3-beta.2 pre-release matching the host channel.)

Impact and severity

  • Affected: anyone on a beta channel host using externalized plugins where the stable release is broken (currently anyone running 2026.5.3-beta.* with brave).
  • Severity: high when combined with #77083 — recovery becomes impossible without manual npm install and installs.json edits, because every doctor --fix reinstalls the broken stable.
  • Frequency: deterministic.

Additional information

Workaround: manually run cd ~/.openclaw/npm && npm install '@openclaw/[email protected]' and edit ~/.openclaw/plugins/installs.json to remove the brave entry. Subsequent doctor --fix runs will undo this.

The desired resolver behavior is similar to npm's own dist-tag handling: a beta.N host should pull the matching beta.* plugin tag if available.

extent analysis

TL;DR

The openclaw doctor --fix command should be modified to prefer the latest pre-release version of the plugin matching the host's channel, instead of always installing the latest stable version.

Guidance

  • The issue is likely caused by the openclaw doctor --fix command not considering the host's channel when resolving plugin versions.
  • To verify, check the ~/.openclaw/plugins/installs.json file to see if the installed plugin version matches the expected pre-release version.
  • A temporary workaround is to manually install the desired pre-release version of the plugin using npm install and edit the installs.json file to remove the brave entry.
  • The desired behavior can be achieved by modifying the plugin resolver to prioritize pre-release versions matching the host's channel, similar to npm's dist-tag handling.

Example

No code example is provided as the issue is related to the behavior of the openclaw doctor --fix command and not a specific code snippet.

Notes

The issue is specific to hosts running on a beta channel with externalized plugins, and the severity is high when combined with the brave-plugin packaging bug (#77083).

Recommendation

Apply the workaround by manually installing the desired pre-release version of the plugin and editing the installs.json file, until the openclaw doctor --fix command is modified to prioritize pre-release versions matching the host's channel.

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

When the host is on a pre-release channel (-beta.N), doctor's plugin resolver should prefer the latest pre-release version of the plugin from the same channel (newest 2026.5.3-beta.* here), falling back to stable only when no compatible pre-release exists. This matches how npm install <pkg>@<host-version-tag> would behave.

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] doctor --fix installs stable plugin version on beta host, ignoring matching pre-release in same channel [2 comments, 3 participants]