| name | uninstall |
| description | Stop and remove the ClaudeClaw background service and agents for this instance |
| trigger | /uninstall |
Uninstall Service
Stop and remove the ClaudeClaw background service for the current instance. Data (store/, groups/, .env) is preserved — only the service unit is removed.
Flow
1. Detect OS and find service
macOS:
DIRNAME=$(basename "$(pwd)")
PLIST_NAME="com.claudeclaw.${DIRNAME}"
PLIST_PATH="$HOME/Library/LaunchAgents/${PLIST_NAME}.plist"
Linux:
DIRNAME=$(basename "$(pwd)")
SERVICE_NAME="claudeclaw-${DIRNAME}"
SERVICE_PATH="$HOME/.config/systemd/user/${SERVICE_NAME}.service"
2. Check if service exists
[ ! -f "$PLIST_PATH" ] && echo "No service found at $PLIST_PATH" && exit 0
[ ! -f "$SERVICE_PATH" ] && echo "No service found at $SERVICE_PATH" && exit 0
If no service file found, also check for running processes:
launchctl list | grep claudeclaw
systemctl --user list-units | grep claudeclaw
3. Confirm with user
AskUserQuestion: "Remove ClaudeClaw service for this instance? This will stop the background process. Your data (groups, messages, .env) is preserved."
4. Stop and unload
macOS:
launchctl bootout "gui/$(id -u)/${PLIST_NAME}" 2>/dev/null || true
rm -f "$PLIST_PATH"
Linux:
systemctl --user stop "$SERVICE_NAME" 2>/dev/null || true
systemctl --user disable "$SERVICE_NAME" 2>/dev/null || true
rm -f "$SERVICE_PATH"
systemctl --user daemon-reload
5. Verify stopped
launchctl list | grep "$PLIST_NAME" && echo "WARNING: service still loaded" || echo "Service removed"
systemctl --user is-active "$SERVICE_NAME" 2>/dev/null && echo "WARNING: service still running" || echo "Service removed"
6. Kill any orphan processes
pkill -f "dist/service.js" 2>/dev/null || true
Only kill processes whose cwd matches the current directory to avoid killing other instances.
7. Confirm
Print:
ClaudeClaw service removed for this instance.
- Service file: deleted
- Process: stopped
- Data: preserved (store/, groups/, .env still in place)
- To reinstall: run /setup