· kaynak dev.to (home feed)
Claude Code'un sandbox'ı, kendinizin çalıştırıp inceleyebileceği açık bir npm paketi
Claude Code'un sandbox'ı @anthropic-ai/sandbox-runtime üzerine kurulu; srt CLI'sı bağımsız çalışan Apache-2.0 lisanslı bir npm paketi ve geliştiricilerin bir ajana güvenmeden önce tam olarak neyin engellendiğini test etmesini sağlıyor.

Anthropic, Claude Code'un arkasındaki sandbox'ı bağımsız, açık kaynaklı bir npm paketi olarak yayımladı; yani geliştiricilerin güvenlik sınırına körü körüne güvenmek zorunda kalmaları artık gerekmiyor. Gabriel Anhaia'nın dev.to'daki yazısı, Claude Code dokümantasyonunun sandbox'ın temeli olarak gösterdiği @anthropic-ai/sandbox-runtime paketini ele alıyor ve paketle gelen srt komutunun herhangi bir shell komutunu sararak sınırın tam olarak neye izin verip neyi reddettiğini ortaya koyduğunu gösteriyor.
Runtime sınırı nasıl zorunlu kılıyor
npm'de 0.0.80 sürümüyle listelenen, Apache-2.0 lisanslı olan ve Node.js 22.12.0 ya da üzerini gerektiren paket, container da sanal makine de kullanmıyor. Yazıya göre macOS'ta zorunlu kılmayı üretilen bir Seatbelt profiliyle sandbox-exec üzerinden yapılıyor, Linux bubblewrap'e dayanıyor ve Windows desteği alpha olarak işaretlenmiş. README, projeyi API'lerinin ve yapılandırma biçimlerinin hâlâ değişebileceği bir beta araştırma önizlemesi olarak nitelendiriyor. Ağ erişimi, sandbox dışında host üzerinde çalışan biri HTTP biri SOCKS5 iki proxy ile denetleniyor; sandbox'lı sürecin başka bir çıkışı yok, çünkü Linux ağ namespace'ini tamamen kaldırıyor ve macOS Seatbelt profili yalnızca tek bir localhost port'uyla iletişime izin veriyor.
Varsayılan ilke neye izin veriyor
Runtime, tasarımı gereği allow-list odaklı. Okumalar, bir deny listesi yolu belirtmedikçe her yerde serbest; yazmalar, bir allow listesi yolu belirtmedikçe her yerde reddediliyor; ağ trafiği, hedef host allow-list'e alınmadıkça düşürülüyor ve önce reddedilen domainler kontrol ediliyor. Ayarlar ~/.srt-settings.json dosyasında tutuluyor ve yazıya göre şema, boş olanlar dahil beş listenin tamamını istiyor — var olan ama geçersiz bir dosya, srt'nin başlamayı reddetmesine yol açıyor; yazar bunu bir güvenlik aracı için doğru davranış olarak değerlendiriyor. Ayar dosyası hiç yokken srt yine başlıyor ama ağ erişimi olmadan ve yazmalar /tmp/claude gibi runtime yollarıyla sınırlı kalıyor. Özellikle, Anthropic'in kendi dokümantasyonu da sandbox'lı bir komutun, bu yollar açıkça reddedilmedikçe ~/.ssh ve ~/.aws/credentials dahil makinenin büyük kısmını okuyabileceğini kabul ediyor.
Pratikte README, srt'yi bir projeye değil global olarak kurmayı söylüyor: yazılabilir bir node_modules klasöründeki kopya, sandbox'lı bir komut tarafından yeniden yazılıp sonraki açılışta sandbox dışında çalıştırılabilir. macOS kurulumları ayrıca PATH üzerinde ripgrep istiyor — srt reddedilecek yolları bununla buluyor — Linux ise bubblewrap ve socat gerektiriyor; Ubuntu 24.04 ve sonrasında bubblewrap user namespace oluşturmadan önce bir AppArmor ayarı yapılması gerekiyor.
Sırıntı yaptığı noktalar
İki zorunlu kılmakatmanı belgelenmiş boşluklar bırakıyor. Proxy'ler bağlantıları hostname üzerinden değerlendiriyor ve varsayılan olarak TLS'i sonlandırmıyor ya da incelemiyor; bu yüzden yazı, github.com gibi cömert girdilerin veri sızdırma kanalına dönüşebileceği konusunda uyarıyor ve README, domain fronting'in filtreyi aşabileceğini kabul ediyor. HTTP_PROXY, HTTPS_PROXY ve ALL_PROXY değişkenlerini yok sayan araçlar hiçbir yol olmadığını görüyor — bu yüzden düz ssh ve çoğu veritabanı sürücüsü izinli host'lara bile bağlanamıyor ve UDP, QUIC ile ping de dışarı çıkamıyor.
Yerleşik yazma reddetmeleri, ayrıca yazılabilir klasörler içindeki .git/hooks, .gitconfig, .vscode, .mcp.json ve .claude/commands gibi yolları koruyor — sandbox'lı bir sürecin, sandbox dışındaki bir şeyin daha sonra çalıştıracağı kodu gizleyebileceği noktalar bunlar. Linux'ta bu deny listesi başlatılırken bir kez oluşturuluyor; dolayısıyla oturum ortasında git init ya da git clone ile oluşturulan depolar korumasız kalıyor. Engellenen işlemler en azından anlaşılır: reddedilen okumalar 'Operation not permitted' hatasıyla başarısız oluyor ve reddedilen bir web isteği, sandbox runtime'ın adını veren bir X-Proxy-Error başlığı taşıyan 403 döndürüyor.
Claude Code içinde sandbox daha dar
Claude Code içinde /sandbox mekanizması yalnızca shell komutlarını sarıyor. Read, Edit, WebFetch ve WebSearch araçları, hook'lar, yerel MCP sunucuları ve LSP sunucularının tümü bunun dışında çalışıyor; dolayısıyla bir denyRead girdisi Read aracını durdurmuyor. Sandbox'lık ayrıca varsayılan olarak kapalı ve bir bağımlılık eksikse Claude Code, aksi söylenmedikçe komutları sandbox'sız çalıştırıyor. Anthropic yaklaşımı 20 Ekim 2025 tarihli Beyond permission prompts başlıklı yazıda tanıttı ve iç kullanımdan aldığı izin istemlerinde %84'lük azalma bildirdi — dev.to yazısı bu rakamın bağımsız değil, Anthropic'in kendi ölçümü olduğuna dikkat çekiyor.
Neden önemli
Kodlama ajanları için koruma rail'leri ancak incelenebildiklerinde güven kazandırır. Sandbox'ı Apache-2.0 lisanslı bir paket olarak yayımlamak, satıcı iddiasını test edilebilir bir ürüne dönüştürüyor: herhangi bir ekip bir deneme betiğini srt içine sarıp hangi işlemlerin başarısız hangilerinin başarılı olduğunu izleyebilir ve bir ajanın daha az kesintiyle çalışmasına izin vermeden önce politikayı ayarlayabilir. Aynı şeffaflık dürüst sınırları da ortaya çıkarıyor — credential dosyaları varsayılan olarak okunabilir kalıyor, TLS incelenmiyor ve çeşitli araçlar sandbox'a hiç girmiyor — bu yüzden akıllıca tutum varsayım değil doğrulama. Claude Code kullanan herkes için bağımsız CLI mevcut en ucuz denetim: atılabilir bir repo ve birkaç deneme komutu, sandbox'ın neyi durdurup neyi durdurmayacağını tam olarak gösteriyor.
- #claude-code
- #anthropic
- #sandboxing
- #npm
- #developer-tools