Tóm tắt
Khi git history của một repo chứa case-sensitive string HERMES.md, Claude Code route API request sang “extra usage” billing thay vì plan quota của Max plan. Lỗi này âm thầm đốt $200 extra usage credits của một user trong khi capacity weekly của Max 20x plan vẫn còn ~86%.
Môi trường
- Claude Code v2.1.119
- macOS (Apple Silicon)
- Max 20x plan ($200/tháng)
- Model:
claude-opus-4-6[1m](cũng reproduce vớiclaude-opus-4-7)
Cách reproduce
Reproduction tối thiểu — không cần project file nào:
# FAIL với "out of extra usage" (route sang extra usage billing)
mkdir /tmp/test-fail && cd /tmp/test-fail
git init && echo test > test.txt && git add . && git commit -m "add HERMES.md"
claude -p "say hello" --model "claude-opus-4-6[1m]"
# => API Error: 400 "You're out of extra usage..."
# WORK (route sang plan quota)
mkdir /tmp/test-pass && cd /tmp/test-pass
git init && echo test > test.txt && git add . && git commit -m "add hermes.md"
claude -p "say hello" --model "claude-opus-4-6[1m]"
# => "Hello!"
# Cleanup
rm -rf /tmp/test-fail /tmp/test-pass
Trigger là string HERMES.md trong commit message — không phải sự tồn tại của file tên đó trên disk. Claude Code include recent commit vào system prompt, và một thứ gì đó server-side route request khác đi khi string này có mặt.
Cái gì trigger vs không
| Commit message | Kết quả |
|---|---|
"HERMES.md" | Fail — route sang extra usage |
"test HERMES.md test" | Fail |
"hermes.md" (chữ thường) | OK |
"HERMES" (không extension) | OK |
"HERMES.txt" | OK |
"AGENTS.md" | OK |
"README.md" | OK |
File HERMES.md trên disk, commit msg sạch | OK |
| Cùng repo, orphan branch (no history) | OK |
Tác động
- $200.98 extra usage credits bị đốt cho request đáng lẽ được Max 20x plan quota cover
- Nhiều project trở nên không dùng được khi extra usage cạn, dù dashboard plan vẫn báo còn 86%+ weekly capacity
- Error message (“out of extra usage”) không hint gì về nguyên nhân content-based routing — cực khó diagnose
- Bất kỳ user nào có
HERMES.mdtrong git commit gần đây sẽ âm thầm bị bill sang extra credit
Hành vi expected
Billing cho API request không nên phụ thuộc vào nội dung commit message trong system prompt. Mọi request từ Max plan subscriber phải route sang plan quota trước.
Cách tìm ra
Binary search có hệ thống: clone affected repo, test orphan branch, sau đó cô lập từng commit message string đến khi HERMES.md được xác định là trigger chính xác.
Dev nên quan tâm vì
Nếu repo bạn đang làm có liên quan đến file tên HERMES.md hoặc commit history chứa chuỗi này, kiểm tra usage Anthropic ngay — bạn có thể đã bị bill nhầm. Vấn đề rộng hơn: API routing không nên dựa vào content match server-side mà không log lý do — đây là class bug khó debug và làm xói mòn niềm tin vào billing.