openclaw - ✅(Solved) Fix [Bug]: openclaw migrate copies plugins.entries config for uninstalled plugins [1 pull requests, 1 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#78191Fetched 2026-05-06 06:16:05
View on GitHub
Comments
1
Participants
2
Timeline
5
Reactions
2
Author
Timeline (top)
labeled ×2closed ×1commented ×1cross-referenced ×1

Root Cause

Root Cause

Fix Action

Fix / Workaround

Workaround

PR fix notes

PR #78198: fix: skip uninstalled Honcho migration config

Description (problem / solution / changelog)

Fixes #78191.

Summary

  • stop Hermes migration from writing plugins.entries.honcho for an uninstalled/manual Honcho memory provider
  • keep built-in file memory selected and leave Honcho as a skipped manual follow-up
  • add regression coverage that plan/apply do not create the dangling plugin entry

Tests

  • PATH="/tmp/openclaw-pnpm-shim:$PATH" pnpm exec oxfmt --write --threads=1 extensions/migrate-hermes/config.ts extensions/migrate-hermes/config.test.ts
  • git diff --check
  • node scripts/test-projects.mjs extensions/migrate-hermes/config.test.ts attempted, blocked before tests by missing local package @openclaw/fs-safe/config in this checkout dependency install
  • PATH="/tmp/openclaw-pnpm-shim:$PATH" node scripts/check-changed.mjs passed conflict/changelog/export/duplicate lanes, then failed existing extension typecheck diagnostics unrelated to this patch, including missing @openclaw/fs-safe/* modules and pre-existing strictness errors in other extensions

Changed files

  • extensions/migrate-hermes/config.test.ts (modified, +45/-7)
  • extensions/migrate-hermes/config.ts (modified, +2/-20)

Code Example

npm install -g openclaw@latest

---

openclaw onboard

---

~/.claude/settings.json

---

openclaw migrate apply

---

openclaw gateway start

---

{
  "_migrationHints": {
    "pluginsToInstall": [
      "openclaw plugins install brave",
      "openclaw plugins install github"
    ]
  }
}

---

plugin schema config invalid: plugins.entries.brave
plugin schema config invalid: plugins.entries.github
Gateway failed to start: plugin registration rejected missing hook names

---

plugins.entries.<plugin-id>

---

~/.openclaw/openclaw.json

---

openclaw doctor --fix

---

3320 restarts

---

openclaw migrate plan

---

Plugin config entries (brave, github, fs) [will write]

---

openclaw migrate apply

---

Wrote plugin config entries: brave, github, fs
Migration complete.

---

openclaw gateway start

---

Config invalid:
- plugins.entries.brave: plugin not found
- plugins.entries.github: plugin not found
- plugins.entries.fs: plugin not found

---

{
  "plugins": {
    "entries": {
      "brave": {},
      "github": {},
      "fs": {}
    }
  }
}

---

{
  "plugins": {
    "entries": {}
  },
  "_migrationHints": {
    "pluginsToInstall": [
      "openclaw plugins install brave",
      "openclaw plugins install github",
      "openclaw plugins install fs"
    ]
  }
}

---

Config ✓ valid
Gateway ✓ reachable
Plugins0 external plugins installed

---

ConfigINVALID
plugins.entries.brave: plugin not found
plugins.entries.github: plugin not found
plugins.entries.fs: plugin not found

---

openclaw migrate apply

---

openclaw-gateway.service: Main process exited
Scheduled restart job
Scheduled restart job
Scheduled restart job
Start request repeated too quickly
Failed to start OpenClaw Gateway

---

openclaw doctor --fix

---

~/.openclaw/openclaw.json

---

plugins.entries.*

---

openclaw plugins install <plugin-id>

---

openclaw gateway restart

---

plugins.entries.<id>

---

BEFORE config modification

---

v2026.4.26
Released April 28, 2026

---

~8 days old

---

openclaw migrate apply

---

openclaw --version

---

2026.4.26

---

node --version

---

v24.0.0

---

npm --version

---

10.9.2

---

Ubuntu 24.04.2 LTS

---

openclaw migrate apply
Writes plugins.entries.* into config
No validation occurs
Gateway startup validation fails
Gateway exits with code 1
systemd restart loop begins
Fresh installation becomes unusable

---

openclaw migrate apply
RAW_BUFFERClick to expand / collapse

Bug Evidence Report

openclaw migrate → Gateway Crash-Loop

plugins.entries for uninstalled plugins written without pre-flight check

OpenClaw v2026.4.26 · Ubuntu 24.04 LTS · Filed: 2026-05-06


Bug Type

Crash (process/app exits or hangs)


Beta Release Blocker

No


Summary

When running openclaw migrate apply (a brand-new command introduced April 28, 2026), OpenClaw copies Claude Code or Hermes plugin configuration blocks directly into ~/.openclaw/openclaw.json.

The issue occurs when those plugins are not installed on the target system.

OpenClaw Gateway validates plugins.entries during startup. If referenced plugins do not exist locally, the entire config is rejected and the Gateway crash-loops.

The migration command reports success even though it creates an invalid configuration.

Result:

  • Gateway fails to start
  • systemd enters restart loop
  • User receives no meaningful migration warning
  • Recovery requires manual config editing or repair tooling

Steps to Reproduce

  1. Fresh Ubuntu 24.04 LTS
  2. Install Node.js v24 via nvm
  3. Install OpenClaw:
npm install -g openclaw@latest
  1. Run onboarding:
openclaw onboard
  1. Create Claude config:
~/.claude/settings.json

Containing MCP/plugin references such as:

  • brave-search
  • github
  • fs
  1. Run migration:
openclaw migrate apply
  1. Start Gateway:
openclaw gateway start

Expected Behavior

Migration should either:

Option A

Skip unresolved plugins.entries and emit post-migration install hints.

Example:

{
  "_migrationHints": {
    "pluginsToInstall": [
      "openclaw plugins install brave",
      "openclaw plugins install github"
    ]
  }
}

Option B

Automatically install referenced plugins before writing config.


Actual Behavior

Gateway startup immediately fails.

Example log output:

plugin schema config invalid: plugins.entries.brave
plugin schema config invalid: plugins.entries.github
Gateway failed to start: plugin registration rejected missing hook names

systemd repeatedly attempts restart until failure threshold is reached.

Migration still reports success.


Impact & Severity

Who's affectedSeverityDiscoverabilityFeature age
Any Linux user migrating from Claude Code or Hermes with plugins configuredHigh — Gateway completely unusable after migrationVery low — migration reports success while Gateway silently fails~8 days old

Root Cause

openclaw migrate apply copies:

plugins.entries.<plugin-id>

directly into:

~/.openclaw/openclaw.json

without validating whether referenced plugins exist locally.

Gateway validation later rejects the config.


Evidence From Repository

Official Documentation

Plugin documentation states:

"Missing: config references a plugin id that discovery did not find"

Gateway currently treats this as fatal during startup.


Issue #52992

Confirms that invalid:

  • plugins.allow
  • plugins.entries

references can block all CLI commands, including:

openclaw doctor --fix

This can create a deadlock scenario.


Issue #25595

Shows identical crash-loop behavior:

  • plugin config becomes invalid
  • Gateway repeatedly restarts
  • systemd eventually gives up

Reported restart count:

3320 restarts

Release v2026.5.4

Release notes added:

emit catalog-backed install hints when plugins.entries references an uninstalled plugin

This confirms maintainers already recognize the issue category.

However:

  • fix only applies to existing configs
  • migration importer still writes invalid entries

Migration Output Evidence

openclaw migrate plan

openclaw migrate plan

Output:

✓ Plugin config entries (brave, github, fs) [will write]

No warning is emitted.


openclaw migrate apply

openclaw migrate apply

Output:

✓ Wrote plugin config entries: brave, github, fs
Migration complete.

Again:

  • no validation
  • no install check
  • no warning

Gateway Failure Evidence

Gateway Start

openclaw gateway start

Result:

Config invalid:
- plugins.entries.brave: plugin not found
- plugins.entries.github: plugin not found
- plugins.entries.fs: plugin not found

Gateway aborts startup.


Broken Config Example

Generated invalid config:

{
  "plugins": {
    "entries": {
      "brave": {},
      "github": {},
      "fs": {}
    }
  }
}

None of these plugins exist locally.


Correct Safe Migration Behavior

Expected safer output:

{
  "plugins": {
    "entries": {}
  },
  "_migrationHints": {
    "pluginsToInstall": [
      "openclaw plugins install brave",
      "openclaw plugins install github",
      "openclaw plugins install fs"
    ]
  }
}

Doctor Output Comparison

Before Migration

Config ✓ valid
Gateway ✓ reachable
Plugins ✓ 0 external plugins installed

After Migration

Config ✗ INVALID
plugins.entries.brave: plugin not found
plugins.entries.github: plugin not found
plugins.entries.fs: plugin not found

The only change was:

openclaw migrate apply

systemd Crash Loop

Example journal output:

openclaw-gateway.service: Main process exited
Scheduled restart job
Scheduled restart job
Scheduled restart job
Start request repeated too quickly
Failed to start OpenClaw Gateway

Crash-loop behavior confirmed.


Why This Is Dangerous

The migration feature:

  • appears successful
  • silently writes invalid state
  • creates broken backups
  • can potentially block repair tooling
  • bricks fresh installations

This affects first-time onboarding users most severely.


Workaround

Option 1

Run:

openclaw doctor --fix

This quarantines invalid plugin entries.


Option 2

Manually edit:

~/.openclaw/openclaw.json

Remove invalid:

plugins.entries.*

blocks.


Option 3

Install missing plugins manually:

openclaw plugins install <plugin-id>

Then restart Gateway:

openclaw gateway restart

Recommended Fix

1. Pre-flight Validation

Before writing config:

plugins.entries.<id>

must be resolved against installed plugin catalog.


2. Skip Unresolved Plugins

Migration should either:

  • skip invalid entries
  • emit install hints
  • or block migration entirely

3. Backup Timing

Backups must occur:

BEFORE config modification

not after.

Current implementation backs up already-broken state.


Proof This Is a New Regression

Feature introduced in:

v2026.4.26
Released April 28, 2026

Migration command is approximately:

~8 days old

at time of report.


No Existing Issue Matches This Vector

Existing issues involve:

  • manual config edits
  • upgrades
  • stale manifests
  • schema mismatches

No existing issue documents:

openclaw migrate apply

creating invalid plugins.entries.


Environment Information

OpenClaw

openclaw --version
2026.4.26

Node.js

node --version
v24.0.0

npm

npm --version
10.9.2

OS

Ubuntu 24.04.2 LTS

Failure Chain Summary

openclaw migrate apply
Writes plugins.entries.* into config
No validation occurs
Gateway startup validation fails
Gateway exits with code 1
systemd restart loop begins
Fresh installation becomes unusable

Final Assessment

Severity: HIGH

This is a migration-time configuration corruption bug that:

  • silently produces invalid state
  • breaks Gateway startup
  • affects fresh onboarding users
  • lacks adequate warnings
  • bypasses degraded-mode protections
  • may deadlock repair tooling

The issue originates specifically from:

openclaw migrate apply

writing unresolved plugin entries without pre-flight validation.

extent analysis

TL;DR

To fix the openclaw migrate apply issue causing Gateway crash-loops due to invalid plugins.entries, perform pre-flight validation of plugin entries against the installed plugin catalog before writing the config.

Guidance

  1. Pre-flight validation: Before writing plugins.entries into the config, validate each plugin entry against the installed plugin catalog to ensure all referenced plugins exist locally.
  2. Skip unresolved plugins or emit install hints: Modify the migration command to either skip writing invalid plugin entries or emit install hints for unresolved plugins to prevent config corruption.
  3. Backup config before modification: Ensure that backups of the config occur before any modifications are made to prevent backing up already-broken state.

Example

No explicit code example is provided due to the lack of specific implementation details in the issue. However, the fix involves modifying the openclaw migrate apply command to include pre-flight validation and handling of unresolved plugins.

Notes

The provided guidance is based on the information given in the issue and focuses on the necessary steps to prevent the Gateway crash-loop due to invalid plugins.entries. The actual implementation may vary depending on the specifics of the OpenClaw system and its configuration mechanisms.

Recommendation

Apply a workaround by manually editing the ~/.openclaw/openclaw.json file to remove invalid plugins.entries blocks or by installing missing plugins manually using openclaw plugins install <plugin-id>. This is a temporary solution until the migration command is updated to handle unresolved plugins correctly.

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