Sandbox
Cara kerja sandboxing di berbagai klien ChatGPT dan Codex
Sandbox adalah batas yang memungkinkan agen bertindak secara mandiri tanpa memberinya akses tak terbatas ke mesin Anda. Saat chat lokal menjalankan perintah di aplikasi desktop ChatGPT, Codex CLI, atau ekstensi IDE, perintah tersebut berjalan di dalam lingkungan terbatas, bukan secara default berjalan dengan akses penuh.
Lingkungan tersebut menentukan apa yang dapat dilakukan agen secara mandiri, seperti file mana yang dapat diubah dan apakah perintah dapat menggunakan jaringan. Saat tugas tetap berada di dalam batas tersebut, agen dapat terus bekerja tanpa berhenti untuk meminta konfirmasi. Saat agen perlu melampauinya, alur persetujuan akan mengambil alih.
Fungsi sandbox
Sandbox berlaku pada perintah yang dijalankan, bukan hanya pada operasi file
bawaan. Jika agen menjalankan alat seperti git, pengelola paket, atau pelaksana pengujian,
perintah tersebut mewarisi batas sandbox yang sama.
Codex menggunakan mekanisme penegakan bawaan platform di setiap OS. Implementasinya berbeda antara macOS, Linux, WSL2, dan Windows native, tetapi gagasannya sama di semua antarmuka: menyediakan tempat kerja yang terbatas bagi agen agar tugas rutin dapat berjalan secara mandiri dalam batas yang jelas.
Mengapa ini penting
Sandbox mengurangi kejenuhan akibat permintaan persetujuan. Alih-alih meminta Anda mengonfirmasi setiap perintah berisiko rendah, agen dapat membaca file, membuat perubahan, dan menjalankan perintah proyek rutin dalam batas yang telah Anda setujui.
Sandbox juga memberi Anda model kepercayaan yang lebih jelas untuk pekerjaan berbasis agen. Anda tidak hanya memercayai niat agen; Anda memercayai bahwa agen beroperasi dalam batas yang diberlakukan. Hal ini memudahkan Anda membiarkan agen bekerja secara mandiri sekaligus tetap mengetahui kapan agen akan berhenti dan meminta bantuan.
Memulai
Mode izin default menerapkan sandboxing secara otomatis.
Prasyarat
Di macOS, sandboxing langsung berfungsi menggunakan framework Seatbelt bawaan.
Di Windows, Codex menggunakan sandbox Windows native saat Anda menjalankannya di PowerShell dan implementasi sandbox Linux saat Anda menjalankannya di WSL2.
Di Linux dan WSL2, instal bubblewrap terlebih dahulu dengan pengelola paket Anda:
Ubuntu/Debian
sudo apt install bubblewrapFedora
sudo dnf install bubblewrapCodex menggunakan executable bwrap pertama yang ditemukan di PATH. Jika executable bwrap
tidak tersedia, Codex beralih ke helper bawaan, tetapi helper tersebut
memerlukan dukungan untuk membuat namespace pengguna tanpa hak istimewa. Menginstal
paket distribusi yang menyediakan bwrap membuat penyiapan ini tetap andal.
Codex menampilkan peringatan saat startup ketika bwrap tidak ada atau ketika helper
tidak dapat membuat namespace pengguna yang diperlukan. Pada distribusi yang membatasi pengaturan
AppArmor ini, sebaiknya muat profil AppArmor bwrap agar bwrap dapat
terus berfungsi tanpa menonaktifkan pembatasan secara global.
Cara kerja izin
Gunakan kontrol izin pada antarmuka Anda untuk mengubah cara Codex menangani tindakan lokal.
Persetujuan menentukan kapan Codex berhenti sebelum melakukan tindakan, sedangkan sandbox menentukan file dan sumber daya jaringan yang dapat diakses perintah. Saat sebuah persetujuan menawarkan cakupan berbeda, seperti menyetujui sekali atau selama sesi, pilih cakupan paling sempit yang memungkinkan tugas dilanjutkan. Pertahankan batas proyek sebagai default; gunakan proyek atau worktree terpisah alih-alih memperluas akses ke repositori yang tidak terkait.
Di aplikasi desktop ChatGPT, gunakan kontrol izin di bawah kolom penulisan. Tergantung pada konfigurasi Anda, menu dapat menyertakan Minta persetujuan, Setujui untuk saya untuk permintaan persetujuan yang memenuhi syarat, Akses penuh, serta profil izin bernama atau khusus.
Mengonfigurasi default
Agar selalu memulai dengan perilaku yang sama, tetapkan default di config.toml.
Dasar-dasar konfigurasi menjelaskan cara kerjanya, dan
Referensi konfigurasi mendokumentasikan key yang tepat untuk
sandbox_mode, approval_policy, approvals_reviewer, dan
sandbox_workspace_write.writable_roots. Gunakan pengaturan tersebut untuk menentukan tingkat
kemandirian default agen, direktori yang dapat ditulisinya, kapan agen
harus berhenti untuk meminta persetujuan, dan siapa yang meninjau permintaan persetujuan yang memenuhi syarat.
Secara umum, mode sandbox yang lazim adalah:
read-only: Agen dapat memeriksa file, tetapi tidak dapat mengedit file atau menjalankan perintah tanpa persetujuan.workspace-write: Agen dapat membaca file, mengedit dalam ruang kerja, dan menjalankan perintah lokal rutin di dalam batas tersebut. Ini adalah mode default dengan hambatan minimal untuk pekerjaan lokal.danger-full-access: Agen berjalan tanpa pembatasan sandbox. Mode ini menghapus batas sistem file dan jaringan serta hanya boleh digunakan jika Anda ingin agen bertindak dengan akses penuh.
Kebijakan persetujuan yang lazim adalah:
untrusted: Agen meminta izin sebelum menjalankan perintah yang tidak termasuk dalam kumpulan tepercayanya.on-request: Agen bekerja di dalam sandbox secara default dan meminta izin saat perlu melampaui batas tersebut.never: Agen tidak berhenti untuk menampilkan permintaan persetujuan.
Saat persetujuan bersifat interaktif, Anda juga dapat memilih siapa yang meninjaunya dengan
approvals_reviewer:
user: permintaan persetujuan ditampilkan kepada pengguna. Ini adalah default.auto_review: permintaan persetujuan yang memenuhi syarat dikirim ke agen peninjau (lihat tinjauan otomatis).
Akses penuh berarti menggunakan sandbox_mode = "danger-full-access" bersama dengan
approval_policy = "never". Sebaliknya, preset otomatisasi lokal berisiko lebih rendah
menggunakan sandbox_mode = "workspace-write" bersama dengan
approval_policy = "on-request", atau flag CLI yang sesuai
--sandbox workspace-write --ask-for-approval on-request. Setelah itu, Anda dapat mempertahankan
approvals_reviewer = "user" untuk persetujuan manual atau menetapkan
approvals_reviewer = "auto_review" untuk peninjauan persetujuan otomatis.
Jika agen perlu bekerja di lebih dari satu direktori, root yang dapat ditulisi memungkinkan Anda memperluas lokasi yang dapat diubahnya tanpa sepenuhnya menghapus sandbox. Jika Anda memerlukan batas kepercayaan yang lebih luas atau lebih sempit, sesuaikan mode sandbox default dan kebijakan persetujuan, alih-alih mengandalkan pengecualian sekali pakai.
Saat alur kerja memerlukan pengecualian tertentu, gunakan aturan. Aturan memungkinkan Anda mengizinkan, meminta persetujuan, atau melarang prefiks perintah di luar sandbox, yang sering kali lebih sesuai daripada memperluas akses secara umum. Untuk titik masuk pengaturan khusus IDE, lihat pengaturan ekstensi Codex IDE.
Tinjauan otomatis, jika tersedia, tidak mengubah batas sandbox. Ini adalah
salah satu kemungkinan approvals_reviewer untuk permintaan persetujuan pada batas tersebut, seperti
eskalasi sandbox, akses jaringan yang diblokir, atau pemanggilan alat dengan efek samping
yang masih memerlukan persetujuan. Tindakan yang sudah diizinkan di dalam sandbox berjalan
tanpa tinjauan tambahan. Untuk siklus hidup peninjau, jenis pemicu, semantik
penolakan, dan detail konfigurasi, lihat
tinjauan otomatis.
Detail platform tersedia dalam dokumentasi khusus platform. Untuk penyiapan Windows native, perilaku, dan pemecahan masalah, lihat Windows. Untuk persyaratan admin dan batasan tingkat organisasi pada sandboxing dan persetujuan, lihat Persetujuan agen & keamanan.