ccdeck

Uninstall ccdeck and remove its Claude Code hook

To uninstall ccdeck, quit its desktop app if you have it, then run npx ccdeck@latest --uninstall --purge: it removes ccdeck's entries from ~/.claude/settings.json and its login item, stops every running deck and deletes its Local network private key; the command, the app and the folders are removed separately.

Claude Code and Codex Checked against ccdeck 3.82.0 on

You will

Before you start

Steps

  1. Quit the desktop app

    Only if you have it: the app can start a deck, which writes its hook back as it starts. Click the app’s icon in the menu bar, or right-click it in the tray on Windows and Linux. Click Start at login if it is ticked, then click Quit ccdeck.

    More about quitting
    • A deck also writes the entries again when ccdeck’s own login item starts it, and when it restarts into an update. Step 2 removes that login item and stops every deck, so you need not stop them first.
    • Quit ccdeck stops only the deck the app started itself.
  2. Remove the hooks, the login item and the key

    This starts no deck.

    npx ccdeck@latest --uninstall --purge

    It takes ccdeck’s entries out of ~/.claude/settings.json, removes any login item ccdeck gave this machine, then stops every deck still running. --purge deletes prefs.json, which holds this deck’s Local network private key. Your pairings and aliases go with it. It also takes Codex’s terminal selection out of your shell’s profile, such as ~/.zshrc.

    Paired decks keep this machine. On each one, press A or click the Accounts icon at the top of the stripe on the left, click Local network at the panel’s foot, click unpair on this machine’s row, then click confirm within four seconds. A login already copied stays where it went.

    More about what it removes
    • Its own hook commands under every event, StopFailure and UserPromptExpansion included, in entries marked "__agent-dag": true or running its hook.js. A hook of yours in the same entry stays. With CLAUDE_CONFIG_DIR set, the file is $CLAUDE_CONFIG_DIR/settings.json.
    • The login item, which it finds through a record in ccdeck’s data folder. It is ~/Library/LaunchAgents/ccdeck.plist on macOS, ~/.config/systemd/user/ccdeck.service on Linux, and the Task Scheduler task ccdeck on Windows.
    • An older ccdeck’s finish-sound hook. Sound hooks of yours that it set aside are put back.
    • Forwarders an older ccdeck put in ~/.codex/hooks.json.
    • The ccdeck Codex accounts shell-profile blocks.
    • prefs.json in the data folder, a second one in ~/.claude/agent-dag/ if an older ccdeck ran here, and any copy the deck set aside. The key is never printed.

    Without --purge, it deletes no prefs.json and lists each one that still holds a key. It exits with 1 if any part was refused, and says which.

  3. Remove the command and the desktop app

    If you installed the command with npm i -g ccdeck or npx ccdeck --install:

    npm rm -g ccdeck

    Under its earlier names, run npm rm -g agents-deck agent-dag. Remove the app only after step 2, which removes its hook entries.

    • macOS: move ccdeck.app from Applications to the Bin.
    • Windows: remove ccdeck from the apps list in Windows Settings.
    • Linux: delete the AppImage, or remove the .deb package with your package manager.
    More about finding the app
    • The terminal installer on this site puts ccdeck.app in ~/Applications when /Applications is not writable.
    • On Windows, the app was installed for your user only.
    • dpkg -l | grep -i ccdeck shows the .deb package’s name.
    • On Linux, the app’s Start at login is the file ~/.config/autostart/ccdeck-desktop.desktop.
    • The app keeps its window and notification settings and its own logs where Electron keeps an app’s files. This guide does not list those places.
  4. Remove claude-swap, if ccdeck installed it Claude Code only

    ccdeck installs claude-swap for its Accounts panel when it is missing. Remove it only if you do not use cswap yourself. ccdeck tries uv first, then pipx:

    uv tool uninstall claude-swap

    If pipx installed it, run pipx uninstall claude-swap instead.

    Its store of saved Claude logins stays. Deleting it loses those logins.

    More about other installers and the store

    With neither on your PATH, ccdeck used pipx through Python: python3 -m pipx uninstall claude-swap, or py -m pipx uninstall claude-swap on Windows. Or it used a uv it downloaded into ~/.agents-deck. Step 6 deletes that uv, so run this first: ~/.agents-deck/tools/uv/uv tool uninstall claude-swap, or %USERPROFILE%\.agents-deck\tools\uv\uv.exe tool uninstall claude-swap on Windows.

    The store is ~/.claude-swap-backup on macOS and Windows, and ~/.local/share/claude-swap on Linux. Once, when ccdeck found it empty, it added the account you were signed in with.

  5. Undo Allow capture, if you used it Claude Code only

    If you clicked Allow capture… in Telemetry Radar, undoing it asks for your password. On macOS:

    sudo launchctl bootout system/dev.ccdeck.chmodbpf

    sudo rm /Library/LaunchDaemons/dev.ccdeck.chmodbpf.plist "/Library/Application Support/ccdeck/ccdeck-chmodbpf"

    On Linux:

    t=$(readlink -f "$(command -v tcpdump)"); sudo setcap -r "$t"; sudo chgrp root "$t"; sudo chmod 0755 "$t"

    What you set from ccdeck outlasts it. A flag switched in Telemetry Radar, or a row changed in Settings › Claude Code, keeps its value in ~/.claude/settings.json: change it back before step 2, or edit the file by hand.

    More about what stays
    • On macOS, your user stays in the access_bpf group, which Wireshark’s ChmodBPF uses too. Without the helper, the capture devices are root’s alone again once the Mac restarts.
    • On Linux, the tcpdump, and the package with setcap, that Allow capture installed stay installed. Remove them with your package manager if nothing else needs them.
    • On Windows, Allow capture changes nothing: Wireshark and Npcap are yours to keep or remove.
  6. Delete ccdeck’s folders

    Do this last: step 2 reads records kept here.

    On macOS:

    rm -rf ~/.claude/agent-dag ~/Library/Application\ Support/ccdeck ~/Library/Logs/ccdeck ~/.agents-deck

    On Linux:

    rm -rf ~/.claude/agent-dag ~/.local/share/ccdeck ~/.local/state/ccdeck ~/.agents-deck

    On Windows, in PowerShell:

    Remove-Item -Recurse -Force "$env:USERPROFILE\.claude\agent-dag", "$env:LOCALAPPDATA\ccdeck", "$env:USERPROFILE\.agents-deck"

    No step touches Claude Code’s or Codex’s own files, your own hooks, or claude-swap’s store.

    This deletes the Codex accounts you added in ccdeck, with their logins and their Codex history.

    More about the four folders
    • ~/.claude/agent-dag/: the hook script, the running decks’ records, Browser Watch’s findings, the desktop app’s hook launcher and settings.before-skill-hook.json, from before Skill activity’s hook. Delete it, not ~/.claude.
    • The data folder: the login-item record, the deck’s own records, Tool activity’s tool-audit/, integrations/ with your tracker tokens, claude-settings.before-change.json, a copy of Claude Code’s settings that can hold API keys, and prefs.json if you left out --purge. Deleting a token does not revoke it: do that in Jira, GitHub or GitLab.
    • The log folder: events.jsonl and deck.log.
    • ~/.agents-deck/: the ccusage, uv and macmon ccdeck fetched, its account state, with each account’s e-mail address, and Telemetry Radar’s files.

    On Linux, $XDG_DATA_HOME and $XDG_STATE_HOME move the data and log folders. With CLAUDE_CONFIG_DIR set, the first folder is $CLAUDE_CONFIG_DIR/agent-dag, and it holds the data and log too. With CCDECK_HOME set, both are there instead. An event log moved with --history is where you put it.

If something goes wrong

A line from step 2 says NOT

If the line is about your own sound hooks, keep ~/.agents-deck until they are back: step 6 deletes them. Otherwise fix what it names, such as a settings.json that is not valid JSON, and run step 2 again.

The hook entries are back in settings.json

A deck started again and wrote them back. Do step 1 again, with the desktop app’s Start at login not ticked, then step 2.

ccdeck still starts when you log in

Untick Start at login in the desktop app’s menu. Otherwise run npx ccdeck --uninstall-service, which finds the login item without ccdeck’s record, then delete the data folder again. If that fails, step 2’s “More about what it removes” says where the item is.

no Claude hooks to remove, but Claude Code still runs ccdeck’s hook

The deck ran with a different CLAUDE_CONFIG_DIR. Run step 2 again with it set as the deck had it, once for each profile.

This machine has no Node.js

Install Node.js 18 or newer for step 2, or do its work by hand: in ~/.claude/settings.json, under "hooks", delete every hook whose command runs agent-dag/hook.js, and any entry left with no hooks. Then do steps 3 to 6; step 6 deletes the private key.

Something else? See Troubleshoot ccdeck: status, logs, port and hooks.

Next

All guides Uninstall in the README