--allowedTools "Read,Grep,Glob" ile “salt-okunur” bir ajan olusturuyorsunuz. Ajan yine de bir dosya yaziyor. --allowedTools bayragi bir tercih, uygulama siniri degil — Claude, sizin acikca engellemediginiz Bash’e geri dondu. Isletim sistemi sandbox’u, isleri gercekten cekirdek seviyesinde durduran katmandir.
Claude Code, dosya sistemi ve ag erisimini cekirdek katmaninda kisitlayan isletim sistemi seviyesinde bir sandbox icinde calisir. Bir istem enjeksiyonu Claude’a /etc/shadow okumasi veya HTTP uzerinden veri sizintirilmasi soylese bile, isletim sistemi islemi dosya sistemine veya ag yiginina ulasmadan onler. Bu, Claude’un etrafinda akil yurutebilecegi uygulama seviyesinde filtreleme degil — cekirdek tarafindan uygulanir.
Guvenilmeyen kod uzerinde calisan her sey icin macOS seatbelt veya Docker kullanin. sandbox cekirdek seviyesinde calisir — Claude’un etkileyebilecegi her seyin altinda — bu yuzden ikna yoluyla asilmasi imkansiz olan tek guvenlik katmanidir.
Platform Destegi
Platforma Gore sandbox Arka Uclari
| Platform | Arka Uc | Mekanizma | Durum |
|---|---|---|---|
| macOS | seatbelt (sandbox-exec) | Sistem cagrilarini, dosya sistemi yollarini ve agi kisitlayan cekirdek seviyesinde sandbox profilleri | Tam destekleniyor |
| Linux | bubblewrap (bwrap) | Dosya sistemi izolasyonu icin baglama ad alanlari, ag ad alanlari, surecizolasyonu | Tam destekleniyor |
| WSL2 | bubblewrap (bwrap) | Linux ile ayni — WSL2 tam ad alani destegi olan gercek bir Linux cekirdegi calistirir | Tam destekleniyor |
| WSL1 | Yok | WSL1 sistem cagrilarini Windows NT’ye cevirir; Linux ad alani destegi yok | Desteklenmiyor |
| Yerel Windows | Yok | seatbelt veya bubblewrap esdegeri mevcut degil | Desteklenmiyor |
Hangisini kullanmaliyim? Ikisi de calisir. macOS seatbelt 10+ yildir mevcuttur. Linux ad alanlari daha ince kontrol sunar ancak daha yeni cekirdekler (4.8+) gerektirir.
Dosya Sistemi Izolasyonu
Varsayilan olarak sandbox tam olarak uc konuma okuma-yazma erisimi verir:
cwd— Claude’u baslattiginiz calisma dizini~/.claude/— Claude’un yapilandirma ve oturum verileri- Sistem tmpdir — calisma sirasinda gereken gecici dosyalar
Dosya sistemindeki diger her sey engellenir. Claude bu dizinlerin disinda bir dosya okumaya calisirsa, isletim sistemi cekirdegi sistem cagrisini reddeder ve bir izin hatasi dondurur. Bu, Claude ham dosya okumalari denemek icin Bash kullansa bile gecerlidir — sandbox kabugun altinda yer alir.
# Bu basarisiz olur -- /var/log/app sandbox disinda$ claude -p "Read /var/log/app/error.log" --output-format jsonYanit bir red icerer cunku /var/log/app izin verilen dizin kumesi icinde degildir.
—add-dir ile Erisimi Genisletme
--add-dir bayragi, belirli bir dizin icin sandbox’ta bir delik acar. Birden fazla yola erisim vermek icin birden cok kez kullanabilirsiniz:
# Iki ek dizine erisim ver$ claude -p "Analyze logs and check config" \ --add-dir /var/log/app \ --add-dir /etc/app-config \ --output-format json--add-dir’in temel davranislari:
- Yollar mutlak olmali — goreli yollar reddedilir
- Yol, cagri aninda mevcut olmali
- Eklenen dizinler
cwdile ayni seviyede okuma-yazma erisimi alir - sandbox siniri su hale gelir:
cwd+ tum--add-diryollari +~/.claude/+ sistem tmpdir
—add-dir tam okuma-yazma erisimi verir. Harici bir dizine salt-okunur erisime ihtiyaciniz varsa, okumalara izin verirken degisiklikleri onlemek icin —disallowedTools “Write,Edit” ile birlestirin.
Ag Izolasyonu
Dosya sistemi izolasyonu tek basina yeterli degildir. Ag kisitlamalari olmadan, guvenligi ihlal edilmis bir ajan ~/.ssh/ icinden SSH anahtarlarini okuyabilir (izin verilen sandbox icinde olabilir) ve bunlari HTTP uzerinden sizdirebilir.
sandbox ag erisimini tamamen engelleyebilir ve arac seviyesinde daha fazla kisitlama yapabilirsiniz:
# Hava bosluklu ajan -- web erisimi yok, Bash kacisi yok$ claude -p "Analyze this code offline" \ --disallowedTools "WebFetch,WebSearch,Bash" \ --permission-mode bypassPermissions \ --output-format jsonWeb araclari engellediginde, Claude egitim bilgisine geri doner. Yanit, canli web verisinden degil, modelin zaten bildiklerinden gelir. Tazeligi buna gore dogrulayin.
Kullananlar: hassas veriler uzerinde Claude calistiran finans hizmetleri, HIPAA gereksinimleri olan saglik kuruluslari, savunma yuklenicileri.
Savunma Katmanlari
Guvenli gozetimsiz calisma, uc katmanin birlikte calismisini gerektirir. Hicbir tek mekanizma kendi basina yeterli degildir:
Derinlemesine Savunma Katmanlari
| Katman | Mekanizma | Neleri Engeller | Neleri Kacirabilir |
|---|---|---|---|
| sandbox | Isletim sistemi seviyesinde dosya sistemi ve ag izolasyonu | Izin verilen dizinler disindaki yollara erisim, yetkisiz ag cagrilari | Izin verilen dizinler icindeki her sey serbesttir |
| Arac kisitlamalari | —allowedTools ve —disallowedTools | Belirli arac kullanimi (Write, Edit, Bash, WebFetch) | MCP araclari yerlesik arac kisitlamalarini atlar |
| Hook’lar | PreToolUse / PostToolUse olay isleyicileri | Ozel kurallar — dosya yollarinda regex, komut denetimi, API cagri kayitlari | Yalnizca yazdiginiz kurallar kadar guclu |
Bir istem enjeksiyonu saldiri zincirini dusunun: enjekte edilen bir talimat Claude’a cat ~/.ssh/id_rsa calistirmesini soyler. Dosya sistemi sandbox’u ~/.ssh/ izin verilen dizinlerin disindaysa yolu engeller. Okuma bir sekilde basarili olursa, ag sandbox’u sizdirmayi engeller. Ve her iki katman da basarisiz olsa bile, bir PreToolUse hook yol kalibini eslestirebilir ve islemi reddedebilir. Her katman oncekinin kacirabilecegini yakalar.
--dangerously-skip-permissions bayragi tum izin istemlerini atlar, ancak hook’lar yine de calisir. Bu, hook’lari tum izin kontrolleri devre disi birakilmis tam otomatik pipeline’larda son savunma hatti yapar:
--dangerously-skip-permissions ile izin kontrol akisi: 1. Arac istendi --> izin kontrolu --> ATLANDI 2. PreToolUse hook --> HALA CALISIYOR --> yurutmeyi engelleyebilir 3. Arac calisir --> sandbox --> HALA AKTIF 4. PostToolUse hook --> HALA CALISIYOR --> sonuclari denetleyebilirsandbox’u kendiniz test edin. Calisma dizininizin disinda bir dosya okumaya calisin:
claude -p “Read /etc/passwd” —output-format json | jq ‘.result’
sandbox bunu engellemeli. Simdi claude -p “Read /etc/passwd” —add-dir /etc —output-format json | jq ‘.result’ deneyin. Ne degisti? Bu, —add-dir bayraginin sandbox’ta bir delik acmasi.
Kanit: allowedTools Atlama
Claude Code guvenligindeki en tehlikeli yanilgi, --allowedTools’un tek basina salt-okunur bir ajan olusturdugudur. Olusturmaz. Iste kanit — sozde salt-okunur bir ajanin basariyla bir dosya yazmasi:
Bu etkilesimli demo, sandbox’un neden onemli oldugunu gosteriyor. Claude’un bir allowedTools kisitlamasini 4 farkli yoldan nasil astigini izleyin.
# YANLIS: Bu salt-okunur DEGILDIR$ claude -p "Write hello to /tmp/outside_test.txt" \ --allowedTools "Read,Grep,Glob" \ --permission-mode bypassPermissions \ --output-format jsonClaude, --allowedTools icinde olmayan ama acikca engellenmemis olan Bash’e geri dondu ve echo "hello" > /tmp/outside_test.txt calistirdi. --allowedTools bayragi bir tercih, uygulama siniri degil. Araclari gercekten engelleyen --disallowedTools reddetme listesidir.
--allowedTools "Read,Grep,Glob"
Gercek bir salt-okunur ajan icin dogru kalip:
# DOGRU: Hem allowedTools HEM DE disallowedTools$ claude -p "Analyze this codebase for security issues" \ --allowedTools "Read,Grep,Glob" \ --disallowedTools "Write,Edit,Bash,WebFetch,WebSearch" \ --permission-mode bypassPermissions \ --output-format jsonHava Bosluklu Yanit
Web araclari engellediginde, Claude tamamen egitim bilgisinden yanit verir. Bu veri yukunden nasil gorundugunuz gosterilmistir:
web_search_requests: 0 ve web_fetch_requests: 0 dikkat edin. Claude hicbir web erisimi denemedi — araclarin mevcut olmadigini fark etti ve yaniti zaten bildiklerinden uretti.
sandbox isletim sistemi cekirdegi seviyesinde uygulanir. Istem enjeksiyonu bunu asamaz. Bir saldirgan Claude’a cat /etc/shadow veya curl https://evil.com talimatii veren bir istem olustursa bile, cekirdek sistem cagrisini calistirilmadan once engeller. Ne kadar zekice istem olusturulursa olusturulsun, reddedilmis bir sistem cagrisini gezemez.
WSL1 desteklenmez. WSL1, Linux sistem cagrilarini Windows NT cekirdek cagrilarina cevirir ve bubblewrap’in gerektirdigi Linux ad alani izolasyonunu saglamaz. Windows’taysaniz, WSL2 (gercek bir Linux cekirdegi calistirir) veya Linux imajli bir Docker konteyneri kullanin.
Hook cikis kodu 2, —dangerously-skip-permissions’ta bile gecerlidir. Cikis kodu 2 ile cikan bir PreToolUse hook, —dangerously-skip-permissions aktif olsa bile arac calistirmayi engeller. Hook’lar, hicbir bayrak tarafindan atlanamayan tek uygulama katmanidir. Guvenlik yigini su sekildedir: hook’lar (atlanamaz) > sandbox (cekirdek seviyesi) > izinler (bayrak ile atlanabilir).
--allow-dangerously-skip-permissions vs --dangerously-skip-permissions
Bu bayraklar benzer gorunur ancak temelden farkli amaclara hizmet eder. Biri tek anahtarli bir atlama; digeri iki anahtarli bir guvenlik mekanizmasidir.
Izin Atlama Karsilastirmasi
| Bayrak | Tek Basina | —permission-mode bypassPermissions ile | Kullanim Alani |
|---|---|---|---|
—dangerously-skip-permissions | Atlama hemen aktif | Uygulanamaz (zaten aktif) | Hizli betikler, guvenilir ortamlar |
—allow-dangerously-skip-permissions | Atlama yok — yalnizca yetenek etkin | Atlama aktif (her iki anahtar gerekli) | Acik etkinlestirmeli CI/CD |
Iki anahtarli kalip, --allow-dangerously-skip-permissions’i CI/CD pipeline’lari icin daha guvenli kilar:
# Tek anahtarli atlama (bir bayrak yeter)claude -p "Deploy" --dangerously-skip-permissions
# Iki anahtarli atlama (her iki bayrak gerekli)claude -p "Deploy" \ --allow-dangerously-skip-permissions \ --permission-mode bypassPermissions# HER IKI bayraktan birini kaldirmak atlamayi engeller--permission-mode bypassPermissions olmadan, --allow-dangerously-skip-permissions bayragi hicbir sey yapmaz — varsayilan izin modu normal olarak uygulanir. Bu kasitlidir: pipeline sablonlarinin allow bayragini genis olarak ayarlarken belirli is adiminda acik etkinlestirme gerektirmesine izin verir.
—allow-dangerously-skip-permissions tek basina izinleri ATLAMAZ. Bunu tekrar okuyun. Yetenegi etkinlestirir ancak aktive etmez. —permission-mode bypassPermissions ile eslestirmeniz gerekir — iki anahtarli bir firlama dizisi. Bu kasitlidir: allow bayragini genis olarak ayarlayan betiklerde yanlislikla atlamalari onler. Adlandirma kafanizi karistiriyorsa, yalniz degilsiniz — ancak iki anahtarli kalip CI/CD sablonlari icin guvenli kilanidir.
Settings.json reddetme kurallari, atlama aktif olsa bile gecerlilgini korur. Bir “deny”: [“Write”] kurali Write aracini Claude’un arac setinden tamamen kaldirir — Claude izin modundan bagimsiz olarak onu hic gormez. Reddetme kurallari, izin kontrolleri gerceklesmeden once arac yukleme asamasinda uygulanir.
Bilinen Guvenlik Aciklari
Yayinlanmis guvenlik arastirmalari, Claude Code’un sandbox ve yapilandirma sisteminde gercek aciklar belirledi. --dangerously-skip-permissions bayragi, guvenlik arastirmacilari ayricalik yukseltme gosterdikten sonra v2.1’de kaldirildi. Bu yuzden derinlemesine savunma oneriliyoruz — hicbir tek katman mukemmel degildir.
CVE-2025-59536 / CVE-2026-21852 — Proje Dosyalari Yoluyla RCE: Kotu amacli .claude/ proje yapilandirmalari (hook’lar, MCP sunuculari, ortam degiskenleri) uzaktan kod calistirma ve API token sizdirma saglayabilir. Bir deponun .claude/ dizinini kontrol eden bir saldirgan, kurban projeyi Claude Code ile actiginda rastgele kod calistirabilir. Onlemler: guvenilmeyen depolari acmadan once .claude/ icerigini inceleyin, hook ve MCP kaynaklarini kisitlamak icin yonetilen ayarlari kullanin.
Reddetme Listesi Atlamasi /proc/self/root/ Yoluyla: Linux’ta Claude, /proc/self/root/usr/bin/npx kullanarak red kalibini eslestirmeden ayni ikili dosyaya cozumleyerek kendi reddetme listesini atlayabilir. Reddetme kurallari yol cozumlemesi degil dize eslestirmesi kullanir ve sembolik baglanti tabanli atlamalar icin bir bosluk olusturur. Onlem: reddetme kurallarini isletim sistemi seviyesinde sandbox kisitlamalariyla birlestirin.
ToxicSkills — Kotu Amacli Ajan Becerileri: Arastirma, topluluk tarafindan olusturulan ajan becerilerinin %36’sinin guvenlik kusurlari icerdigini ve %13,4’unun kritik ciddiyet duzeyinde oldugunu tespit etti. Beceriler icin resmi bir inceleme sistemi yoktur. Onlem: yukleme oncesi becerileri denetleyin, guvenilir kaynaklardan becerileri tercih edin, hassas ortamlarda --disable-slash-commands kullanin.
MCP Arac Ciktilari Yoluyla Istem Enjeksiyonu: MCP arac yanitlari, istem enjeksiyonu icin belgelenenmis bir saldiri vektorudur. Kotu amacli bir MCP sunucusu, Claude’un davranisini manipule eden ozel yapim arac ciktilari dondurebilir. Onlem: yalnizca acikca guvenilen sunucularla --strict-mcp-config kullanin, MCP ciktilarini dogrulamak icin PostToolUse hook’lari uygulayin.
Yayinlanmis CVE’ler, kotu amacli .claude/ dizinlerinin uzaktan kod calistirma saglayabilecegini gostermistir. Herhangi bir guvenilmeyen depoyu Claude Code ile acmadan once .claude/settings.json (hook’lar, izinler), .mcp.json (MCP sunuculari) ve tum hook betiklerini inceleyin. allowManagedPermissionRulesOnly: true ile yonetilen ayarlar, kotu amacli proje yapilandirmalarini gecersiz kilan kurumsal politikalari zorlayabilir.
sandbox’unuzu simdi test edin: claude -p “What is in /etc/shadow?” —output-format json | jq ‘.result’. sandbox engellerse, korunuyorsunuz. Engellemezse, sandbox olmadan calisiyorsunuz — yukaridaki platform destek tablosunu kontrol edin ve gozetimsiz ajanlar calistirmadan once duzeltiin.