
I've been running OpenClaw across three machines since the Clawdbot days (yes, before the January 2026 rebrands). And the number one question I see in the Discord and community forums isn't "how do I set it up" — it's "why is this thing still running after I deleted it?"
I'm Hanks. I test AI tools in real workflows and write up what actually happens. This is the full uninstall guide I wish had existed when I first tried to remove it and found the process way less obvious than it should be.
The core problem: OpenClaw installs itself as a persistent background service — a LaunchAgent on macOS, a systemd user unit on Linux, a Scheduled Task on Windows. Dragging the app to Trash (or running npm uninstall) doesn't touch those. The service keeps running after reboot, quietly waiting in the background. That's the part most guides miss.
Here's how to actually get it out.
The 3-step version (if you just want it gone):
1) Stop the background service. This is the step everyone misses. OpenClaw keeps a LaunchAgent (macOS), a systemd user unit (Linux), or a Scheduled Task (Windows) alive even after you delete the app — that's why it "comes back" after reboot.
2) Run the built-in uninstaller. openclaw uninstall --all --yes removes the service, the global npm package, and the state directory in one pass. It prints exactly what it'll delete before touching anything.
3) Clear leftovers and verify. Delete ~/.openclaw plus the legacy .clawdbot / .moltbot dirs, then confirm nothing is listening on port 18789.That covers about 90% of installs. If the CLI is already broken, you're on Docker, or you connected Google/Slack/Telegram, use the platform-specific steps below — they cover the manual removal, Docker teardown, and OAuth token revocation the quick version skips.
Just want to fix it, not remove it? See OpenClaw not working. Only resetting your config? Jump to reset without reinstalling.

If you've built any custom skills or workflows you want to keep, export them before removing anything. From the dashboard:
# Export your current skill list
openclaw skills export --output ~/openclaw-skills-backup.json
# Or back up the entire state directory manually
cp -r ~/.openclaw ~/openclaw-backup-$(date +%Y%m%d)
The state directory (~/.openclaw on macOS/Linux, %USERPROFILE%\.openclaw on Windows) holds your agent memory, installed skills, and session logs. Once you delete it, it's gone.
One thing worth knowing: even removing keys through the OpenClaw Web UI isn't enough to fully revoke access — credentials can still remain locally afterward. So if you granted OpenClaw access to Google, Slack, Telegram, or other services, plan to revoke those OAuth tokens separately after uninstalling (more on this in the FAQ).
If you ran OpenClaw via Docker Compose, your .env file contains API keys and config you'll want to save:
cp ~/openclaw/.env ~/openclaw-env-backup.txt
For standard npm installs, your config lives in ~/.openclaw/config.json. Back that up if you want to restore settings later.

This is the step most people skip. The background service has to die before you can cleanly remove anything.
On macOS, OpenClaw registers itself with launchd — Apple's service manager for daemons and agents, which you control through the launchctl command. The default LaunchAgent label is bot.molt.gateway — legacy installs may also have com.openclaw.gateway. Run both to be safe:
# Stop and remove the LaunchAgent (current label)
launchctl bootout gui/$UID/bot.molt.gateway 2>/dev/null
# Remove legacy label if present
launchctl bootout gui/$UID/com.openclaw.gateway 2>/dev/null
# Kill any remaining process
pkill -f openclaw || true
Confirm it's dead:
launchctl list | grep -i "claw\|molt"
# Should return nothing
If the openclaw CLI is still working, the easiest path is the built-in uninstaller:
openclaw uninstall
For non-interactive removal (automation or scripting):
openclaw uninstall --all --yes --non-interactive
If the CLI is already gone but the service was still running (common after a botched partial uninstall), do it manually. The npm uninstall -g step here removes the global package — npm's own docs cover uninstalling global packages if you want the reference:
# Remove LaunchAgent plist files
rm -f ~/Library/LaunchAgents/bot.molt.gateway.plist
rm -f ~/Library/LaunchAgents/com.openclaw.gateway.plist
rm -f ~/Library/LaunchAgents/com.clawdbot.gateway.plist # legacy
# Remove the app bundle
rm -rf /Applications/OpenClaw.app
# Remove config and state directories
rm -rf ~/.openclaw
rm -rf ~/.clawdbot # legacy name
rm -rf ~/.moltbot # legacy name
# Remove npm global package
npm uninstall -g openclaw
If you set OPENCLAW_CONFIG_PATH to a custom location, delete that file manually as well.
For Docker-based installs:
cd ~/openclaw # or wherever your docker-compose.yml lives
# Stop and remove containers
docker compose down
# Remove volumes (this deletes all agent data)
docker compose down --volumes
# Remove the pulled image
docker rmi openclaw/openclaw:latest
# Verify nothing remains
docker ps -a | grep -i claw
docker volume ls | grep -i claw
On Windows, OpenClaw installs as a Scheduled Task named "OpenClaw Gateway". You remove it with schtasks /Delete, the Microsoft-documented command for deleting scheduled tasks. Open PowerShell as Administrator:
# Delete the scheduled task
schtasks /Delete /F /TN "OpenClaw Gateway"
# Also remove the gateway script it points to
Remove-Item -Force "$env:USERPROFILE\.openclaw\gateway.cmd"
# If you used a named profile, replace with the profile task name:
# schtasks /Delete /F /TN "OpenClaw Gateway (profilename)"
Kill any lingering process:
Get-Process -Name "openclaw*" -ErrorAction SilentlyContinue | Stop-Process -Force
If you installed via the .exe installer (rather than npm), go to Settings → Apps → Installed Apps, search for "OpenClaw", and click Uninstall.
For npm installs, run in PowerShell:
npm uninstall -g openclaw
# or if you used pnpm:
pnpm remove -g openclaw
# or bun:
bun remove -g openclaw
The uninstaller doesn't always clear everything. Check and remove:
# Primary state directory
Remove-Item -Recurse -Force "$env:USERPROFILE\.openclaw" -ErrorAction SilentlyContinue
# Legacy directories from the rebrands
Remove-Item -Recurse -Force "$env:USERPROFILE\.clawdbot" -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force "$env:USERPROFILE\.moltbot" -ErrorAction SilentlyContinue
# Molthub skills cache
Remove-Item -Recurse -Force "$env:USERPROFILE\.molthub" -ErrorAction SilentlyContinue
# AppData locations
Remove-Item -Recurse -Force "$env:APPDATA\OpenClaw" -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force "$env:LOCALAPPDATA\OpenClaw" -ErrorAction SilentlyContinue
Verify nothing is left in %APPDATA% or %LOCALAPPDATA% by searching for "openclaw", "clawdbot", or "moltbot".
On Linux, OpenClaw runs as a systemd user unit named openclaw-gateway.service. You stop and disable it with systemctl --user — the official systemd reference explains what disable does (it strips the symlinks that auto-start the unit, which is exactly what you want here).
# Stop and disable the service
systemctl --user stop openclaw-gateway.service
systemctl --user disable openclaw-gateway.service
# Remove the unit file
rm -f ~/.config/systemd/user/openclaw-gateway.service
# Reload systemd so it forgets the unit
systemctl --user daemon-reload
# If you used PM2 instead:
pm2 delete openclaw
pm2 save
Kill any remaining process just to be sure:
pkill -f openclaw || true
pkill -f moltbot || true
pkill -f clawdbot || true
If the CLI is still installed, use the built-in uninstaller first:
openclaw uninstall --all --yes --non-interactive
Then clean up manually:
# Remove npm global package
npm uninstall -g openclaw
# Remove state and config directories
rm -rf ~/.openclaw
rm -rf ~/.clawdbot
rm -rf ~/.moltbot
rm -rf ~/.molthub
# Remove any PATH exports you added to your shell profile
# Edit ~/.bashrc, ~/.zshrc, or ~/.bash_profile and remove openclaw-related lines
Verify no directories remain:
ls ~/.openclaw ~/.clawdbot ~/.moltbot 2>&1
# Should show "No such file or directory" for all three
For Docker-based installs (common on VPS or headless servers), remember that docker compose down leaves named volumes behind by default — the Docker docs spell this out, which is why the --volumes flag matters if you actually want the agent data gone:
cd ~/openclaw
# Full teardown including volumes
docker compose down --volumes --remove-orphans
# Remove the image
docker rmi openclaw/openclaw:latest 2>/dev/null || true
# Nuclear option — stop and remove ALL openclaw-related containers
docker ps -a --filter "name=openclaw" --format "{{.ID}}" | xargs -r docker rm -f
# Prune dangling volumes
docker volume prune -f
# Confirm clean
docker ps -a | grep -i claw # should return nothing
docker images | grep -i claw # should return nothing

OpenClaw's gateway binds to port 18789 by default. If anything is still listening there, the service didn't fully stop.
macOS/Linux:
lsof -i :18789
# Should return nothing. If it doesn't:
kill -9 $(lsof -ti :18789)
Windows (PowerShell):
netstat -ano | findstr :18789
# Should return nothing
Also check for the process by name:
# macOS/Linux
pgrep -la openclaw || echo "Clean"
# Windows
Get-Process | Where-Object { $_.Name -like "*openclaw*" }
A full OpenClaw install with active skills and agent memory can occupy 500 MB–2 GB, depending on Docker images and skill caches. Here's what you're recovering:
Run df -h ~ before and after to confirm. On macOS, du -sh ~/.openclaw gives you the directory size before deletion.
Changed your mind after uninstalling? Fair enough — it's a legitimately useful tool when it's configured right.
Before reinstalling, make sure the old service is completely dead (run the port check above) and the state directories are cleared. Starting a fresh install on top of leftover config files is the most common cause of "it won't start" errors on reinstall.
For a clean reinstall, our OpenClaw Install Guide covers the full process for macOS, Windows, and Linux, including the Node.js version requirements, onboarding wizard steps, and the verification checks that confirm everything is actually running.
I keep my own teardown notes in Macaron now — which flags actually worked, which dirs each tool hides state in — one place I can re-sort by tool the next time I'm ripping something off a machine. If you run a handful of CLI tools across a few boxes and you're tired of re-deriving the same cleanup every time, you can describe the tracker you want in a sentence and try it on a real task for free — no setup, and you can throw it away if it doesn't help.
Q: I deleted the app but the process keeps restarting on login. Why?
That's the background service — LaunchAgent on macOS, systemd on Linux, Scheduled Task on Windows. The service is separate from the app binary, and standard uninstallers often don't touch it. Go back to the "Stopping Running Processes" section for your platform and run those commands first.
Q: I ran the uninstaller but there are still leftover files. How do I find everything?
Standard uninstallers clear the package, not always the data. Sweep your home directory for anything OpenClaw or its old names left behind:
# macOS / Linux
ls -la ~ | grep -E "openclaw|claw|molt"
find ~ -maxdepth 2 -iname "*openclaw*" 2>/dev/null
# Windows (PowerShell)
Get-ChildItem $env:USERPROFILE -Filter "*openclaw*" -Recurse -ErrorAction SilentlyContinue
The usual leftovers are ~/.openclaw, the legacy ~/.clawdbot and ~/.moltbot dirs, the Molthub skills cache (~/.molthub), and on Windows the %APPDATA%\OpenClaw and %LOCALAPPDATA%\OpenClaw folders. Delete the ones you find, then re-run the port check on 18789 to confirm nothing's still alive.
Q: openclaw uninstall fails, hangs, or says "command not found." Now what?
That usually means the CLI is already half-gone from a botched partial uninstall — common if you deleted the npm package before stopping the service. Skip the built-in uninstaller and do it manually for your platform:
launchctl bootout on macOS, systemctl --user stop/disable on Linux, schtasks /Delete on Windows) — see the "Stopping Running Processes" section above.pkill -f openclaw (macOS/Linux) or Get-Process -Name "openclaw*" | Stop-Process -Force (Windows).~/.openclaw.If openclaw uninstall hangs rather than erroring, it's usually waiting on a running gateway it can't reach. Open another terminal, free port 18789 (kill -9 $(lsof -ti :18789)), then re-run with --all --yes --non-interactive.
Q: Does uninstalling delete my config and agent memory? Can I keep them?
Yes — removing ~/.openclaw deletes your config, installed skills, session logs, and agent memory permanently. If there's any chance you'll reinstall, back it up first:
cp -r ~/.openclaw ~/openclaw-backup-$(date +%Y%m%d)
To remove the software but keep your settings, uninstall the package and the service but leave ~/.openclaw in place — a future reinstall will pick it back up. If you only want a clean config without removing OpenClaw at all, don't uninstall; reset instead (see reset without reinstalling).
Q: How do I do a full wipe — remove every trace, including config files?
Run the uninstaller, then explicitly clear every data location for all three historical names:
# macOS / Linux
openclaw uninstall --all --yes --non-interactive 2>/dev/null
rm -rf ~/.openclaw ~/.clawdbot ~/.moltbot ~/.molthub
rm -f ~/Library/LaunchAgents/bot.molt.gateway.plist \
~/Library/LaunchAgents/com.openclaw.gateway.plist \
~/Library/LaunchAgents/com.clawdbot.gateway.plist
Then verify the port is free (lsof -i :18789 → nothing) and revoke any OAuth tokens you granted, since a local wipe won't touch them (see the next question).
Q: Do I need to revoke OAuth tokens after uninstalling?
Yes, if you connected any third-party services. Because OpenClaw uses long-lived OAuth tokens, your accounts remain accessible even after the software is removed — those tokens live on Google's, Slack's, and Discord's servers, not your computer. After uninstalling, go to each service's security settings and remove OpenClaw from the list of authorized apps. Google documents the exact steps for managing apps linked to your account; Slack lives under Workspace Settings → Authorized Apps, and Discord under User Settings → Authorized Apps.
Q: What are the .clawdbot and .moltbot directories?
OpenClaw was renamed twice in late January 2026 due to trademark pressure — from Clawdbot to Moltbot, then to OpenClaw. If you installed it during any of those phases, you likely have leftover directories from each name. All three (~/.openclaw, ~/.clawdbot, ~/.moltbot) should be removed. Check ls -la ~ | grep -E "claw|molt" to see what's present.
Q: Is openclaw uninstall enough, or do I need to do all the manual steps?
The built-in openclaw uninstall --all command handles the service, state directory, and CLI package in one go — it lists exactly what will be removed and prompts for confirmation before doing anything destructive. The manual steps in this guide are for when the CLI is already gone (broken partial uninstall) or when you want to verify nothing was missed. For most people, openclaw uninstall --all --yes is sufficient.
Q: I used Docker. Do I need to prune volumes separately?
Yes. docker compose down stops and removes the containers, but volumes persist by default. Run docker compose down --volumes to delete them as well. If you've been running OpenClaw for a while, the volumes can hold significant data (agent memory, downloaded skills). Prune Docker's dangling volumes with docker volume prune -f after removal.
Q: How do I know if any skills are still running after uninstall?
Agent skills are third-party scripts downloaded via Molthub, and some can contain auto-updating code that persists after uninstalling the main application. Delete ~/.molthub along with the main OpenClaw directories to make sure no skill caches remain.