Bug Description
After upgrading from v2026.4.15 to v2026.4.21 via npm, the CLI (openclaw status, openclaw doctor, etc.) fails completely with a config validation error:
Config invalid
File: $OPENCLAW_HOME/.openclaw/openclaw.json
Problem:
- plugins.entries.memory-core.config.dreaming.storage: invalid config: must be object
Root Cause
The dreaming.storage config field changed its schema from a string (e.g. "both") to an object (e.g. { "mode": "both", "separateReports": false }) in v2026.4.21, but there is no automatic migration for existing configs.
This means:
- After
npm update -g openclaw, the CLI becomes unusable
- Users have no hint about what changed or how to fix it
openclaw doctor --fix does not help (also blocked by config validation)
Steps to Reproduce
- Have a working OpenClaw v2026.4.15 with
dreaming.storage set to "both" (string)
- Run
npm update -g openclaw to v2026.4.21
- Run
openclaw status
- See config validation error, CLI exits with code 1
Expected Behavior
- Old string values should be auto-migrated to the new object format, OR
- The error message should include a hint about the schema change and how to fix it, OR
openclaw doctor --fix should auto-migrate this field
Workaround
Manually edit openclaw.json:
// OLD (string - breaks in v2026.4.21):
"storage": "both"
// NEW (object - works in v2026.4.21):
"storage": {
"mode": "both",
"separateReports": false
}
Environment
- OS: Windows 11 26200 x64
- Node.js: v24.14.0
- OpenClaw: v2026.4.21
- Installation: global npm
- Channel: QQ Bot
Suggested Fix
- Add a config migration step that converts string
dreaming.storage values to the new object format
- Add a friendly error hint:
"dreaming.storage changed from string to object in v2026.4.21. Run openclaw doctor --fix to auto-migrate."
Thanks for the great work on OpenClaw!
Bug Description
After upgrading from v2026.4.15 to v2026.4.21 via npm, the CLI (
openclaw status,openclaw doctor, etc.) fails completely with a config validation error:Root Cause
The
dreaming.storageconfig field changed its schema from a string (e.g."both") to an object (e.g.{ "mode": "both", "separateReports": false }) in v2026.4.21, but there is no automatic migration for existing configs.This means:
npm update -g openclaw, the CLI becomes unusableopenclaw doctor --fixdoes not help (also blocked by config validation)Steps to Reproduce
dreaming.storageset to"both"(string)npm update -g openclawto v2026.4.21openclaw statusExpected Behavior
openclaw doctor --fixshould auto-migrate this fieldWorkaround
Manually edit
openclaw.json:Environment
Suggested Fix
dreaming.storagevalues to the new object format"dreaming.storage changed from string to object in v2026.4.21. Run openclaw doctor --fix to auto-migrate."Thanks for the great work on OpenClaw!