Senaryo
Pahali bir prompt’a dusuk bir butce koyun:
claude -p "Write a 5000 word essay about the history of computing" \ --output-format json \ --max-budget-usd 0.05Iki dakika sonra makalenin tamami geldi. Fatura: $0.152 — butcenin 3 kati. Claude butce kontrolu devreye girmeden uretimin tamamini bitirdi.
Neden Boyle Oluyor
--max-budget-usd flag’i kesin bir limit degil. Turlar arasi kontroldur. Gercek uygulama sirasi soyle:
- Claude bir yanit uretmeye baslar
- Tam yanit tamamlanir (bir tur)
- Sonra butce kontrol edilir
- Asilmissa, sonraki tur baslamaz
Sorun adim 2’de. Tek bir tur, herhangi bir butce kontrolu devreye girmeden tamamen calisir. O tur 126 saniye boyunca 5.446 output token uretirse, butce flag’i sadece izleyebilir.
Iste JSON yaniti:
{ "type": "result", "subtype": "error_max_budget_usd", "is_error": false, "total_cost_usd": 0.1521415, "modelUsage": { "claude-opus-4-6": { "outputTokens": 5446, "cacheReadInputTokens": 14253, "costUSD": 0.1521415 } }}is_error degerinin false olduguna dikkat edin. Bu bir cokme degil. Para zaten harcandiktan sonra gerceklesen kontrolllu bir durma.
Minimum Taban
Her Claude CLI cagrisi, yalnizca system prompt’tan kaynaklanan minimum bir maliyete sahiptir. Opus icin bu taban yaklasik cagri basina $0.016 — Claude prompt’unuzu gormeden once okunan yaklasik 14.253 cache’lenmis token.
Bu tabanin altindaki her butcenin asilmasi garanti:
| Butce | Gercek Maliyet | Ne Olur |
|---|---|---|
| $0.01 | $0.017 | System prompt tabani butceyi asiyor |
| $0.05 | $0.016 - $0.15 | Kisa yanitlarda isiyor, uzunlarda asiyor |
| $0.50 | $0.02 - $0.48 | Tek turlu gorevler icin guvenilir |
| $2.00+ | Butceye yakin | Butce kontrolleri beklendigi gibi calisiyor |
Opus ile $0.02’nin altinda, butce flag’i sadece bir “bir kere calistir ve dur” mekanizmasi.
Cozum
Gercekci minimumlar belirleyin. Opus tek turlu gorevleri icin en az $0.10 kullanin. Cok turlu oturumlar icin $1.00 veya daha fazla.
Otomasyonda asimi tespit edin. Cikis kodunu ve subtype alanini kontrol edin:
RESULT=$(claude -p "Your prompt" --output-format json --max-budget-usd 1.00)SUBTYPE=$(echo "$RESULT" | jq -r '.subtype')COST=$(echo "$RESULT" | jq '.total_cost_usd')
if [ "$SUBTYPE" = "error_max_budget_usd" ]; then echo "Budget exceeded: spent $COST"fiKumulatif maliyetleri harici olarak takip edin. Butce flag’i oturum basina harcamayi takip eder, ancak yuzlerce cagri yapan CI/CD pipeline’lari icin cagrilar arasinda total_cost_usd biriktiren ve bir esik asildiginda pipeline’i durduran bir wrapper’a ihtiyaciniz var.
Ucuz gorevler icin Sonnet kullanin. Sonnet’in cagri basina minimum maliyeti $0.005 — Opus’tan yaklasik 3 kat ucuz. Formatlama, ozetleme ve basit sorular icin --model claude-sonnet-4-6 dogru secim.
Zihinsel Model
--max-budget-usd dusuncesini bir arabadaki hiz sinirlayi olarak dusunun, tugla duvar degil. Kac tur atacaginizi sinirlar, ama arabayi tur ortasinda durduramaz. Her tur (turn) tamamlanir ve sinirlayi yalnizca turlar arasinda kontrol eder.
Kesin gercek zamanli butce uygulamasi icin harici araclara ihtiyaciniz var. CLI’in butce flag’i faydali bir korkuluk, fatura garantisi degil.