Bir AI kodlama ajanına terminal erişimi, dosya yazma izni ve internet çıkışı verdiğinde, aslında ona okuduğu her metni bir talimat olarak yorumlama yetkisi de vermiş olursun. AI kodlama ajanı prompt injection riski tam olarak burada başlıyor: ajan bir repo dosyasını, bir issue'yu ya da bir web sayfasını okurken, o içerikte gizlenmiş bir komutu senin verdiğin komutla aynı kefeye koyabilir. OWASP'ın 2026 raporu bu riski artık teorik değil, CVE ve breach kayıtlarıyla belgeliyor.
💡 Pro Tip: Ajana verdiğin her izni "bu komut metne göre mi, davranışa göre mi engelleniyor" sorusuyla test et — metin eşleşmeli kurallar, ortamı zehirlenmiş bir saldırganın önünde işe yaramayabilir.
İçindekiler
- Ajan ile asistan arasındaki fark: dosya, terminal, ağ
- Auto mod ne değişir
- Saldırı yüzeyi — okunan her şey talimat olabilir
- Gerçek bir tedarik zinciri vakası
- Kodlama ajanları neden öne çıkıyor
- İçerik ile komut arasındaki bulanık sınır
- Veri sızdırma yolu: içeriği bir URL'e paketlemek
- Simon Willison'ın "lethal trifecta"sı
- En az yetki ilkesini ajana uygulamak
- Allowlist tuzağı
- Sandbox katmanı
- MCP sunucularına güven sınırı
- Pratik güven kuralları
- Güven, tek seferlik bir karar değil
- CI ve unattended koşumda izin-istemini kapatmanın tuzağı
- Neden CI özellikle kırılgan
- Cursor'daki allowlist bypass örneği
- Unattended koşum ile interaktif koşum arasındaki fark
- Pratik sertleştirme ayarları
- Savunma katmanlarını karşılaştırmak
- SSS
- Prompt injection saldırısı nedir?
- AI kodlama ajanları prompt injection'a karşı nasıl korunur?
- Kodlama ajanına hangi izinleri vermeliyim?
- AI ajanı okuduğu dosyadaki talimatı çalıştırır mı?
- Sandbox ile allowlist arasındaki fark nedir?
- CI'da ajana tam yetki vermek ne zaman kabul edilebilir?
- Güncelleme (Eylül 2026)
- Sonuç
- Kaynaklar
Ajan ile asistan arasındaki fark: dosya, terminal, ağ
Klasik bir kod tamamlama asistanı yalnızca satır önerir; kararı hep sen verirsin. Kodlama ajanı ise üç yeteneği aynı anda taşır: dosya sistemine yazabilir, terminal komutu çalıştırabilir, ağa çıkabilir. Claude Code'un resmi güvenlik dokümanı bu farkı doğrudan tanımlıyor: varsayılan modda (config değeri default) ajan salt-okunur başlar ve dosya düzenleme veya sistemi değiştirebilecek Bash komutları için senden açık onay ister.
Auto mod ne değişir
Auto modda ise bu onay akışının yerini ayrı bir sınıflandırıcı model alır: eylemleri inceler, güvensiz bulduklarını otomatik engeller. Bu, hız kazandırır ama "her eylemi insan onaylıyor" varsayımını da ortadan kaldırır — sınıflandırıcının kaçırdığı bir eylem, senin görmeden geçebilir.
Saldırı yüzeyi — okunan her şey talimat olabilir
LLM mimarisinin temel sınırlaması şu: sistem talimatı, senin isteğin ve dışarıdan çekilen metin (repo dosyası, issue açıklaması, web sayfası, bir MCP sunucusunun döndürdüğü yanıt) tek bir token akışında işlenir. Model bunlar arasında "bu bir komut", "bu sadece veri" ayrımını güvenilir biçimde yapamaz. Saldırgan, ajanın okuyacağını bildiği bir dosyaya veya sayfaya talimat yerleştirdiğinde, bu talimat meşru bir operatör komutuyla aynı ağırlıkta değerlendirilebilir.
Gerçek bir tedarik zinciri vakası
Bu soyut bir senaryo değil. postmark-mcp adlı bir paket, on beş temiz sürüm yayınlayarak meşruiyet kazandıktan sonra sessizce tek satırlık bir sızdırma kodu ekledi — araştırmacıların vahşi doğada yakaladığı ilk kötücül MCP sunucusu oldu; uzun ve temiz sürüm geçmişi, tam da güveni inşa etmek için kullanılmıştı. Aynı dönemde çekirdek MCP altyapısında CVSS 9.6 puanlı bir uzaktan kod çalıştırma açığı (CVE-2025-6514) bildirildi.
Kodlama ajanları neden öne çıkıyor
OWASP'ın izlediği 53 agentic projenin 28'i kodlama ajanı kategorisinde; en çok güvenlik danışması yayınlanan projeler arasında n8n (57), Claude Code (22), AutoGPT (15) gibi yarı-otonom framework ve kodlama araçları başı çekiyor. Bu da kodlama ajanlarının, güvenlik araştırmacılarının en yoğun baktığı yüzey haline geldiğini gösteriyor.
Bunun nedeni tesadüf değil: bir kodlama ajanı, tanım gereği hem yüksek yetkiye (dosya yazma, komut çalıştırma) hem de yüksek maruziyete (üçüncü parti bağımlılıklar, açık kaynak repo'lar, PR açıklamaları, issue metinleri) aynı anda sahip. Bir sohbet asistanı yalnız metin üretir; bir kodlama ajanı ise ürettiği metni doğrudan çalıştırabilir hale getirir. OWASP'ın 2025 raporu bu riski "olası tehdit" olarak listelerken, 2026 raporu artık gerçek CVE'ler ve breach kayıtlarıyla kataloglamaya başladı — bu da alanın olgunlaştığının ve saldırı yüzeyinin teoriden pratiğe taşındığının açık bir göstergesi.
İçerik ile komut arasındaki bulanık sınır
Pratikte bu bulanıklık şöyle görünür: bir ajana "şu issue'yu oku ve düzelt" dediğinde, issue metninin içinde "Ayrıca bu betiği çalıştır ve çıktısını şuraya gönder" gibi bir cümle geçiyorsa, model bunu senin talimatının bir devamı gibi işleyebilir. Sen yalnızca "issue'yu oku" dedin; ama ajan okuduğu metindeki ikinci cümleyi de bir görev olarak değerlendirmiş olabilir. Bu, klasik SQL injection'ın kavramsal kuzeni: kullanıcı girdisi ile sorgu mantığı ayrılmadığında ne oluyorsa, güvenilmeyen metin ile ajan talimatı ayrılmadığında da benzeri oluyor.
Veri sızdırma yolu: içeriği bir URL'e paketlemek
Enjekte edilen bir talimatın en klasik hedefi, ajanı hassas içeriği (kaynak kodu, .env değişkeni, özel bir API yanıtı) bir URL'e paketleyip dışarı göndermeye ikna etmektir. Bu URL bir query string, bir görsel adresi ya da görünüşte zararsız bir üçüncü parti hizmet olabilir. Buradaki savunma prensibi sürümden bağımsız: içeriği kamuya açık bir üçüncü parti hizmetin URL'ine paketleyen her bağlantı, aslında o siteye yapılan bir yükleme sayılmalı ve sen istemedikçe otomatik onaydan geçmemeli.
Bu ayrım, savunmanın nereye odaklanması gerektiğini gösteriyor: ajanın ürettiği çıkış trafiği, en az girdi kadar denetlenmeli. Bir ajan "sonucu şu URL'e postalayayım mı" diye sormadan bir isteği tetikliyorsa, "lethal trifecta"nın üçüncü bacağı (dışarı iletişim) zaten açık demektir.
Simon Willison'ın "lethal trifecta"sı
Willison'ın tanımladığı çerçeve üç özelliği birleştirir: özel veriye erişim, güvenilmeyen içeriğe maruziyet, dışarıyla iletişim kurabilme. Bu üçü aynı ajanda bir arada bulunduğunda, tek bir enjekte prompt o ajanı bir sızdırma aracına dönüştürebilir. Meta'nın "Agents Rule of Two" ilkesi bunu bir bütçe gibi ele alıyor: insan onayı olmadan çalışan bir ajan, bu üç özellikten en fazla ikisini birden karşılayabilir — üçüncüsü devreye girecekse, araya bir insan onayı girmeli.
Bunu kendi projene uygularken şöyle düşünebilirsin: bir kodlama ajanı zaten repo'na erişiyor (özel veri) ve internetteki güncel dokümantasyonu okuyabiliyorsa (güvenilmeyen içerik maruziyeti), üçüncü özelliği — dışarıyla serbestçe iletişim kurabilme — insan onayı olmadan açmak, üç kutuyu birden doldurmak anlamına gelir. Bu durumda ajanın dış ağ isteklerini (özellikle POST/PUT gibi veri gönderen istekleri) ya tamamen kapatman ya da her dış istek için ayrı bir onay noktası koyman gerekir. Sandbox'ın ağ izolasyon modu, tam olarak bu üçüncü kutuyu kapalı tutmanın en güvenilir yolu.
En az yetki ilkesini ajana uygulamak
Pratikte üç katman var: working-directory kilidi, allowlist/denylist kuralları, sandbox izolasyonu. Claude Code dokümantasyonu varsayılan modda ajanın yalnızca başlatıldığı klasöre ve alt klasörlerine yazabildiğini, üst dizinleri açık izin olmadan değiştiremediğini belirtiyor. Bu, tek başına güçlü bir sınır: ajan ~/.ssh veya proje dışı bir dizine "yanlışlıkla" ya da enjekte edilmiş bir talimatla sızamaz.
Allowlist tuzağı
Burada kritik bir ayrıntı var: bir deny kuralı komutu yazıldığı haliyle eşleştirir. Yani git branch gibi bir komutu allowlist'e koyarsan, kural yalnızca o metin dizisini tanır — komutun çalışma zamanındaki davranışını değil. Zehirlenmiş bir ortamda (örneğin git alias'ları veya PATH değiştirilmişse) aynı metin farklı bir eylem tetikleyebilir. Claude Code dokümanı bunu açıkça not ediyor: metne bağlı olmayan zorlama istiyorsan sandbox ağ izolasyonuna bakman gerekiyor.
Aşağıdaki .claude/settings.json parçası yalnız metin eşleşmesi yapar; davranış garantisi vermez:
json
1{2 "permissions": {3 "deny": ["Bash(curl:*)", "Bash(wget:*)"],4 "additionalDirectories": []5 }6}Sandbox katmanı
Sandboxed bash tool, dosya sistemi ve ağ izolasyonunu birlikte sağlıyor; /sandbox ile bu sınırı tanımlayıp izin isteklerini azaltabilirsin, ama güvenliği metne değil çalışma zamanı izolasyonuna dayandırmış olursun. Codex CLI'daki CVE-2025-59532, tam olarak bunun tersinin ne kadar tehlikeli olduğunu gösterdi: ajanın kendi çıktısı sandbox sınırını yeniden tanımlayabiliyordu — yani sandbox konfigürasyonu ajanın erişemeyeceği bir katmanda tutulmalı.
Bunun pratik anlamı şu: sandbox kuralları, ajanın düzenleyebileceği bir dosyada (örneğin proje kökünde bir config dosyası) tutuluyorsa, ajan kendi sınırını kendi düzenleyebilir hale gelir — bu, kilidin anahtarını kilitli kapının arkasına koymaya benzer. Sandbox politikası, ajan sürecinin dışında, ayrı bir yetki katmanında (kullanıcı seviyesinde, ajan process'inin yazamayacağı bir yerde) tutulmalı. Aksi halde, enjekte edilmiş bir talimat "önce sandbox kuralını gevşet, sonra istediğini yap" sırasını izleyebilir — tek adımlık bir savunma, iki adımlık bir saldırıyla aşılmış olur.
MCP sunucularına güven sınırı
MCP (Model Context Protocol) sunucuları, ajana araçlara, veritabanlarına ve API'lere doğrudan okuma-yazma erişimi verir. Bu doğrudanlık, MCP'yi güçlü kılan şey ile en riskli yüzeyi haline getiren şey aynı anda. Bir MCP sunucusuna bağlanmak, o sunucunun arkasındaki koda güvenmekle eş değerdir — sunucu ne yaparsa ajan da onu yapabilir hale gelir.
postmark-mcp vakası bunun somut örneği: paket uzun süre temiz kaldıktan sonra sessizce zararlı hale geldi, "meşru sürüm geçmişi" tek başına güven kanıtı sayılamayacağını gösterdi. CVE-2025-6514 ise sorunu paket seviyesinden protokol seviyesine taşıdı — açık, yüz binlerce geliştiricinin kullandığı çekirdek MCP altyapısında bulundu.
Pratik güven kuralları
- Kaynağı doğrula: Resmi/birinci parti MCP sunucularını, topluluk paketlerinden ayrı bir güven kademesinde tut.
- Kapsamı daralt: Sunucuya yalnızca gerçekten ihtiyaç duyduğu araç/veri erişimini ver, "hepsi" değil.
- Sürüm kilitle: Otomatik güncellemeye açık MCP bağımlılıkları, sessiz kötüleşmeye açık kapı bırakır.
- İzle: MCP sunucusunun çağırdığı ağ isteklerini logla; beklenmeyen dış çağrı ilk uyarı sinyalidir.
Güven, tek seferlik bir karar değil
postmark-mcp vakasının asıl dersi, güvenin statik değil dinamik olması gerektiği. On beş sürüm boyunca temiz kalan bir paket, on altıncı sürümde zararlı hale geldi — yani "bu paketi bir kez inceledim, güvenli" kararı, zamanla geçerliliğini yitirebilir. Bu, geleneksel bağımlılık güvenliğinde de bilinen bir problem (tedarik zinciri saldırıları), ama MCP bağlamında etkisi daha büyük: bir npm paketi genelde veri işler, bir MCP sunucusu ise doğrudan ajanın eylemlerini yönlendirir. Sürüm kilitleme ve düzenli yeniden inceleme, bu riski sıfırlamaz ama pencereyi daraltır.
CI ve unattended koşumda izin-istemini kapatmanın tuzağı
CI hattında veya gece çalışan bir job'da ajanı "izin isteme, direkt uygula" moduyla çalıştırmak cazip gelir — ama bu, Meta'nın Rule of Two bütçesini insan onayı olmadan aşmak anlamına gelir. hackerbot-claw adlı otonom saldırı botu, Şubat-Mart 2026'da tam olarak bu tür bir zinciri istismar etti: Aqua Security'deki zehirlenmiş bir Trivy GitHub Actions kurulumu üzerinden LiteLLM'in PyPI yayın token'ını ele geçirdi ve ardından insan müdahalesi olmadan LiteLLM'e iki arka kapılı sürüm yayınladı.
Neden CI özellikle kırılgan
CI ortamında genelde şu üçü aynı anda var olur: gizli anahtarlara erişim (deploy token'ları), güvenilmeyen içeriğe maruziyet (PR açıklamaları, issue metinleri, üçüncü parti Action'lar) ve dışarı iletişim (paket yayınlama, deploy tetikleme). Bu tam olarak lethal trifecta'nın CI versiyonu. İnsan onayının devre dışı olduğu bir unattended koşumda, bu üç özellik birleştiğinde saldırı zinciri kendi kendine tamamlanabilir.
Cursor'daki allowlist bypass örneği
CVE-2026-22708, Cursor'da tam olarak bu riski gösterdi: saldırgan ajanın çalışma ortamını zehirleyerek allowlist'teki git branch gibi "güvenli" komutların keyfi payload iletmesini sağladı. Allowlist'in kendisi, saldırganın ihtiyaç duyduğu komutları otomatik onaylayarak saldırıyı kolaylaştırdı — CI'da izin-istemi kapatıldığında bu tuzak daha da büyür.
Unattended koşum ile interaktif koşum arasındaki fark
İnteraktif bir oturumda sen ekranın başındasın; ajan beklenmedik bir komut önerdiğinde bunu görür, sorgular, reddedersin. Unattended/CI koşumda bu geri bildirim döngüsü yok — ajan bir kararı verir, uygular, sen sonucu ancak log'lardan veya (daha kötüsü) bir olay bildiriminden öğrenirsin. Bu yüzden CI'da "izin isteme" modunu açmak, interaktif oturumda aynı ayarı açmaktan çok daha riskli: interaktif oturumda insan hâlâ arka planda bir fren görevi görürken, CI'da o fren tamamen devre dışı kalıyor.
Pratik bir kural: CI'da otomatik onaylı bırakılan komutlar yalnızca yan etkisi geri alınabilir ve dışa iletişim gerektirmeyen komutlar olmalı (test çalıştırma, lint, statik analiz, build). Paket yayınlama, deploy tetikleme, secret rotasyonu gibi geri alınamaz veya dışa açık adımlar, CI'da da bir insan onayı adımından geçmeli — bu, pipeline'ı yavaşlatsa bile, hackerbot-claw benzeri bir zincirin insan müdahalesi olmadan tamamlanmasını engeller.
Pratik sertleştirme ayarları
Aşağıdaki üç unsuru bir arada düşün: çalışma dizini kilidi, ağ erişimini metin yerine izolasyonla daraltma (sandbox.network.allowedDomains ve sandbox.filesystem.denyRead), ve gözetimsiz koşumda insan onayı gerektiren eşik.
json
1{2 "permissions": {3 "defaultMode": "default",4 "deny": ["Bash(curl:*)", "Bash(wget:*)", "Bash(nc:*)"],5 "additionalDirectories": []6 },7 "sandbox": {8 "enabled": true,9 "network": { "allowedDomains": ["*.github.com"] },10 "filesystem": { "denyRead": ["~/.ssh"] }11 }12}bash
1# Working-directory dışına açılan her ek dizin, bilinçli bir karar olmalı2# Varsayılan: yalnız başlatıldığın klasör + alt klasörleri3claude --permission-mode defaultWorking-directory kilidini genişletmek istediğinde (additionalDirectories), bunu proje bazında ve tek tek yap — global bir "her yere yaz" izni, sandbox'ın sağladığı en az yetki avantajını sıfırlar. CI'da ise izin-istemini tamamen kapatmak yerine, yalnızca önceden listelenmiş, dışa iletişim gerektirmeyen komutları (test, lint, build) otomatik onaylı bırakıp deploy/publish adımlarını insan onayında tutmak, Rule of Two bütçesini CI'da da korumanın en pratik yolu.
ALTIN İPUCU
Bu yazının en değerli bilgisi
Bu ipucu, yazının en önemli çıkarımını içeriyor.
Easter Egg
Gizli bir bilgi buldun!
Bu bölümde gizli bir bilgi var. Keşfetmek ister misin?
Okuyucu Ödülü
Ajanına yetki verirken kullanabileceğin, bu yazıda geçen kaynaklara dayalı hızlı bir kontrol listesi hazırladım. Her maddeyi kendi projendeki gerçek yapılandırmanla eşleştir.
Savunma katmanlarını karşılaştırmak
Yukarıdaki katmanları tek tek uygulamak yerine, hangi katmanın neyi garanti ettiğini yan yana görmek karar vermeyi kolaylaştırır.
Katman | Neyi sınırlar | Metne mi bağlı, davranışa mı |
|---|---|---|
Varsayılan mod onayı | Her dosya düzenleme + sistem değiştiren Bash komutu | Davranışa (her eylemde insan onayı) |
Auto mod sınıflandırıcısı | Güvensiz bulunan eylemler | Davranışa (model tabanlı inceleme) |
Allowlist/denylist ( permissions.deny) | Belirli komut metinleri | Metne (yazıldığı haliyle eşleşir) |
Sandbox (dosya + ağ izolasyonu) | Çalışma zamanı erişimi | Davranışa (izolasyon, metinden bağımsız) |
Working-directory kilidi | Yazılabilir dizin kapsamı | Davranışa (dizin sınırı zorlanır) |
MCP güven sınırında ise sorun katman eksikliği değil, katmanın nereye kurulduğu: sunucuya bağlanmak zaten o sunucunun koduna güvenmek demek olduğu için, aşağıdaki tablo hangi vakanın hangi güven varsayımını kırdığını özetliyor.
Vaka | Kırılan varsayım | Kaynak |
|---|---|---|
postmark-mcp (15 temiz sürüm sonrası sessiz sızdırma) | "Uzun sürüm geçmişi = güvenli paket" | Help Net Security, 11 Haz 2026 |
CVE-2025-6514 (MCP core, CVSS 9.6) | "Protokol altyapısı ayrı bir güven katmanı" | Help Net Security, 11 Haz 2026 |
CVE-2026-22708 (Cursor allowlist bypass) | "Allowlist'teki komut her zaman güvenlidir" | Help Net Security, 11 Haz 2026 |
hackerbot-claw / LiteLLM PyPI zinciri | "CI secrets, insan gözetimi olmadan güvende kalır" | Help Net Security, 11 Haz 2026 |
SSS
Prompt injection saldırısı nedir?
Bir LLM; sistem talimatı, kullanıcı isteği ve dış kaynaktan (dosya, web sayfası, e-posta, MCP yanıtı) çekilen metni tek bir token akışı olarak işler ve bu metinler arasında "komut" ile "veri" ayrımını güvenilir şekilde yapamaz. Saldırgan, ajanın okuyacağı bir belgeye gizlenmiş bir talimat yerleştirerek ajanı meşru bir komutu yürütüyormuş gibi yönlendirebilir.
AI kodlama ajanları prompt injection'a karşı nasıl korunur?
İki çerçeve pratikte işe yarıyor: Willison'ın "lethal trifecta"sı (özel veri erişimi + güvenilmeyen içerik + dışa iletişim üçü birden riski katlar) ve Meta'nın "Agents Rule of Two"su (insan onayı yoksa en fazla iki özellik birlikte olabilir). Bunlara ek olarak allowlist'lerin kör güven yaratmaması gerekir; CVE-2026-22708 allowlisted komutların zehirlenmiş ortamda kötüye kullanılabildiğini gösterdi.
Kodlama ajanına hangi izinleri vermeliyim?
Dosya, terminal ve ağ erişiminin üçünü birden gözetimsiz vermekten kaçın. Özellikle "özel veri okuma + internete çıkma" kombinasyonu insan onayı gerektirmeli. Sandbox sınırlarının ajanın kendi çıktısıyla yeniden tanımlanabildiği durumlar (CVE-2025-59532) gösteriyor ki sandbox konfigürasyonu ajanın erişemeyeceği bir katmanda tutulmalı; working-directory kilidini genişletirken bunu proje bazında, tek tek yap.
AI ajanı okuduğu dosyadaki talimatı çalıştırır mı?
Evet, mimari olarak bunu güvenilir biçimde önleyen bir mekanizma yok — model dosya içeriğini de talimat gibi yorumlayabilir. postmark-mcp vakasında (on beş temiz sürüm sonrası sessizce eklenen tek satırlık sızdırma kodu) ve LiteLLM/PyPI tedarik zinciri saldırısında (insan müdahalesi olmadan devam eden otomatik saldırı) bu tam olarak gerçekleşti.
Sandbox ile allowlist arasındaki fark nedir?
Allowlist metni eşleştirir; sandbox davranışı sınırlar. Bir komut allowlist'e girse bile, zehirlenmiş bir ortamda farklı bir eylem tetikleyebilir. Sandbox'ın dosya sistemi ve ağ izolasyonu ise, komutun metnine değil çalışma zamanı sınırına dayanır — bu yüzden metne bağlı olmayan zorlama istiyorsan sandbox'a yönel.
CI'da ajana tam yetki vermek ne zaman kabul edilebilir?
Neredeyse hiçbir zaman "tam yetki" olarak değil, kapsamı daraltılmış biçimde. Yan etkisi geri alınabilir, dışa iletişim gerektirmeyen adımlar (test, lint, build) otomatik onaylı bırakılabilir; ama secret'lara erişen, paket yayınlayan veya deploy tetikleyen adımlar insan onayında kalmalı. hackerbot-claw / LiteLLM PyPI vakası, bu ayrımın atlandığı bir CI zincirinde insan müdahalesi olmadan iki arka kapılı sürümün doğrudan yayınlanabildiğini gösterdi.
Güncelleme (Eylül 2026)
Bu yazının yayın tarihinden (25 Haziran 2026) sonra auto mode'un izin/güvenlik davranışında iki somut değişiklik geldi. İlki v2.1.261 ile (4 Eylül 2026): auto mode artık içeriği kamuya açık bir diagram-renderer'ın URL'ine paketleyen bir bağlantıyı o siteye yapılan bir yükleme olarak görüyor ve sen istemedikçe otomatik onaylamıyor. İkincisi, Claude Code'un latest sürümünde (npm dist-tag olarak 2.1.280, 23 Eylül 2026 itibarıyla) auto mode'un güvenlik kontrolü davranışında iki ayrı düzeltme geldi: bir güvenlik kontrolü eylemi incelemeyi reddettiğinde eylem artık tek seferde reddediliyor ve tekrar denemenin işe yaramayacağı belirtiliyor; güvenlik kontrolü hiç yanıt vermediğinde ise yeniden denemeler geri çekiliyor ve art arda on denemeden sonra tur bir mesajla duruyor. Bu, gözetimsiz koşumlarda "reddedilen eylemi sonsuz döngüde tekrar deneme" davranışının, CI/unattended senaryolarda beklenmedik kaynak tüketimine veya sürpriz davranışa yol açmasını engelleyen doğrudan bir sertleştirme adımı. Adlandırma notu: bu modun "Manual" etiketi ve manual takma adı Claude Code v2.1.200 ve sonrasını gerektiriyor.
Sonuç
AI kodlama ajanına yetki vermek, ona bir asistan değil bir operatör gibi davranma hakkı vermektir — ve operatör hataları, prompt injection üzerinden dışarıdan tetiklenebilir hale gelir. Agentic AI tool use, planner loop ve production mimarisi yazısında anlattığımız mimarinin doğal devamı olarak, burada güvenlik yüzeyine odaklandık: en az yetki, sandbox izolasyonu, MCP güven sınırı ve CI'da insan onayı bütçesi.
Daha derinlemesine okumak istersen vibe coding güvenlik kontrol listesi pratik bir başlangıç noktası; MCP protokolünün kendisini anlamak için Claude Code MCP entegrasyonu ve MCP güvenlik, CIMD, RFC 9207, DCR yazılarına bakabilirsin. Çoklu ajan koordinasyonunda yetki paylaşımı nasıl işliyor merak ediyorsan LangGraph ile production ajan framework'ü yazısı ilgili bir devam noktası.
Kaynaklar
- OWASP: prompt injection ve AI güvenlik başarısızlıkları (Help Net Security) — OWASP GenAI Security Project'in 2026 raporunun (State of Agentic AI Security and Governance v2.01) 11 Haziran 2026 tarihli özeti; CVE'ler, lethal trifecta, Rule of Two.
- Claude Code güvenlik dokümantasyonu — varsayılan/auto mod, sandbox, working-directory kilidi, deny kuralları.
- Claude Code izin modları dokümantasyonu —
defaultconfig değeri ile "Manual" etiketi ayrımı. - Claude Code MCP dokümantasyonu — MCP sunucularının araç/veri erişim modeli.
- Claude Code CHANGELOG.md — v2.1.261 auto mode diagram-renderer URL davranışı ve v2.1.280 retry/backoff düzeltmesi.
- Simon Willison: Vibe coding tanımı — kod incelemeden LLM çıktısıyla geliştirme pratiğinin kök tanımı.
- Lawfare: AI üretimi kodun güvenlik riskleri — slopsquatting ve halüsinasyon kaynaklı paket riskleri.
- Legit Security: Vibe coding güvenlik bilgi tabanı — geliştirici rolünün uygulayıcıdan incelemeciye kayması.

