Skip to content

Uninstall

Two paths:

  • Easy path if openclaw is still installed.
  • Manual service removal if the CLI is gone but the service is still running.

Recommended: use the built-in uninstaller:

Terminal window
openclaw uninstall

When using the CLI, state removal preserves configured workspace directories unless you also select --workspace.

Preview what will be removed (safe):

Terminal window
openclaw uninstall --dry-run --all

Non-interactive (automation / npx). Use with caution and only after confirming scopes:

Terminal window
openclaw uninstall --all --yes --non-interactive
npx -y openclaw uninstall --all --yes --non-interactive

Manual steps (same result):

  1. Stop the gateway service:
Terminal window
openclaw gateway stop
  1. Uninstall the gateway service (launchd/systemd/schtasks):
Terminal window
openclaw gateway uninstall
  1. Delete state + config:
Terminal window
rm -rf "${OPENCLAW_STATE_DIR:-$HOME/.openclaw}"

If you set OPENCLAW_CONFIG_PATH to a custom location outside the state dir, delete that file too. If you want to keep a workspace inside the state dir, such as ~/.openclaw/workspace, move it aside before running rm -rf or delete state contents selectively.

  1. Delete your workspace (optional, removes agent files):
Terminal window
rm -rf ~/.openclaw/workspace
  1. Remove the CLI install (pick the one you used):
Terminal window
npm rm -g openclaw
pnpm remove -g openclaw
bun remove -g openclaw
  1. If you installed the macOS app:
Terminal window
rm -rf /Applications/OpenClaw.app

Notes:

  • If you used profiles (--profile / OPENCLAW_PROFILE), repeat step 3 for each state dir (defaults are ~/.openclaw-<profile>).
  • In remote mode, the state dir lives on the gateway host, so run steps 1-4 there too.

Manual service removal (CLI not installed)

Section titled “Manual service removal (CLI not installed)”

Use this if the gateway service keeps running but openclaw is missing.

Default label is ai.openclaw.gateway (or ai.openclaw.<profile>; legacy com.openclaw.* may still exist):

Terminal window
launchctl bootout gui/$UID/ai.openclaw.gateway
rm -f ~/Library/LaunchAgents/ai.openclaw.gateway.plist

If you used a profile, replace the label and plist name with ai.openclaw.<profile>. Remove any legacy com.openclaw.* plists if present.

Default unit name is openclaw-gateway.service (or openclaw-gateway-<profile>.service):

Terminal window
systemctl --user disable --now openclaw-gateway.service
rm -f ~/.config/systemd/user/openclaw-gateway.service
systemctl --user daemon-reload

Default task name is OpenClaw Gateway (or OpenClaw Gateway (<profile>)). The task script lives under your state dir as gateway.cmd; current installs may also create a windowless gateway.vbs launcher that Task Scheduler runs instead of opening gateway.cmd directly.

Terminal window
schtasks /Delete /F /TN "OpenClaw Gateway"
Remove-Item -Force "$env:USERPROFILE\.openclaw\gateway.cmd" -ErrorAction SilentlyContinue
Remove-Item -Force "$env:USERPROFILE\.openclaw\gateway.vbs" -ErrorAction SilentlyContinue

If you used a profile, delete the matching task name and the gateway.cmd / gateway.vbs files under ~\.openclaw-<profile>.

Normal install (install.sh / npm / pnpm / bun)

Section titled “Normal install (install.sh / npm / pnpm / bun)”

If you used https://openclaw.ai/install.sh or install.ps1, the CLI was installed with npm install -g openclaw@latest. Remove it with npm rm -g openclaw (or pnpm remove -g / bun remove -g if you installed that way).

If you run from a repo checkout (git clone + openclaw ... / bun run openclaw ...):

  1. Uninstall the gateway service before deleting the repo (use the easy path above or manual service removal).
  2. Delete the repo directory.
  3. Remove state + workspace as shown above.