Claude Code为何把密码带上了GitHub:一次设置文件泄密事件
导语
AI 编程代理正在从“给建议”走向“替用户执行命令”。便利性提高的同时,一个看似普通的权限设置,也可能成为凭据泄露的入口。安全研究机构 Apiiro 发现,Claude Code 的本地设置文件被上传到大量公开 GitHub 仓库,其中部分文件包含数据库密码、API 令牌、私钥,甚至 root 登录信息。
事件是如何发生的
Claude Code 会在用户批准自动执行 Shell 命令时记录相应规则。当用户选择“允许,并且不再询问”后,这项授权会保存到本地的 .claude/settings.local.json。有些情况下,文件只记录命令模式;但在另一些情况下,命令会以原样写入。如果命令行中直接嵌入了密码、令牌或其他凭据,这些信息也会一并落盘。
只要文件始终留在开发者电脑上,风险相对有限。但问题在于,这个文件并不总能得到可靠的版本控制隔离。Anthropic 文档指出,它通常会被加入开发者的全局 .gitignore;然而,全局规则并不等同于仓库级规则。当项目被复制到另一台机器、后来才初始化为 Git 仓库,或文件被手动加入提交时,保护就可能失效。研究人员还指出,在部分情形下,Claude Code 会在没有用户明确操作的情况下提交设置文件的变化。
核心发现
- Apiiro 找到超过 10 万个公开上传的 Claude Code 本地设置文件案例。
- 其中约 1100 个来自 63 个组织,并包含公开 API 令牌、数据库密码或私钥等秘密。
- 文件从原仓库删除后,内容仍可能保留在 GitHub 分叉中。
- 约 215 个已发现的秘密没有被 gitleaks 和 TruffleHog 这两款常用扫描器识别。
- 相关问题早在 2025 年 8 月就曾出现在 Claude Code 的缺陷报告中,但这些报告后来因长期没有活动而关闭。
对开发者意味着什么
这起事件的重点不只是某个配置文件是否被错误提交,而是 AI 代理正在把“授权”“执行”和“持久化”连成一条链。传统开发工具通常要求用户明确编辑配置或提交代码;代理工具则可能根据一次交互,自动生成规则、修改文件,甚至参与提交。用户若只关注最终代码,很容易忽略这些辅助文件同样属于敏感数据边界。
Claude Code 团队表示正在研究防止此类问题的方法,并建议用户使用自动模式和秘密扫描工具;团队也在考虑将扫描能力直接集成到产品中。不过,自动模式并不能从根本上保证秘密不会写入设置文件,而现有扫描器也可能漏报。因此,开发者仍应把 .claude/settings.local.json 明确加入项目级 .gitignore,在提交前检查差异和历史记录,并在发现泄露后立即轮换相关凭据。对于已经公开的秘密,仅删除当前文件并不足够,还需要评估提交历史和分叉带来的持续暴露风险。
这起案例提醒业界:AI 编程代理的安全设计不能只防止恶意提示和越权执行,也必须把本地状态文件、自动提交机制和秘密生命周期纳入默认防护范围。
评论
正在确认登录状态……
正在加载评论……