Mert Özen Her Satırda Daha İleri
Yapay Zeka Claude Code — #13

Claude Code'da Maliyet, Usage Limit'leri ve Güvenli Kullanım: Kontrol Listesi

Mert Özen 15 Kas 2026 10 dk 2 görüntülenme
Claude Code'da Maliyet, Usage Limit'leri ve Güvenli Kullanım: Kontrol Listesi

Claude Code'da maliyetin büyük kısmı her istekte yeniden gönderilen context'ten gelir; prompt cache bunu ucuzlatır ama molalarda soğur, model ve fast mode geçişlerinde sıfırlanır. /usage, status line ve /insights ile görmek, abonelik ve API farkı, 15 Kasım 2026 API fiyatları, model ve effort seçimi, Bookstore'un güvenli kullanım kontrol listesi ve user-secrets için deny kuralı.

Sürüm notu: Bu yazı Claude Code 2.1.325'i (13 Kasım 2026) anlatır; maliyet, cache, model, güvenlik ve veri kullanımı ayrıntıları 15 Kasım 2026'da code.claude.com/docs'taki Manage costs effectively, How Claude Code uses prompt caching, Customize your status line, Model configuration, Speed up responses with fast mode, Manage sessions, Security ve Data usage sayfalarından, API fiyatları aynı gün platform.claude.com/docs'taki Pricing sayfasından kontrol edilmiştir. Bu yazıda resmî belgelerden yararlanılmıştır. Status line script'i PowerShell 7.7 ile belgelerdeki örnek JSON girdisiyle çalıştırılmış, settings dosyası schemastore.org şemasıyla doğrulanmıştır.

Önce Tahmin Et

Ayşe, sitedeki serilerin ortak örnek uygulaması Bookstore'da (bir online kitapçı) Max aboneliğiyle sabah açtığı tek session'da bütün gün çalışıyor. Öğle arasından dönünce sorduğu tek satırlık bir soru, 5 saatlik limitinden beklemediği kadar yedi. Emre ise API key ile çalışıyor; uzun bir session'ın ortasında ucuz olsun diye Opus'tan Sonnet'e geçti ve geçişten sonraki ilk istek, önceki isteklerin hepsinden pahalı geldi. Aynı gün ekipten biri "auto mode açık, nasılsa güvenli" deyip bir issue'daki talimatı Claude'a olduğu gibi yapıştırdı.

Tahminin ne? Tek satırlık soru neden pahalıya geldi, daha ucuz modele geçmek neden ilk istekte pahalıya patladı, auto mode bu üçüncü durumda neyi garanti ediyor? Cevaplar cache ve güvenli kullanım bölümlerinde.

Maliyeti Görmek: /usage, Status Line ve /insights

/usage'in üstündeki Session bloğu, session'ın token kullanımını ve bunun liste fiyatıyla hesaplanmış dolar karşılığını gösteriyor. Belgeler bu rakamın bir tahmin olduğunu ve Pro, Max ve Ultra abonelerinde faturayla ilgisi olmadığını yazıyor; aboneler aynı ekranda plan limiti çubuklarını görüyor. Bloktaki Prompt cache (main) satırı istek sayısını, input token'larının ne kadarının cache'ten geldiğini, cache miss'leri ve cache'in şu an sıcak olup olmadığını söylüyor. /clear bu sayaçları sıfırlıyor.

Abonelik planlarında /usage ayrıca son 24 saat ya da 7 günde kullanımın ne kadarının hangi skill'e, subagent'a, plugin'e ve MCP (Model Context Protocol; dış araç ve veri kaynaklarına bağlanma protokolü) server'ına gittiğini, kullanımın en az yüzde 10'unu etkileyen davranışlar için de öneri satırlarını gösteriyor. Alttaki f kısayolu uygulanabilen önerileri Claude'a uygulatıyor, her değişikliği önce sana gösteriyor. Rakamlar yalnız bu makinedeki session geçmişinden hesaplanıyor. /insights ise token değil çalışma biçimi raporu: son session'ları inceleyip sürtüşme noktalarını ve önerileri bir HTML dosyasına yazıyor; bu analiz de token harcıyor.

Sürekli görmek için status line var. Claude Code script'e session bilgisini JSON olarak stdin'den veriyor ve script'in yazdığını prompt'un altında gösteriyor; status line yerelde çalışıyor ve token harcamıyor. Windows için PowerShell sürümü:

# Claude Code status line'ı: model, context, prompt cache, ardından 5 saatlik limit ya da tahmini maliyet.
$data = [Console]::In.ReadToEnd() | ConvertFrom-Json
$parts = @("[$($data.model.display_name)]")

$used = $data.context_window.used_percentage
if ($null -ne $used) { $parts += 'ctx {0}%' -f [math]::Round($used) }

$cache = $data.prompt_cache
if ($cache) {
    $state = if ($cache.warm) { 'warm' } else { 'cold' }
    if ($null -ne $cache.hit_ratio) { $state += ' {0}%' -f [math]::Round($cache.hit_ratio * 100) }
    $parts += "cache $state"
}

# rate_limits abonelerde gelir; API key ile tahmini maliyet daha anlamlı.
$fiveHour = $data.rate_limits.five_hour
if ($fiveHour) {
    $parts += '5h {0}%' -f [math]::Round($fiveHour.used_percentage)
}
elseif ($null -ne $data.cost.total_cost_usd) {
    $parts += [string]::Format([cultureinfo]::InvariantCulture, '~{0:N2} USD', $data.cost.total_cost_usd)
}

Write-Output ($parts -join ' | ')
{
  "statusLine": {
    "type": "command",
    "command": "powershell -NoProfile -File C:/Users/user/.claude/statusline.ps1"
  }
}

Bu kişisel bir ayar, ~/.claude/settings.json'a giriyor. Belgeler Windows'ta script yolunun ileri eğik çizgiyle yazılmasını öneriyor, çünkü komut Git Bash üzerinden de çalışabiliyor. rate_limits yalnız Pro, Max ve Ultra'da ve ilk API yanıtından sonra geliyor; prompt_cache da ilk yanıttan sonra. Script bu yüzden her alanın yokluğunu kontrol ediyor. Organizasyonun allowManagedHooksOnly açtığı bir makinede status line yalnız managed settings'ten okunuyor.

Abonelik ve API: Ne Faturalanıyor

Bu bölümde resmî belgelerden yararlanılmıştır. Pro, Max ve Ultra'da kullanım 5 saatlik ve haftalık pencerelerle sınırlı; limiti aşınca usage credit açıksa ondan devam ediliyor ve /usage-credits ilgili ekranı açıyor. Team ve Enterprise'da her üyenin koltuk payı aynı iki pencereyle yenileniyor ve Claude sohbetiyle ortak; yönetici usage credit ve harcama limitlerini organizasyon, grup ya da kişi düzeyinde ayarlıyor. Claude Console'da, yani API key ile, her token faturalanıyor; Claude Code ilk girişte Console'da "Claude Code" adlı bir workspace açıyor ve harcama limiti bu workspace'e konabiliyor. Plan fiyatları Claude ile Çalışmak serisinin ilk yazısında.

Belgelere göre kurumsal kullanımda ortalama maliyet aktif gün başına geliştirici başı yaklaşık 13 dolar ve ayda 150 ile 250 dolar arası; kullanıcıların yüzde 90'ında aktif gün başına 30 doların altında kalıyor. 15 Kasım 2026'da Pricing sayfasındaki API liste fiyatları, milyon token başına dolar:

ModelInputCache yazma (5 dk)Cache yazma (1 saat)Cache okumaOutput
Opus 5.54580,2020
Sonnet 5.522,5040,1010
Haiku 5.5 (100.000 token'a kadar prompt)0,100,1250,200,010,50

Opus 5.5'te fast mode input için 8, output için 40 dolar; abonelik planlarında fast mode yalnız usage credit ile kullanılabiliyor, plan limitine dahil değil. Thinking token'ları output olarak faturalanıyor.

Cache: Uzun Session Neden Pahalı

Claude Code her istekte konuşmanın tamamını gönderiyor; tool sonucu getiren her adım da yeni bir istek. Prompt cache bu tekrarı ucuzlatıyor: tabloda görüldüğü gibi Opus 5.5 ve Sonnet 5.5'te cache'ten okunan token, input fiyatının yirmide biri. Ama cache'in bir ömrü var. TTL (time to live; cache'in son kullanımdan sonra ne kadar yaşadığı) abonelikte, plan kullanımı içindeyken ana konuşma için 1 saat; API key, usage credit ya da cloud sağlayıcıyla 5 dakika. Aradan uzun bir mola girince sonraki istek bütün context'i yeniden işliyor. Tahmindeki ilk sorunun cevabı bu: Ayşe'nin tek satırlık sorusu, bütün günün konuşmasını cache'siz okuttu. Uzun bir konuşmayı moladan sonra resume ettiğinde çıkan "Resume this conversation?" dialog'u da tam bunu, kayıtlı konuşmanın tek başına 5 saatlik limitin ne kadarını kullanacağını tahmin ediyor.

İkinci sorunun cevabı da cache'te: her modelin kendi cache'i var. /model ile geçiş yaptığında sonraki istek bütün geçmişi cache isabeti olmadan okuyor; cache hâlâ sıcaksa Claude Code geçişten önce onay istiyor. opusplan ayarı plan mode'da Opus, uygulamada Sonnet kullandığı için her plan mode geçişi de bir model geçişi. Fast mode'un da ayrı cache'i var; ilk açışta konuşmanın tamamı fast mode fiyatıyla cache'siz okunuyor, bu yüzden session başında açmak gerekiyor. Effort değiştirmek ise Opus 5.5, Sonnet 5.5 ve Haiku 5.5'te API key ya da abonelikle cache'i bozmuyor.

/compact sıkıştıracağı konuşmanın tamamını okuduğu için kendisi büyük bir istek; ilgisiz bir işe geçerken /clear hiçbir şey harcamıyor. Kural basit: yeni iş, yeni session. Eskisine dönmek için /rename ve /resume var.

Azaltmak: Model, Effort ve Context

Belgelere göre default model ayarı bütün planlarda ve Anthropic API'de Opus 5.5'e çözülüyor. Belgelerin önerisi günlük kodlama işlerinde daha ucuz olan Sonnet, karmaşık mimari kararlar ve çok adımlı akıl yürütme için Opus. Opus 5.5, Sonnet 5.5 ve Haiku 5.5'te thinking kapatılamıyor; /effort ile yönetiliyor ve bu modellerin varsayılan effort'u medium. Basit işlerde low, zor bir hata ayıklamada high ya da xhigh mantıklı.

Bookstore'da önceki yazılarda kurduğumuz yapının çoğu zaten maliyeti düşürüyor: test-runner subagent'ı Haiku ile çalışıyor ve gürültülü test çıktısı ana context'e girmiyor; yedinci yazıdaki hook dotnet test çıktısını kısaltıyor; CLAUDE.md 100 satırın altında ve iş akışları skill'lerde; /bookstore-dev:add-migration disable-model-invocation ile her turda context'e girmiyor. MCP tool tanımları varsayılan olarak erteleniyor ama gh ve dotnet gibi CLI'lar yine daha ucuz. Code intelligence plugin'leri tip hatası ararken gereksiz dosya okumalarını azaltıyor.

Boşta da harcama olabiliyor. Session özeti ve boşta compaction token kullanabiliyor, prompt önerileri her yanıttan sonra çoğu cache okuması olan küçük bir istek gönderiyor; session'a bağlı zamanlanmış görevler, /goal'ün boşta kontrolleri ve arka plandaki subagent'lar ise her seferinde context'in tamamını gönderiyor. Agent teams, teammate'ler plan mode'dayken standart session'ın yaklaşık 7 katı token kullanıyor.

Güvenli Kullanım: Kontrol Listesi

Serinin güvenlikle ilgili kararlarını tek listede topluyoruz:

  • Secret'lar context dışında: .env ve appsettings.Production.json için deny kuralları, dotnet user-secrets komutuna deny, .worktreeinclude'a secret dosyası yazmamak.
  • Deny bir sınır değil: Read deny kuralları Claude'un dosya tool'larına ve cat gibi tanınan komutlara uygulanıyor, dosyayı kendisi açan bir script'e uygulanmıyor. İşletim sistemi düzeyindeki sınır sandbox; native Windows'ta yok, WSL (Windows'ta Linux çalıştıran alt sistem) 2'de var.
  • Güvenilmeyen içerik veri, talimat değil: issue, PR (pull request kısaltması) yorumu, README ve web sayfası Claude'a talimat gibi görünen metin taşıyabilir. Güvenmediğin içeriği doğrudan Claude'a yapıştırma, önerilen komutu onaylamadan oku.
  • Auto mode bir classifier kararı: varsayılan olarak curl | bash, force push ve production deploy gibi işleri engelliyor, ardışık 3 ya da toplam 20 engellemede sana soruya dönüyor; açıkça yazdığın ask ve deny kuralları her durumda geçerli. Tahmindeki üçüncü sorunun cevabı: auto mode bir güvenlik ağı, issue'daki talimatı okuyup karar vermenin yerine geçmiyor.
  • Bypass yalnız izole bir container ya da VM'de; organizasyon disableBypassPermissionsMode ile kapatabiliyor.
  • MCP server'ları, plugin'ler ve hook'lar senin yetkinle çalışan kod: kurmadan önce oku, repo'dan geleni review et.
  • Veri kullanımı: Pro, Max ve Ultra'da model eğitimi bir ayar; açıksa veri 5 yıl, kapalıysa 30 gün saklanıyor. Team, Enterprise ve API'de varsayılan olarak eğitim yok ve saklama 30 gün; ZDR (Zero Data Retention; sunucu tarafında veri saklamama) uygun Enterprise organizasyonlarında ayrıca açılıyor. /feedback ile gönderilen transcript'ler 5 yıl saklanıyor.
  • Yerelde de veri var: session transcript'leri ~/.claude/projects/ altında düz metin olarak, varsayılan 30 gün (cleanupPeriodDays).

Bookstore'un listesinde bir boşluk vardı: user-secrets dosyası repo'da değil, kullanıcı profilinde. Windows'ta %APPDATA%\Microsoft\UserSecrets, Linux ve macOS'ta ~/.microsoft/usersecrets altında duruyor ve SQL Server connection string'i orada. .claude/settings.json'daki deny listesine iki satır ekledik; ~/ öneki kuralı ev klasörüne bağlıyor:

{
  "permissions": {
    "deny": [
      "Read(**/.env)",
      "Read(**/.env.*)",
      "Read(**/appsettings.Production.json)",
      "Read(~/AppData/Roaming/Microsoft/UserSecrets/**)",
      "Read(~/.microsoft/usersecrets/**)",
      "Bash(dotnet user-secrets *)",
      "PowerShell(dotnet user-secrets *)",
      "mcp__plugin_bookstore-dev_playwright__browser_run_code_unsafe",
      "mcp__plugin_bookstore-dev_playwright__browser_file_upload"
    ]
  }
}

Prompt injection'ın ve tool güvenliğinin derin anlatımı LLM Uygulama Güvenliği serisinde, araçtan bağımsız güvenli kullanım AI Destekli Geliştirme serisinin beşinci yazısında.

Üretimde Dikkat

Ekip düzeyinde harcamayı izlemek plana göre değişiyor. Team ve Enterprise'da analytics'teki harcama raporu kişi ve model bazında tahmini usage credit harcamasını gösteriyor; Console'da Cost sayfası ve workspace limitleri var; Bedrock, Google Cloud ve Foundry'de faturalama bulut hesabında. Her kurulumda çalışan ve kişi başı token ile maliyeti kendi izleme sistemine akıtan tek seçenek OpenTelemetry. Sözleşmeli fiyatla ödeyen bir organizasyon, /usage ve status line'ın liste fiyatı yerine kendi fiyatlarını göstermesi için managed settings'e modelPricing koyabiliyor.

Limit mesajlarını ayırt et. "5-hour limit" ya da haftalık limit mesajı koltuk penceresi; tüm modellerde ortak, /model ile model değiştirmek kurtarmıyor. Harcama limiti mesajı usage credit'in yöneticinin koyduğu sınıra geldiğini söylüyor. Context ya da auto-compact uyarısı ise bir limit değil, konuşmanın büyüdüğünü gösteriyor.

Sık Düşülen Tuzaklar

Gün boyu açık tek session. Her soru günün bütün geçmişini taşıyor, molalardan sonra da cache'siz.

Opus'u her iş için bırakmak. Varsayılan Opus 5.5; rutin işlerde Sonnet ya da daha düşük effort aynı işi daha ucuza yapıyor.

Session ortasında model ya da fast mode değiştirmek. Her geçiş konuşmanın tamamını cache'siz okutuyor.

Dolar rakamını fatura sanmak. /usage, status line ve total_cost_usd liste fiyatıyla yapılmış tahminler.

"Auto mode güvenlidir" varsayımı. Classifier bir katman; deny kuralları, sandbox ve senin review'un yerine geçmiyor.

Küçük Bir Deneme

★☆☆ Status line'ı kur, bir session'da 10 dakikalık bir mola ver ve dönüşte cache alanının warm'dan cold'a dönüp dönmediğine bak. API key ile mi, abonelikle mi çalıştığını düşünerek sonucu açıkla.

★★☆ Bir hafta boyunca her cuma /usage'daki öneri satırlarını not et ve en az birini uygula. Bir sonraki haftanın satırlarıyla karşılaştır.

★★★ Bookstore'da yüzde 10'un üzerinde pay alan bir skill ya da MCP server'ı bul, onu disable-model-invocation ile ya da bir CLI komutuyla değiştir ve etkisini iki haftalık /usage verisiyle değerlendir.

Bu yazıyla Claude Code serisi bitiyor. Kurulum ve agentic loop'tan başladık; CLAUDE.md ve memory, permission mode'ları ve sandbox, plan mode, skill'ler, subagent'lar, hook'lar, MCP, worktree'ler, CI, plugin'ler ve Agent SDK ile Bookstore repo'sunu adım adım Claude Code'la çalışılır hâle getirdik. Araçtan bağımsız pratiği AI Destekli Geliştirme, uygulama içinden Claude kullanmayı Claude API ile Uygulama Geliştirme, güvenliği LLM Uygulama Güvenliği serilerinde bulabilirsin.