Langkau ke kandungan

Konfigurasikan polisi kotak pasir

Sama ada sesuatu larian ejen dikotak pasirkan ditentukan pada pelayan, semasa boot (--sandbox). Togol Dayakan kotak pasir dan pemilih Bahagian belakang di bawah Tetapan → Pelayan → Diagnostik & privasi ialah keutamaan yang disimpan pada peranti anda. Pengesanan hos oleh kad Kotak pasir melaporkan apa yang boleh dibalut oleh hos pelayan.

Dua kawalan sampai kepada sesuatu larian dan panduan ini merangkumi kedua-duanya: peraturan tindakan di Tetapan → Ruang kerja → Kebenaran ejen, yang menentukan apa yang boleh di-push, dibuka atau dicapai oleh ejen, dan bendera --sandbox pelayan itu sendiri.

Sesuatu ejen diikat oleh enam perkara. Yang pertama ialah kotak pasir OS dan itulah yang bersyarat — lima yang lain bertahan pada setiap hos.

Sempadan Apa yang dilakukannya
Kotak pasir OS Seatbelt pada macOS, bubblewrap pada Linux dan WSL2. Membalut CLI Claude Code, penyesuai ACP dan alat bash harness. Tiada pada Windows dan pada Linux tanpa bwrap dan socat
Worktree-nya sendiri Setiap perbualan mendapat checkout salin-semasa-tulis. Checkout asal dilipat ke dalam larian sebagai laluan tolak-tulis dan kotak pasirlah yang menguatkuasakannya
Kelayakan melalui broker Broker kelayakan menempa persekitaran setiap larian dan membatalkannya semasa pembongkaran. Token GitHub di dalamnya boleh membaca tetapi tidak boleh push: push melalui Control Center, yang bertanya kepada peraturan push terlebih dahulu
Guardrail tindakan Setiap alat yang mengubah keadaan mengisytiharkan kelas kesannya dan pengawal menyelesaikannya sebelum panggilan itu dijalankan. prompt tanpa pelulus yang bersambung ditolak
Pensanitasi persekitaran ACP dan alat bash harness mendapat persekitaran yang ditapis. Claude Code melalui NoSandboxAdapter mewarisi persekitaran hos
Permukaan alat modus Modus baca sahaja mengeluarkan alat yang mengubah worktree terus daripada permukaan dan memakukan kata kerja keluaran modus itu sendiri supaya ia masih boleh menyampaikan

Tiga perkara kekal lebih lemah daripada yang kelihatan:

  • Hanya harness terbina yang menguatkuasakan pintu alat, kontrak penyiapan dan peraturan modus berstruktur. Penyesuai Claude Code tidak. Claude Code khususnya dilancarkan dengan --dangerously-skip-permissions, kerana claude -p bukan interaktif jika tidak akan tersekat selama-lamanya pada gesaannya sendiri — jadi panggilan baca, tulis dan edit Claude sendiri tidak dilihat mahupun dipagari oleh Control Center, dan perintah bash-nya hanya diperiksa oleh hook yang membaca baris perintah. Di mana kotak pasir dihidupkan, itulah sempadan di sekelilingnya.
  • Alat fail dalam proses harness (read, write, edit, apply patch, search, find, search_files) berjalan di dalam proses pelayan, jadi tiada profil kotak pasir mengekangnya. Hanya alat bash melalui pelari perintah berkotak pasir. Alat-alat itu dibatasi oleh kekangan laluan mereka sendiri serta guardrail tindakan.
  • Pada hos tanpa bahagian belakang, baris pertama tidak terpakai sama sekali. ACP dan alat bash harness berpatah balik kepada pensanitasi persekitaran serta polisi perintah; Claude Code mewarisi persekitaran hos melalui NoSandboxAdapter. Pelayan menyatakan hal itu dalam log permulaannya. Semak milik anda di bawah.

Tiada togol bagi setiap ejen untuk git push, GitHub, penetikan atau rangkaian. Setiap satunya ialah peraturan tindakan:

Peraturan Lalai terbina Apa yang diliputinya
Push ke remote Tanya dahulu Setiap git push ke GitHub, apa jua penyesuainya
Buka pull request Tanya dahulu gh pr create dan alat pull request
Terbitkan semakan atau cantuman Tanya dahulu gh pr merge, gh pr review, gh pr comment, gh pr close
Tulis ke penjejak luaran Tanya dahulu Penulisan tiket melalui alat Control Center dan gh issue
Akses rangkaian Benarkan Sama ada kotak pasir mempunyai rangkaian langsung, dan alat web harness
  1. Pergi ke Tetapan → Ruang kerja → Kebenaran ejen
  2. Pilih skop — Ruang kerja, Ejen atau Ruang — dan pada baris peraturan itu, pilih Benarkan, Tanya dahulu atau Tolak

Peraturan push yang dihadkan kepada cabang, seperti satu yang menolak push ke main, turut terpakai: lihat Guardrail.

Titik semak: minta ejen push satu cabang. Dengan Tanya dahulu anda mendapat kelulusan yang menamakan repo dan ref; dengan Tolak, git mencetak ! [remote rejected] <ref> (Control Center policy: …).

Bagaimana setiap peraturan sampai kepada larian:

  • Push dikuatkuasakan melalui apa yang dipegang larian. Token GitHub-nya ialah token pemasangan GitHub App baca sahaja yang boleh membaca kandungan dan bekerja dengan pull request. Konfigurasi git-nya menghantar setiap push GitHub ke gerbang loopback pada cc_server, yang bertanya kepada peraturan dan barulah memajukan push dengan token tulis yang tidak pernah dilihat ejen. Gerbang itu hanya memajukan ke repo worktree itu sendiri atau ke repo GitHub yang dipautkan kepada ruang kerja. Ini terpakai bagi setiap penyesuai.
  • Pull request dan isu dari shell dikenali melalui baris perintah, dalam alat bash harness dan, melalui hook, dalam alat Bash Claude Code. Ejen yang menyembunyikan perintah (skrip, eval, panggilan API terus) melepasi semakan ini, tetapi tidak melepasi gerbang push.
  • Kunci penetikan tidak pernah diletakkan dalam kotak pasir. Ejen menulis tiket melalui alat MCP Control Center, yang bertanya kepada peraturan.
  • Rangkaian diselesaikan sekali, apabila larian bermula. Tolak mematikan rangkaian kotak pasir; Benarkan dan Tanya dahulu membiarkannya hidup, dan dengan Tanya dahulu alat web_fetch dan web_search harness masih bertanya pada setiap panggilan. Selagi rangkaian hidup, GitHub sentiasa berada dalam senarai benarkan keluar.

Semak sama ada larian ejen anda dikotak pasirkan

Bahagian bertajuk “Semak sama ada larian ejen anda dikotak pasirkan”

Dua perkara menentukannya, kedua-duanya pada pelayan: sama ada hos menawarkan bahagian belakang dan sama ada --sandbox dihidupkan. Semak kedua-duanya mengikut urutan itu.

  1. Pergi ke Tetapan → Pelayan → Diagnostik & privasi
  2. Baca kad Kotak pasir. Fakta Hos ialah mesin tempat cc_server berjalan, bukan mesin yang anda sedang lihat. Medan Bahagian belakang menyenaraikan Kotak pasir natif (Seatbelt pada macOS, bubblewrap pada Linux dan WSL2) atau Tiada pengasingan. Fakta Berkuat kuasa ialah keutamaan peranti ini, bukan balutan yang sebenarnya digunakan oleh pelayan.
  3. Baca log permulaan pelayan. Ia mencetak tepat satu daripada tiga baris:
    • agent sandbox ON serta nota bahagian belakang — larian dibalut
    • no OS-native agent sandbox on this host serta petunjuk pemasangan di mana ada — larian tidak dibalut
    • agent sandbox DISABLED by --sandbox off — tarik diri yang disengajakan

GET /healthz tidak melaporkan keadaan kotak pasir, jadi log permulaan ialah cara semaknya.

Untuk mematikan kotak pasir secara sengaja — hos tempat profil itu berkelakuan buruk ialah sebab kewujudannya — mulakan pelayan dengan --sandbox off, atau tetapkan CC_SERVER_SANDBOX=off. Lalainya ialah on dan on bermaksud “gunakan bahagian belakang jika hos ada satu”, tidak pernah “wajibkan satu”.

Dua situasi tidak pernah mendapat balutan kotak pasir natif. Pada Windows kuar natif sentiasa melaporkan tidak tersedia dan tiada apa yang perlu dipasang — penghantaran ejen menggunakan none. Bahagian belakang microvm adalah berasingan (terminal interaktif dan stesen) dan dipagari kuar pada runtime-nya sendiri. Pada Linux dan WSL2 kedua-dua bwrap dan socat mesti berada pada PATH; tanpanya kuar melaporkan tidak tersedia dan menamakan pakej yang hilang.

Pada Linux/WSL2 dengan bubblewrap dipasang, glob fail rahsia polisi standard tidak boleh dikuatkuasakan untuk fail yang dicipta oleh ejen kemudiannya. Larian natif sebegitu kini gagal dan bukannya secara senyap mengabaikan peraturan itu. Oleh itu, kuar boot yang positif tidak menjamin bahawa penghantaran Linux boleh bermula. --sandbox off ialah tarik diri tanpa kekangan yang disengajakan, bukan sempadan keselamatan ganti.

Ketahui apa yang sudah dilarang oleh sesuatu modus

Bahagian bertajuk “Ketahui apa yang sudah dilarang oleh sesuatu modus”

Modus disimpan per ruang dan menyuap penyelesai guardrail sebagai lapisan praset modus. Tiga daripada empat modus adalah baca sahaja dan modus baca sahaja menolak sebelas kelas kesan terus:

Modus Worktree Ditolak oleh praset
Ejen (chat) Boleh tulis Tiada — lalai terbina terpakai
Rancang Baca sahaja Padam fail, tulis di luar worktree, commit, push, buka PR, terbitkan atau cantumkan, tulis ke penjejak luaran, pasang pakej, jalankan proses, ubah struktur ruang kerja, boot atau kendalikan kepungan
Semak Baca sahaja Sebelas yang sama. Tidak boleh dipilih oleh pengguna — penggubah hanya menawarkan Ejen, Rancang dan Orkestrakan
Orkestrakan Baca sahaja Sebelas yang sama

Akses rangkaian dan akses rahsia sengaja tidak ditolak oleh modus baca sahaja: penyelidikan ialah tujuan sesuatu modus itu.

Wajibkan kelulusan sebelum sesuatu tindakan dijalankan

Bahagian bertajuk “Wajibkan kelulusan sebelum sesuatu tindakan dijalankan”

Kelulusan ialah keputusan guardrail, bukan tetapan kotak pasir.

  1. Pergi ke Tetapan → Ruang kerja → Kebenaran ejen
  2. Tetapkan kelas tindakan kepada Tanya dahulu pada skop ruang kerja, ejen atau ruang

Keputusan Tanya dahulu mengganggu larian dan bertanya kepada anda. Apabila tiada pelulus yang bersambung, ia gagal tertutup dan tindakan itu ditolak. Lihat Konfigurasikan guardrail untuk urutan penyelesaian sepenuhnya.

Ejen tidak boleh push dan saya tidak pernah menolaknya

Bahagian bertajuk “Ejen tidak boleh push dan saya tidak pernah menolaknya”

Baca apa yang dicetak oleh git. Control Center policy: … bermakna satu peraturan menolak push itu atau Tanya dahulu tidak dijawab. … is not linked to this workspace bermakna push itu menyasarkan repo yang bukan repo worktree itu sendiri dan tidak dipautkan kepada ruang kerja. Control Center has no GitHub credential that can push … bermakna GitHub App tidak dipasang pada repo itu dan tiada kelayakan sandaran yang boleh push: pasang App pada repo itu atau sambungkan GitHub.

Kad Kotak pasir melaporkan tiada kotak pasir natif

Bahagian bertajuk “Kad Kotak pasir melaporkan tiada kotak pasir natif”

Maka larian ejen pada hos itu tidak dibalut oleh Seatbelt atau bubblewrap dan sempadan selebihnya ialah apa yang anda ada. Pada Linux dan WSL2, pasang kedua-dua alat yang hilang — sudo apt-get install bubblewrap socat — dan mulakan semula pelayan; log permulaan kemudiannya sepatutnya menyatakan kotak pasir dihidupkan. Pada Windows tiada bahagian belakang natif untuk dipasang, jadi ketatkan guardrail sebaliknya: lihat Konfigurasikan guardrail.

Alat mana yang mencapainya menentukan sama ada ini dijangka.

Alat fail dalam proses harness (read, write, edit, apply patch, search, find, search_files) berjalan dalam proses pelayan, jadi tiada profil kotak pasir terpakai kepadanya — batasnya ialah kekangan laluan mereka sendiri serta guardrail. Perintah bash atau CLI Claude Code memang dibalut di mana bahagian belakang wujud dan checkout berdaftar anda ditolak-tulis di dalam balutan itu dalam setiap modus, termasuk ejaan yang diselesaikan melalui symlink (pada macOS laluan yang dicapai melalui /tmp atau /var/folders diselesaikan di bawah /private dan kedua-dua ejaan kini ditolak). Pada hos tanpa bahagian belakang, tiada satu pun daripadanya terpakai. Sama ada cara, guardrail boleh menolak Tulis di luar worktree terus.