openclaw - 💡(How to fix) Fix [Bug]: 2026.5.27 Refresh still says stale [1 pull requests]

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…

On 2026.5.27, a manual plugin refresh on my source-checkout install still leaves the CLI warning that the saved plugin list is stale.

Error Message

"level": "warn",

Root Cause

This looks like an OpenClaw bug rather than local deployment state because the refresh command updates OpenClaw's own saved file successfully, then the next OpenClaw command says that same saved file is stale.

Fix Action

Fixed

Code Example

openclaw plugins registry --refresh

---

openclaw plugins list --json | jq '.registry'

---

openclaw plugins registry --refresh -> openclaw plugins list --json

---

agents.defaults.model.primary = openai/gpt-5.5
agents.defaults.models.openai/gpt-5.5.agentRuntime.id = codex
plugins.allow includes codex
plugins.entries.codex.enabled = true

---

$ command -v openclaw
~/Library/pnpm/openclaw

$ openclaw --version
OpenClaw 2026.5.27 (27ae826)

---

$ jq '{generatedAtMs, refreshReason, pluginCount:(.plugins|length), installRecordCount:(.installRecords|length), diagnostics}' ~/.openclaw/plugins/installs.json
{
  "generatedAtMs": 1779989269983,
  "refreshReason": "manual",
  "pluginCount": 125,
  "installRecordCount": 3,
  "diagnostics": []
}

---

$ openclaw plugins list --json | jq '.registry'
{
  "source": "derived",
  "diagnostics": [
    {
      "level": "warn",
      "code": "persisted-registry-stale-source",
      "message": "Persisted plugin registry points at a different bundled plugin tree; using derived plugin index. Run `openclaw plugins registry --refresh` to update the persisted registry."
    }
  ]
}

---

$ jq -r '.plugins[] | select(.pluginId=="codex" or .pluginId=="whatsapp" or .pluginId=="slack" or .pluginId=="qa-lab" or .pluginId=="amazon-bedrock") | [.pluginId,.rootDir] | @tsv' ~/.openclaw/plugins/installs.json
codex	~/dev/openclaw-src/dist/extensions/codex
amazon-bedrock	~/dev/openclaw-src/extensions/amazon-bedrock
qa-lab	~/dev/openclaw-src/extensions/qa-lab
slack	~/dev/openclaw-src/extensions/slack
whatsapp	~/dev/openclaw-src/extensions/whatsapp

---

dist_whatsapp=missing
source_whatsapp=present
dist_slack=missing
source_slack=present
RAW_BUFFERClick to expand / collapse

Bug type

Behavior bug

Beta release blocker

No

Summary

On 2026.5.27, a manual plugin refresh on my source-checkout install still leaves the CLI warning that the saved plugin list is stale.

Steps to reproduce

  1. Use a source checkout of OpenClaw 2026.5.27 with the built output present.
  2. Run:
openclaw plugins registry --refresh
  1. Run:
openclaw plugins list --json | jq '.registry'

Expected behavior

After the manual refresh, the next plugin list command should use the saved plugin list or report no stale-source warning.

Actual behavior

The refresh updates the saved plugin list, but the next command still ignores it and reports persisted-registry-stale-source.

OpenClaw version

2026.5.27 (27ae826)

Operating system

macOS 26.5, Node v22.22.3

Install method

Source checkout at ~/dev/openclaw-src, built locally. Main CLI is installed through pnpm at ~/Library/pnpm/openclaw.

Model

No model call is involved in this repro. The live default agent model on this install is openai/gpt-5.5 with agentRuntime.id = codex.

Provider / routing chain

No provider request is made. The repro is CLI-only:

openclaw plugins registry --refresh -> openclaw plugins list --json

Additional provider/model setup details

The live default agent config follows the same Codex setup used in prior reports:

agents.defaults.model.primary = openai/gpt-5.5
agents.defaults.models.openai/gpt-5.5.agentRuntime.id = codex
plugins.allow includes codex
plugins.entries.codex.enabled = true

No token material is included here.

Logs, screenshots, and evidence

Version and CLI path:

$ command -v openclaw
~/Library/pnpm/openclaw

$ openclaw --version
OpenClaw 2026.5.27 (27ae826)

The manual refresh writes a fresh saved plugin list with no diagnostics:

$ jq '{generatedAtMs, refreshReason, pluginCount:(.plugins|length), installRecordCount:(.installRecords|length), diagnostics}' ~/.openclaw/plugins/installs.json
{
  "generatedAtMs": 1779989269983,
  "refreshReason": "manual",
  "pluginCount": 125,
  "installRecordCount": 3,
  "diagnostics": []
}

The next plugin list command still falls back to the derived list:

$ openclaw plugins list --json | jq '.registry'
{
  "source": "derived",
  "diagnostics": [
    {
      "level": "warn",
      "code": "persisted-registry-stale-source",
      "message": "Persisted plugin registry points at a different bundled plugin tree; using derived plugin index. Run `openclaw plugins registry --refresh` to update the persisted registry."
    }
  ]
}

The saved list contains both built plugin paths and source plugin paths:

$ jq -r '.plugins[] | select(.pluginId=="codex" or .pluginId=="whatsapp" or .pluginId=="slack" or .pluginId=="qa-lab" or .pluginId=="amazon-bedrock") | [.pluginId,.rootDir] | @tsv' ~/.openclaw/plugins/installs.json
codex	~/dev/openclaw-src/dist/extensions/codex
amazon-bedrock	~/dev/openclaw-src/extensions/amazon-bedrock
qa-lab	~/dev/openclaw-src/extensions/qa-lab
slack	~/dev/openclaw-src/extensions/slack
whatsapp	~/dev/openclaw-src/extensions/whatsapp

For at least some bundled plugins on this checkout, only the source path exists:

dist_whatsapp=missing
source_whatsapp=present
dist_slack=missing
source_slack=present

Impact and severity

Low to medium for source-checkout installs. The plugin list still works, but the warning survives the exact repair command it recommends, so operators cannot tell whether the saved plugin list is healthy.

Additional information

This looks like an OpenClaw bug rather than local deployment state because the refresh command updates OpenClaw's own saved file successfully, then the next OpenClaw command says that same saved file is stale.

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

After the manual refresh, the next plugin list command should use the saved plugin list or report no stale-source warning.

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING