Skip to content

Breaking config change in v2026.4.21: dreaming.storage schema migration breaks CLI on upgrade #70407

@bxy3045134656

Description

@bxy3045134656

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:

  1. After npm update -g openclaw, the CLI becomes unusable
  2. Users have no hint about what changed or how to fix it
  3. openclaw doctor --fix does not help (also blocked by config validation)

Steps to Reproduce

  1. Have a working OpenClaw v2026.4.15 with dreaming.storage set to "both" (string)
  2. Run npm update -g openclaw to v2026.4.21
  3. Run openclaw status
  4. 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

  1. Add a config migration step that converts string dreaming.storage values to the new object format
  2. 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!

Metadata

Metadata

Assignees

No one assigned

    Labels

    staleMarked as stale due to inactivity

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions