Skip to content

claw migrate silently reports success when source is a remote-mode client with no local config #38230

@nikolasdehor

Description

@nikolasdehor

Environment

  • Hermes Agent: latest (main, ba57ebe)
  • OpenClaw: 2026.5.7
  • OS: macOS 15.x (Apple Silicon)
  • Migration command: hermes claw migrate --preset full

Problem

When hermes claw migrate is run against an OpenClaw installation in gateway.mode: "remote", the tool completes successfully and reports items as migrated, but the actual OpenClaw configuration (model, channels, MCPs, cron jobs, agent defaults, approvals) produces ~33 "No X configuration found" skip entries with no explanation.

There is no warning that the source directory is a thin remote-mode client whose configuration lives on a remote server, not in the local openclaw.json.

Steps to reproduce

Create a minimal openclaw.json that reflects the remote-mode client schema:

```json
{
"gateway": {
"mode": "remote",
"remote": {
"url": "wss://your-server/gateway",
"token": "..."
}
},
"commands": { "native": "auto" },
"meta": { "lastTouchedVersion": "2026.5.7" }
}
```

Run:

```
hermes claw migrate --source /path/to/.openclaw --preset full --dry-run
```

Observe the output: no errors, no warnings about the config being a remote client, and 20+ categories skipped silently.

Expected behavior

When the migration detects gateway.mode: "remote" and the local openclaw.json lacks agents, channels, models, and other server-side keys, it should warn the user:

Warning: this OpenClaw directory appears to be a remote-mode client. The full configuration (model settings, channels, MCPs, cron jobs) lives on the remote server, not in this local directory. Only workspace files and skills will be migrated. To migrate the complete configuration, run this tool against the server's OpenClaw directory instead.

Impact

Users running OpenClaw in remote mode get a near-empty migration with no indication that the bulk of their configuration (channels, models, MCP servers, cron jobs, approval rules) was never read, because it lives on the remote server rather than in the local openclaw.json. The summary reports no errors, so there is no signal anything was missed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Low — cosmetic, nice to havetype/bugSomething isn't working

    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