点一下“不再询问”,1122份Claude Code配置带着密码上了GitHub

Claude Code“不再询问”选项将明文密钥写入配置文件,已致1122份文件泄露至GitHub。
文章揭示了一起由AI编程工具默认行为引发的系统性凭据泄露事件。Claude Code在执行命令时弹出的权限确认框若被选择“是,不再询问”,工具就会把整条命令连同其中的密码、令牌和API密钥原样写入本地配置文件,使一次性输入变成磁盘上的持久化明文。更关键的是,许多开发者只在个人全局gitignore中添加了忽略规则,而项目级.gitignore并未配置,导致协作者提交时该文件被正常纳入版本控制并推送到公开仓库。研究人员已发现GitHub上存在1122份含明文凭据的配置文件,在追查的1105个仓库中有539个的敏感文件变更以Claude为共同作者。文章给出的应对措施是:轮换所有暴露凭据、用git rm --cached将文件移出版本控制并写入项目级gitignore、避免在命令行中直接写入密码。
一个看似方便的“不再询问”按钮,正在把开发者的密码和密钥悄悄送进公开仓库。据B站AI快讯报道,GitHub上已发现1122份Claude Code配置文件包含明文密码和密钥,而问题的源头,正是那个被无数人顺手点下的确认选项。
一个按钮如何泄露你的密码
Claude Code在执行命令时,会弹出权限确认框。如果你选择了“是,不再询问”,工具就会把整条命令——连同命令里携带的密码、令牌、API密钥——原样写入本地的配置文件。

这个设计的初衷是减少重复确认、提升开发效率。但便利的代价是:敏感信息从终端的一次性输入,变成了磁盘上的持久化明文存储。换句话说,你以为只是少点了几次确认,实际上是把密钥抄写了一份放在项目目录里。
为什么本地文件会跑到GitHub上
很多人第一反应是:这个文件在本地的忽略规则里,不会被提交。问题恰恰出在这里。

开发者在个人全局Gitignore中加入了这条忽略规则,但它只在自己的机器上生效。项目本身的.gitignore文件里并没有写入对应规则,于是当其他协作者克隆项目、或者使用不同环境提交代码时,这个配置文件就可能被正常纳入版本控制,一路推送到公开仓库。

全局忽略与项目忽略的边界,是这次泄露事件中最容易被忽视的环节。安全配置如果只存在于个人环境,就等同于没有配置。
Git 的忽略规则分为三个层级:项目级 .gitignore、全局级(通过 core.excludesFile 配置,通常位于 ~/.config/git/ignore 或 ~/.gitignore_global)、以及仓库内的 .git/info/exclude。优先级上,项目级规则随仓库分发、对所有协作者生效;全局规则只作用于当前用户的这台机器,不会随克隆传递。因此,若某文件只在全局被忽略、项目 .gitignore 中未声明,那么其他协作者提交时该文件仍会被 git add 纳入跟踪。一旦文件进入 Git 索引,后续即使补写忽略规则也不会自动失效,必须用 git rm --cached 显式移除跟踪。这也是安全配置必须落到项目级忽略文件、而非依赖个人环境设置的根本原因。
数据揭示了什么:1122份文件与539次提交
研究人员的追踪结果给出了更具体的规模。GitHub上存在1122份包含明文密码和密钥的Claude Code配置文件。在追查的1105个仓库中,有539个仓库里修改过该文件的提交,共同作者标注为Claude。

这组数据的含义值得细读:接近一半的被查仓库中,敏感文件的变更由工具自动产生。这意味着泄露不是个别开发者的疏忽,而是工具默认行为与版本控制流程叠加后的系统性风险。当AI编程助手替人“动手”时,它写入的内容同样会被Git如实记录。
“共同作者”(Co-authored-by)是 Git 提交信息中的一种 trailer 约定,格式为 Co-authored-by: Name <email>,常用于记录结对编程或工具辅助生成的提交。GitHub 会解析该字段并在提交页面展示多位作者头像。当 AI 编程工具代用户执行 git commit 时,若在提交信息中自动附加自身的共同作者标识,这些提交就会在元数据层面留下工具参与的证据。研究人员正是借助这一字段,把“敏感文件被修改”与“修改由 Claude 触发”关联起来,从而区分人为疏忽与工具自动行为,这也是 539 这个数字得以统计出来的技术前提。
泄露发生后,应该做哪三件事
如果你使用Claude Code并点过“不再询问”,建议按以下顺序处理。
第一步:轮换所有暴露过的凭据。 把曾经出现在命令行里的密码、API密钥、访问令牌全部更换。明文一旦进入公开仓库,即使后续删除,也可能已被抓取或缓存,换掉才是止损。
第二步:把配置文件移出版本控制。 使用git rm --cached将文件从跟踪列表中移除,并写入项目根目录的.gitignore。注意是项目级忽略文件,不是个人全局配置。
第三步:改变命令习惯。 不要把密码直接写进命令行。改用环境变量、密钥管理服务或交互式输入,让敏感信息不进入命令历史,也不进入工具的持久化记录。
凭据轮换(credential rotation)是指在不中断服务的前提下,为账户或密钥签发新的凭据并废止旧凭据。对 API 密钥,通常在服务商控制台生成新 Key、更新调用方配置后再删除旧 Key;对密码,则需在所有使用点同步更新。轮换的必要性在于:明文一旦进入公开仓库,Git 历史、fork、镜像站与爬虫缓存都可能保留副本,单纯删除当前文件并不能撤回已泄露的信息。更彻底的做法是借助 git filter-repo 或 BFG 等工具重写历史,但即便如此也应视为已泄露处理,轮换始终是止损的第一优先级。
工具便利与安全边界的再思考
这起事件的核心不是Claude Code一个产品的缺陷,而是AI编程工具普遍面临的设计张力:自动化程度越高,工具替用户做出的决定就越多,而这些决定未必符合每个项目的安全基线。
“不再询问”本质上是把安全确认的责任从工具转移给了用户的一次性判断,但用户往往在缺乏上下文的情况下点击确认。对开发者而言,这意味着需要重新审视AI工具的默认行为;对工具方而言,减少询问的同时,也应当对敏感内容的落盘方式给出更明确的保护。
方便和安全之间的那条线,值得在点下确认之前多想一秒。
相关推荐
科技前沿Memorias:用AI传记作家把你的故事变成书
Memorias 是一款 AI 传记作家工具,通过对话式访谈将你的口述故事整理成回忆录,自动映射人物、地点与年份,支持照片与 EPUB/PDF/DOCX 导出,按次付费。
科技前沿mamitsu:让社交视频自动转成JSON的API与MCP
mamitsu是一款在Product Hunt上发布的API和MCP服务器,能将社交视频中的画面、音频和配文解析为JSON结构化数据,适用于食谱提取、产品信息抓取等开发者场景。
科技前沿GitHub日报·11月08日:Agent 基础设施全面开花
Deep dive into 7 new GitHub trending projects today