发生了什么
@artixisonx 把这件事叫做「代理配置第一大坑」:他是 Claude 付费订阅用户,以为 Claude Code 走的是订阅额度;结果有一个本地会话用的是他的 API Key,大约一个小时花掉了 10 美元才被发现。那把 Key 不在代码仓库里,只是躺在他本机的环境变量中。
他事后说,最先该做的是给 Key 设消费上限:就算 Key 被用到了不该用的地方,损失也有封顶。
官方规则:环境变量里的 Key 优先
这不是 bug,而是 Claude Code 有意的设计。官方文档和帮助中心的说法一致:
- 只要设置了
ANTHROPIC_API_KEY,Claude Code 就会用这把 Key,而不是你的 Pro、Max、Team 或 Enterprise 订阅,哪怕你已经用订阅登录了; - 交互模式下,第一次检测到这把 Key 时会问你一次是否使用,你的选择会被记住;以后可以在
/config里的「Use custom API key」开关修改; - 非交互模式(
claude -p,常见于脚本和定时任务)里,只要有 Key 就直接用,不会再问。
所以最容易中招的是两种人:一是很久以前随手点了「同意」、早就忘了的人;二是用 -p 跑自动化任务的人。
三步自查
- 在 Claude Code 里跑
/status。 看当前的认证方式是订阅还是 API Key。帮助中心建议定期看一眼。 - 查 shell 启动文件。 打开
~/.zshrc、~/.bashrc等,看有没有长期export ANTHROPIC_API_KEY=...。如果只是偶尔要用 Key,就在需要的那个终端里临时设置,用完unset ANTHROPIC_API_KEY。 - 查定时任务和脚本。 cron、launchd、CI 里调用
claude -p的地方,确认它们的环境里有没有带 Key。
再加一道保险
- 去 Claude Console 给这把 Key 所在的工作区设消费上限;
- 一个项目一把 Key,出事时只废一把;
- 不再需要的 Key 直接在 Console 删除,而不是只从本地删掉变量。
如果你想把 Claude Code 放在一台常开、整机独享的新加坡 Mac mini 上长期运行,可以了解 Zumac.Ai,咨询 Telegram @singatao。
