brew uninstall 之后,Claude Code 就删干净了吗?大概率没有。我在这台 Mac 上做了一次完整清理,翻出的残留比预想的多得多。这篇指南把清理路径和判断依据写清楚,供同样想彻底卸载的人参考。
先搞清楚:卸载不等于清干净

brew cask 只负责主程序本体。原生安装残留、配置目录、缓存、钥匙串、登录项,它一概不管,全都原地不动。
判断依据:卸载的目标是"这台机器上不再有 Claude 的任何数据和凭据",不是"命令行里找不到 claude"。
第一步:摸底,Claude 到底留了多少东西
动手之前先侦查,结论比预想的多:
brew cask 装的 claude-code@latest,/opt/homebrew/bin/claude 指向它 一套独立的原生安装:~/.local/share/claude 下躺着多个历史版本,~/.local/bin/claude 是符号链接 ~/Applications/Claude Code URL Handler.app(深度链接处理程序) 主配置 ~/.claude.json、整个 ~/.claude/ 目录 桌面端一整套:~/Library/Application Support/Claude/、缓存、日志、偏好设置 VS Code 扩展、Obsidian 插件(如果装过)
判断依据:一个工具摊开能有这么多落点,靠"想起来才删"一定漏。先全面列出,再逐项处理。

第二步:卸载本体
正规渠道:brew uninstall --cask claude-code@latest 原生安装没有包管理器接管,只能手动清:~/.local/share/claude、~/.local/state/claude、~/.local/bin/claude
第三步:清理配置与数据(核心)
~/.claude.json 和 ~/.claude/
这是配置重灾区。~/.claude.json 里存着两个重要的持久标识:machineID 和 userID。
这两个标识是什么? 它们是纯随机生成的 64 位十六进制串(crypto.randomBytes(32) 生成),第一次运行写进配置文件,之后一直复用。它们不绑定任何硬件信息,但会被上报到服务端,服务端靠它把同一台机器的请求串起来。
判断依据:不删配置文件,等于把标识原样留给下次运行——卸载只删了程序,标识还在原地。

钥匙串
Claude 的 OAuth 登录态凭据存在钥匙串里,用 security delete-generic-password 删除:
security delete-generic-password -s "Claude Safe Storage"security delete-generic-password -s "Claude Code-credentials"判断依据:登录凭据不删,登录状态就还活着;下次安装甚至不需要重新登录。

桌面端残留
凡是以 claude/anthropic 命名的缓存、日志、偏好设置、HTTPStorages,全部删除:
~/Library/Application Support/Claude/ ~/Library/Caches/claude-cli-nodejs、com.anthropic.claudefordesktop* ~/Library/Logs/Claude/ ~/Library/Preferences/com.anthropic.claudefordesktop.plist ~/Library/HTTPStorages/com.anthropic.claudefordesktop ~/Library/Preferences/ByHost/com.anthropic.claudefordesktop.ShipIt.*.plist
判断依据:这些是纯可再生缓存,删了没有副作用,属于"宁可多删"的范畴。
备份文件容易漏
~/.claude.json.backup 这类带 .backup 后缀的文件里可能还躺着 userID,全盘扫的时候单独留意。
第四步:周边集成
- VS Code 扩展
:code --uninstall-extension anthropic.claude-code,再删 ~/.vscode/extensions/anthropic.claude-code* 残留 - Obsidian 插件
:如果有 claudian 之类的插件,删除插件目录,并从 community-plugins.json 移除 - shell 配置
:检查 ~/.zshrc 里有没有指向 claude 的函数、别名、环境变量,一并清掉(留意里面可能带着明文 token)

第五步:验证
全部清完后过一遍:
which claude 找不到 钥匙串里搜不到 claude/anthropic VS Code 扩展列表干净 Obsidian 插件列表干净 Homebrew 缓存里没有 claude 残留

两条底线
- 不用 rm -rf
。每条路径显式写出 rm -r,重要的文件先备份再删。暴力删除一时爽,删错追不回。 - 内容文件与配置文件分清
。Claude 相关的文档、笔记、设计资源是资产不是配置,保留。清理的目标是"数据和凭据",不是"所有提到 Claude 的东西"。
一个要知道的前提:标识会重生
下次再运行 claude,它会静默重建 ~/.claude.json,生成一套全新的 machineID 和 userID。清理保证的是"本地不再复用旧标识",这一点是确定的。

夜雨聆风