Desktop / CLI / Keychain / VM#
路径只是 macOS 发现入口,不是删除清单。优先依据当前安装包、配置和实际打开文件确定根目录与版本;不要在搜集证据时运行会初始化或迁移数据的客户端。
一次列全入口#
| 边界 | 候选入口 | 核验与默认保护 |
|---|---|---|
| Claude Code | ~/.claude/、~/.claude.json、实际 CLAUDE_CONFIG_DIR | projects 正文、history、skills、plans、tasks、用户设置及项目文件先保护。 |
| Desktop | ~/Library/Application Support/Claude/、应用 plist、~/Library/Logs/Claude/ | claude-code-sessions、local-agent-mode-sessions、scratch/workspaces、git-shadow、上传与作品按实际存在性建清单。不能整个 Reset Application Data。 |
| 平台缓存 | ~/Library/Caches/ 下实际归属的 Desktop/CLI 路径 | 与 Application Support 内的 Cache 独立发现;缓存可含唯一对话正文。 |
| 其他认证来源 | 当前环境、shell/IDE 配置、managed settings、已发现的 wrapper / API helper | 只报变量/键的存在及归属;不打印值,不遍历全机进程环境。产品 API 凭据不等同于旧消费者账号。 |
| 项目级配置 | 从实际会话 cwd 等发现工程根,检查 CLAUDE.md、CLAUDE.local.md、.claude/、.mcp.json | 工程指令、开发启动配置不是登录指纹;嵌套工程未查就明示范围。 |
| 诊断报告 | 用户及系统 Library/Logs/DiagnosticReports | 先文件名,再应用/进程归属字段;不按扩展名一并删除其他程序报告,不从本地存在推断已上传。 |
CLI 的配置目录与安全凭据命名空间可能不同。CLAUDE_SECURESTORAGE_CONFIG_DIR、Keychain 服务后缀/路径哈希等必须从实际版本实现确认;查默认路径没有结果,不代表所有替代路由都不存在。当前工具环境也不能代表已运行的所有终端。
旧身份基线与当前身份分开保存。账号目录只是候选来源;新账号已经登录后,不能再把现存 UUID 目录全部采集成“旧账号列表”。必要时从已确证的旧索引或封存映射取基线,只在受控内存/私有工作区比较,日志不写原值。
同一设备的用户转述、其他电脑的清理报告和历史安装版本只作线索。Windows 的 MSIX、凭据和会话路径必须在 Windows 实际发现,不能把本机 Mac 的验收结果转移过去。
认证、匿名与混合配置#
- 按解析后的精确键路径和旧值归属制定删除规则,例如当前版本实际使用的 OAuth/account/user/install/token-cache 字段。不要递归删除所有叫
id、user或token的键。 - 设备注册缓存、遥测盐、用量计数、组织模型缓存、旧身份自动备份、组织来源 URL、链接签名等都需先验证用途与依赖。保留实际安全规则、用户偏好及非目标值。
ant-did等登录页生成的随机匿名值不自动属于旧账号。删除后再次访问会重建,应报告“旧状态移除”和“新状态生成”两件事。- Cookies 按 host 边界筛选;第三方挑战 Cookie 必须有精确 host、name、所在库及用途依据。DIPS 精确站点行;Network Persistent State 精确 server / alt-service 项,保留全局 QUIC 和其他网站记录。
- HSTS、安全信任策略、OS/架构、安装二进制、只有空 query/mutation 的缓存,不因看起来像标识就删除。
- 小配置用结构化读取和全量非目标比较;SQLite/LevelDB 的解析与废弃字节问题按 browser-stores.md 处理。
账号命名空间、安装/设备随机 ID、遥测哈希盐、本地用量计数、公共服务 UUID 并非同一种东西。例如字段名含 token 也可能只是用量计数,设备注册映射也不等于其关联的硬件私钥。以实际读写用途判断;删除旧组织来源 URL 时保留安全规则本身,移除空的旧工程信任记录不等于删除工程。
遇到疑似连接器标识,可先检查对象是否含 owner/install/account 字段,再对照当前随包代码、schema 或可靠官方资料。若同一值是硬编码产品别名或协议路由常量,可归为共享服务元数据并关闭该疑点;只在同一旧账号的多份记录重复出现,不能证明它是公共常量。文件名使用截断 UUID、哈希或前缀时,也必须核对实际映射逻辑,不能因没有完整 UUID 就排除旧账号归属。
会话与预览必须分别保护#
从当前元数据 schema 发现 Desktop 索引到 CLI transcript 的关系,核对每条引用;不能只比较总文件数。若字段为 cliSessionId / cwd,也须先验证实际语义。现有缺失与本次新损坏分开。
原线程文件还在,不代表新账号界面会显示旧账号命名空间里的记录。清理不自动迁移索引或执行跨账号 /resume;用户只要查阅时采用被动离线读取,不把“恢复可读”偷换为“恢复登录、续聊或执行旧工具”。
Electron 的预览 partition 可能持有其他网站登录、Local Storage 和作品。Claude 主登录存储可清,不代表全部 partitions 可清;对保留分区建立完整清单或等效记录基线。
Keychain 三类对象#
- 普通账户凭据:先只查询服务属性,禁取 secret data 和认证 UI;对当前版本服务名/命名空间做精确归属判断。删除须在当前授权内,随后用属性回读确认。
- Electron Safe Storage:应用级本地加密材料,可能同时保护预览中其他站点的密文。存在不证明属于旧账号;默认保留。名称、时间戳不能替代依赖分析。应用归属或机制不明时核对匹配 Electron 版本源码。
- 受 entitlement 保护的硬件密钥:访问拒绝只能报告“存在性未知”。记录一次明确失败,不绕权限、不改 ACL、不反复触发系统认证,也不将其混同为 Safe Storage。
不导出整个钥匙串、不解密 Cookie、不安装额外工具只为“证明全无”。独立的旧链接签名文件可以单独评估,但要说明旧链接验证能力的影响。
Cowork / VM 是条件分支#
只有确认旧 VM 状态在范围内才处理。先检查进程占用、host 挂载目录、guest 独有内容、会话与实际工程依赖。不要按大文件/可下载文件名认定可删。
有匹配版本的可靠官方镜像时可比较 guest 差异;没有参考或无法解读就保留未知内容。需保全的设置用中性目录导出,逐文件核验;不复制账户外壳来冒充内容包。
退役 VM 后核验 host 工程、会话文件和索引。未启动新的 VM 就明确首次重建和历史会话可续用尚未验证;不要为补这个证明越过用户“不访问/不启动 Claude”的边界。
查询依据#
- Claude Code 设置:配置作用域和当前支持项。
- Claude Code 认证:平台认证存储;执行时核对当前文档及本机实现。
- Electron safeStorage:平台加密机制;账号归属仍需本机证据。
这些文档不构成某台机器已经退出登录、服务端已经撤权或设备关联已经消失的证明。