Date: 2026-04-01
An OpenClaw install failed to start the gateway because ~/.openclaw/openclaw.json
contained a legacy top-level fallbacks key inside agents.list[*].
The runtime schema rejected entries like:
{
"id": "coder",
"model": "anthropic/claude-sonnet-4-6",
"fallbacks": []
}Doctor output showed:
Invalid config:
- agents.list.0: Unrecognized key: "fallbacks"
Mission Control still normalized model.fallbacks, but it also preserved any old
top-level agent.fallbacks already present in openclaw.json during write-back.
That meant any agent edited from the dashboard could keep re-saving an invalid gateway config even if the current UI no longer depended on that field.
The write-back normalizer in src/lib/agent-sync.ts now removes legacy
top-level agent.fallbacks before writing back to openclaw.json.
Regression coverage lives in:
src/lib/__tests__/agent-sync.test.ts
If this happens again on a live install:
- Remove
fallbacksfrom each entry inagents.listinside~/.openclaw/openclaw.json. - Run
openclaw doctor. - Verify with
openclaw gateway status.
Expected result:
openclaw doctorno longer reportsUnrecognized key: "fallbacks".openclaw gateway statusshowsRuntime: runningandRPC probe: ok.