Write ve Edit araclirini --disallowedTools ile engelleyin. Claude yine de bir dosya yazar — Bash uzerinden echo 'data' > file.txt ile. Belirli araclari engellemek, yetenekleri engellemekle ayni sey degildir. Claude alternatif yollar bulacaktir.
Cozum: her zaman kara liste yerine beyaz liste kullanin. Tum alternatif yollari asla dusunmezsiniz.
Claude Code, dosya I/O, kabuk erisimi, web istekleri, MCP (Model Context Protocol — Claude’u harici araclar ve veri kaynaklarina baglamak icin bir standart) entegrasyonlari ve oturum yonetimini kapsayan yaklasik 60 yerlesik aracla birlikte gelir. --tools, --allowedTools ve --disallowedTools bayraklari, bu arac setini kisitlamaniza, genisletmenize veya tamamen kaldirmaniza olanak tanir — Claude’u salt okunur bir analizciden sifir arac erisimli saf bir metin ureticisine donusturur.
Varsayilan Arac Seti
Her oturum tam bir arac seti ile baslar. Alti kategoriye ayrilirlar:
Yerlesik Arac Kategorileri
| Kategori | Araclar | Amac |
|---|---|---|
| Dosya I/O | Bash, Read, Write, Edit, Glob, Grep, NotebookEdit | Kabuk komutlari, dosya okuma/yazma, kalip arama |
| Web | WebFetch, WebSearch | URL iceriklerini getirme ve web’de arama yapma |
| Oturum | EnterPlanMode, ExitPlanMode, EnterWorktree, ExitWorktree, AskUserQuestion, Skill | Plan modu, git worktree’ler, kullanici etkilesimi, slash komutlari |
| Gorev | Task, TaskOutput, TaskStop, TodoWrite | Alt ajan gorevleri baslatma, ciktilari okuma, yapilacaklar listesi yonetme |
| Zamanlama | CronCreate, CronDelete, CronList | Zamanlanmis gorevleri olusturma, silme ve listeleme |
| Meta / MCP | ToolSearch, LSP, ListMcpResourcesTool, ReadMcpResourceTool, mcp__* | Ertelenmis arac yukleme, dil sunucusu, MCP sunucu entegrasyonlari |
MCP araclari mcp__sunucuadi__aracadi adlandirma kuralini takip eder. Ornegin, bir Chrome DevTools sunucusu mcp__chrome-devtools__click, mcp__chrome-devtools__navigate_page ve mcp__chrome-devtools__take_screenshot gibi araclari ortaya cikarir. Bir Notion sunucusu mcp__claude_ai_Notion__notion-search ve benzerlerini ortaya cikarir.
Write’i engellemek mcp__postgres__write’i engellemez. MCP arac isimleri sunucu adiyla oneklenmistir, bu nedenle yerlesik araclardan tamamen ayridir. Derinlemesine savunma, hem yerlesik HEM DE MCP araclarini engellemeyi gerektirir. Ornek: —disallowedTools “Write,mcp__postgres__write”.
Kisitlama Yontemleri
Uc bayrak Claude’un hangi araclari kullanabilecegini kontrol eder. Farkli amaclara hizmet ederler ve birleistirilebilirler, ancak engellemenin her zaman kazandigi siki bir izin hiyerarsisi uzerinden etkilesirler.
Arac Kisitlama Bayraklari
| Bayrak | Etki | Kullanim Alani |
|---|---|---|
—tools "" | TUM araclari devre disi birak — saf metin uretimi | Ozetleme, siniflandirma, ceviri |
—tools “Arac1,Arac2” | Tum arac setini yalnizca bu araclarla degistir | Kesin yetenek setine sahip ozel ajan |
—allowedTools “Arac1,Arac2” | Yalnizca bu araclara izin ver (varsayilanlarla kesisim) | Salt okunur mod, yalnizca git modu |
—disallowedTools “Arac1,Arac2” | Bu belirli araclari engelle (engelleme filtresi) | Izole mod (web araclarini engelle), yazmasiz mod |
Izin hiyerarsisi siktidir ve yukaridan asagiya dogru calisir:
Yonetilen engelleme (org yoneticisi) gecersiz kilar--disallowedTools (CLI bayragi) gecersiz kilar--allowedTools (CLI bayragi) gecersiz kilarVarsayilan arac setiBu su anlama gelir: bir org yoneticisi bir araci managed-mcp.json uzerinden engellerse, hicbir sey onu yeniden etkinlestiremez. --disallowedTools her zaman --allowedTools’u yener. Ve --allowedTools varsayilan seti kesisimle kisitlar, birlesimle degil — zaten var olmayan araclari eklemek icin kullanamazsiniz.
Kalip Sozdizimi
En guclu kisitlama ozelligi Bash kalip eslestirmesidir. Bash’e tamamen izin vermek veya engellemek yerine, glob kaliplari kullanarak belirli komutlara kapsam belirleyebilirsiniz:
# Yalnizca git komutlarina izin ver--allowedTools "Bash(git:*)"
# git ve npm komutlarina izin ver--allowedTools "Bash(git:*),Bash(npm:*)"
# Yalnizca salt okunur git komutlarina izin ver--allowedTools "Bash(git status:*),Bash(git log:*),Bash(git diff:*)"Bash(git:*) icindeki iki nokta ust uste, komut oneki ile glob kalibi arasindaki ayiricidir. Bash(git:*), git ile baslayan herhangi bir komutla eslesir (git status, git log —oneline gibi). Bu, claude —help ciktisindaki belgelenmis soz dizimidir.
Kalip Eslestirme Davranisi
| Kalip | Eslesir | Eslesmez |
|---|---|---|
Bash(git:*) | git status, git log —oneline, git push | cat, rm gibi git olmayan komutlar |
Bash(ls:*) | ls -la, ls /tmp | cat, rm |
Bash(npm:*) | npm test, npm install | npx, node |
Sifir Arac Modu
--tools "" gecirmek tum araclari devre disi birakir. Claude dosya erisimi, kabuk ve web aramasi olmadan saf bilgiden yanit verir. Bu, arac cagrilarinin deger katmadan maliyet ektigi ozetleme, ceviri, siniflandirma ve herhangi bir gorev icin dogru moddur.
claude -p "2+2 kac eder?" --output-format json --tools ""num_turns: 1 sifir arac cagrisi yapildigini dogrular. permission_denials dizisi bostur cunku Claude herhangi bir arac kullanmaya calismadi — onlar basitce mevcut degildi. Ilk cagrida yuksek cache_creation_input_tokens degerine dikkat edin; ayni oturumdaki sonraki --tools "" cagrilari cache isabetierten yararlanir ve onemli olcude daha az maliyetlidir.
Salt Okunur Mod
Yalnizca yikici olmayan araclari beyaz listeye almak icin --allowedTools kullanin:
claude -p "Mevcut dizindeki dosyalari listele" \ --output-format json --allowedTools "Read,Glob"Claude dizin iceriklerini listelemek icin Glob kullandi ve sonucu dondurdu. Bash, Write, Edit — hepsi kullanilamaz durumdaydi. permission_denials dizisi bostur cunku Claude kisitlamaya uyum sagladi ve yalnizca verilen araclari kullandi.
Geri cekilme davranisini okumadan once, bir “salt okunur” ajani kendiniz kirmayi deneyin:
claude -p “Hello’yu /tmp/trythis.txt’ye yaz” —disallowedTools “Write,Edit” —output-format json | jq ‘.permission_denials[].tool_name’
Claude hangi araca geri cekildi? Simdi engellenen listeye Bash’i de ekleyin. Baska bir yol buluyor mu?
Arac Geri Cekilme Davranisi
Bireysel araclari engellemek her zaman yeterli degildir. Claude beceriklidir ve bir gorevi yerine getirmek icin alternatif yollar deneyecektir. Write ve Edit engellendiginde ama Bash mevcut oldugunda ne oldugu asagidadir:
claude -p "Hello'yu /tmp/test_disallow.txt'ye yaz" \ --output-format json --disallowedTools "Write,Edit"Siralama soyleydi: Claude Write kullanamiyor (engellenmis), Edit kullanamiyor (engellenmis), echo -n "hello" > /tmp/test_disallow.txt ile Bash’e geri cekildi ve bu da dosya sistemi sandbox’i tarafindan engellendi cunku yol calisma dizininin disindaydi.
Yalnizca Write’i engellemek dosya yazmalarini ENGELLEMEZ. Claude etrafinda yol bulacaktir — Bash ile echo > file, her seferinde. Gercekten salt okunur bir ajan icin, yalnizca istediginiz seyleri beyaz listeye alan —allowedTools “Read,Glob,Grep” kullanin. Her yazma yolunu kara listeye almaya calismaktan vazgecin — her zaman birini kacirirsiniz.
ToolSearch: Ertelenmis Yukleme
MCP sunuculari cok sayida arac sagladiginda, her arac semasini baglam penceresine yuklemek pahali hale gelir. 80 araci olan bir MCP sunucusu yalnizca sema aciklamalari icin 40K token tuketebilir. ToolSearch bunu, bir arac gercekten ihtiyac duyulana kadar sema yuklemesini erteleyerek cozer.
MCP arac aciklamalari baglam penceresinin %10’undan fazlasini tuketeceginde otomatik olarak etkinlesir. Etkin oldugunda:
- Araclar init olayinda yalnizca isimleriyle listelenir (sema yuklenmez)
- Claude belirli bir araca ihtiyac duydugunu belirlediginde, tam semayi getirmek icin
ToolSearchcagririr - Baglam kullanimi arac listesi icin yaklasik 40K token’dan yaklasik 2K token’a duser
ToolSearch’u yapilandirmaniz gerekmez. Tamamen otomatiktir. Bunu stream-json ciktisinda gozlemleyebilirsiniz — tum MCP araclari init olayinin tools dizisinde gorunur, ancak semalari ToolSearch talep uzerine getirene kadar mevcut degildir.
Claude arac kesfini ihtiyac duyulana kadar geciktirir — yapay zeka icin tembel yukleme. Verimlidir, ancak izin listenizin baslangicta “arac bulunamadi” hatalari tetiklemedigini ifade eder.
Yaygin Tarifler
Otomasyon icin en kullanisli arac kisitlama kaliplari:
# Saf metin uretimi -- hicbir arac yokclaude -p "Bu metni ozetle: ..." --tools ""
# Salt okunur analizci -- inceleyebilir ama asla degistiremezclaude -p "Bu kod tabanini incele" --allowedTools "Read,Glob,Grep"
# Yalnizca git modu -- dosya oku ve git komutlari calistirclaude -p "Son degisiklikleri ozetle" \ --allowedTools "Bash(git:*),Read,Glob,Grep"
# Izole mod -- internet erisimi yokclaude -p "Bu kodu analiz et" \ --disallowedTools "WebFetch,WebSearch"
# Tum MCP sunucusunu engelleclaude -p "Gorevi yap" \ --disallowedTools "mcp__chrome-devtools__*"Arac isimleri buyuk/kucuk harf duyarli ve tam eslesmeli. —allowedTools “bash”, Bash ile esleşmez. —allowedTools “read”, Read ile eslesmez. Her zaman arac listesinde gosterilen tam buyuk/kucuk harf kullanimini kullanin.
MCP araclari mcp__sunucuadi__aracadi kuralini takip eder. Tek bir araci engellemek icin: —disallowedTools “mcp__chrome-devtools__click”. Tum bir sunucuyu engellemek icin joker karakter kullanin: —disallowedTools “mcp__chrome-devtools__*”.
Bir uretim MR inceleyicisinin salt okunur inceleme ajanlari olusturmak icin —disallowedTools “Edit,NotebookEdit” kullanimini gorun: MR Inceleyici Olusturun, Bolum 1: Baslat ve Incele.
Bayrak Etkilesimi: --tools + --allowedTools + --disallowedTools
Birden fazla arac kisitlama bayragi birlestirildiginde, beklediginiz gibi calismayan uc katmanli bir hiyerarsi uzerinden etkilesirler.
Bayrak Kombinasyonu Davranisi
| Bayraklar | Kullanilabilir Araclar | Kural |
|---|---|---|
—tools “Bash” —allowedTools “Read” | Bash + Read | BIRLESIM — her iki bayrak da arac katki saglar |
—tools “Bash” —disallowedTools “Bash” | (hicbiri) | ENGELLEME KAZANIR — disallowed herhangi bir kaynaktan kaldirir |
—tools "" —allowedTools “Read” | (hicbiri) | BOS MUTLAKTIR — gecersiz kilinamaz |
—tools “Bash,Read” | Bash + Read | Temel — acik arac seti |
Hiyerarsi soyledir: engelle > bos > birlesim
--disallowedToolsaraclari HERHANGI bir kaynaktan kaldirir — varsayilan set,--toolsveya--allowedToolseklemeleri--tools ""(bos dize) hicbir seyin gecersiz kilamayacagi mutlak bir devre disi birakmadur--toolsve--allowedToolsher ikisi de mevcutken bir birlesim olusturur
# Guvenlik raylari olan ozel arac seticlaude -p "..." \ --tools "Bash,Read,Grep" \ --allowedTools "Edit" \ --disallowedTools "Bash(rm:*)"# Kullanilabilir: Bash (rm haric), Read, Grep, EditTEHLIKE: Cogu gelistirici —allowedTools’un —tools’u kisitlamasini (kesisim) bekler. Kisitlamaz. BIRLESIRLER. Beyaz listeleme icin —allowedTools’u tek basina kullanin. —tools ve —allowedTools arasindaki etkilesim kesisim degil, BIRLESIMDIR. Bu, —allowedTools’un kisitlamasi gerektigini soyleyen sezgiye aykiridir. Varsayilan arac setine karsi tek basina kullanildiginda, —allowedTools kesisimle kisitlar. Ancak —tools ile birlestirildiginde, her iki bayrak da kullanilabilir sete arac katki saglar. Yalnizca —disallowedTools kaldirir.
Gercekten salt okunur bir ajan olusturun: claude -p “Bu repoyu analiz et” —allowedTools “Read,Grep,Glob” —disallowedTools “Write,Edit,Bash” —output-format json. Bir dosyayi degistirmesini isteyin — reddedecektir. Bu, kod inceleme otomasyonu icin istediginiz kaliptir.