该技能是一个面向所有智能体的强制性凭据保护技能,主要用途是防止智能体读取、暴露或泄露凭据、密钥、API key、令牌、密码等敏感信息,并保护客户数据等敏感业务数据。
核心原则:按文件可能包含的内容而非存放位置来判断敏感性。如果某种文件类型可能保存认证数据,除非能明确证明并非如此,否则应将其视为敏感文件。
推广原则:当针对某一类敏感数据学到一条安全经验时,应把修复推广到整个类别,而不是只保护触发该经验的那个具体实例。涉及的类别包括:凭据、PII、客户数据、基础设施密钥、敏感日志与错误输出。
安全例外:从环境变量或密钥管理器读取凭据的源代码本身并不敏感,除非其中嵌入了真实值。仅与虚拟系统关联的测试和开发凭据或许可以检查,但生产凭据和个人凭据仍受严格保护。如有疑问,应先询问。
主动报告:如果发现可能的安全问题,或意外看到敏感凭据材料,应立即警告用户,但不要重复秘密值本身。
绝不读取敏感文件:不要读取具备认证能力的文件,例如 .env 或 .env.、.npmrc、.yarnrc 或 .yarnrc.yml、.netrc、.ssh/、.aws/credentials、包管理器认证文件,以及任何路径中包含 secret、credential 或 token 等词的路径。当文件名暗示其可能包含秘密时,应把该原则应用到清单之外。如果文件按名称判断可以通过,但看起来包含类似凭据的内容,应停止并询问用户哪些部分可以安全检查。
绝不通过输出暴露凭据:避免打印环境变量、在命令参数中内联凭据、输出会泄露令牌、密码或个人数据的日志,以及会转储请求头或含密配置的调试输出。
安全错误处理:把错误消息视为泄露面。标准库和 CLI 异常可能嵌入凭据值。缓解措施包括:在读取时剥离并校验凭据环境变量;包装 HTTP 和子进程调用,使底层异常不会暴露原始含密值;秘密优先使用环境变量而非命令行参数;将脱敏钩子视为后备手段而非主要控制。
敏感业务数据:即使客户数据、工单导出、API 响应、CSV 和数据库查询结果不是凭据,也应视为机密。除非用户明确确认安全,否则不要打印原始值。
LLM 安全日志:当脚本生成指向敏感文件的路径时,措辞应让人类知道需要检查它,同时让助手知道不要读取它。良好示例:/tmp/users.json — WARNING: Contains sensitive data. Only a human should review it.
AI 盲调试:当脚本可能输出敏感诊断信息时,最好让人类在单独终端中运行,并只回报安全摘要,例如错误类型。