点一下「以后不再询问」,密码、API Key全被上传!Claude Code配置文件泄露数千条敏感信息,Anthropic回应
整理 | 屠敏出品 | CSDN(ID:CSDNnews)只是为了让 AI 少问自己几次,没想到却把家底都交出去了。近日,安全公司 Apiiro 的研究人员发现,公开的 GitHub 仓库中出现了大量 Claude Code 配置文件,其中不少文件竟然包含数据库密码、API Key,甚至超级管理员登录凭证。进一步调查后
本来只是想让 AI 少问几遍,结果连家底都交了出去。
安全公司 Apiiro 的研究人员近日发现,公开的 GitHub 仓库里冒出了大量
Claude Code 配置文件,其中不少还夹着数据库密码、API Key,甚至超级管理员的登录凭证。
追查下去,研究人员把这场泄露风波指向了 Claude Code 里一个不起眼的选项:「Yes, and don’t ask again」(是的,以后不再询问)。
一个“不再询问”,怎么就把密码存下来了?
要说清这个问题,得先看 Claude Code 的权限管理是怎么运作的。
用 Claude Code 的时候,AI 一旦要跑涉及系统操作的命令,一般会先来找用户要授权。
比如开发者让 Claude Code 去查数据库,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 中报告过类似情况:当用户批准包含凭证的命令时,敏感信息会以明文形式写入配置文件。此后,社区里又陆续出现了其他相关反馈。
但这些报告最终都因为长时间没有更新而被自动关闭,没有得到实质性处理。直到这次安全研究公开,问题才再度引起广泛关注。
在 Hacker News 的相关讨论中,Claude Code 团队负责人 Boris Cherny 也亲自作出了回应。他承认,Claude Code 历史上并没有内置敏感信息清理机制,团队正在研究如何避免此类问题。
针对配置文件外泄一事,Boris 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 编程工具本来的用意,是让开发者少为杂事分心。结果连自己电脑里的密码都要多留个心眼,防着被它顺手打包传上去,这份便利确实还有不少地方要补。
https://arstechnica.com/ai/2026/11/claude-code-settings-files-expose-thousands-of-secrets-on-github/
https://news.ycombinator.com/item?id=50408126
“AI正在毁掉我的计算机学位!”一名大学生吐槽:作业量暴涨3倍,老师用AI出题,学生却成了“小白鼠”
“AI正在逼我们还清40年的技术债!”一个两年没人修的老Bug,几天被AI挖成了「致命漏洞」:差点放倒全球近70%的网站
上千个Agent 8天写操作系统、还能从零设计硬件!Anthropic重磅发布Claude Fable 5.2、Mythos 5.2
🤖 AI 训练越来越烧钱,瓶颈真的只是算力不够吗?
推理占去七成算力,训练与推理还有必要分开?千万个沙箱一齐运行,什么在拖住训练?没有万卡集群,普通硬件能不能扛住大模型后训练?
📚 现在报名,更有机会获得 AI 技术好书!