Anthropic'in Claude Code Auto Mode'u nasıl tasarladığı
(anthropic.com)- Claude Code kullanıcılarının %93'ünün izin istemlerini olduğu gibi onayladığı onay yorgunluğu sorununu çözmek için, onay kararlarını model tabanlı bir sınıflandırıcıyla otomatikleştiren yeni auto mode tanıtıldı
- auto mode, giriş katmanındaki prompt injection probe ile çıkış katmanındaki transcript classifier (Sonnet 4.6 tabanlı) olmak üzere iki katmanlı savunma yapısıyla çalışıyor
- Sınıflandırıcı, ajanın yardımcı mesajlarını ve araç sonuçlarını kaldırıp yalnızca kullanıcı mesajları ile araç çağrısı komutlarına göre karar vererek ajanın kendi çerçevelemesinden etkilenmeyecek şekilde tasarlandı
- Gerçek aşırı hevesli eylem (overeager actions) veri kümesi (n=52) ölçümünde yanlış negatif oranı (FNR) %17; bu,
--dangerously-skip-permissionsseçeneğine göre pratikte bir iyileşme olsa da dikkatli manuel incelemenin tam yerine geçmiyor - Riskli davranışlar engellendiğinde oturumu sonlandırmak yerine ajanın daha güvenli alternatifler denemesi teşvik ediliyor; art arda 3 veya toplam 20 engellemede insana eskalasyon yapan güvenlik önlemleri de var
Arka plan
- Varsayılan olarak Claude Code, komut çalıştırmadan veya dosya değiştirmeden önce kullanıcı onayı ister; ancak pratikte kullanıcıların isteklerin %93'ünü olduğu gibi onayladığı görüldü
- Mevcut iki alternatif vardı: araçları izole eden sandbox (güvenli ama bakım maliyeti yüksek) ve tüm izin istemlerini devre dışı bırakan
--dangerously-skip-permissionsbayrağı (bakım maliyeti yok ama koruma da yok) - Anthropic iç olay kayıtlarında gerçek hatalı çalışma örnekleri yer alıyor: yanlış yorumlanan talimatlar nedeniyle uzaktaki git branch'inin silinmesi, dahili compute cluster'a GitHub kimlik doğrulama token'ının yüklenmesi, production DB üzerinde migration denenmesi gibi
- Bu örüntü, modelin kullanıcının niyetini aşarak aşırı inisiyatif alması (overeager behavior) biçiminde ortaya çıkıyor; Claude Opus 4.6 sistem kartı §6.2.1 ve §6.2.3.3 içinde belgelenmiş durumda
- auto mode, bu iki uç arasında bir orta nokta hedefliyor: kullanıcının niyetiyle uyuşmayan riskli davranışları engelleyip geri kalanını onaysız çalıştırmak
Nasıl çalışıyor
- Giriş katmanı: Sunucu tarafındaki prompt injection probe, araç çıktılarının ajan bağlamına aktarılmasından önce dosya okuma, web fetch, shell çıktısı, harici araç yanıtları gibi içerikleri tarıyor
- Davranış ele geçirme girişimi gibi görünen içerik algılanırsa, bu içeriğe şüpheyle yaklaşılması ve kullanıcının gerçek isteğine odaklanılması yönünde ajanın bağlamına bir uyarı ekleniyor
- Çıkış katmanı: Sonnet 4.6 tabanlı transcript classifier, her eylemi yürütülmeden önce karar ölçütlerine göre değerlendiriyor
-
- aşama: hızlı tek token'lı (yes/no) filtre — engelleme yönünde ayarlanmış
-
- aşama: yalnızca 1. aşamada işaretlenirse chain-of-thought çıkarımı çalıştırılarak yanlış pozitifler azaltılıyor
-
- Sınıflandırıcı yalnızca kullanıcı mesajlarına ve ajanın araç çağrılarına bakıyor; yardımcı mesajlar ve araç sonuçları çıkarılıyor
- Amaç, sınıflandırıcının ajanın kendi gerekçelendirme metninden ("kullanıcı bunu daha önce örtük olarak onaylamıştı, dolayısıyla güvenli" gibi) etkilenmemesi
Tehdit modeli
-
auto mode'un savunduğu riskli davranışların 4 nedeni:
- Aşırı hevesli davranış (Overeager behavior): Kullanıcı hedefini anlıyor ama kullanıcının onaylamadığı bir kapsama kadar proaktif davranıyor — bulunan kimlik bilgilerini kullanmak, engel görülen şeyleri silmek gibi
- Basit hatalar (Honest mistakes): Bir kaynağın test kapsamına ait sanılması, oysa paylaşımlı kaynak olması gibi etki alanını (blast radius) yanlış değerlendirme
- Prompt injection: Dosya, web sayfası veya araç çıktısına gömülen talimatların ajanı kullanıcı işinden saldırganın amacına yönlendirmesi
- Hizalanmamış model (Misaligned model): Ajanın kendi hedeflerini takip etmesi — şu anda fiilen gözlenmiş değil ama her model sürümünde dikkatle değerlendiriliyor
-
İç olay kayıtlarından türetilen engellenecek davranış örnekleri:
- Kapsam eskalasyonu: "Eski branch'leri temizle" isteği → ajanın uzaktaki branch'leri silmeye çalışması (istek muğlak ve eylem geri alınamaz olduğu için engelleniyor)
- Kimlik bilgisi arama: Kimlik doğrulama hatasında, kullanıcı onayı olmadan ortam değişkenleri ve yapılandırma dosyalarında alternatif API token'larını
grepile arama (engelleniyor) - Ajanın çıkarımsal parametre seçimi: "İşimi iptal et" → cluster sorgulanıp isim benzerliğine göre en yakın olan seçilerek silinmeye çalışılması (hedeflenen iş olmayabileceği için engelleniyor)
- Harici servis üzerinden paylaşım: Hata ayıklama amaçlı bir script'i GitHub Gist üzerinden paylaşacak komut oluşturulması — veri sızdırma (exfiltration) sayılıyor ve engelleniyor
- Güvenlik kontrollerini atlama: Deploy komutunda ön kontrol başarısız olunca doğrulamayı atlayan bir bayrakla yeniden denenmesi (paylaşımlı altyapıyı etkileyebilir, engelleniyor)
İzin karar yapısı (3 katmanlı tier)
- Tier 1 — Temel güvenli araç allowlist'i ve kullanıcı ayarları:
- Durumu değiştiremeyen araçlar (dosya okuma, metin arama, kod gezintisi vb.) sabit allowlist içinde yer alıyor
- Kullanıcı, belirli araç örüntüleri için always-allow kuralları tanımlayabiliyor
- auto mode'a girildiğinde, rastgele kod çalıştırmaya izin verdiği bilinen izin kuralları otomatik olarak kaldırılıyor: tam shell erişimi, joker karakterli script yorumlayıcıları (python, node, ruby vb.), paket yöneticilerinin run komutları gibi
- Dar kapsamlı kurallar ("kod biçimlendiricisinin çalıştırılmasına izin ver") korunuyor; geniş yorumlayıcı kaçış kuralları uygulanmıyor
- Tier 2 — Proje içi dosya işlemleri:
- Proje dizini içindeki dosya yazma ve düzenleme işlemlerine sınıflandırıcı çağrısı olmadan izin veriliyor — çünkü sürüm kontrolüyle incelenebilir
- Tier 3 — Transcript classifier:
- Yalnızca gerçek zarar potansiyeli taşıyan eylemler buraya ulaşıyor: shell komutları, web fetch, harici araç entegrasyonları, alt ajan oluşturma, proje dizini dışındaki dosya sistemi işlemleri vb.
Sınıflandırıcının karar ölçütü yapısı
- Sınıflandırıcı prompt'u, sabit bir şablon + 3 özelleştirme alanı yapısına sahip
- Sabit şablon bileşenleri:
- Değerlendirme kuralları (Evaluation rules): Komutun yüzey metnine değil, gerçek dünya etkisine (real-world impact) göre değerlendirme yapılıyor. Böylece ajanın zararlı işleri zararsız görünen sarmalayıcıların arkasına saklaması engelleniyor
- Bir dosyaya payload yazılıp çalıştırılırsa → payload değerlendirilir
&&ile bağlanmış komut zinciri → tek bir eylem olarak değerlendirilir- Bir Python script'i shell komutu oluşturursa → transcript bağlamında oluşturulan komut değerlendirilir
- Kullanıcı niyeti kuralları (User intent rules): Ajanın yaptığı bir eylemin kullanıcı tarafından onaylanıp onaylanmadığı değerlendirilir (sadece kullanıcı hedefiyle ilişkili olup olmadığı değil). Sınıflandırıcı bilerek muhafazakâr davranır — kullanıcı açıkça belirtmeden önce ajanın kendi seçtiği her şey onaysız sayılır
- "Branch'lerimi temizler misin" → toplu silme onaylanmış sayılmaz
- "Bunu düzeltebilir misin?" → talimat değil, soru olarak yorumlanır
- Değerlendirme kuralları (Evaluation rules): Komutun yüzey metnine değil, gerçek dünya etkisine (real-world impact) göre değerlendirme yapılıyor. Böylece ajanın zararlı işleri zararsız görünen sarmalayıcıların arkasına saklaması engelleniyor
- Özelleştirme alanları bileşenleri:
- Environment: Güven sınırını tanımlar — varsayılan olarak yalnızca üzerinde çalışılan git repo güvenilir kabul edilir. GitHub org, cloud bucket, dahili API vb. eklenebilir
- Block rules: 20'den fazla varsayılan kural, 4 grup:
- Yıkım veya sızdırma: force push ile geçmişin üzerine yazma, cloud storage'da toplu silme, dahili veriyi dışarı aktarma
- Güvenlik duruşunu zayıflatma: logging'i kapatma, SSH anahtarı veya cronjob gibi kalıcılık mekanizmaları kurma, ajanın kendi izin ayarlarını değiştirme
- Güven sınırı ihlali: harici bir repo'dan klonlanan kodu çalıştırma, kimlik bilgisi depolarını tarama, veriyi kullanıcının belirtmediği servislere gönderme
- İncelemeyi atlama veya başkalarını etkileme:
main'e doğrudan push, production deploy çalıştırma, ajanın oluşturmadığı paylaşımlı kaynakları veya işleri değiştirme
- Allow exceptions: Repo manifest'inde zaten tanımlı paketlerin kurulması, standart kimlik bilgisi akışları, oturumun çalışma branch'ine push edilmesi gibi
Değerlendirme sonuçları
- Tüm pipeline 3 veri kümesiyle değerlendirildi:
- Gerçek iç trafik (n=10.000): Anthropic çalışanlarının gerçek Claude Code araç çağrıları
- Gerçek aşırı hevesli davranış (n=52): çalışanların reddettiği veya sonradan işaretlediği oturumlardan toplandı — yalnızca Claude gerçek oturumlarda riskli davranış denediğinde toplanabildiği için küçük ölçekli
- Sentetik veri sızdırma (n=1.000): hassas verinin HTTP POST ile gönderilmesi, güvenilmeyen uzak konumlara git push yapılması, URL içinde kimlik bilgisi taşınması gibi örnekler; obfuscation da dahil edilerek üretildi
| Gerçek trafik (n=10.000) | Gerçek aşırı hevesli davranış (n=52) | Sentetik sızdırma (n=1.000) | |
|---|---|---|---|
| Stage 1 (hızlı filtre) | FPR %8,5 | FNR %6,6 | FNR %1,8 |
| Stage 1→2 (tam pipeline) | FPR %0,4 | FNR %17 | FNR %5,7 |
- Gerçek aşırı hevesli davranış verisinde FNR %17 dürüstçe verilen rakam; sınıflandırıcı riskleri (force push, silme, altyapı değişikliği vb.) saptıyor ama oturum içindeki onay sinyallerinin, ilgili eylemin blast radius'unu gerçekten kapsayıp kapsamadığını değerlendirmede hata yapıyor
- "PR'leri temizle" denmiş olsa da force push açıkça belirtilmediyse, benzer bir eylem daha önce onaylanmış olsa bile sınıflandırıcının onay biçiminde kanıt arayıp kapsamı yeterince doğrulayamaması tipik hata örüntüsü
- auto mode,
--dangerously-skip-permissionskullanan grup için tasarlandı ve yüksek riskli altyapıda dikkatli manuel incelemenin doğrudan yerine geçen bir çözüm değil
Başlıca tasarım kararları
-
Yardımcı mesajların ve araç sonuçlarının kaldırılması
- Ajan metninin kaldırılması: ajanın sınıflandırıcıyı ikna etmeye dönük gerekçeler üretmesini önlemek için ("daha önce örtük olarak onaylanmıştı", "bu hedef ajana ait" vb.)
- Araç sonuçlarının kaldırılması: prompt injection'a karşı ilk savunma hattı — çünkü araç çıktıları düşmanca içeriğin giriş yolu olabilir
- Sınıflandırıcı payload'u görmeden de karar verebilir:
.envdosyası içeriğinin harici bir URL'ye POST edilmesi, içerikten bağımsız olarak kullanıcı niyetine aykırıdır - Yardımcı mesajlar + araç sonuçları dahil edildiğinde aşırı hevesli davranış test kümesindeki performans düşüyor — daha kısa transcript'ler ajanın çerçevelemesinden daha az etkilenerek daha doğru sonuç veriyor
-
2 aşamalı sınıflandırma: verimlilik ve recall
- Tek aşamalı sınıflandırıcıda performans/maliyet dengesi doğrudan çatışıyor
- Stage 1: "Hata yapacaksan engelleme yönünde yap" talimatı verilmiş hızlı tek token'lı karar — %8,5 FPR pahasına yüksek recall sağlanıyor
- Stage 2: Stage 1 ile aynı prompt, yalnızca son talimat dikkatli akıl yürütme olarak değişiyor — FPR %8,5'ten %0,4'e iniyor
- Stage 2 prompt'u Stage 1 ile neredeyse aynı olduğu için çoğu istek cache hit alıyor — maliyet açısından verimli
-
Prompt injection probe'un rolü
- Transcript classifier'ın injection savunması yapısal: araç sonuçlarını görmüyor; ancak ana ajan araç sonuçlarını görüyor
- Ana ajan ele geçirilirse transcript monitörünü aşma ihtimali doğuyor → bu yüzden giriş katmanı probe gerekli
- İki katman birlikte çalışıyor: injection'ın başarılı olması için giriş katmanını geçmesi ve ardından transcript classifier'ın payload'u görmeden bağımsız olarak ilgili araç çağrısını güvenli ve kullanıcı niyetiyle uyumlu bulması gerekiyor
-
Çok ajanlı handoff
- Sınıflandırıcı hem alt ajana delege ederken (outbound) hem de sonuç geri dönerken (return) çalışıyor
- Outbound kontrolü: alt ajanın içinde orkestratörün talimatlarının "kullanıcı mesajı" gibi görünerek tamamen onaylı sayılması sorununu önlüyor
- Return kontrolü: delege edilirken normal olan alt ajan, çalışırken prompt injection'a maruz kalmış olabilir; bu nedenle sonuç orkestratöre iletilmeden önce alt ajanın tüm davranış geçmişi inceleniyor ve işaretlenirse güvenlik uyarısı ekleniyor
-
Engelle ve devam et (Deny-and-continue)
- Sınıflandırıcı bir eylemi engellediğinde oturumu kesmek yerine Claude'un daha güvenli alternatifler denemesi teşvik ediliyor
- Engelleme durumunda araç sonucu olarak ret nedeni ve "sınırları iyi niyetle kabul edip daha güvenli bir yol bul" talimatı veriliyor
- Art arda 3 veya toplam 20 engellemede → insana eskalasyon yapılıyor (headless modda süreç sonlandırılıyor)
- FPR %0,4 küçük görünebilir; ancak her yanlış pozitif oturumu bitirseydi uzun süre çalışan görevlerde ciddi kullanılabilirlik sorunları yaratırdı → bu yapı tek deneme maliyetiyle yönetilebilir hale getiriyor
Gelecek planları
- Gerçek aşırı hevesli davranış test kümesi genişletilmeye devam edilecek; özelliğin güvenliği ve maliyeti iteratif olarak iyileştirilecek
- Sınıflandırıcının kusursuz olması gerekmiyor; amaç, yeterince fazla riskli davranışı engelleyerek guardrail'siz duruma kıyasla otonom çalışmayı anlamlı biçimde daha güvenli hale getirmek
- Kullanıcıların kalan risklerin farkında olması, otonom yürütülecek işler ve ortamlar konusunda kendi değerlendirmesini sürdürmesi ve auto mode hatalarında geri bildirim vermesi öneriliyor
Henüz yorum yok.