openclaw fix beginner 5 minutes

OpenClaw Still Running Old Version After npm Upgrade? Reinstall the Daemon

The binary upgraded. The service didn't. This is the kind of bug that makes you question your own sanity for about four minutes before the answer becomes obvious.

You run npm install -g openclaw@latest. The CLI confirms the new version. You check the running service — it’s still on the old one.

The binary upgraded. The daemon didn’t notice.

The Problem

After upgrading OpenClaw via npm:

npm install -g openclaw@latest
openclaw --version
# ✅ 2026.3.1

openclaw health
# ❌ gateway version: 2026.2.15

The running service is still on the previous version. systemctl --user restart openclaw-gateway doesn’t help — it restarts the same stale service definition.

Why This Happens

npm install -g updates the binary, but the systemd service file — written to ~/.config/systemd/user/openclaw-gateway.service — was generated at first install and never touched again. It points to the node binary and script path from the original install. On restart, systemd uses that old definition, which loads the old version.

The service file and the installed binary are two separate things. npm only updates one of them.

The Fix

Regenerate the service file with the --force flag, then restart:

# 1. Reinstall the service definition
openclaw daemon install --force

# 2. Reload systemd and restart
systemctl --user daemon-reload
systemctl --user restart openclaw-gateway

# 3. Confirm the right version is running
openclaw health

Expected output from openclaw health:

gateway version: 2026.3.1
status: running

The --force flag overwrites the existing service file without prompting. Your config (openclaw.json) and all workspace files are untouched — only the service definition changes.

Key Takeaway

OpenClaw upgrades are a two-step operation: update the binary with npm, then update the daemon with openclaw daemon install --force. If you only do the first step, the service keeps running the old version silently. Add both steps to your upgrade runbook so you don’t spend four minutes wondering why the version number looks right everywhere except where it matters.

FAQ

Why does openclaw --version show the new version but the service still shows the old one?

npm updates the binary at the CLI level, but the systemd service file is written once at install time and points to a specific path. The service keeps running the old version until you regenerate the service file with openclaw daemon install --force.

How do I upgrade OpenClaw and make sure the daemon is also updated?

Run npm install -g openclaw@latest, then openclaw daemon install --force, then systemctl --user restart openclaw-gateway. Verify with openclaw health.

Will openclaw daemon install --force overwrite my configuration?

No. It only regenerates the systemd service file. Your openclaw.json config and all workspace files are untouched.