Konfigurasi pagar pengaman
Panduan ini menunjukkan cara mengonfigurasi pagar pengaman: aturan yang menentukan apakah tindakan agen dijalankan, meminta persetujuan lebih dulu, atau ditolak.
Pagar pengaman mencakup tiga belas kelas efek yang dideklarasikan setiap alat yang mengubah keadaan. Semuanya ditegakkan di sisi server pada titik alat itu dipanggil, tidak pernah lewat instruksi di dalam prompt.
Tetapkan keputusan untuk kelas aksi
Bagian berjudul “Tetapkan keputusan untuk kelas aksi”- Buka Pengaturan → Ruang kerja → Izin agen
- Pilih cakupan dengan kontrol tersegmentasi: Ruang kerja, Agen (lalu pilih agennya), atau Space (lalu pilih space tersebut)
- Pada baris kelas aksi, pilih Izinkan, Tanyakan dulu, atau Tolak
- Untuk menghapus aturan yang Anda tetapkan, tekan tombol reset yang muncul di ujung baris itu (Kembalikan ke diwariskan) — keputusannya kembali ke cakupan yang lebih luas
Setiap baris menampilkan keputusan efektif sebagai tag status dan badge yang
menunjukkan asalnya: Cakupan ini, Diwariskan, atau Default bawaan.
Matriks ini diselesaikan pada mode Agen (chat), sehingga Preset mode tidak
pernah muncul di sini — gunakan “Bagaimana jika?” dengan mode hanya-baca yang
dipilih untuk melihat lapisan itu.
Menulis aturan membutuhkan peran admin. Membaca matriksnya tidak.
Titik pemeriksaan: tetapkan Push ke remote ke Tolak pada cakupan ruang
kerja, lalu jalankan “Bagaimana jika?” di bawah untuk git push origin main.
Hasilnya terbaca deny dengan sumber workspace.
Memahami cara keputusan diselesaikan
Bagian berjudul “Memahami cara keputusan diselesaikan”Penyelesaiannya adalah spesifisitas lebih dulu, lalu keketatan:
- Aturan Space, lalu Agen, lalu Ruang kerja. Cakupan pertama yang memiliki aturan yang cocoklah yang memutuskan dan penyelesaian berhenti
- Jika tidak ada aturan yang cocok, preset mode berlaku — mode hanya-baca (rencana, tinjauan, orkestrasi) menolak sebelas dari tiga belas kelas
- Jika mode tidak menentukan apa pun, default bawaan yang berlaku
Dalam satu cakupan, aturan perintah diselesaikan berdasarkan prefiks yang cocok paling panjang, dan konflik yang sama spesifiknya diselesaikan secara paling ketat — tolak mengalahkan tanyakan dulu, yang mengalahkan izinkan. Tindakan yang mendeklarasikan beberapa kelas diselesaikan satu per satu secara independen, lalu digabungkan secara paling ketat.
Keputusan Tanyakan dulu memunculkan satu prompt persetujuan yang mencakup
setiap kelas yang diselesaikan menjadi prompt. Tanpa pemberi persetujuan
yang terhubung, keputusan itu ditolak, baik untuk perintah shell maupun
panggilan alat harness. Itu memang disengaja: eksekusi tanpa gerbang lebih buruk
daripada eksekusi yang ditolak.
Kelas aksi dan default bawaan
Bagian berjudul “Kelas aksi dan default bawaan”| Kelas aksi | Default bawaan |
|---|---|
| Hapus file | Tanyakan dulu |
| Tulis di luar pohon kerja | Izinkan |
| Buat commit | Izinkan |
| Push ke remote | Tanyakan dulu |
| Buka pull request | Tanyakan dulu |
| Publikasikan review atau merge | Tanyakan dulu |
| Tulis ke pelacak eksternal | Tanyakan dulu |
| Akses jaringan | Izinkan |
| Baca secret | Izinkan |
| Instal paket | Izinkan |
| Jalankan proses | Izinkan |
| Ubah struktur ruang kerja | Izinkan |
| Kendalikan enclosure (rig) | Izinkan |
Taksonomi ini tertutup. Alat baru yang dirilis tanpa mendeklarasikan kelasnya akan gagal dalam uji ratchet di CI, sehingga tidak ada yang hadir dengan himpunan efek yang kosong secara diam-diam.
Uji aturan memakai “Bagaimana jika?”
Bagian berjudul “Uji aturan memakai “Bagaimana jika?””Sebelum mengubah aturan, periksa bagaimana kebijakan saat ini sudah menyelesaikannya.
- Di halaman yang sama, gulir ke Bagaimana jika?
- Pilih Aksi (salah satu dari tiga belas kelas)
- Secara opsional isi Perintah (misalnya
git push origin main), Agen, Ruang, dan Mode - Baca hasilnya: keputusan, alasannya, dan Sumber:
“Bagaimana jika?” menjalankan resolver yang sama dengan yang dipakai jalur penegakan, terhadap aturan aktif Anda, sehingga jawabannya persis. Jika hasilnya mengejutkan Anda, ubah aturan di matriks di atas lalu jalankan “Bagaimana jika?” lagi.
Tetapkan dial otonomi sebuah space
Bagian berjudul “Tetapkan dial otonomi sebuah space”Dial ini berlaku per agen per space dan digabungkan dengan aturan, bukan menggantikannya.
- Buka space tersebut
- Buka Kelola peserta dari header space
- Di bawah Otonomi pada baris agen, pilih sebuah level:
| Level | Efek |
|---|---|
| Bawaan | Tidak ada pengaturan space — berperilaku seperti Bertindak dengan persetujuan |
| Hanya usulkan | Setiap alat yang melewati gerbang ditolak langsung, dengan pesan yang memberi tahu agen agar mengusulkan tindakan itu sebagai gantinya |
| Bertindak dengan persetujuan | Tindakan berisiko mengenai gerbang persetujuan fail-closed |
| Bertindak bebas | Menyetujui di muka apa pun yang tidak diselesaikan menjadi deny keras |
Dial ini hanya menjangkau harness bawaan. Adapter Claude Code menjalankan alatnya sendiri di luar gerbang ini.
Ketahui di mana pagar pengaman tidak menjangkau
Bagian berjudul “Ketahui di mana pagar pengaman tidak menjangkau”Tabel Di mana aturan ditegakkan di bagian bawah halaman yang sama adalah versi dalam aplikasi dari hal ini: untuk setiap kelas efek, tabel itu menyatakan apakah setiap runner menangkapnya di gerbang kebijakan, membiarkannya ke sandbox, atau tidak dapat mencegatnya sama sekali.
- Adapter Claude Code hanya sebagian melewati gerbang untuk panggilan
alatnya sendiri. Claude Code dijalankan dengan
--dangerously-skip-permissions, sehingga panggilan baca, tulis, dan edit-nya tidak pernah melewati pagar pengaman. Perintah bash-nya mencapai pagar pengaman melalui hook yang mengklasifikasikan baris perintah, dan push-nya melewati gateway push seperti milik agen mana pun. Permukaan alat MCP yang dipanggilnya kembali dan perintah shell yang dijalankan Control Center untuk memulainya juga melewati gerbang. - Verba keluaran milik sebuah mode (
submit_plan,propose_orchestration) dipakukan dan tidak pernah dapat ditolak — jika tidak, sebuah mode secara struktural tidak akan mampu menghasilkan satu-satunya keluarannya. - Apakah sandbox menopang aturan-aturan ini bergantung pada host. Di tempat
cc_servermenemukan backend, ia membungkus CLI Claude Code dan alatbashmilik harness, sehingga aturan yang tidak Anda tulis pun masih memiliki dasar OS di bawahnya. Di Windows tidak ada dasar itu dan di Linux atau WSL2 tanpabwrapdansocatjuga tidak ada — di sana, pagar pengaman plus permukaan alat milik mode merupakan keseluruhan penegakannya, bukan lapisan keduanya. Periksa Anda berada di kasus yang mana dengan Konfigurasi kebijakan sandbox.