İçeriğe geç

Sandbox politikalarını yapılandırma

Bir ajan çalıştırmasının sandbox’a alınıp alınmadığına sunucu, açılışta karar verir (--sandbox). Ayarlar → Sunucu → Tanılama ve gizlilik altındaki Korumalı alanı etkinleştir anahtarı ve Backend seçici cihazınızda saklanan tercihlerdir. Korumalı alan kartının ana makine algılaması, sunucu ana makinesinin neyi sarabileceğini bildirir.

Bir çalıştırmaya ulaşan iki denetim vardır ve bu kılavuz ikisini de ele alır: bir ajanın neyi push edebileceğine, açabileceğine ya da nereye erişebileceğine karar veren Ayarlar → Çalışma alanı → Ajan izinleri altındaki eylem kuralları ve sunucunun kendi --sandbox bayrağı.

Bir ajan çalıştırmasını neyin kısıtladığı

Bölüm başlığı “Bir ajan çalıştırmasını neyin kısıtladığı”

Bir ajanı altı şey tutar. İlki işletim sistemi sandbox’ıdır ve koşullu olan tek şey odur — diğer beşi her ana makinede geçerlidir.

Sınır Ne yapar
İşletim sistemi sandbox’ı macOS’ta Seatbelt, Linux ve WSL2’de bubblewrap. Claude Code CLI’yı, ACP adaptörlerini ve harness bash aracını sarar. Windows’ta ve bwrap ile socat olmayan Linux’ta yoktur
Kendi worktree’si Her konuşma copy-on-write bir checkout alır. Özgün checkout, çalıştırmaya yazma reddi yolu olarak katılır ve bunu uygulayan şey sandbox’tır
Broker üzerinden verilen kimlik bilgileri Kimlik bilgisi broker’ı çalıştırma başına bir ortam üretir ve kapanışta geri alır. İçindeki GitHub token’ı okuyabilir ama push edemez: bir push, önce push kuralına soran Control Center’dan geçer
Eylem korumaları Her değişiklik yapan araç etki sınıflarını bildirir ve koruma bunları çağrı çalışmadan önce çözümler. Bağlı onaylayıcısı olmayan bir prompt reddedilir
Ortam temizliği ACP ve harness bash aracı filtrelenmiş bir ortam alır. NoSandboxAdapter üzerinden Claude Code, ana makine ortamını devralır
Modun araç yüzeyi Salt okunur bir mod, worktree’yi değiştiren araçları tamamen çıkarır ve yine de teslim edebilmesi için modun kendi çıktı fiilini sabitler

Üç şey göründüğünden daha zayıf kalır:

  • Araç kapısını, tamamlanma sözleşmelerini ve yapısal mod kurallarını yalnızca yerleşik harness uygular. Claude Code adaptörü uygulamaz. Özellikle Claude Code, --dangerously-skip-permissions ile başlatılır; çünkü etkileşimsiz bir claude -p, aksi halde kendi isteminde sonsuza dek bloke olur — dolayısıyla Claude’un kendi okuma, yazma ve düzenleme çağrıları Control Center tarafından ne görülür ne de kapıya bağlanır; bash komutlarını ise yalnızca komut satırını okuyan bir hook denetler. Sandbox açıkken onların etrafındaki sınır odur.
  • Harness’in süreç içi dosya araçları (read, write, edit, apply patch, search, find, search_files) sunucu sürecinin içinde çalışır; bu yüzden onları hiçbir sandbox profili kısıtlamaz. Sandbox’a alınmış komut çalıştırıcısından yalnızca bash aracı geçer. Bu araçlar kendi yol hapsetmeleri ve eylem korumalarıyla sınırlıdır.
  • Arka ucu olmayan bir ana makinede ilk satır hiç geçerli olmaz. ACP ve harness bash aracı, ortam temizliği ve komut ilkesine döner; Claude Code, NoSandboxAdapter üzerinden ana makine ortamını devralır. Sunucu bunu başlangıç günlüğünde söyler. Kendi günlüğünüzü aşağıda denetleyin.

git push, GitHub, biletleme ya da ağ için ajan başına bir anahtar yoktur. Her biri bir eylem kuralıdır:

Kural Yerleşik varsayılan Neyi kapsar
Uzak depoya push et Önce sor Adaptör ne olursa olsun GitHub’a yapılan her git push
Pull request aç Önce sor gh pr create ve pull request araçları
İnceleme yayınla veya birleştir Önce sor gh pr merge, gh pr review, gh pr comment, gh pr close
Harici takip sistemine yaz Önce sor Control Center araçlarıyla ve gh issue ile bilet yazımları
Ağa eriş İzin ver Sandbox’ın ağı olup olmadığı ve harness’ın web araçları
  1. Ayarlar → Çalışma alanı → Ajan izinleri bölümüne gidin
  2. Kapsamı seçin — Çalışma alanı, Ajan veya Alan — ve kuralın satırında İzin ver, Önce sor veya Reddet’i seçin

main’e push’u reddeden bir kural gibi dallarla sınırlı push kuralları da uygulanır: bkz. Korumalar.

Kontrol noktası: ajandan bir dalı push etmesini isteyin. Önce sor ile depoyu ve ref’leri adlandıran bir onay alırsınız; Reddet ile git şunu yazdırır: ! [remote rejected] <ref> (Control Center policy: …).

Her kural çalıştırmaya nasıl ulaşır:

  • Push, çalıştırmanın elinde ne tuttuğuyla uygulanır. GitHub token’ı, içerik okuyabilen ve pull request’lerle çalışabilen salt okunur bir GitHub App kurulum token’ıdır. Git yapılandırması her GitHub push’unu cc_server üzerindeki bir loopback ağ geçidine gönderir; ağ geçidi kurala sorar ve ancak ondan sonra push’u ajanın hiç görmediği bir yazma token’ıyla iletir. Ağ geçidi yalnızca çalışma ağacının kendi deposuna ya da çalışma alanına bağlı bir GitHub deposuna iletir. Bu her adaptör için geçerlidir.
  • Bir kabuktan pull request’ler ve issue’lar, harness’ın bash aracında ve bir hook aracılığıyla Claude Code’un Bash aracında komut satırından tanınır. Komutu gizleyen bir ajan (bir betik, eval, doğrudan bir API çağrısı) bu denetimi geçer ama push ağ geçidini geçemez.
  • Biletleme anahtarları asla sandbox’a konmaz. Ajanlar biletleri, kurala soran Control Center MCP araçlarıyla yazar.
  • Ağ, çalıştırma başlarken bir kez çözümlenir. Reddet sandbox’ın ağını kapatır; İzin ver ve Önce sor açık bırakır ve Önce sor altında harness’ın web_fetch ve web_search araçları her çağrıda sormaya devam eder. Ağ açık olduğu sürece GitHub her zaman çıkış izin listesindedir.

Ajan çalıştırmalarınızın sandbox’a alınıp alınmadığını denetleme

Bölüm başlığı “Ajan çalıştırmalarınızın sandbox’a alınıp alınmadığını denetleme”

Buna iki şey karar verir, ikisi de sunucudadır: ana makinenin bir arka uç sunup sunmadığı ve --sandbox’ın açık olup olmadığı. Bunları bu sırayla denetleyin.

  1. Ayarlar → Sunucu → Tanılama ve gizlilik bölümüne gidin
  2. Korumalı alan kartını okuyun. Host olgusu, baktığınız makine değil cc_server’ın çalıştığı makinedir. Backend alanı Yerel sandbox (macOS’ta Seatbelt, Linux ve WSL2’de bubblewrap) ya da İzolasyon yok listeler. Yürürlükte olgusu, sunucunun gerçekte kullandığı sarma değil bu cihazın tercihidir.
  3. Sunucunun başlangıç günlüğünü okuyun. Tam olarak üç satırdan birini yazar:
    • agent sandbox ON ve arka uç notu — çalıştırmalar sarılır
    • no OS-native agent sandbox on this host ve varsa bir kurulum ipucu — çalıştırmalar sarılmaz
    • agent sandbox DISABLED by --sandbox off — bilinçli bir vazgeçme

GET /healthz sandbox durumunu bildirmez; bu yüzden denetim başlangıç günlüğüdür.

Sandbox’ı bilinçli olarak kapatmak için — profilin kötü davrandığı bir ana makine, onun var olma sebebidir — sunucuyu --sandbox off ile başlatın ya da CC_SERVER_SANDBOX=off ayarlayın. Varsayılan on’dur ve on, “ana makinede varsa bir arka uç kullan” demektir, asla “bir tane gerektir” değil.

İki durum hiçbir zaman yerel bir sandbox sarması almaz. Windows’ta yerel sonda her zaman kullanılamaz bildirir ve kurulacak bir şey yoktur — ajan gönderimi none kullanır. microvm arka ucu ayrıdır (etkileşimli terminaller ve rig’ler) ve kendi çalışma zamanında sonda kapısına bağlıdır. Linux ve WSL2’de hem bwrap hem socat PATH üzerinde olmalıdır; bunlar olmadan sonda kullanılamaz bildirir ve eksik paketleri adlandırır.

bubblewrap kurulu Linux/WSL2’de, standart politikanın gizli dosya glob’ları, bir ajanın sonradan oluşturduğu dosyalar için uygulanamaz. Böyle yerel bir çalıştırma artık kuralları sessizce yok saymak yerine başarısız olur. Dolayısıyla olumlu bir açılış sondası, bir Linux gönderiminin başlayabileceğini garanti etmez. --sandbox off bilinçli, sınırsız bir vazgeçmedir; yerine geçen bir güvenlik sınırı değildir.

Mod, alan başına saklanır ve koruma çözümleyicisini mod ön ayarı katmanı olarak besler. Dört moddan üçü salt okunurdur ve salt okunur bir mod on bir etki sınıfını doğrudan reddeder:

Mod Worktree Ön ayar tarafından reddedilen
Ajan (chat) Yazılabilir Hiçbir şey — yerleşik varsayılanlar geçerlidir
Plan Salt okunur Bir dosyayı sil, çalışma ağacının dışına yaz, commit oluştur, uzak depoya push et, pull request aç, inceleme yayınla veya birleştir, harici takip sistemine yaz, paket kur, süreç çalıştır, çalışma alanı yapısını değiştir, bir enclosure’ı (rig) yönet
İnceleme Salt okunur Aynı on bir. Kullanıcı seçemez — ileti alanı yalnızca Ajan, Plan ve Orkestrasyon sunar
Orkestrasyon Salt okunur Aynı on bir

Ağ erişimi ve sır erişimi, salt okunur bir mod tarafından bilinçli olarak reddedilmez: araştırma, böyle bir modun asıl amacıdır.

Onay bir koruma kararıdır, bir sandbox ayarı değildir.

  1. Ayarlar → Çalışma alanı → Ajan izinleri bölümüne gidin
  2. Eylem sınıfını çalışma alanı, ajan veya alan kapsamında Önce sor olarak ayarlayın

Bir Önce sor kararı çalıştırmayı kesintiye uğratır ve size sorar. Bağlı bir onaylayıcı yoksa kapalı yönde başarısız olur ve eylem reddedilir. Tam çözümleme sırası için Korumaları yapılandırma sayfasına bakın.

Git’in ne yazdırdığını okuyun. Control Center policy: …, bir kuralın push’u reddettiği ya da bir Önce sor’un yanıtsız kaldığı anlamına gelir. … is not linked to this workspace, push’un ne çalışma ağacının kendi deposu ne de çalışma alanına bağlı olan bir depoyu hedeflediği anlamına gelir. Control Center has no GitHub credential that can push …, GitHub App’in o depoya kurulu olmadığı ve hiçbir yedek kimlik bilgisinin push edemediği anlamına gelir: uygulamayı o depoya kurun ya da GitHub’ı bağlayın.

O zaman o ana makinedeki ajan çalıştırmaları Seatbelt veya bubblewrap tarafından sarılmaz ve elinizde kalan sınırlar geçerlidir. Linux ve WSL2’de eksik olan her iki aracı kurun — sudo apt-get install bubblewrap socat — ve sunucuyu yeniden başlatın; başlangıç günlüğü ardından sandbox’ın açık olduğunu söylemelidir. Windows’ta kurulacak yerel bir arka uç yoktur; bu yüzden onun yerine korumaları sıkılaştırın: Korumaları yapılandırma sayfasına bakın.

Bir ajan worktree’sinin dışındaki bir dosyaya erişti

Bölüm başlığı “Bir ajan worktree’sinin dışındaki bir dosyaya erişti”

Hangi aracın eriştiği, bunun beklenen olup olmadığına karar verir.

Harness’in süreç içi dosya araçları (read, write, edit, apply patch, search, find, search_files) sunucu sürecinde çalışır; bu yüzden onlara hiçbir sandbox profili uygulanmaz — sınırları, kendi yol hapsetmeleri ve korumalardır. Bir bash komutu ya da Claude Code CLI, arka ucun olduğu yerde sarılır ve kayıtlı checkout’larınız, sembolik bağlantı çözümlenmiş yazımları dahil, her modda o sarmada yazmaya kapalıdır (macOS’ta /tmp veya /var/folders üzerinden ulaşılan bir yol /private altında çözümlenir ve her iki yazım da artık reddedilir). Arka ucu olmayan bir ana makinede bunların hiçbiri geçerli değildir. Her iki durumda da korumalar Çalışma ağacının dışına yaz’ı doğrudan reddedebilir.