一个泄露的.env文件,最后变成了一张9 万美元的 API 账单。这不是段子,是有人真金白银踩过的坑。

事情的起点很朴素:项目里躺着一个 .env 文件,里面是 API 密钥。AI 编码代理默认可以读取项目中的任何文件,它读了,密钥就跟着流出去了。账单是后话,代价是实打实的。

正方会说,这是使用者自己的疏忽,密钥不该放在代理够得着的地方。反方会说,代理的默认权限本来就该收窄,工具不该假设项目里每个文件都可以随便翻。两边都有道理,但账单不会因为谁有理就打折。

给出的解法有三条,都是设置层面的动作,不需要改代码逻辑。

  1. 在 Claude 的settings.json里加拒绝规则,禁止读取.env
  2. 通过命令行标志,为每次运行设置预算上限。
  3. 在 Claude Console 中为每个 API 密钥设定硬性开支限制。

三条叠在一起,作用是把潜在损失摁在一个可接受的范围内。第一条堵住泄露的入口,后两条堵住账单失控的出口——一条管"能不能读",两条管"能花多少"。

我的判断是,这三条里最容易被跳过的是第三条。拒绝规则写在项目配置里,跟着代码走,容易记得;预算上限写在启动命令里,跑一次设一次,也还算顺手。但控制台里的密钥级硬性限额,属于设一次就忘、出事才想起的东西。偏偏它是最后一道闸。

对每天和编码代理打交道的打工人来说,这件事的提醒不在于"AI 很危险",而在于代理的默认权限比多数人以为的宽。它不会问你哪个文件能读,它只会读。9 万美元买来的教训,别人已经付过账了。