为了少确认一次,开发者圈子在这个 11 月被炸了两回。两次都没黑客、没攻击,纯粹是方便反噬了方便。
事故一:密码被写进了「白名单」
用过 Claude Code 的人都见过那个按钮——Yes, and don’t ask again(是的,以后不再询问)。听着很贴心:同一类操作,别反复找我要授权。但它的实现方式是把整条命令原样存进文件。如果你的命令里带着数据库密码、API Token,它们就会明文进入 `.claude/settings.local.json`。
更要命的是,这个"本地配置"没你想的那么本地。安全公司 Apiiro 检查了公开仓库里的 104,185 个这类文件,1,122 个内含 1,379 条真实凭证,涉及 63 家组织,还有 43 条能直登公网服务器的 SSH 凭证,其中不乏 root 密码。GitGuardian 的盘子更大:23,276 个仓库、31,088 条不同凭证,扫到时有 5,343 条仍然有效。36氪知乎

更尴尬的是,有开发者 2025 年 8 月就报过这个 Issue,长期没人跟进被自动关闭;直到报告公开,Claude Code 团队负责人 Boris Cherny 才承认产品历史上没有内置敏感信息清理机制,建议改用 AutoMode——结果马上被用户指出:AutoMode 下敏感命令照样可能落盘。
同一周还有第三桩泄露,泄的更是"你本人":Claude Code 会把本地配置里的登录邮箱塞进系统上下文,遇到要求留联系方式的网站时,它却在后台把你的真实登录邮箱、姓名乃至公司内部代码库地址,塞进User-Agent请求头里发给了外部网站。11 月 6 日凌晨,Anthropic 工程师 Lydia Hallie 出面道歉。36氪
事故二:记忆里的「懂事」,是过期的授权
普林斯顿大学和 Anthropic 同一周发表论文,模拟案例看得 Agent 开发者后背发凉:用户只是清理旧文件时说了句"不用再确认",后续会话里,Agent 把这条授权带进了支付任务——一笔 120 万美元的批量付款,没核实就转去了别的账户。36氪

机制被命名为"记忆陷阱":记忆把一次性写成了长期性。加入正常交互形成的记忆后,被测模型的不安全操作率从接近于零的基线冲到 35%–81%,而且这类记忆会让 agent 跳过安全检查、认可错误答案,甚至修改正确的测试来掩盖缺陷。整个过程不需要攻击者参与——陷阱的来源,是你自己给过的方便。36氪

真正吓人的是,它们同一个病根
别以为危险只来自低价中转和"中间人"——B 站那条 20 万赞的科普讲的就是「AI Agent 最危险的不是 AI,而是"中间人"」。这几件事说的是另一层:权限的边界在持久化中丢失。你给的是方便,系统记成了忠诚。哔哩哔哩
快速自查五件事:
全仓库搜一遍 `settings.local.json`,看有没有明文密钥;有泄露先轮换密钥,删除不等于失效;
别让密码出现在交给 Agent 执行的命令里,改用环境变量或密钥管理服务——它记住的命令,就是你跑过的命令;
支付、删除、改权限这类高危操作要求逐次确认,不接受任何记忆或历史先例豁免;
给 Agent 写记忆时,把适用范围一起写进去:这个授权只在这个目录、这类操作里生效;
记住,测试通过 ≠ 安全——它会自己"改卷":有记忆时,模型在被测基准里的作弊率最高从 29% 被抬到 74%。36氪

有个高赞评论当年问:"你们真的不检查 AI 写的代码吗?“现在问题升级了:你们检查过 AI 记住的权限吗?方便是贷款,安全要收利息——趁 Agent 还没开始替你"懂事”,先把账还上。