Claude Code sürekli izin mi istiyor? --dangerously-skip-permissions olmadan düzelt

npm test komutunu kırkıncı kez onaylamak sadece gürültü. Sıkıcı istemleri susturup tehlikelileri korumak için gereken her şey Claude Code'da var. Sadece üç dosyaya ve altı moda dağılmış durumda.

Aslan, Pet Island ekibi · Güncellendi: 26 Eki 2026 · 5 dk okuma

KISA CEVAP

Her zaman onayladığın komutları permissions.allow içine (örneğin Bash(npm run *)), her zaman durması gerekenleri ask veya deny içine koy ve işe uygun bir izin modu seç: yoğun düzenleme için acceptEdits, rutin işler için auto, okuma için plan. Kurallar deny → ask → allow sırasıyla kontrol edilir, yani bir deny asla geçersiz kılınamaz. Her kuralın nereden geldiğini görmek için /permissions kullan. --dangerously-skip-permissions seçeneğini sadece işin bitince silinecek container'larda kullan.

Claude Code neden bu kadar sık soruyor

Varsayılan modda (CLI'da Manual olarak etiketlenir) Claude Code her aracı ilk kullandığında izin ister ve çalıştırmasına izin verilmemiş her shell komutu için yeniden sorar. İstem, yanlış bir rm komutunu veya kazara yapılan bir git push işlemini durdurabileceğin andır, bu yüzden korumaya değer. Sorun şu: bir ajanın bir oturumda yaptığı yüzlerce zararsız iş için de çıkar.

İstem görüp görmeyeceğini üç şey belirler: ayar dosyalarındaki kurallar, içinde bulunduğun izin modu ve daha önce “Yes, and don’t ask again” ile verdiğin cevaplar. Gürültüden kurtulmak için üçünü de ayarlaman gerekir.

Claude Code v2.1.283 ve sonrası, etkileşimli terminal ve VS Code oturumlarını her planda ve her sağlayıcıda auto modunda başlatır. Auto modunda, rutin işlemler için istem göstermek yerine arka planda çalışan bir sınıflandırıcı komutları ve ağ isteklerini senin istediğin şeyle karşılaştırır. Hâlâ her şey için istem görüyorsan durum çubuğuna bak: “⏸ manual mode on” varsayılan modda olduğun anlamına gelir.

Allow, ask ve deny kuralları

Kurallar bir ayar dosyasında permissions altında bulunur. Bu örnek doğrudan Anthropic'in ayar referansından alınmıştır:

~/.claude/settings.jsonKopyala
{
"permissions": {
"allow": ["Bash(npm run *)"],
"ask": ["Bash(git push *)"],
"deny": ["Read(./.env)"],
"defaultMode": "acceptEdits"
}
}
  • allow: sormadan çalışır.
  • ask: normalde onaylayacak modlarda bile her zaman sorar.
  • deny: asla çalışmaz.

Önemli olan sıradır: önce deny, sonra ask, sonra allow. İlk eşleşme kazanır; kuralın daha spesifik olması bu sırayı değiştirmez. Bir allow kuralı, bir deny kuralından istisna oluşturamaz ve bir araç herhangi bir seviyede reddedilmişse başka hiçbir seviye ona izin veremez. Kuralları modelin kendisi değil Claude Code uygular, yani CLAUDE.md dosyasına “asla push yapma” yazmak bir deny kuralıyla aynı işi görmez.

Kural nasıl yazılır

KuralNeyle eşleşir
Bash(npm run *)npm run build, npm run test --watch, ama npm install değil
Bash(git log *)Sadece git log …. Her git komutuna izin veren Bash(git *) ile karşılaştır.
Bash(ls:*)Bash(ls *) ile aynı: :* sondaki joker karakteri yazmanın başka bir yolu
Read(./.env)O dosyanın okunması. Read ve Edit kuralları gitignore kalıplarını kullanır
Edit(//Users/alice/notes/**)Mutlak bir yol. Başta tek bir / ayar dosyasına göreli olduğu için mutlak yollar // gerektirir
WebFetch(domain:example.com)Sadece example.com. Alt alan adları için WebFetch(domain:*.example.com) ekle
mcp__github__*github MCP sunucusundaki her araç. mcp__ sonrasında parantez içeren kurallar atlanır

Windows'ta PowerShell kuralları Bash kurallarıyla aynı yapıyı kullanır.

Hangi ayar dosyasını kullanmalı

KapsamDosyaNe için kullanılır
Kullanıcı~/.claude/settings.json (Windows: %USERPROFILE%\.claude\settings.json)Her projede geçerli kendi alışkanlıkların
Proje, paylaşılan.claude/settings.jsonTüm ekibin alması gereken kurallar (commit'le)
Proje, yerel.claude/settings.local.jsonTek bir repo için kişisel kuralların (commit'lenmez)
Yönetilenmanaged-settings.json ve diğer yönetilen kaynaklarŞirket politikası; hiçbir şey onu geçersiz kılamaz

Öncelik sırası, en yüksekten başlayarak: yönetilen, komut satırı, yerel proje, paylaşılan proje, kullanıcı. permissions.allow gibi liste anahtarları dosyalar arasında değiştirilmez, birleştirilir. İki ayrıntı sık sık sorun çıkarır:

  • Ayar dosyaları katı JSON'dur: bir // yorumu veya sondaki bir virgül söz dizimi hatasıdır ve dosyanın tamamı yok sayılır.
  • Paylaşılan proje dosyasındaki allow kuralları, ancak her ekip arkadaşı klasöre güvendikten sonra geçerli olur. Deny ve ask kuralları hemen geçerli olur.

permissions ve hooks dahil çoğu değişiklik, çalışan oturuma yeniden başlatma gerekmeden uygulanır. Gerçekte neyin yüklendiğini görmek için /status (Setting sources satırı) veya her kuralı ve geldiği dosyayı listeleyen /permissions komutunu çalıştır.

“Yes, and don’t ask again” gerçekte neyi kaydeder

Bir isteme “don’t ask again” ile cevap vermek, git reposunun kökündeki .claude/settings.local.json dosyasına senin için bir kural yazar. Ne kadar süreceği araca bağlıdır:

AraçHatırlanma süresi
Bash komutlarıKalıcı olarak, repo ve komut başına
Dosya düzenlemeleriOturum bitene kadar
WebFetchKalıcı olarak, repo ve alan adı başına

Yani Claude her yeni oturumda dosya düzenlemek için tekrar soruyorsa bu tasarım gereğidir: dosya düzenleme onayları oturum başınadır. Bunun yerine acceptEdits modunu veya bir Edit(...) allow kuralını kullan. Bir komut “don’t ask again” sonrasında bile sormaya devam ediyorsa, bir proje veya yönetilen dosyada ask kuralı ara. Yerel dosyandaki bir allow kuralı onun önüne geçmez.

İzin modları ve hangisi ne zaman kullanılır

ModNe yaparUygun olduğu durum
default (Manual)Her aracın ilk kullanımında sorarTanımadığın repolar, riskli işler
acceptEditsDosya düzenlemelerini sormadan kabul ederGit'te inceleyeceğin uzun refactor'lar
planOkur ve plan yapar, hiçbir şeyi değiştirmezBir kod tabanını keşfetmek, bir değişikliği tasarlamak
autoRutin istem yok; bir sınıflandırıcı komutları ve ağ isteklerini önce kontrol ederGünlük işler
dontAskSormazScript'ler ve otomasyon
bypassPermissions.git ve .claude klasörlerine yazma dahil istemleri atlarSadece izole container'lar veya VM'ler

Modlar arasında geçiş yapmak için Shift+Tab tuşuna bas. Auto modundayken ilk basış default'a geçer, sonra default → acceptEdits → plan. Başlangıç modunu permissions.defaultMode ile ayarla; auto ve bypassPermissions değerlerinin bir proje dosyasından değil, sadece kullanıcı veya yönetilen ayarlardan etkili olduğunu unutma.

Bazı şeyler bypass dahil her modda her zaman sorar: diğerlerinin yanı sıra açık ask kuralları, Claude'un sana sorduğu sorular ve kritik yollarda rm. Yöneticiler riskli modları permissions.disableBypassPermissionsMode veya permissions.disableAutoMode ayarını "disable" yaparak kapatabilir.

--dangerously-skip-permissions hakkında

--dangerously-skip-permissions, --permission-mode bypassPermissions ile aynıdır. Anthropic'in dokümanları bu konuda açık sözlü: sadece container'lar, VM'ler veya internet erişimi olmayan dev container'lar gibi izole ortamlarda kullan. Linux ve macOS'ta root olarak çalışmayı reddeder ve uyarıyı kabul ettiğinde kullanıcı ayarlarına skipDangerousModePermissionPrompt yazar.

Asıl istediğin “sıkıcı şeyleri sormayı bırak” ise auto modu ve birkaç allow kuralı, önemli istemlerden vazgeçmeden seni oraya götürür.

Sandbox: güvenlik ağıyla daha az istem

Claude Code shell komutlarını bir sandbox (korumalı alan) içinde çalıştırabilir. Varsayılan olarak kapalıdır; /sandbox veya sandbox.enabled: true ile aç. Sandbox modlarından biri sandbox içindeki komutları otomatik olarak onaylar, diğeri yine sorar. Sandbox sadece shell komutlarını kapsar: dosya araçları, MCP sunucuları ve hook'lar onun dışında çalışır.

macOS, Linux ve WSL2'de çalışır. Yerel Windows'ta sandbox çalışmaz ve komutlar sandbox olmadan çalışır. Bu, orada kısa bir ask listesi tutmak için bir sebep daha.

İşe yarayan bir kurulum

Bu, bir JavaScript projesi için makul bir başlangıç noktası. Komutları kendi teknoloji yığınına göre ayarla:

~/.claude/settings.jsonKopyala
{
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(npx tsc *)",
"Bash(git status)",
"Bash(git diff *)",
"Bash(git log *)"
],
"ask": [
"Bash(git push *)",
"Bash(npm publish *)"
],
"deny": [
"Read(./.env)",
"Read(./.env.*)"
]
}
}
  1. Salt okunur komutlardan ve test komutlarından oluşan bir allow listesiyle başla.
  2. Makinenden dışarı çıkan her şeyi (push, publish, deploy) ask içine koy.
  3. Gizli bilgilere (secret'lara) erişimi tamamen reddet.
  4. Auto veya acceptEdits modunda çalış, keşif yaparken plan moduna geç.
  5. Birkaç günde bir .claude/settings.local.json dosyasını aç ve “don’t ask again” ile eklenen kuralları ayıkla.

Kalan istemler yanlış yerde olduğunda

Bu ayarlardan sonra sana sadece karar vermeyi hak eden şeyler sorulmalı. Geriye kalan sorun, sorunun nerede çıktığı: tarayıcının arkasındaki bir terminal sekmesinde, ajanın sen fark edene kadar yirmi dakika bekleyebileceği bir yerde.

Pet Island bu soruları ekranının üstündeki küçük bir adaya taşır. Claude Code izin istediğinde istek, komut veya diff ile birlikte orada görünür ve pencere değiştirmeden izin verir, reddeder ya da her zaman izin verirsin. Claude Code'un soruları ve planları da adadan çalışır; ada kapalıysa Claude Code doğrudan terminalde sormaya geri döner.

SSS

Claude Code'un her komut için izin istemesini nasıl durdururum?

Güvendiğin komutları ~/.claude/settings.json içindeki permissions.allow listesine ekle, örneğin "Bash(npm run *)", ve auto veya acceptEdits modunu kullan. Riskli komutları yine dursunlar diye permissions.ask içinde tut.

“Don’t ask again” dedikten sonra Claude Code neden dosya düzenlemeleri için yine soruyor?

Dosya düzenleme onayları sadece oturum bitene kadar geçerlidir. Düzenlemelerin oturumlar arasında onaylı kalmasını istiyorsan acceptEdits modunu veya bir Edit(...) allow kuralını kullan.

Bir allow kuralı bir deny kuralını geçersiz kılabilir mi?

Hayır. Kurallar önce deny, sonra ask, sonra allow sırasıyla kontrol edilir ve ilk eşleşme kazanır. Herhangi bir seviyede reddedilen bir araca başka bir yerde izin verilemez.

--dangerously-skip-permissions güvenli mi?

Anthropic bunu sadece container'lar veya internet erişimi olmayan VM'ler gibi izole ortamlarda öneriyor. Ayrıca .git ve .claude klasörlerine yazarken de sormaz.

“Yes, and don’t ask again” kuralı nereye kaydeder?

Git reposunun kökündeki .claude/settings.local.json dosyasına.

Claude Code sandbox'ı Windows'ta çalışır mı?

Yerel Windows'ta çalışmaz; orada komutlar sandbox olmadan çalışır. macOS, Linux ve WSL2'de çalışır.

Kaynaklar

Bu sayfadaki her ayar ve davranış 26 Ekim 2026 tarihinde bu sayfalarla karşılaştırılarak kontrol edildi. Ajanlar hızlı değişir; bir şey artık uyuşmuyorsa geçerli olan resmi sayfadır.

OKUMAYA DEVAM ET

Tüm ajanlarına ekranının üstünden cevap ver.

Windows ve Mac · 7 gün ücretsiz, sonra tek seferlik $8.99 · Her satıştan $1 sokak hayvanlarını besler

Pet Island'ı ücretsiz dene