Claude Code 持久授权可能留下明文密钥
文章指出,Claude Code 保存的命令授权规则可能将命令中的令牌或密码写入项目配置,机器级 Git 排除无法覆盖所有副本。文中援引公开仓库扫描数据,提示配置、历史记录和会话文本均可能泄露密钥。
原文暂未完整获取,基于公开信息的快读
一次「以后不再询问」,可能把命令里的密钥留进项目配置。dev.to 的这篇文章指出,Claude Code 持久保存命令授权时,规则可能包含完整命令及其中的 token、密码。风险出在授权记录、Git 忽略规则与后续提交之间,并不需要有人先攻破系统。
目前能确认什么
据原文节选,选择「Yes, and don't ask again」后,Claude Code 会将权限规则写入项目的 .claude/settings.local.json,其中可能保留命令原文。文章称,该文件会被加入机器级 Git 排除配置,但这种配置不会随项目副本自动传播。
Git 的机器级排除配置与项目 .gitignore 作用范围不同。已经被 Git 跟踪的文件,也不会因为后来补了忽略规则就自动停止跟踪;删除当前文件同样不能清除历史版本。
文章援引 Apiiro 的扫描:104,185 份公开配置文件中,1,122 份含有密钥。但研究没有验证这些密钥是否仍然有效。节选还提到,一名 Claude Code 团队成员回应称,泄露文件是手工创建的,而非 agent 生成。公开仓库存在密钥泄露,与泄露文件是否由持久授权自动生成,需要分开判断。
我的判断
程序员需要把持久授权规则纳入配置审查:命令里出现过凭据,就应检查规则是否连同凭据一起保存。项目内补充忽略规则有助于后续协作,但发现文件已经提交时,还要检查历史,并轮换暴露过的密钥。
扫描通过不能单独作为安全结论。 按节选数据,TruffleHog 和 gitleaks 都漏报了部分含密钥文件,因此授权配置、共享配置和会话文本也需要检查。
目前还不能断言所有版本、所有授权方式都会原样保存命令。自动生成与手工创建的争议、规则匹配范围及修复状态,仍需完整研究材料或官方文档确认。对团队而言,眼下可执行的调整是让命令引用环境变量,减少凭据直接进入命令文本的机会。