OpenClaw is still pre-1.0 and ships new releases frequently — sometimes multiple times a week. Keeping up matters because updates regularly patch security issues, fix platform-specific bugs, and migrate configuration keys. The update process differs depending on how you originally installed OpenClaw, so the first thing you need to know is your install method.
Quick answer: For most users, run openclaw update in your terminal. It detects your install type, pulls the latest version, runs health checks, and restarts the Gateway automatically.
Before you update
You need two pieces of information before touching anything. First, figure out whether you installed OpenClaw globally (via npm or pnpm) or from source (via git clone). Second, know how your Gateway is running — either in a foreground terminal session or as a supervised service through launchd (macOS) or systemd (Linux/WSL2).
Back up your configuration before every update. The key paths are:
| Item | Path |
|---|---|
| Main config | ~/.openclaw/openclaw.json |
| Credentials | ~/.openclaw/credentials/ |
| Workspace | ~/.openclaw/workspace |
Update OpenClaw with the universal installer
The preferred update path for any non-Docker install is to re-run the official installer script. It detects an existing installation, upgrades in place, and runs openclaw doctor automatically when needed.
curl -fsSL https://openclaw.ai/install.sh | bash
Re-run the installer
If you don't want the onboarding wizard to run again, append --no-onboard. For source installs specifically, pass the git install method flag:
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --install-method git --no-onboard
Source install update via installer
The installer will only run git pull --rebase if the repo has a clean worktree — no uncommitted changes allowed.
Update a global npm/pnpm install
If you installed OpenClaw globally through a package manager, you can update directly with either npm or pnpm:
npm i -g openclaw@latest
pnpm add -g openclaw@latest
Pick one
Bun is explicitly not recommended for the Gateway runtime due to known WhatsApp and Telegram bugs.
After the package manager finishes, always run the post-update verification sequence:
openclaw doctor
openclaw gateway restart
openclaw health
Update a source (git) install
For git-based checkouts, the simplest path is the built-in update command:
openclaw update
This single command handles the entire flow. It checks that your worktree is clean, switches to the selected channel (tag or branch), fetches and rebases against upstream, installs dependencies, builds the project and Control UI, runs openclaw doctor, and restarts the Gateway. If you want to skip the automatic restart, add --no-restart.
You can also do this manually if you prefer granular control:
git pull
pnpm install
pnpm build
pnpm ui:build
openclaw doctor
openclaw health
Manual source update
The pnpm build step is important when you run the packaged openclaw binary or use Node to run the dist/ directory. If you run directly from TypeScript with pnpm openclaw, a rebuild is usually unnecessary — but config migrations still apply, so run doctor regardless.
Update OpenClaw in Docker
Docker-based installs don't use the openclaw update CLI command. Instead, you stop the running container, pull the latest image, and start a new container.
docker stop openclaw
docker pull openclaw/openclaw:latest
docker run -d --name openclaw openclaw/openclaw:latest
Standard Docker update
Make sure you use the same volume mounts and startup flags from your original docker run or docker-compose configuration. Your config and workspace data will carry over as long as the volumes are mounted correctly.
For Hostinger VPS specifically, the pull command may point to their own registry rather than Docker Hub:
docker pull ghcr.io/hostinger/hvps-openclaw:latest
If your hosting provider's Docker manager has a GUI, you can also stop the container, click the options menu, and select "Update" to trigger the same pull-and-restart flow.
Update via the Control UI
OpenClaw's web-based Control UI includes an Update & Restart button (RPC endpoint: update.run). This only works for source (git checkout) installs. It runs the same update flow as the CLI command, writes a restart sentinel with a structured report, restarts the Gateway, and pings the last active session with the result. If the rebase fails, the Gateway aborts and restarts without applying the update — no half-applied states.
Switch between stable, beta, and dev channels
OpenClaw supports three update channels. You can switch between them on both git and npm installs:
openclaw update --channel stable
openclaw update --channel beta
openclaw update --channel dev
| Channel | Behavior |
|---|---|
| stable | Checks out the latest non-beta tag, then builds and runs doctor |
| beta | Checks out the latest -beta tag, then builds and runs doctor |
| dev | Checks out main, fetches upstream, rebases; includes preflight lint and build check |
The channel choice is persisted in your config. For a one-off update to a specific version or git ref without changing your channel, use the --tag flag:
openclaw update --tag main
openclaw update --tag 2026.3.13
One-off target override
To preview what an update would do without actually applying it, add --dry-run.
Enable the auto-updater
The Gateway includes a built-in auto-updater, but it's off by default. You enable it in ~/.openclaw/openclaw.json:
{
"update": {
"channel": "stable",
"auto": {
"enabled": true,
"stableDelayHours": 6,
"stableJitterHours": 12,
"betaCheckIntervalHours": 1
}
}
}
Auto-updater config example
On the stable channel, the auto-updater waits the configured delay hours after detecting a new version, then applies a deterministic per-install jitter to spread rollouts across installations. The beta channel checks hourly by default and applies immediately when an update is found. The dev channel never auto-applies — you must run openclaw update manually.
Tip: Run openclaw update --dry-run before enabling automation to see exactly what the updater would do.
On npm installs, the Gateway also logs an update hint at startup when a newer version is available on your current channel. Disable that with update.checkOnStart: false in your config.
Always run openclaw doctor
Every update should end with openclaw doctor. It's the "safe update" command — intentionally boring, but critical. It migrates deprecated config keys, audits DM policies for risky settings, checks Gateway health, detects and migrates older gateway services (launchd, systemd, legacy schtasks), and on Linux ensures systemd user lingering so the Gateway survives logout.
If you're on a source install, doctor will offer to run openclaw update first. Read its output carefully — it often tells you exactly what to fix.
Restart the Gateway after updating
The openclaw update command restarts the Gateway by default, but if you updated manually or used --no-restart, you need to restart it yourself:
openclaw gateway restart
For supervised services, use the platform-specific restart command:
| Platform | Command |
|---|---|
| macOS (launchd) | launchctl kickstart -k gui/$UID/ai.openclaw.gateway |
| Linux (systemd) | systemctl --user restart openclaw-gateway.service |
| Windows (WSL2) | systemctl --user restart openclaw-gateway.service |
These commands only work if the service is installed. If it isn't, run openclaw gateway install first. Prefer openclaw gateway restart over manually killing PIDs — it handles the service lifecycle cleanly.
Roll back or pin to a specific version
If an update breaks something, you can pin to a known-good version. For global installs, install the exact version you want:
npm i -g openclaw@2026.3.12
Check the current published version with npm view openclaw version to confirm what's available. Then run doctor and restart.
For source installs, you can pin by date. This checks out the state of main as it was on a specific day:
git fetch origin
git checkout "$(git rev-list -n 1 --before="2026-01-01" origin/main)"
pnpm install
pnpm build
openclaw gateway restart
Pin to a date (example: Jan 1, 2026)
To return to the latest version later, just check out main and pull:
git checkout main
git pull
Check your current version and update status
To see what version you're running, which channel you're on, and whether an update is available:
openclaw update status
Add --json for machine-readable output. The most recent stable release is version 2026.3.13, published on March 14, 2026.
If none of the above works, run openclaw doctor one more time and read every line of its output — it's designed to surface the exact problem. The OpenClaw troubleshooting docs and the project's Discord server at discord.gg/clawd are the two best places to get help when you're stuck.