![]()
Anthropic公司的Claude Code人工智能助手无法遵循简单的忽略指令,即使在机密文件应该被屏蔽的情况下,仍继续读取密码和API密钥等敏感信息。
软件开发中的机密文件管理问题
软件开发人员通常将机密信息(密码、令牌、API密钥和其他凭证)存储在项目目录中的.env文件中。按照惯例,他们应该确保.env文件不会被发布到可公开访问的.Git存储库中。
实现这一目标的常见方法是在.gitignore文件中创建条目,告诉开发者的Git软件在将本地存储库复制到远程服务器时忽略该文件。
Claude实现了类似的功能,即.claudeignore文件。当被询问"如果我创建一个.env文件,如何防止你读取它?"时,Claude回答说:"你可以将.env添加到项目根目录的.claudeignore文件中。这就像.gitignore一样工作——Claude Code将拒绝读取那里列出的模式匹配的任何文件。"
Claude Code忽略安全指令的实际情况
但是Claude的说法是错误的。如Pastebin帖子所述,尽管.claudeignore文件中有应该阻止访问的条目,Claude仍然可以读取.env文件的内容。
The Register重现了这一结果。我们创建了一个目录,创建了一个包含示例机密信息的.env文件,添加了一个包含".env"和".env.*"的.claudeignore文件,然后通过CLI启动Claude Code(v2.1.12版本)。当我们要求Claude读取.env文件时,它照做了——如果Claude尊重.claudeignore条目,这种情况不应该发生。
这具有潜在的安全影响,特别是对于智能体——这些具备工具功能的AI模型可能会被诱导通过间接提示注入来共享存储的机密信息。
更重要的是,Claude还会忽略.gitignore文件中存在的".env"。尽管默认的/config标志将"在文件选择器中尊重.gitignore"设置为"true",它仍然这样做。
实际上,当被要求读取项目中包含".env"的.gitignore条目的.env文件时,Claude会忠实地将其中的机密信息打印到控制台,并显示以下警告:"注意:此文件包含凭证。提交到版本控制时要谨慎——确保.env列在你的.gitignore中。"
开发者社区的关切与报告
Claude愿意忽略.claudeignore指令的问题在Claude Code的GitHub存储库中的一个开放问题帖子中被引用,标题为"[高优先级] Claude在工具输出中暴露机密/令牌 - 无删节"。两天前开启该问题的个人指出:"这是一个安全关键问题,应该紧急解决。"
但问题尚未得到解决。2025年11月的两个帖子提出了同样的担忧。两周前创建的另一个开放问题也标记了Claude愿意显示机密信息的问题。三周前的另一个错误报告也是如此,该报告说:"Claude应该避免读取甚至察觉.claudeignore文件中的任何内容,使用与.gitignore文件相同的标准解析规则。"
有一些方法可以指导Claude远离机密信息,看起来是有效的,比如在项目的.claude目录中的settings.json文件中指定权限。
当我们按照文档中描述的方式创建该文件时,Claude报告了一个错误:"权限设置阻止了.env文件。这是预期的行为——.env文件通常包含机密信息(API密钥、密码、数据库凭证),因此作为安全措施被排除在工具访问之外。"
配置挑战与技术问题
但是配置这些设置权限可能很棘手——一个提出这种担忧的错误报告包含了一个回复,解释Claude的绝对路径语法以两个"//"而不是"/"开始,这与Linux和macOS用户可能期望的不同。开发者还开启了报告settings.json中@文件引用语法问题的议题。还有其他问题,比如permissions.deny不能阻止文件被加载到内存中。
Anthropic公司没有回应评论请求。
如果settings.json旨在成为拒绝Claude文件访问的唯一支持方式,Anthropic应该更清楚地表明.claudeignore不是一个选项。该模型自己的建议应该与最佳实践保持一致,而不是误导人们。
Q&A
Q1:Claude Code读取机密文件的问题是什么?
A:Claude Code无法正确遵循.claudeignore文件的指令,即使开发者在该文件中明确标记要忽略.env文件,Claude仍然会读取其中的密码、API密钥等敏感信息。这违反了基本的安全防护机制,可能导致机密信息泄露。
Q2:.claudeignore文件应该如何工作?
A:.claudeignore文件的设计初衷类似于Git中的.gitignore文件,应该告诉Claude Code忽略指定的文件。当开发者将.env添加到.claudeignore中时,Claude应该拒绝读取匹配该模式的文件,但实际上这个功能并未正常工作。
Q3:如何有效防止Claude Code读取机密文件?
A:目前比较有效的方法是在项目的.claude目录中创建settings.json文件并配置权限设置。当正确配置后,Claude会报错并拒绝访问.env文件。但这种配置方法比较复杂,语法规则也与常见的Linux/macOS路径格式不同。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.