Claude Code配置泄露:默认选项致密码与API Key上传GitHub
只是为了让 AI 少问自己几次,没想到却把家底都交出去了。 近日,安全公司 Apiiro 的研究人员发现,公开的 GitHub 仓库中出现了大量 Claude Code 配置文件,其中不少文件竟然包含数据库密码、API Key,甚至超级管理员登录凭证。 进一步调查后,研究人员指出,这场泄露风波竟然与 Claude Co
本来只是想少让 AI 弹几次授权框,结果连家底都一起交了出去。
安全公司 Apiiro 的研究人员近日发现,公开的 GitHub 仓库里冒出了大量
Claude Code 配置文件,其中不少夹着数据库密码、API Key,甚至超级管理员的登录凭证。
研究人员继续追查后指出,这场泄露风波跟 Claude Code 里一个不起眼的选项脱不了干系:「Yes, and don’t ask again」(是的,以后不再询问)。
一个「不再询问」,怎么就把密码给存下来了?
要说清这次的问题,得先看 Claude Code 的权限管理是怎么运作的。
用 Claude Code 的时候,AI 一旦要执行涉及系统操作的命令,一般会先向用户申请授权。
比如开发者让它去查数据库,AI 可能生成这样一条命令:
- PGPASSWORD=your_password psql -h db.example.com -U admin
用户点了允许,Claude Code 就会把这条命令跑起来。
可要是用户再多点一步「Yes, and don’t ask again」(是的,以后不再询问),事情就不一样了。
为了下次执行同样的操作时不再弹窗,Claude Code 会把这条命令存成一条长期有效的权限规则,写进项目目录下的:
- .claude/settings.local.json
这个设计本身是为了让开发更省事。
问题在于,Claude Code 存下来的可能不是脱敏后的命令模板,而是完整命令。
换句话说,上面那条命令里的 your_password,很可能原封不动地躺在配置文件里。
其他命令也有类似风险。开发者让 Claude Code 用 curl 请求某个 API,如果请求头里带着 Authorization Token,这条命令被存成权限规则时,Token 也会跟着写进配置文件。
一个原本只用来记录「哪些操作可以免去重复授权」的文件,就这样意外成了敏感信息的集中存放地。
问题出在 Git 忽略规则上
有人可能会问:既然是本地配置文件,怎么会被传到 GitHub 上去?
其实
Anthropic 并不是完全没想过这一点。
Claude Code 官方文档写明,.claude/settings.local.json 本就是给个人用的本地配置文件,不该提交到 Git 仓库。
按正常流程,Claude Code 第一次创建这个文件时,会自动把它加进 Git 的全局忽略规则(global gitignore)。
但这里有个容易被忽略的区别:全局 Git 忽略规则,跟项目自己的 .gitignore 文件不是一回事。
举个例子:
开发者 A 在自己电脑上用 Claude Code,系统会自动把 settings.local.json 加进这台机器的 Git 忽略规则。
这个文件平时不会被正常提交进 Git 仓库。
可一旦项目被拷到另一台机器,或者开发者在一个本来没有 Git 仓库的目录里新建仓库,新环境未必继承原先那套全局忽略规则。
文件若已被 Git 跟踪,又或者开发者手动建了这个配置文件却没把它加进忽略列表,那它就可能跟着一起被提交上去。
麻烦还不止于此。安全研究公司 Apiiro 的研究人员发现,有些情形下,Claude Code 自己也会把带着敏感信息的配置文件提交出去。
说白了,配置文件本身并非不该存在,问题出在它少了一层足够可靠的防护。
安全公司调查:数千条密码、Token 已经暴露
受影响的范围到底有多大?
11 月 5 日,安全公司 Apiiro 公开了一份调查报告。
研究人员翻查了公开 GitHub 仓库中的 104,185 个 .claude/settings.local.json 文件,查出其中 1,122 个文件藏着真实敏感凭证,合计 1,379 条。
这些数据牵涉 63 家不同组织,类型包括服务 API Token、数据库密码、AI 模型 API Key、Supabase 服务角色密钥、Google API Key、SSH 登录凭证、GitHub、GitLab 和 npm Token,还有 AWS 密钥与私钥等。
数据库密码与 Supabase 服务角色密钥加在一起有 501 条,占 1,379 条凭证的 36.3%。

更让人担心的是,研究人员还找到了 43 条能登录公网服务器的 SSH 凭证,部分甚至对应 Root 账户密码。
这还没完。
11 月 9 日,另一家安全公司 GitGuardian 晒出了规模更大的调查结果。
从 2025 年 1 月至 2026 年 11 月 7 日,GitGuardian 在公开 GitHub 上发现 23,276 个仓库中存在 .claude/settings.local.json 文件,累计识别出 31,088 条不同的敏感凭证,检测时有 5,343 条仍然有效。
有一点已经相当明确:这并非少数开发者偶然犯的低级错误,而是整个开发者社区都该警惕的问题。
Anthropic 团队回应:正在研究解决办法
其实这个问题并非最近才冒出来。
早在 2025 年 8 月,就有开发者在 Claude Code 的 GitHub Issue 里反映过类似情况:用户批准带凭证的命令后,敏感信息会以明文写进配置文件。
之后,社区里又陆续冒出其他相关反馈。
可这些报告因为长时间没人更新,最后都被自动关闭,没得到实质处理。
直到这回安全研究公开,事情才重新被广泛关注。
Claude Code 团队负责人 Boris Cherny 也在 Hacker News 的相关讨论中亲自出面回应。
他承认,Claude Code 过去并没有内置敏感信息清理机制,团队眼下正在研究怎么避开这类问题。
针对配置文件泄露一事,Cherny 的说法是,.claude/settings.local.json 原本就不该进入版本控制系统,Claude Code 在自行创建该文件时,也会自动把它写进 Git 忽略规则。他还建议开发者改用 Claude Code 的 Auto Mode,不必再手动维护那一堆复杂的允许与拒绝规则。
照他的解释,Auto Mode 能借助分类器自动处理常规权限请求,开发者不用反复折腾权限规则。可有用户提出,即便开了 Auto Mode,涉及敏感命令的授权操作照样可能把相关内容写进配置文件,Cherny 对此表示认同,并称团队正在研究怎么改进。
另外他提到,团队正考虑把基础的 Secret Scanning(敏感信息扫描)能力直接做进 Claude Code,眼下还处在研究和原型验证阶段。
Apiiro 的研究还发现,gitleaks 和 TruffleHog 这两个常见敏感信息扫描工具即便搭配使用,也漏掉了 215 个含敏感凭证的文件,占相关文件总数的 19.2%。光靠现有扫描工具,未必能把问题彻底解决。
开发者现在应该做什么?
对已经在用 Claude Code 的开发者而言,这次事件的重点并不是把某个文件塞进 .gitignore 就算完事。可以先翻一遍项目里的 .claude/settings.local.json,看其中有没有包含密码、Token 或其他凭证的命令。
然后在项目自己的 .gitignore 里明确写上:.claude/settings.local.json。项目如果还要打包成 Docker 镜像,也应在 .dockerignore 中排除:.claude/
一旦发现敏感凭证已经被提交到公开仓库,只删文件并不够。Git 历史记录、Fork 仓库以及已经发布的 Docker 镜像,都可能继续留着这些信息。更紧要的是马上撤销并轮换已经暴露的 API Key、数据库密码和其他凭证,之后再处理仓库历史记录及其他公开副本。
还有,命令里需要用到的敏感信息,尽量通过环境变量引用,别把密码或 Token 直接写进命令参数。
说到底,AI 编程工具本意是让开发者少操点心。可如果连自己电脑里的密码都要额外担心会不会被它顺手打包上传,这份便利显然还有不少地方要完善。