GuidesRunning & maintaining

OpenClaw won't start after a config edit: crash loops, the breaker, and the clean fix

The Gateway fails closed on invalid config, and a bad live edit hides until the next restart. The validate-first workflow, doctor's last-known-good restore, and how the crash-loop breaker behaves.

August 10, 2026The Everpod team
The short answer

OpenClaw’s Gateway refuses to start on a config it doesn’t fully recognize: unknown keys, wrong types, invalid values all fail closed. The sneaky part: a bad edit to a running gateway doesn’t crash anything (hot reload silently skips invalid edits), so the failure surfaces at the next restart, hours or days later. The fix sequence: openclaw logs to read the boot error, openclaw config validate to check without restarting, and openclaw doctor --fix to restore the last-known-good config. And if your channels are down after several rapid crashes: that’s the crash-loop breaker doing its job, not a second bug.

Why the crash happens later than the edit

Two different code paths judge your config. While the gateway runs, it watches ~/.openclaw/openclaw.json and hot-applies changes, but an invalid edit is skipped with a quiet log line (“config reload skipped (invalid config)”) while the current runtime config stays active. At boot, the standard is stricter and terminal: “OpenClaw only accepts configurations that fully match the schema”: unknown keys cause it to refuse to start rather than guess. So the classic incident reads like a mystery: you edited config last Tuesday, everything kept working, and today’s reboot produced a gateway that won’t come up. The edit was never valid; Tuesday’s gateway just never re-read it.

The trap that causes most of these

The most common invalid key isn’t a typo. It’s a key that’s real, just newer than your install. Docs describe the current release; if you’re pinned to an older version (deliberate in any managed setup), a copy-pasted config block from the docs can reference settings your binary doesn’t know, and the strict schema treats them exactly like typos. The discipline that prevents it costs one command:

openclaw config validate   # checks against YOUR install's schema
# only then:
openclaw gateway restart

Recovering a gateway that won’t start

The crash-loop breaker, explained

If the gateway crashes three times uncleanly within five minutes, a breaker trips: on the next boot, channel plugins and other auto-started services stay down while the control plane comes up, leaving you a stable process to inspect instead of a restart storm. The log line says exactly what happened: “channel autostart suppressed by crash-loop breaker.” It heals itself: once the gateway stays stable through the unclean-boot window, deferred channels start on their own, no extra restart needed. Or start one immediately with openclaw gateway call channels.start. Two adjacent behaviors people confuse with it: each channel also has its own crash-backoff ladder (“auto-restart attempt N/10” in the logs), and on macOS, launchd applies its own respawn-protection gate after a crash burst; launchctl kickstart -k clears that one.

Making this a non-event

The whole failure class reduces to habit: validate before every restart, keep the pin in mind when copying config from docs, and treat restarts as the moment config truth gets re-checked, because it is. On managed pods this discipline is the operator’s job rather than yours, which is most of the argument for having an operator; self-hosting, the two commands above are the difference between a thirty-second fix and an evening of archaeology.

Your own cloud agent, set up for you.

Everpod runs OpenClaw on a private, always-on computer of its own: set up, secured and backed up, with model usage included. You name your agent, and say hello about fifteen minutes later.

Create your agent

First month half price, then $29/mo · model usage included · cancel anytime

Wondering what you’d do with one? See what a cloud agent can do