HERMES.md in commit messages causes requests to route to extra usage billing
总结
本文描述了在使用 Claude Code v2.1.119 时,由于 Git 仓库的最近提交历史包含大小写敏感的字符串 HERMES.md,导致 API 请求被路由到“额外使用”计费,而不是包含在 Max 计划配额中的情况。 这一问题导致作者花费了 200 美元(约 20x Max 计划)的额外使用额度,而计划容量(13% 每周使用率)仍然很大。
环境:
- Claude Code v2.1.119
- macOS (Apple Silicon)
- Max 20x 计划 ($200/月)
- 模型:
claude-opus-4-6[1m](同样在claude-opus-4-7上复现)
复现步骤:
无需项目文件,以下步骤可以复现问题:
- 创建一个临时目录
/tmp/test-fail并进入。 - 初始化 Git 仓库,添加一个名为
test.txt的文件,并提交,提交信息为"add HERMES.md"。 - 使用
claude -p "say hello" --model "claude-opus-4-6[1m]"发送 API 请求。- 预期结果: 出现 "You're out of extra usage..." API 错误 (路由到额外使用计费)。
- 创建一个临时目录
/tmp/test-pass并进入。 - 初始化 Git 仓库,添加一个名为
test.txt的文件,并提交,提交信息为"add hermes.md"。 - 使用
claude -p "say hello" --model "claude-opus-4-6[1m]"发送 API 请求。- 预期结果: 返回 "Hello!" (路由到计划配额)。
- 清理临时目录:
rm -rf /tmp/test-fail /tmp/test-pass
问题根源:
触发因素是 Git 提交信息中的字符串 HERMES.md,而不是磁盘上存在名为 HERMES.md 的文件。Claude Code 将最近的提交历史包含在系统提示词中,服务器端根据此字符串的存在将请求路由到不同的计费方式。
触发与未触发的情况对比:
| 提交信息 | 结果 |
|---|---|
| "HERMES.md" | 失败 — 路由到额外使用 |
| "test HERMES.md test" | 失败 |
| "hermes.md" (小写) | 成功 |
| "HERMES" (无扩展) | 成功 |
| "HERMES.txt" | 成功 |
| "AGENTS.md" | 成功 |
| "README.md" | 成功 |
| 文件名为 HERMES.md,提交信息干净 | 成功 |
| 相同仓库,孤立分支 (无历史) | 成功 |
影响:
- 消耗了 200.98 美元 的额外使用额度,这些请求本应由 Max 20x 计划配额覆盖。
- 多个项目在额外使用额度耗尽后变得无法使用,而计划仪表板显示每周剩余容量超过 86%。
- 错误消息 ("out of extra usage") 没有指示内容敏感路由是根本原因,这使得诊断非常困难。
- 任何 Git 提交信息中包含
HERMES.md的用户都会在不知情的情况下被计费额外的额度。
预期行为:
API 请求计费不应依赖于系统提示词中 Git 提交信息的内容。所有 Max 计划用户的请求都应首先路由到包含的计划配额。
发现方式:
作者通过系统性的二分查找方法,克隆受影响的仓库,测试孤立分支,然后隔离单个提交信息字符串,最终确定 HERMES.md 是触发问题的确切字符串。