How to stop, restart, or disable OpenClaw (without uninstalling)
The gateway stop/start/restart commands, why the process resurrects after you kill it, what actually stops while it's down, and how to make 'off' stick per platform.
For a normal install: openclaw gateway restart, stop, and start. If you ran it in a terminal, Ctrl-C stops it and openclaw gateway run brings it back. And if it keeps resurrecting after you kill it — that’s not a bug. A supervisor (launchd, systemd, or a Windows Scheduled Task) is doing its job, and stopping the process is a different act from disabling the service.
The three verbs
When OpenClaw is installed as a managed service, the CLI drives it directly: openclaw gateway stop, start (idempotent — safe to run when it’s already up), and restart. Restart is a first-class verb, not a convenience: on macOS the docs explicitly say to use it rather than chaining stop-then-start. There’s also a considerate variant — openclaw gateway restart --safe waits for in-flight agent work to drain before bouncing the process. No service install (you just ran openclaw gateway in a terminal)? Ctrl-C and re-run.
Why it comes back from the dead
Each platform installs a supervisor whose whole purpose is keeping the Gateway alive: a launchd LaunchAgent with KeepAlive on macOS (ai.openclaw.gateway), a user systemd unit on Linux (openclaw-gateway.service, with Restart=always five seconds after any exit), and a Scheduled Task named “OpenClaw Gateway” on Windows. Kill the process with a task manager and the supervisor restarts it; reboot and it starts on boot. This is exactly what you want from an always-on agent and exactly what confuses people who wanted it off.
Turning it off and having it stay off
A plain stop halts the Gateway for now but leaves recovery armed. To suppress it durably on macOS, the flag is documented: openclaw gateway stop --disable keeps it down across reboots until the next start. For Linux and Windows the docs currently document no equivalent flag — your honest options are the platform’s own switches (the Linux service is a normal user systemd unit, so standard systemctl --user disable mechanics apply; Windows has Task Scheduler) or openclaw gateway uninstall, which sounds drastic but only removes the service registration — your agent’s config, memory, and workspace are untouched, and openclaw gateway install puts the service back. That’s the difference from actually uninstalling OpenClaw, which is its own three-step story.
What stops when it stops
The Gateway is the process that connects everything, so while it’s down: channels go quiet (your agent won’t answer on Telegram), and scheduled automations don’t fire — the docs state plainly that cron runs inside the Gateway process and skips whatever comes due while it’s not running. What’s safe: everything on disk. Conversation history, memory, and config survive untouched, sessions continue from the stored transcript, and a requested restart even drains active work first (up to a five-minute budget) and tells interrupted sessions to pick up where they left off. Restarting OpenClaw is not a risky act — it’s designed to be routine.
Checking what state it’s actually in
openclaw status # reachability, channels, recent activity
openclaw gateway status # service install state + health probe
openclaw logs --follow # tail the Gateway log liveOne Docker note, since the container world differs: there the restart policy in your compose file is the supervisor, docker compose up -d openclaw-gateway is the start verb, and the image’s built-in healthcheck pings /healthz so orchestrators can restart an unhealthy Gateway on their own.