Files
openclaw/docs/install/updating.md

4.3 KiB

summary, read_when, title
summary read_when title
Updating OpenClaw safely (global install or source), plus rollback strategy
Updating OpenClaw
Something breaks after an update
Updating

Keep OpenClaw up to date.

The fastest way to update. It detects your install type (npm or git), fetches the latest version, runs openclaw doctor, and restarts the gateway.

openclaw update

To switch channels or target a specific version:

openclaw update --channel beta
openclaw update --tag main
openclaw update --dry-run   # preview without applying

--channel beta prefers beta, but the runtime falls back to stable/latest when the beta tag is missing or older than the latest stable release. Use --tag beta if you want the raw npm beta dist-tag for a one-off package update.

See Development channels for channel semantics.

Alternative: re-run the installer

curl -fsSL https://openclaw.ai/install.sh | bash

Add --no-onboard to skip onboarding. For source installs, pass --install-method git --no-onboard.

Alternative: manual npm, pnpm, or bun

npm i -g openclaw@latest
pnpm add -g openclaw@latest
bun add -g openclaw@latest

Root-owned global npm installs

Some Linux npm setups install global packages under root-owned directories such as /usr/lib/node_modules/openclaw. OpenClaw supports that layout: the installed package is treated as read-only at runtime, and bundled plugin runtime dependencies are staged into a writable runtime directory instead of mutating the package tree.

For hardened systemd units, set a writable stage directory that is included in ReadWritePaths:

Environment=OPENCLAW_PLUGIN_STAGE_DIR=/var/lib/openclaw/plugin-runtime-deps
ReadWritePaths=/var/lib/openclaw /home/openclaw/.openclaw /tmp

If OPENCLAW_PLUGIN_STAGE_DIR is not set, OpenClaw uses $STATE_DIRECTORY when systemd provides it, then falls back to ~/.openclaw/plugin-runtime-deps.

Auto-updater

The auto-updater is off by default. Enable it in ~/.openclaw/openclaw.json:

{
  update: {
    channel: "stable",
    auto: {
      enabled: true,
      stableDelayHours: 6,
      stableJitterHours: 12,
      betaCheckIntervalHours: 1,
    },
  },
}
Channel Behavior
stable Waits stableDelayHours, then applies with deterministic jitter across stableJitterHours (spread rollout).
beta Checks every betaCheckIntervalHours (default: hourly) and applies immediately.
dev No automatic apply. Use openclaw update manually.

The gateway also logs an update hint on startup (disable with update.checkOnStart: false).

After updating

Run doctor

openclaw doctor

Migrates config, audits DM policies, and checks gateway health. Details: Doctor

Restart the gateway

openclaw gateway restart

Verify

openclaw health

Rollback

Pin a version (npm)

npm i -g openclaw@<version>
openclaw doctor
openclaw gateway restart

Tip: npm view openclaw version shows the current published version.

Pin a commit (source)

git fetch origin
git checkout "$(git rev-list -n 1 --before=\"2026-01-01\" origin/main)"
pnpm install && pnpm build
openclaw gateway restart

To return to latest: git checkout main && git pull.

If you are stuck

  • Run openclaw doctor again and read the output carefully.
  • For openclaw update --channel dev on source checkouts, the updater auto-bootstraps pnpm when needed. If you see a pnpm/corepack bootstrap error, install pnpm manually (or re-enable corepack) and rerun the update.
  • Check: Troubleshooting
  • Ask in Discord: https://discord.gg/clawd