Izin
Konfigurasikan profil izin Codex beta untuk akses sistem file dan jaringan
allowed_permission_profiles terkelola merupakan pengecualian: pengaturan ini membuat Codex menggunakan
profil izin. Hapus pengaturan lama seperti
sandbox_mode dan [sandbox_workspace_write] sebelum menerapkan daftar yang diizinkan untuk profil
terkelola. Untuk peluncuran perusahaan dengan versi campuran, Anda dapat mempertahankan
persyaratan allowed_sandbox_modes terkelola sebagai batasan kompatibilitas
sementara hingga setiap klien menjalankan Codex 0.138.0 atau yang lebih baru.
Profil izin memungkinkan Anda menerapkan batas hak akses minimum pada perintah lokal yang dijalankan Codex atas nama Anda. Profil adalah kebijakan bernama yang menggabungkan aturan sistem file, yang menentukan hal yang dapat dibaca atau ditulis oleh perintah, dengan aturan jaringan, yang menentukan tujuan yang dapat dijangkau oleh perintah.
Gunakan profil untuk memberi Codex akses yang cukup bagi percakapan saat ini tanpa memberikan akses luas ke komputer atau jaringan Anda. Misalnya, profil hanya-baca dapat memungkinkan Codex memeriksa proyek tanpa mengeditnya, sedangkan profil dengan kemampuan menulis dapat membatasi pengeditan pada root ruang kerja yang dipilih.
Profil izin lokal didukung di macOS, Linux, WSL, dan Windows native. Lihat Cakupan dan pemberlakuan untuk detail dan catatan khusus platform.
Untuk pengaturan jaringan Codex Cloud saat ini, lihat Menghubungkan ke layanan. Untuk Codex Cloud (Legacy), lihat Akses internet.
Menentukan dan memilih profil
Codex menyertakan tiga profil izin bawaan:
:read-onlymempertahankan eksekusi perintah lokal dalam mode hanya-baca.:workspacemengizinkan penulisan di dalam root ruang kerja aktif dan direktori sementara sistem.:danger-full-accessmenghapus pembatasan sandbox lokal dan hanya boleh digunakan jika akses luas tersebut memang disengaja.
Buat profil bernama di bawah [permissions.<name>], lalu tetapkan kunci tingkat atas
default_permissions ke nama profil tersebut atau ke salah satu profil bawaan di atas.
Dalam contoh ini, project-edit adalah nama profil yang ditentukan pengguna, bukan nilai
bawaan.
Administrator perusahaan dapat menentukan profil dan membatasi profil yang dapat
dipilih pengguna melalui requirements.toml terkelola. Setelah
allowed_permission_profiles tersedia, profil yang tidak dicantumkan akan ditolak,
termasuk profil bawaan yang tidak dicantumkan dan profil yang ditambahkan dalam versi Codex mendatang. Lihat
Mengontrol profil izin yang tersedia
untuk konfigurasi terkelola yang direkomendasikan.
Profil khusus menggunakan dua konsep terkait:
[permissions.<name>.workspace_roots]menambahkan direktori konkret yang harus dianggap sebagai root ruang kerja untuk profil tersebut.[permissions.<name>.filesystem.":workspace_roots"]menentukan aturan sistem file yang diterapkan Codex di dalam setiap root ruang kerja efektif: root ruang kerja runtime sesi saat ini ditambah root yang ditentukan profil di atas.
Profil juga menggunakan model lapisan konfigurasi biasa. Lapisan dengan prioritas lebih tinggi dapat menambahkan atau mengganti entri di bawah nama profil yang sama tanpa menyatakan kembali seluruh profil.
Misalnya, konfigurasi tingkat organisasi dan konfigurasi tingkat pengguna dapat memperluas profil yang sama secara independen:
# /etc/codex/config.toml
[permissions.server.workspace_roots]
"~/code/server" = true# ~/.codex/config.toml
[permissions.server.workspace_roots]
"~/code/mobile-app" = trueSaat server aktif, kedua root ruang kerja berpartisipasi dalam profil
efektif.
default_permissions = "project-edit"
[features]
network_proxy = true
[permissions.project-edit.workspace_roots]
"~/code/app" = true
"~/code/shared-lib" = true
[permissions.project-edit.filesystem]
":minimal" = "read"
[permissions.project-edit.filesystem.":workspace_roots"]
"." = "write"
".devcontainer" = "read"
"**/*.env" = "deny"
[permissions.project-edit.network]
enabled = true
[permissions.project-edit.network.domains]
"api.openai.com" = "allow"
"objects.githubusercontent.com" = "allow"
"*.github.com" = "allow"
"tracking.example.com" = "deny"Profil ini:
- Membaca jalur runtime minimum yang diperlukan alat pengembang umum.
- Menerapkan aturan root ruang kerja yang sama pada sesi saat ini dan root yang ditentukan profil.
- Mempertahankan pengaturan yang berdekatan dengan IDE seperti
.devcontainer/sebagai hanya-baca di bawah setiap root. - Menolak file lingkungan yang cocok menggunakan aturan glob.
- Mengizinkan akses jaringan hanya melalui kebijakan domain yang dikonfigurasi.
Di dalam profil aktif, aturan penolakan yang lebih sempit tetap berlaku meskipun jalur yang lebih luas
dapat dibaca atau ditulis. Misalnya, profil dapat membuat root ruang kerja
dapat ditulis sambil tetap menetapkan jalur .env yang cocok ke deny.
Memperluas profil
Gunakan extends jika suatu profil sebagian besar sama dengan profil bawaan atau profil
bernama lainnya. Utamakan memperluas profil bawaan daripada memulai dari awal agar
perlindungan dasar tetap berlaku. Misalnya, memperluas :workspace akan mempertahankan
jalur .git, .agents, .codex, dan .aws di akar ruang kerja sebagai hanya-baca
kecuali Anda secara eksplisit menimpa aturan tersebut. Tetapkan induk satu kali, lalu tambahkan atau
timpa hanya aturan yang berbeda.
default_permissions = "project-edit"
[features]
network_proxy = true
[permissions.project-edit]
description = "Project editing with OpenAI API access."
extends = ":workspace"
[permissions.project-edit.filesystem.":workspace_roots"]
"**/*.env" = "deny"
[permissions.project-edit.network]
enabled = true
[permissions.project-edit.network.domains]
"api.openai.com" = "allow"Profil ini dimulai dengan :workspace, tetap menolak file .env yang cocok, dan
mengizinkan permintaan ke api.openai.com. Profil dapat memperluas :read-only,
:workspace, atau profil bernama lainnya. Profil tidak dapat memperluas
:danger-full-access; Codex juga menolak induk yang tidak dikenal dan siklus
pewarisan.
Spesifikasi konfigurasi
| Entri | Tipe / nilai | Default | Detail |
|---|---|---|---|
default_permissions |
Nama profil berupa string | Tidak ada | Menentukan nama profil izin yang diterapkan Codex secara default. Nama ini harus cocok dengan profil di bawah [permissions] atau profil bawaan seperti :workspace. Tetapkan secara eksplisit agar perilakunya dapat diprediksi; persyaratan terkelola hanya boleh mengabaikannya jika :workspace dan :read-only keduanya diizinkan secara eksplisit. Codex menggunakan pengaturan sandbox lama kecuali allowed_permission_profiles yang dikelola mengarahkannya untuk menggunakan profil izin dalam penyiapan ini. |
[permissions.<name>] |
Tabel | Tidak ada | Mendefinisikan profil bernama. default_permissions memilih satu profil sebagai default; pengaturan profil izin lainnya juga menggunakan nama profil tersebut. |
permissions.<name>.description |
String | Tidak ada | Memberikan deskripsi profil yang mudah dibaca manusia. Profil tidak mewarisi deskripsi induknya melalui extends. |
permissions.<name>.extends |
Nama profil berupa string | Tidak ada | Menggunakan profil bernama lain atau profil bawaan :read-only atau :workspace sebagai dasar profil ini. Codex menolak :danger-full-access, induk yang tidak dikenal, dan siklus pewarisan. |
[permissions.<name>.workspace_roots] |
Tabel | Tidak ada | Menambahkan direktori akar ruang kerja yang ditentukan profil, yang menerima aturan sistem file :workspace_roots bersama direktori akar ruang kerja runtime sesi saat ini. |
permissions.<name>.workspace_roots."<path>" |
boolean | false |
Menambahkan jalur ke kumpulan direktori akar ruang kerja profil jika nilainya true. Entri yang diatur ke false tetap tidak aktif. |
[permissions.<name>.filesystem] |
Tabel | Tidak ada | Memetakan jalur sistem file ke nilai akses atau pemetaan subjalur dengan cakupan tertentu. Tabel sistem file yang tidak ada atau kosong membuat akses sistem file tetap terbatas dan memunculkan peringatan saat startup. |
permissions.<name>.filesystem.glob_scan_max_depth |
Angka | Tidak ada | Membatasi ekspansi glob penolakan baca di Linux, WSL, dan Windows native saat Codex merekam kecocokan sebelum sandbox dimulai. Nilai yang lebih besar dapat menambah beban pemindaian saat startup. Gunakan nilai minimal 1 saat pola ** tanpa batas memerlukan praekspansi terbatas. |
[permissions.<name>.filesystem]."<path>" |
read, write, atau deny |
Tidak ada | Memberikan akses langsung untuk jalur yang didukung. deny menolak akses dan mengesampingkan entri write atau read yang sama spesifiknya. Codex menolak aturan tulis langsung yang tidak dapat diterapkan oleh runtime aktif. |
[permissions.<name>.filesystem."<path>"]."<subpath>" |
read, write, atau deny |
Tidak ada | Memberikan akses ke jalur turunan dari <path>. Gunakan . untuk jalur dasar. Subjalur lainnya harus berupa jalur turunan relatif dan tidak boleh memuat komponen . atau ... |
[permissions.<name>.network] |
Tabel | Tidak ada | Mengonfigurasi akses jaringan untuk perintah dan kebijakan yang diterapkan oleh proksi jaringan aktif. Aktifkan features.network_proxy kecuali persyaratan jaringan yang dikelola administrator sudah memulai proksi. |
permissions.<name>.network.enabled |
boolean | false |
Mengaktifkan akses jaringan untuk perintah dalam profil. Pengaturan ini tidak memulai proksi jaringan; tanpa proksi aktif, perintah dapat terhubung langsung tanpa pembatasan domain. |
[permissions.<name>.network.domains] |
Tabel | Tidak ada | Memetakan pola host ke allow atau deny. Aturan hanya berlaku saat proksi jaringan aktif. Proksi aktif memblokir permintaan domain jika tidak ada entri allow, dan entri penolakan mengesampingkan entri izin. |
permissions.<name>.network.domains."<pattern>" |
allow atau deny |
Tidak ada | Mendukung host yang cocok persis, *.example.com untuk subdomain, **.example.com untuk domain utama beserta subdomain, dan * sebagai wildcard global yang hanya dapat digunakan untuk mengizinkan akses. Pola host dinormalisasi dengan memangkas spasi di awal dan akhir, mengubahnya menjadi huruf kecil, menghapus titik di akhir, serta menghapus nomor port atau tanda kurung siku. |
[permissions.<name>.network.unix_sockets] |
Tabel | Tidak ada | Memetakan penggantian daftar izin soket Unix. Gunakan hanya untuk integrasi lokal seperti Docker. |
permissions.<name>.network.unix_sockets."<path>" |
allow atau deny |
Tidak ada | Menambahkan jalur soket Unix absolut ke daftar izin efektif dengan allow, atau menolaknya dengan deny. Entri yang ditolak tidak disertakan dalam daftar izin efektif. |
permissions.<name>.network.proxy_url |
String URL | http://127.0.0.1:3128 |
Listener proksi HTTP yang digunakan untuk HTTP_PROXY, HTTPS_PROXY, variabel proksi WebSocket, dan variabel lingkungan proksi alat terkait. |
permissions.<name>.network.enable_socks5 |
boolean | true |
Mengaktifkan listener SOCKS5 yang digunakan untuk ALL_PROXY dan variabel proksi FTP. |
permissions.<name>.network.socks_url |
String URL | http://127.0.0.1:8081 |
Alamat listener SOCKS5. |
permissions.<name>.network.enable_socks5_udp |
boolean | true |
Mengaktifkan dukungan UDP SOCKS5 saat listener SOCKS5 diaktifkan. |
permissions.<name>.network.allow_upstream_proxy |
boolean | true |
Memungkinkan proksi sandbox jaringan mengikuti pengaturan upstream HTTP(S)_PROXY dan ALL_PROXY untuk permintaan keluar. |
permissions.<name>.network.allow_local_binding |
boolean | false |
Menonaktifkan perlindungan jaringan lokal/privat jika nilainya true. Jika nilainya false, literal lokal yang cocok persis seperti localhost atau 127.0.0.1 harus dimasukkan secara eksplisit ke daftar izin, dan nama host yang diresolusikan ke IP lokal atau privat tetap diblokir. |
permissions.<name>.network.dangerously_allow_non_loopback_proxy |
boolean | false |
Memungkinkan listener proksi mengikat alamat non-loopback. Biarkan tidak diatur untuk pengembangan lokal biasa. |
permissions.<name>.network.dangerously_allow_all_unix_sockets |
boolean | false |
Melewati daftar izin soket Unix jika penerusan melalui proksi soket Unix didukung. Ini merupakan jalur pengecualian lokal yang luas. |
Izin sistem file
Entri sistem file menggunakan read, write, atau deny:
| Akses | Arti |
|---|---|
read |
Mengizinkan perintah membaca file dan mencantumkan direktori di bawah jalur tersebut. Perintah tidak dapat membuat, mengubah, mengganti nama, atau menghapus file di sana. |
write |
Mengizinkan perintah membaca dan mengubah file di bawah jalur tersebut, termasuk membuat, mengganti nama, dan menghapus file jika diizinkan OS. |
deny |
Menolak pembacaan dan penulisan di bawah jalur tersebut. Gunakan untuk mengecualikan subjalur yang ditolak dari pemberian akses read atau write yang lebih luas. |
Entri yang lebih spesifik mengungguli entri yang lebih luas. Saat dua entri menargetkan
jalur yang sama, deny lebih diprioritaskan daripada write, dan write lebih diprioritaskan
daripada read.
Prioritas ini memungkinkan profil mendeskripsikan area kerja yang luas terlebih dahulu, lalu mengecualikan file atau direktori yang harus tetap tidak dapat dibaca:
[permissions.project-edit.filesystem]
":minimal" = "read"
[permissions.project-edit.filesystem.":workspace_roots"]
"." = "write"
".devcontainer" = "read"
"**/*.env" = "deny"Dalam contoh ini, root ruang kerja tetap dapat ditulis, .devcontainer/ tetap
dapat dibaca tanpa menjadi dapat ditulis, dan file lingkungan yang cocok tetap
tidak tersedia bagi perintah dalam sandbox.
Jalur yang lebih spesifik juga dapat membuka kembali subpohon yang lebih sempit di dalam penolakan yang lebih luas:
[permissions.project-edit.filesystem]
"~/Documents" = "deny"
"~/Documents/codex" = "write"Bentuk jalur yang didukung:
| Jalur | Arti | Subjalur tercakup |
|---|---|---|
:root |
Root sistem file | Khusus . |
:minimal |
Jalur platform dan runtime yang diperlukan alat umum | Khusus . |
:workspace_roots |
Root ruang kerja sesi saat ini ditambah root ruang kerja yang ditentukan profil dan diaktifkan | Ya |
:tmpdir |
Lokasi $TMPDIR, jika tersedia |
Khusus . |
:slash_tmp |
Folder /tmp, jika ada |
Khusus . |
/absolute/path |
Jalur absolut platform, seperti /path di macOS/Linux/WSL atau C:\path di Windows native |
Ya |
~/path |
Jalur di bawah direktori home pengguna saat ini | Ya |
Di Windows native, jalur relatif terhadap home juga dapat menggunakan garis miring terbalik, seperti
~\work.
Gunakan :root hanya jika profil sengaja memerlukan cakupan baca yang luas:
[permissions.audit.filesystem]
":root" = "read"Gunakan entri bertingkat di bawah :workspace_roots untuk membatasi akses ke subjalur relatif
terhadap root ruang kerja:
[permissions.project-edit.filesystem.":workspace_roots"]
"." = "write" # each workspace root
"docs" = "read" # each workspace-root docs directory
"generated" = "deny" # each workspace-root generated directorySubjalur bertingkat harus tetap berada di dalam root ruang kerjanya. Penelusuran induk seperti
../other-repo ditolak.
Menolak pembacaan dengan jalur persis atau glob
Gunakan deny untuk file atau subpohon yang tidak boleh dibaca Codex, meskipun aturan
profil yang lebih luas memberikan akses di sekitarnya. Jalur persis cocok untuk lokasi stabil
seperti ~/.ssh. Pola glob lebih cocok jika profil perlu mencakup
sekumpulan file sensitif yang lokasi persisnya berbeda-beda antar-repositori.
Jika glob berada di bawah :workspace_roots, Codex menafsirkannya secara relatif terhadap setiap
root ruang kerja efektif. Contoh:
[permissions.project-edit.filesystem.":workspace_roots"]
"**/*.env" = "deny"Aturan ini menolak pembacaan file .env yang cocok dan ditemukan di bawah setiap root ruang kerja runtime atau
yang ditentukan profil. Gunakan aturan ini jika Anda ingin mempertahankan penulisan normal ke
ruang kerja sekaligus menjaga agar file lingkungan, rahasia yang dihasilkan, atau file serupa
yang memuat kredensial tidak dapat dibaca.
Di Linux, WSL, dan Windows native dengan MXC atau elevated, kecocokan glob penolakan baca
didata saat setiap proses dalam sandbox dimulai. File yang cocok dan dibuat setelahnya tidak
ditambahkan ke daftar penolakan proses tersebut dan tetap dapat dibaca jika izin lainnya
mengizinkan akses. Misalnya, shell, skrip, pemantau, atau server pengembangan
yang berjalan lama dapat membaca file .env yang cocok dan dibuat setelah proses tersebut dimulai.
Snapshot ini berlaku selama masa hidup proses dalam sandbox, bukan sepanjang sesi Codex secara keseluruhan. Memulai proses baru dalam sandbox melalui Codex akan mendata kecocokan kembali; terus menggunakan proses yang sudah berjalan tidak memperbarui daftar penolakannya. Jangan mengandalkan glob untuk memblokir file yang baru dibuat dalam proses yang sedang berjalan tersebut. Lihat Kompatibilitas Windows MXC untuk batasan khusus Windows.
Pola glob deny didukung sebagai aturan penolakan baca. Glob read atau write
kurang portabel pada sandbox Linux, WSL, dan Windows native, jadi utamakan jalur
persis atau aturan subpohon seperti "docs/**" = "read" jika memungkinkan.
Di Linux, WSL, dan Windows native, pola penolakan baca ** tanpa batas mungkin memerlukan
praperluasan terbatas sebelum sandbox dimulai. Tetapkan glob_scan_max_depth saat
Anda menggunakan pola tanpa batas seperti "**/*.env" = "deny":
[permissions.project-edit.filesystem]
glob_scan_max_depth = 3
[permissions.project-edit.filesystem.":workspace_roots"]
"**/*.env" = "deny"glob_scan_max_depth harus bernilai minimal 1. Nilai yang lebih tinggi memindai lebih dalam sebelum
sandbox dimulai, sehingga dapat menambah beban startup di Linux, WSL, dan Windows native.
Jika Anda memilih untuk tidak menggunakan ekspansi terbatas, cantumkan kedalaman eksplisit seperti
*.env, */*.env, dan */*/*.env.
Tambahkan root ruang kerja yang dapat digunakan kembali ke profil jika aturan yang sama harus diterapkan pada lebih dari root sesi saat ini:
[permissions.project-edit.workspace_roots]
"~/code/app" = true
"~/code/shared-lib" = trueSaat profil ini aktif, Codex menerapkan aturan :workspace_roots pada
root ruang kerja runtime sesi saat ini dan setiap root ruang kerja yang ditentukan profil
dan diaktifkan.
Di Windows native, jalur huruf drive seperti D:\work dan jalur UNC seperti
\\server\share didukung sebagai jalur absolut.
Izin jaringan
Akses jaringan dan pemfilteran jaringan merupakan pengaturan terpisah. Tetapkan
permissions.<name>.network.enabled = true agar perintah dapat mengakses jaringan,
dan aktifkan features.network_proxy untuk memberlakukan aturan domain profil:
[features]
network_proxy = true
[permissions.project-edit.network]
enabled = true
[permissions.project-edit.network.domains]
"example.com" = "allow" # exact host
"*.example.com" = "allow" # subdomains only
"**.example.com" = "allow" # apex and subdomains
"ads.example.com" = "deny" # deny wins over allowPerilaku yang dihasilkan bergantung pada kedua pengaturan:
- Jaringan nonaktif: Perintah tidak dapat mengakses jaringan, terlepas dari fitur proksi.
- Jaringan aktif, proksi nonaktif: Perintah memiliki akses jaringan langsung tanpa batasan. Aturan domain dalam profil izin tidak diberlakukan.
- Jaringan aktif, proksi aktif: Perintah menggunakan proksi, yang memberlakukan aturan domain profil. Jika proksi aktif tidak memiliki domain yang diizinkan, proksi akan memblokir tujuan eksternal.
Menambahkan [permissions.<name>.network.domains] atau menetapkan
permissions.<name>.network.enabled = true tidak mengaktifkan
features.network_proxy. Sebagai alternatif, administrator dapat mengaktifkan
proksi dengan [experimental_network] di requirements.toml. Lihat
Konfigurasi terkelola.
Saat aktif, proksi sandbox jaringan terikat ke listener lokal secara default:
[permissions.project-edit.network]
enabled = true
proxy_url = "http://127.0.0.1:3128"
enable_socks5 = true
socks_url = "http://127.0.0.1:8081"
enable_socks5_udp = trueBiarkan pengaturan listener ini pada nilai default kecuali Anda mengintegrasikannya dengan
runtime tertentu. Kunci jaringan dangerously_* merupakan jalan keluar untuk
lingkungan khusus dan tidak boleh digunakan untuk pengembangan lokal biasa.
Jaringan lokal dan pribadi
Saat proksi jaringan aktif, Codex secara default menerapkan perlindungan jaringan lokal/pribadi sebagai pertahanan terhadap pengikatan ulang DNS dan akses yang tidak disengaja ke layanan lokal. Untuk sengaja mengizinkan target lokal literal, tambahkan host atau literal IP persis ke daftar yang diizinkan:
[permissions.project-edit.network.domains]
"localhost" = "allow"
"127.0.0.1" = "allow"Tetapkan allow_local_binding = true hanya jika profil harus menjangkau nama host dalam daftar yang
diizinkan yang diresolusikan ke alamat lokal atau pribadi:
[permissions.project-edit.network]
enabled = true
allow_local_binding = true
[permissions.project-edit.network.domains]
"localhost" = "allow"Soket Unix
Pemroksian soket Unix merupakan jalan keluar lokal untuk alat seperti Docker. Gunakan secukupnya:
[permissions.project-edit.network.unix_sockets]
"/var/run/docker.sock" = "allow"
"/tmp/old.sock" = "deny"Gunakan deny untuk menolak jalur soket, termasuk entri izin yang diwarisi. Jalur
soket yang ditolak tidak disertakan dalam daftar efektif yang diizinkan.
Saat soket Unix diaktifkan, pertahankan agar listener proksi terikat ke alamat loopback.
Bermigrasi dari pengaturan sandbox lama
Profil izin menggantikan kombinasi lama sandbox_mode dan
sandbox_workspace_write jika Anda ingin satu profil yang dapat digunakan kembali untuk mendeskripsikan perilaku
sistem file dan jaringan. Gunakan salah satu sistem untuk satu sesi, jangan
keduanya.
Titik awal yang disarankan:
- Untuk alur kerja hanya-baca, gunakan profil bawaan
:read-onlyatau tentukan profil khusus dengan akses baca hanya jika diperlukan. - Untuk mengedit ruang kerja, gunakan profil bawaan
:workspaceatau tentukan profil khusus yang menulis melalui:workspace_rootsdan hanya menambahkan jalur sementara atau cache tambahan yang diperlukan alur kerja. - Untuk eksekusi lokal tanpa batas, gunakan
:danger-full-accesshanya jika Anda sengaja menginginkan model akses lokal paling luas.
Profil mendeskripsikan postur default lokal untuk suatu sesi. Persyaratan terkelola organisasi tetap dapat menambahkan pembatasan yang tidak boleh diperluas oleh konfigurasi pengguna. Lihat Konfigurasi terkelola untuk batasan sistem file dan jaringan yang diberlakukan admin.
Cakupan dan pemberlakuan
Akses komputer lokal dengan Work Cloud dan kebijakan lingkungan
Tinjau kebijakan untuk setiap lingkungan tempat akses komputer lokal dengan Work Cloud dijalankan:
- Persyaratan perusahaan: Untuk Work dengan akses lokal dan dots, kebijakan Global yang didukung mengatur orkestrator cloud bersama saat kebijakan terkelola diaktifkan; persyaratan eksekusi lokal yang berlaku mengatur komputer yang terhubung.
- Eksekusi cloud: Kontainer cloud Work menggunakan kebijakan Work Cloud yang sudah ada.
- Urutan kebijakan lokal: MDM dan persyaratan perangkat terkelola lama memiliki prioritas lebih tinggi daripada Agent Security. File persyaratan sistem perangkat memiliki prioritas lebih rendah daripada Agent Security.
- Prioritas kebijakan: Kebijakan dengan prioritas lebih tinggi berlaku meskipun kebijakan dengan prioritas lebih rendah lebih spesifik. Dalam satu kebijakan, penggantian lingkungan khusus OS lebih diprioritaskan daripada penggantian lingkungan untuk semua OS, diikuti oleh Global.
Beberapa persyaratan memiliki aturan penggabungan khusus untuk setiap field. Lihat Konfigurasi terkelola dan Referensi Konfigurasi untuk mengetahui field yang didukung dan batasan runtime. Jangan berasumsi bahwa Work Cloud mendukung profil izin Codex yang ditampilkan di sini.
Profil izin menentukan batas untuk eksekusi perintah lokal dalam sandbox. Gunakan profil bersama kebijakan persetujuan dan kontrol terpisah untuk pencarian web, konektor, MCP server, browser bawaan, Computer Use, dan Codex cloud.
Hal yang dikontrol profil
- Eksekusi perintah lokal: Profil izin mengatur perintah dalam sandbox yang berjalan di komputer Anda. Konektor, MCP server, antarmuka browser atau computer-use, pengaturan lingkungan Codex cloud, dan eskalasi yang disetujui menggunakan kontrolnya masing-masing.
- Penulisan sistem file: Profil dengan kemampuan menulis dapat membuat perubahan permanen. Perlakukan penulisan ke skrip, langkah build, hook pengelola paket, file awal shell, dan direktori bersama sebagai hal sensitif karena alat atau pengguna lain dapat menjalankan file tersebut di luar konteks sandbox asal.
- Tujuan keluar: Aturan domain jaringan membatasi tujuan lalu lintas perintah dalam sandbox hanya saat proksi jaringan aktif. Aturan tersebut tidak menentukan apakah tujuan yang diizinkan dapat dipercaya, dan aturan izin wildcard tetap luas.
- Layanan lokal: Proksi jaringan aktif memblokir target jaringan lokal dan pribadi
secara default. Menambahkan
localhost, IP pribadi, atau soket Unix ke daftar yang diizinkan, atau menetapkanallow_local_binding = trueakan secara eksplisit membuka akses ke layanan lokal.
Hal yang tidak dikontrol proksi jaringan
Proksi jaringan hanya memfilter lalu lintas dari perintah lokal yang berjalan di dalam sandbox. Proksi tidak menerapkan daftar domain profil yang diizinkan pada:
- Pencarian web: Alat pencarian yang dihosting menggunakan pengaturan aksesnya sendiri. Gunakan
web_searchdan, untuk klien terkelola,allowed_web_search_modesuntuk mengontrolnya.tools.web_search.allowed_domainsmemfilter hasil pencarian, bukan akses jaringan untuk perintah. - Aplikasi dan konektor: Alat berbasis konektor menggunakan koneksi di sisi layanan, izin ruang kerja, serta pengaturan aplikasi atau alatnya sendiri.
- MCP server: MCP server lokal dan jarak jauh menggunakan proses atau
transportasinya sendiri. Kontrol server tersebut dengan konfigurasi
mcp_serversdan daftar izin server terkelola. - Browser dan Computer Use: Navigasi browser dan tindakan penggunaan komputer menggunakan kontrol fitur dan persetujuannya sendiri.
- Lalu lintas layanan Codex: Permintaan model, autentikasi, dan layanan klien lainnya menggunakan pengaturan HTTP dan proksi sistem klien yang terpisah.
- Codex Cloud: Tugas ini menggunakan pengaturan jaringan milik lingkungannya sendiri. Codex Cloud (Legacy) memiliki pengaturan akses internet yang terpisah.
Untuk membatasi antarmuka ini, konfigurasikan setiap kemampuan secara langsung. Daftar jaringan perintah yang diizinkan bukanlah kebijakan jaringan global untuk setiap tindakan yang dapat dilakukan Codex.
Cara kerja pemberlakuan
- Di macOS, Codex menggunakan profil sandbox Seatbelt. Jika kebijakan yang dipilih tidak dapat diberlakukan oleh sandbox platform, Codex menolak menjalankan perintah alih-alih diam-diam menjalankannya tanpa sandbox.
- Di Linux dan WSL, Codex menggunakan bubblewrap
dan seccomp
untuk memberlakukan pembatasan sistem berkas. Opsi Landlock lama tidak dapat mengisolasi
soket Unix app-server dan ditolak untuk kebijakan yang membatasi sistem berkas.
Nonaktifkan
features.use_legacy_landlocksaat melakukan peningkatan versi. Host yang memblokir operasi bubblewrap yang diperlukan tidak dapat menjalankan kebijakan ini. - Di Windows, MXC menggunakan isolasi proses untuk izin sistem berkas dan jaringan.
Tinjau kompatibilitas MXC
sebelum mengaktifkannya. Opsi cadangan lama
elevatedmenggunakan pengguna sandbox khusus dengan hak akses lebih rendah, batas izin sistem berkas, dan aturan firewall.unelevatedadalah opsi cadangan lama dengan isolasi jaringan yang lebih lemah dan tidak dapat memberlakukan setiap pengecualian akses baca/tulis terpisah, sehingga kebijakan yang tidak didukung akan ditolak. Gunakan WSL ketika Anda memerlukan model sandbox Linux.
Panduan operasional
Pilih profil paling sempit yang tetap memungkinkan tugas selesai, terutama saat Anda memberikan akses tulis atau jaringan keluar. Selaraskan kebijakan persetujuan, penanganan rahasia, dan aturan izin dengan tingkat akses tersebut.
Profil umum
Hanya-baca dengan daftar jaringan yang diizinkan
default_permissions = "readonly-net"
[features]
network_proxy = true
[permissions.readonly-net.filesystem]
":minimal" = "read"
[permissions.readonly-net.filesystem.":workspace_roots"]
"." = "read"
[permissions.readonly-net.network]
enabled = true
[permissions.readonly-net.network.domains]
"api.openai.com" = "allow"Akses file yang terbatas pada ruang kerja
Berikut adalah contoh profil izin yang akan membuat folder ruang kerja Anda dapat ditulis oleh Codex sekaligus menolak pembacaan seluruh sistem file lainnya (dengan pengecualian terbatas, sebagaimana ditentukan oleh :minimal).
default_permissions = "workspace-only"
[permissions.workspace-only]
# By extending the :workspace profile, you get Codex's safeguards to ensure
# paths such as .git/, .agents/, .codex/, and .aws/ within a workspace root
# are read-only while the rest of the folder is writable.
extends = ":workspace"
[permissions.workspace-only.filesystem]
# By default, deny read access to all files on disk.
":root" = "deny"
# Though in practice, a software agent needs to be able to read folders that
# contain common tools, such as `/usr/bin`, to get work done, so grant access
# to a "minimal" set of files and folders, as determined by Codex.
":minimal" = "read"
# By extending the :workspace profile, :tmpdir and :slash_tmp are "write" by
# default, though you can deny access to them altogether, if desired.
":tmpdir" = "deny"
":slash_tmp" = "deny"Penulisan ruang kerja tanpa jaringan
default_permissions = "project-edit"
[permissions.project-edit.filesystem]
":minimal" = "read"
[permissions.project-edit.filesystem.":workspace_roots"]
"." = "write"
[permissions.project-edit.network]
enabled = falsePenulisan ruang kerja dengan akses web publik
default_permissions = "workspace-net"
[features]
network_proxy = true
[permissions.workspace-net.filesystem]
":minimal" = "read"
[permissions.workspace-net.filesystem.":workspace_roots"]
"." = "write"
[permissions.workspace-net.network]
enabled = true
[permissions.workspace-net.network.domains]
"*" = "allow"Gunakan aturan izin global "*" hanya jika Anda bermaksud mengizinkan akses jaringan
publik. Aturan penolakan dapat mempersempit daftar izin yang luas.