
用 AI 编程工具最烦的就是反复弹权限确认。很多图省事的人看到「Yes, and don't ask again(是的,以后不再询问)」就顺手点了,从此清净。最近两家安全公司的报告把这口省事的代价掀了出来:你的数据库密码、API Key、甚至服务器 root 密码,可能正原封不动地躺在一个本该永不上传的文件里。
密码是怎么进去的
机制说穿了很简单。Claude Code 执行敏感命令前会请求授权,比如一条带密码的数据库命令:PGPASSWORD=your_password psql -h db.example.com -U admin。你点了「不再询问」之后,它把这条命令整体存成一条长期允许规则,写进项目目录下的 .claude/settings.local.json。
问题是它存的是完整命令原文,不是脱敏后的模板。密码、Token、Authorization 头,跟着命令一起落盘。这个文件本身没什么错,Anthropic 的文档也写明它只该留在本地——Claude Code 首次创建时会自动把它加进全局 Git 忽略规则。
坑在「全局忽略」和「项目 .gitignore」不是一回事。换台电脑克隆仓库、在一个原本没有 Git 的目录里新建仓库、或者文件已经被 Git 跟踪,保护就失效了。安全公司 Apiiro 还观察到另一种更糟的情况:某些场景下 Claude Code 会自己把这个文件的改动提交进仓库,全程不需要用户确认。
泄露规模比想象的大
Apiiro 11 月 5 日的报告:在公开 GitHub 仓库里扫了 104,185 个 settings.local.json,其中 1,122 个含真实凭证,共计 1,379 条,涉及 63 家组织。数据库密码 379 条、服务 API Token 398 条、AI 模型 API Key 149 条,另有 43 条能直接登录公网服务器的 SSH 凭证,部分还是 root 账号。
11 月 9 日 GitGuardian 的数字更大:2025 年 1 月到今年 11 月 7 日,23,276 个公开仓库里累计识别 31,088 条凭证,检测时 5,343 条仍然有效——能登进去的那种。月度泄露量在 2026 年 4 月达到峰值 12,535 次,10 月回落到 959 次,原因不明,但存量问题还在。
最容易被忽略的是 Docker。GitGuardian 在公开的 Docker Hub 镜像里也找到了 613 条凭证、99 条有效,分布在 543 个镜像仓库的 7,625 个标签里。原因是 COPY . . 会把整个工作目录拷进镜像,而 Docker 根本不读 .gitignore——Git 里挡住了,镜像里原样带出去。有一条有效的 Cloudflare Token 出现在 559 个镜像标签里。
Claude Code 团队负责人 Boris Cherny 在 Hacker News 承认了问题:工具历史上没有内置敏感信息清理机制,团队在研究方案,也在考虑把基础的 Secret Scanning 直接集成进去。其实 2025 年 8 月就有开发者提过相关 issue,60 天无人跟进后被自动关闭。
六步自查,按顺序做
- 打开每个项目的
.claude/settings.local.json,搜password、token、key、ssh这几个关键词,逐条看命令里有没有夹带真实凭证。 - 在项目的
.gitignore里显式加一行.claude/settings.local.json;如果项目会打镜像,.dockerignore里再加一行.claude/。 - 已经提交过的,删文件没有用——Git 历史、别人的 Fork、已发布的镜像里都还在。正确顺序是先吊销并轮换所有暴露的密钥和密码,再用
git filter-repo之类的工具清历史,最后检查 Docker Hub 上历史标签。 - 以后命令里要带敏感值,一律用环境变量引用,别把密码写进命令参数——这是这次事故的源头。
- 打开 GitHub 仓库的 Secret Scanning(设置里免费开启),有条件的话把 gitleaks 挂进 CI。注意别全信扫描器:Apiiro 实测 gitleaks 和 TruffleHog 一起用仍漏掉了 19.2% 的涉密文件,命令行参数里的密码缺少固定格式,规则匹配不上。
- 用过 SSH 密码登录服务器的,检查 root 密码是否出现在任何配置文件里,有就立刻改密码并换成密钥登录。
这个文件里的规则长什么样
补一个细节,方便你判断危险程度。.claude/settings.local.json 里所谓权限规则,就是 JSON 里的一个 allow 数组,每条是完整的命令字符串——带不带密码、带不带 Token,全看你当时批准的那条命令长什么样。数组里出现 PGPASSWORD=、Authorization: Bearer、sshpass 这类片段,基本就是实锤。
已经确认泄露的,清历史的完整动作是:先用 git filter-repo --path .claude/ --invert-paths 把整个目录从历史里抹掉,确认本地干净后 force push。注意两点:一是 force push 前通知团队所有成员重新克隆,二是别人的 Fork 你控制不了——这就是为什么轮换密钥必须排在清历史前面,钥匙换了,历史里留着的旧字符串就成了废纸。
团队层面还有两个动作值得做:组织设置里把 push protection 和 secret scanning 全仓库强制开启;CI 里挂 gitleaks 扫描,新增提交里出现凭证直接拦截。至于官方推荐的 Auto Mode,思路是让分类器自动处理常规权限请求,少走「不再询问」这条会落盘的路径——新项目可以试,存量项目还是先把第 1 步的自查做完。
我的看法
这事本质上是工具把「省一次确认」的便利和「凭证落盘」的风险捆在了一起,让用户在毫不知情的情况下替工具承担安全后果。Cherny 建议大家改用 Auto Mode 避开手动权限规则,方向是对的,但存量文件不会自己消失。AI 编程工具的配置文件,从今天起应该被当成和 .env 同级的敏感资产来对待——扫敏感信息的时候把它们一起扫进去。
文章标题:点过「不再询问」的要当心:Claude Code 会把密码写进配置文件
文章链接:https://www.muooy.cn/16669.html
更新时间:2026年11月12日
1.本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:305582964@qq.com,我们将第一时间处理!2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。
3.所有资源仅限于参考和学习,版权归原作者所有,更多请阅读用户协议和免责声明。
- 1给它一个网址,它给你造一个:三天四千九百星的开源仿造引擎上手11月3日
- 29个MCP服务器同天爆命令注入,8个连补丁都没有10月28日
- 3把终端交给AI之前先装四道保险:一次删光C盘事故的完整复盘10月24日
- 4Mac 风扇狂转温度爆表?一次挖矿木马排查背后的自查清单10月23日
- 5Claude Opus 5.5 八种玩法:从手写字体到一个人做出 Steam 好评游戏10月22日
- 62GB 老电视被 Claude Code 救活:开源 CleanYourTV 清出九成可用内存10月21日
- 7受够了 Adobe 订阅制?前 Square 工程师用 AI 连造 7 款开源替代品10月20日
- 8想偷师 Claude 桌面端的质感?这个开源组件库连滚动曲线都算好了10月19日
- 9AI Agent 排队提交太慢?Scion 开源复刻版 gitai 重造版本控制10月18日
- 10把 Claude 变成 Logo 设计师:开源 logo-design-skill 部署与实测指南10月2日


Yes这点说得挺具体,照着做完才发现之前卡住的地方在哪。