云端出事,本机不一定干净
OpenCode 披露旧系统被未授权访问、可能暴露用户存进去的第三方 API Key 之后,很多人第一反应是去 Console 删 Key、重建。这仍然应该做。但 @Voxyz_ai 提醒了另一半:他们让 Claude Code 只读扫了一遍自己的 Mac,结果发现 1 月留下的 OpenCode 登录文件还在,里面仍有多组已保存的登录。
@noelkimx 补了一句关键风险:Claude Code 和 Codex 通常以你的系统用户身份跑。一旦会话被提示注入带偏,它能读到的,不只是「服务器上的 Key」,还包括你机器上同一批 auth 文件。
常见会留下凭证的位置(举例)
不同工具路径会变,以你机器上实际文件为准。社区帖子里常被点名的包括:
- OpenCode:
~/.local/share/opencode/auth.json - Codex:
~/.codex/auth.json(也可改到系统钥匙串) - Gemini CLI:
~/.gemini/oauth_creds.json - shell 启动文件里
export出去的KEY/TOKEN/SECRET(每个从该终端拉起的 Claude Code 会话都能读到) - 项目里的
.env、MCP 配置里的 env 块、构建产物目录里误拷的环境文件
@Voxyz_ai 还强调:Keychain / keyring 比明文文件更合适;Codex 可在配置里写 cli_auth_credentials_store = "keyring";Claude Code 在 Mac 上本身倾向用钥匙串存登录。
建议的自查顺序(先吊销,再删文件)
- 只读审计。 让 Claude Code 列位置、服务名、修改时间、风险等级和吊销入口;明确要求:不要改任何文件,也不要在回复里打印密钥值(可用匹配计数代替)。
- 先到各家控制台吊销。 长期不用的第三方 CLI,先在对应仪表盘撤销访问,再删本地文件。只删文件、不吊销,令牌可能仍有效。
- 一项目一 Key,并设消费上限。 出事时只废一把钥匙,损失有上限。
- 清理 shell 里的长期 export。 能放进钥匙串或按会话注入的,就不要写进
~/.zshrc。 - 把「读不可信网页/邮件」的代理人和「持有高权限 Key」的代理人拆开。 同一会话既上网又握主 Key,是提示注入损失面最大的组合。
和「只轮换云端 Key」的差别
轮换 Console 里的 Key,管的是已经泄露到第三方服务器的那一类。本机审计管的是:你自己电脑上还躺着多少可被读走的登录态。两边都做,才算把 OpenCode 这类事件当成完整演练,而不是只改云端一处。
如果你想在一台常开、整机独享的新加坡 Mac mini 上长期跑 Claude Code,Zumac.Ai 提供整机租用 ¥999/月起,咨询 Telegram @singatao。
