Konfigurasi terkelola
Terapkan persyaratan runtime pada seluruh klien lokal yang didukung dan distribusikan nilai default terkelola
Konfigurasi terkelola mengontrol perilaku runtime lokal yang didukung untuk kapabilitas yang tercakup dalam aplikasi desktop ChatGPT, Codex CLI, dan ekstensi IDE. Persyaratan yang didukung dapat berbeda menurut klien dan versi. Konfigurasi terkelola tidak memberikan akses ke ruang kerja ChatGPT, menetapkan lisensi pengguna, atau menggantikan kontrol akses berbasis peran (RBAC) ruang kerja. Gunakan Peran dan izin ruang kerja untuk akses fitur ruang kerja dan halaman ini untuk kebijakan runtime lokal.
Admin perusahaan dapat mengontrol perilaku klien lokal yang didukung dengan dua cara:
- Persyaratan: batasan yang diterapkan admin dan tidak dapat ditimpa pengguna.
- Nilai default terkelola: nilai awal yang diterapkan saat klien yang didukung diluncurkan. Pengguna tetap dapat mengubah pengaturan selama suatu proses berjalan; klien menerapkan kembali nilai default terkelola saat dimulai berikutnya.
Persyaratan yang diterapkan admin (requirements.toml)
Persyaratan membatasi pengaturan yang sensitif terhadap keamanan (kebijakan persetujuan, peninjau persetujuan, kebijakan peninjauan otomatis, mode sandbox, profil izin, mode pencarian web, hook terkelola, server MCP yang dapat diaktifkan pengguna, serta sumber marketplace plugin yang dikonfigurasi pengguna yang dapat mereka tambahkan, gunakan untuk menginstal, atau segarkan). Saat menyelesaikan konfigurasi (misalnya dari config.toml, file profil, atau penimpaan konfigurasi CLI), jika suatu nilai bertentangan dengan aturan yang diterapkan, klien lokal kembali ke nilai yang kompatibel dan memberi tahu pengguna. Jika Anda mengonfigurasi daftar yang diizinkan mcp_servers, klien hanya mengaktifkan server MCP apabila nama dan identitasnya sama-sama cocok dengan entri yang disetujui; jika tidak, klien menonaktifkannya.
Persyaratan juga dapat membatasi flag fitur melalui tabel [features] dalam requirements.toml. Perhatikan bahwa fitur tidak selalu sensitif terhadap keamanan, tetapi perusahaan dapat menetapkan nilainya jika diinginkan. Kunci yang tidak dicantumkan tetap tidak dibatasi.
Untuk Codex 0.138.0 atau yang lebih baru, utamakan profil izin
dengan allowed_permission_profiles dan default_permissions terkelola. Gunakan
allowed_sandbox_modes hanya untuk deployment lama yang masih mengonfigurasi
sandbox_mode.
Untuk daftar kunci yang tepat, lihat bagian requirements.toml dalam Referensi Konfigurasi.
Lokasi dan urutan prioritas
Setiap klien lokal yang didukung menyusun persyaratan dari prioritas terendah hingga tertinggi:
requirements.tomlsistem (/etc/codex/requirements.tomlpada sistem Unix, termasuk Linux dan macOS, atau%ProgramData%\OpenAI\Codex\requirements.tomlpada Windows).- Persyaratan yang dikelola perusahaan dan dikirimkan dalam bundel konfigurasi cloud.
- Kolom lama
managed_config.tomlyang ditafsirkan ulang oleh klien lokal sebagai persyaratan. - Preferensi terkelola macOS (MDM) yang dikirimkan melalui
com.openai.codex:requirements_toml_base64.
Lapisan dengan prioritas lebih tinggi menimpa nilai skalar dan daftar biasa dari lapisan
berprioritas lebih rendah. Tabel digabungkan berdasarkan kunci, sedangkan persyaratan seperti aturan, hook, dan
pembatasan sistem file memiliki perilaku penyusunan khusus untuk setiap kolom. Gunakan
referensi requirements.toml
untuk skema saat ini, alih-alih menganggap bahwa setiap kolom digabungkan dengan cara yang
sama.
Untuk kompatibilitas mundur, klien lokal yang didukung menafsirkan ulang kolom lama
approval_policy, approvals_reviewer, dan sandbox_mode sebagai
persyaratan. Konversi ini menambahkan pilihan kompatibilitas bila diperlukan; gunakan
requirements.toml untuk daftar yang diizinkan secara eksplisit.
Persyaratan yang dikelola melalui cloud
Saat pengguna masuk dengan ChatGPT pada paket yang didukung, klien lokal yang didukung
dapat menerima persyaratan yang diterapkan admin dan terkait dengan ruang kerja. Ini adalah
saluran pengiriman untuk kebijakan yang kompatibel dengan requirements.toml. Hal ini tidak memberikan
akses ruang kerja atau menggantikan RBAC ruang kerja.
Buka Konfigurasi terkelola untuk membuat dan menetapkan persyaratan yang dikelola melalui cloud. Sebagai contoh, kebijakan ini mewajibkan klien yang didukung menggunakan residensi data Amerika Serikat, membatasi pilihan persetujuan dan sandbox, serta menampilkan permintaan konfirmasi sebelum titik masuk shell yang didukung dijalankan:
enforce_residency = "us"
allowed_approval_policies = ["on-request"]
allowed_sandbox_modes = ["read-only", "workspace-write"]
[rules]
prefix_rules = [
{ pattern = [{ any_of = ["bash", "sh", "zsh"] }], decision = "prompt", justification = "Require explicit approval for shell entry points" },
]Pastikan setiap versi klien terkelola mendukung kunci yang Anda pilih, dan uji kebijakan tersebut dengan kelompok kecil sebelum menetapkannya ke seluruh organisasi. Gunakan referensi konfigurasi untuk skema saat ini dan antarmuka administrasi untuk perilaku penetapan saat ini.
Layanan memilih lapisan persyaratan yang dikelola perusahaan yang berlaku bagi identitas yang telah masuk. Klien lokal mengevaluasi lapisan tersebut bersama sumber persyaratan lain yang dijelaskan dalam Lokasi dan urutan prioritas. Gunakan antarmuka administrasi saat ini untuk pembuatan dan penetapan di sisi ruang kerja. Jangan mengandalkan algoritma pencocokan grup yang disalin; layanan administrasi mengendalikan perilaku tersebut dan dapat mengubahnya secara independen dari format persyaratan lokal.
Untuk kunci dan contoh yang didukung, lihat
Contoh requirements.toml dan
referensi requirements.toml.
Cara klien lokal menerapkan persyaratan yang dikelola melalui cloud
Saat pengguna memulai klien lokal yang didukung dan masuk dengan ChatGPT pada paket yang didukung, klien terlebih dahulu memeriksa entri cache yang valid dan cocok dengan identitas. Jika tidak tersedia entri yang valid, klien mengambil bundel yang berlaku dengan percobaan ulang dan menulis entri cache bertanda tangan jika berhasil. Jika permintaan gagal atau kehabisan waktu dan tidak tersedia cache yang valid, pemuatan bundel konfigurasi cloud akan menghasilkan kesalahan, bukan dimulai secara diam-diam tanpa lapisan persyaratan yang dikelola melalui cloud.
Setelah cache diselesaikan, klien menyusun persyaratan cloud bersama lapisan persyaratan lain yang dijelaskan di atas. Penyegaran di latar belakang dapat memperbarui cache untuk proses mulai berikutnya; penyegaran tersebut tidak menggantikan persyaratan yang sudah dimuat ke dalam proses saat ini.
Contoh requirements.toml
Contoh ini memblokir --ask-for-approval never dan --sandbox danger-full-access (termasuk --yolo):
allowed_approval_policies = ["untrusted", "on-request"]
allowed_sandbox_modes = ["read-only", "workspace-write"]Menonaktifkan Appshots
Untuk menonaktifkan Appshots bagi pengguna terkelola, tetapkan persyaratan tingkat teratas allow_appshots:
allow_appshots = falseDi tempat Appshots tersedia, allow_appshots = false akan menonaktifkannya. Jika Anda
tidak mencantumkan kunci tersebut, persyaratan tidak membatasi Appshots dan pemeriksaan
ketersediaan produk normal akan berlaku. Klien app-server yang membaca persyaratan efektif
melalui configRequirements/read menerima pembatasan yang sama dengan
allowAppshots; nilai allowAppshots yang tidak dicantumkan atau bernilai null tidak menonaktifkan
Appshots.
Menonaktifkan kendali jarak jauh perangkat
Untuk menonaktifkan kendali jarak jauh perangkat
bagi pengguna terkelola, tetapkan persyaratan tingkat teratas allow_remote_control:
allow_remote_control = falseDi tempat kendali jarak jauh perangkat didukung, allow_remote_control = false
akan menonaktifkannya. Jika Anda tidak mencantumkan kunci tersebut, persyaratan tidak membatasi kendali jarak jauh
perangkat dan pemeriksaan ketersediaan produk normal akan berlaku. Persyaratan ini tidak
menonaktifkan koneksi jarak jauh SSH.
Mengontrol profil izin yang tersedia
Gunakan allowed_permission_profiles untuk mengontrol profil izin
bawaan dan kustom yang dapat dipilih pengguna. Ini adalah padanan profil izin
untuk allowed_sandbox_modes; gunakan daftar yang diizinkan yang sesuai dengan cara
pengguna Anda memilih izin.
Daftar profil izin yang diizinkan memerlukan Codex 0.138.0 atau yang lebih baru. Codex 0.137.0 dan
versi sebelumnya mengabaikan allowed_permission_profiles dan
default_permissions terkelola.
Gunakan contoh profil izin di bawah hanya setelah setiap klien terkelola menjalankan rilis yang mendukungnya. Jangan melakukan deployment profil kustom terkelola hingga peningkatan seluruh armada selesai.
Jika ada, tabel tersebut merupakan daftar lengkap profil yang diizinkan. Tabel ini mengizinkan
profil yang ditetapkan ke true dan menolak profil yang tidak dicantumkan atau ditetapkan ke false, termasuk
profil bawaan yang ditambahkan dalam versi Codex mendatang.
Mengizinkan profil standar
Kebijakan ini mengizinkan akses hanya baca dan akses ruang kerja, tetapi bukan akses penuh:
default_permissions = ":workspace"
[allowed_permission_profiles]
":read-only" = true
":workspace" = true
# ":danger-full-access" is omitted, so it is denied.Menambahkan nilai default hak akses minimum yang terkelola
Admin dapat menentukan profil kustom dalam sumber persyaratan yang sama. Gunakan
nama profil khusus organisasi yang tidak akan bertabrakan dengan nama dalam konfigurasi
yang dimuat pengguna. Nama kustom tidak boleh diawali dengan : atau menggunakan nama khusus filesystem.
Jangan melakukan deployment profil kustom terkelola ke klien yang menjalankan Codex 0.137.0 atau versi sebelumnya. Klien tersebut mengenali tabel profil, tetapi tidak mengenali nilai default terkelola yang memilihnya.
Sebagai contoh:
default_permissions = "acme_review_only"
[allowed_permission_profiles]
":read-only" = true
":workspace" = true
acme_review_only = true
# ":danger-full-access" is intentionally omitted, so it is denied.
[permissions.acme_review_only]
description = "Review code without modifying the workspace."
extends = ":read-only"Hanya mengizinkan profil yang ditentukan perusahaan
Jangan cantumkan profil bawaan apa pun jika pengguna hanya boleh memilih profil yang ditentukan admin:
default_permissions = "acme_workspace"
[allowed_permission_profiles]
acme_workspace = true
[permissions.acme_workspace]
description = "Workspace access with sensitive files denied."
extends = ":workspace"
[permissions.acme_workspace.filesystem]
glob_scan_max_depth = 3
[permissions.acme_workspace.filesystem.":workspace_roots"]
"**/*.env" = "deny"Profil kustom dapat memperluas :workspace meskipun pengguna tidak dapat memilih
profil bawaan :workspace secara langsung.
Menonaktifkan profil yang diizinkan oleh sumber lain
Daftar izin digabungkan berdasarkan nama profil. Karena persyaratan cloud memiliki
prioritas lebih tinggi daripada persyaratan sistem, persyaratan cloud dapat menggunakan false
untuk menonaktifkan profil yang diizinkan oleh file sistem.
Persyaratan cloud:
default_permissions = ":read-only"
[allowed_permission_profiles]
":read-only" = true
":workspace" = falsePersyaratan sistem:
[allowed_permission_profiles]
":read-only" = true
":workspace" = true # Not honored because cloud requirements set this to false.Tetapkan default_permissions secara eksplisit ke profil yang diizinkan. Jika tidak dicantumkan,
runtime lokal menggunakan :workspace sebagai nilai default hanya jika :workspace dan
:read-only sama-sama diizinkan secara eksplisit. Jika allowed_permission_profiles
tidak ada, persyaratan terkelola tidak membatasi nama profil yang dapat
dipilih pengguna. Setiap entri harus menyebutkan profil bawaan atau profil kustom yang ditentukan dalam
konfigurasi atau sumber persyaratan yang dimuat. Tentukan profil kustom dalam persyaratan
terkelola agar perilakunya dapat dikontrol secara terpusat.
Menimpa persyaratan sandbox berdasarkan host
Gunakan [[remote_sandbox_config]] jika satu kebijakan terkelola harus menerapkan persyaratan
sandbox yang berbeda pada host yang berbeda. Sebagai contoh, Anda dapat mempertahankan nilai default yang lebih ketat
untuk laptop sekaligus mengizinkan penulisan ruang kerja pada dev box atau runner CI
yang cocok. Entri khusus host saat ini hanya menimpa allowed_sandbox_modes:
allowed_sandbox_modes = ["read-only"]
[[remote_sandbox_config]]
hostname_patterns = ["*.devbox.example.com", "runner-??.ci.example.com"]
allowed_sandbox_modes = ["read-only", "workspace-write"]Runtime lokal membandingkan setiap entri hostname_patterns dengan
nama host yang diselesaikan dengan upaya terbaik. Runtime mengutamakan nama domain yang sepenuhnya memenuhi syarat jika
tersedia dan kembali ke nama host lokal jika tidak. Pencocokan tidak membedakan huruf besar-kecil;
* cocok dengan urutan karakter apa pun, dan ? cocok dengan satu karakter.
Entri [[remote_sandbox_config]] pertama yang cocok akan digunakan dalam sumber
persyaratan yang sama. Jika tidak ada entri yang cocok, runtime lokal mempertahankan
allowed_sandbox_modes tingkat teratas. Pencocokan nama host hanya ditujukan untuk pemilihan kebijakan; jangan
menganggapnya sebagai bukti perangkat yang diautentikasi.
Anda juga dapat membatasi mode pencarian web:
allowed_web_search_modes = ["cached"] # "disabled" remains implicitly allowedallowed_web_search_modes = [] hanya mengizinkan "disabled".
Sebagai contoh, allowed_web_search_modes = ["cached"] mencegah pencarian web langsung bahkan dalam sesi danger-full-access.
Mengonfigurasi persyaratan akses jaringan
Gunakan [experimental_network] dalam requirements.toml jika administrator perlu
menentukan persyaratan akses jaringan secara terpusat. Persyaratan ini terpisah
dari pengalih features.network_proxy milik pengguna: persyaratan ini dapat mengonfigurasi jaringan
sandbox tanpa flag fitur tersebut, tetapi tidak memberikan akses jaringan kepada perintah
jika sandbox aktif tetap menonaktifkan jaringan.
experimental_network.enabled = true
experimental_network.allowed_domains = [
"api.openai.com",
"*.example.com",
]
experimental_network.denied_domains = [
"blocked.example.com",
"*.exfil.example.com",
]Gunakan experimental_network.managed_allowed_domains_only = true hanya jika Anda
juga menentukan allowed_domains milik administrator dan ingin daftar yang diizinkan tersebut bersifat
eksklusif. Jika nilainya true tanpa aturan izin terkelola, aturan izin domain
yang ditambahkan pengguna tidak akan tetap berlaku.
Sintaks domain, aturan tujuan lokal/pribadi, perilaku penolakan yang mengungguli izin, dan keterbatasan DNS rebinding sama dengan perilaku jaringan sandbox yang dijelaskan dalam Persetujuan agen & keamanan.
Menetapkan flag fitur
Anda juga dapat menetapkan flag fitur bagi pengguna
yang menerima requirements.toml terkelola:
[features]
personality = true
unified_exec = false
# Disable surface-specific features when needed.
browser_use = false
browser_use_full_cdp_access = false
browser_use_external = false
in_app_browser = false
in_app_updates = false
computer_use = falseGunakan kunci fitur kanonis dari tabel [features] milik config.toml untuk
fitur runtime. Runtime lokal menormalkan fitur yang dikenali agar memenuhi
penetapan ini dan menolak penulisan yang bertentangan ke config.toml atau pengaturan fitur dalam file
profil.
in_app_browser = falsemenonaktifkan panel browser bawaan.in_app_updates = falsemenonaktifkan pembaru milik aplikasi desktop ChatGPT saat dimulai ulang, jika didukung. Hal ini tidak memengaruhi deployment paket eksternal atau memperpanjang dukungan untuk versi aplikasi lama. Untuk panduan penyiapan dan peluncuran, lihat Mengelola pembaruan aplikasi.browser_use = falsemenonaktifkan Computer Use di browser dan ketersediaan Browser Agent.browser_use_full_cdp_access = falsemenonaktifkan akses CDP penuh dalam runtime lokal, termasuk mode Browser Developer, serta mencegah aplikasi desktop ChatGPT mengaktifkan pengaturan terkait.browser_use_external = falsemenonaktifkan Browser Use eksternal.computer_use = falsemenonaktifkan Computer Use, Record & Replay, serta alur penginstalan atau penyiapan terkait.
Jika Anda tidak mencantumkan kunci ini, kebijakan mengizinkan fitur tersebut, dengan tetap tunduk pada ketersediaan klien, platform, dan peluncuran normal.
Membatasi penggunaan komputer saat terkunci
Untuk mencegah Computer Use beroperasi setelah Mac terkelola terkunci, tambahkan persyaratan ini:
[computer_use]
allow_locked_computer_use = falsePersyaratan ini tidak mengaktifkan Computer Use. Persyaratan ini hanya mencegah penggunaan saat terkunci di macOS. Jika Anda tidak mencantumkannya, persyaratan tidak membatasi penggunaan saat terkunci; ketersediaan produk normal dan pengaturan lokal pengguna tetap berlaku.
Mengonfigurasi kebijakan peninjauan otomatis
Gunakan allowed_approvals_reviewers untuk mewajibkan atau mengizinkan peninjauan otomatis. Tetapkan
ke ["auto_review"] untuk mewajibkan peninjauan otomatis, atau sertakan "user" jika pengguna
dapat memilih persetujuan manual.
Tetapkan guardian_policy_config untuk mengganti bagian khusus tenant dalam
kebijakan peninjauan otomatis. Runtime lokal tetap menggunakan templat peninjau
bawaan dan kontrak output. guardian_policy_config terkelola memiliki prioritas
lebih tinggi daripada [auto_review].policy lokal.
allowed_approval_policies = ["on-request"]
allowed_approvals_reviewers = ["auto_review"]
guardian_policy_config = """
## Environment Profile
- Trusted internal destinations include github.com/my-org, artifacts.example.com,
and internal CI systems.
## Tenant Risk Taxonomy and Allow/Deny Rules
- Treat uploads to unapproved third-party file-sharing services as high risk.
- Deny actions that expose credentials or private source code to untrusted
destinations.
"""Menerapkan persyaratan penolakan baca
Admin dapat menolak pembacaan jalur yang tepat atau pola glob dengan
[permissions.filesystem]. Pengguna tidak dapat memperlemah persyaratan ini melalui konfigurasi
lokal.
[permissions.filesystem]
deny_read = [
# values can be absolute paths...
"/**/*.env",
# ...or relative to $HOME/%USERPROFILE% using `~`.
"~/.ssh",
# But relative paths starting with `./` are not allowed.
]Jika persyaratan penolakan baca tersedia, runtime lokal menolak izin
akses penuh dan mempertahankan eksekusi lokal dalam sandbox hanya baca atau ruang kerja agar
dapat menerapkannya. Pada Windows native, deny_read terkelola berlaku untuk alat file
langsung; pembacaan oleh subproses shell tidak menggunakan aturan sandbox ini.
Menerapkan hook terkelola dari persyaratan
Admin juga dapat menentukan hook siklus hidup terkelola secara langsung dalam requirements.toml.
Gunakan [hooks] untuk konfigurasi hook itu sendiri, dan arahkan managed_dir ke
direktori tempat alat MDM atau pengelolaan endpoint Anda menginstal skrip
yang dirujuk.
Untuk menerapkan hook terkelola bahkan bagi pengguna yang menonaktifkan hook secara lokal, tetapkan
[features].hooks = true bersama [hooks]. Untuk melewati hook pengguna, proyek, sesi,
dan plugin sekaligus tetap mengizinkan hook terkelola, tetapkan
allow_managed_hooks_only = true.
allow_managed_hooks_only = true
[features]
hooks = true
[hooks]
managed_dir = "/enterprise/hooks"
windows_managed_dir = 'C:\enterprise\hooks'
[[hooks.PreToolUse]]
matcher = "^Bash$"
[[hooks.PreToolUse.hooks]]
type = "command"
command = "python3 /enterprise/hooks/pre_tool_use_policy.py"
command_windows = 'py -3 C:\enterprise\hooks\pre_tool_use_policy.py'
timeout = 30
statusMessage = "Checking managed Bash command"Catatan:
- Runtime lokal menerapkan konfigurasi hook dari
requirements.toml, tetapi tidak mendistribusikan skrip dalammanaged_dir. - Kirimkan skrip tersebut dengan solusi MDM atau pengelolaan perangkat Anda.
- Perintah hook terkelola harus merujuk ke jalur skrip absolut di bawah direktori terkelola yang dikonfigurasi.
allow_managed_hooks_only = truemelewati hook dari sumber pengguna, proyek, sesi, dan plugin, tetapi tetap memuat hook darirequirements.tomldan lapisan konfigurasi terkelola lainnya.
Menerapkan aturan perintah dari persyaratan
Admin juga dapat menerapkan aturan perintah yang membatasi dari requirements.toml
dengan menggunakan tabel [rules]. Aturan ini digabungkan dengan file .rules biasa, dan
keputusan yang paling membatasi tetap berlaku.
Tidak seperti .rules, aturan persyaratan harus menentukan decision, dan keputusan tersebut
harus berupa "prompt" atau "forbidden" (bukan "allow").
[rules]
prefix_rules = [
{ pattern = [{ token = "rm" }], decision = "forbidden", justification = "Use git clean -fd instead." },
{ pattern = [{ token = "git" }, { any_of = ["push", "commit"] }], decision = "prompt", justification = "Require review before mutating history." },
]Untuk membatasi server MCP yang dapat diaktifkan klien lokal, tambahkan daftar
yang disetujui mcp_servers. Untuk server stdio, cocokkan berdasarkan command; untuk server HTTP
yang dapat dialirkan, cocokkan berdasarkan url:
[mcp_servers.docs]
identity = { command = "codex-mcp" }
[mcp_servers.remote]
identity = { url = "https://example.com/mcp" }Bentuk string identity.command hanya mencocokkan command yang dikonfigurasi. Bentuk tersebut
tidak memeriksa args, cwd, env, atau env_vars.
Untuk membatasi pemanggilan stdio secara lengkap, cocokkan file yang dapat dieksekusi dan setiap argumen posisional:
[mcp_servers.internal.identity]
command = { executable = "/usr/local/bin/codex-mcp", args = [
{ match = "exact", value = "serve" },
{ match = "prefix", value = "--workspace=" },
] }File yang dapat dieksekusi, jumlah argumen, dan urutan argumen harus cocok. Aturan argumen dan URL
mendukung pencocokan exact, prefix, dan nilai penuh regex. Aturan
perintah terstruktur tetap tidak memeriksa cwd, env, atau env_vars. Server MCP
yang disertakan dalam plugin menggunakan bentuk identitas yang sama di bawah
plugins.<plugin>.mcp_servers.<server>.
Jika mcp_servers ada tetapi kosong, klien lokal menonaktifkan semua server MCP.
Mengontrol ketersediaan plugin
Untuk menonaktifkan plugin dalam klien lokal yang didukung, tetapkan features.plugins ke
false dalam requirements.toml:
features.plugins = falsePengaturan ini juga berlaku saat pengguna masuk ke Codex dengan API key. Lihat
referensi features.plugins untuk
konfigurasi yang didukung.
Membatasi sumber marketplace plugin
Untuk membatasi operasi pada sumber marketplace yang dikonfigurasi pengguna, tetapkan
restrict_to_allowed_sources = true dan tentukan satu atau beberapa aturan sumber:
[marketplaces]
restrict_to_allowed_sources = true
[marketplaces.allowed_sources.company_plugins]
source = "git"
url = "https://github.com/example/company-plugins.git"
ref = "main"
[marketplaces.allowed_sources.internal_git]
source = "host_pattern"
host_pattern = '^git\.example\.com$'
[marketplaces.allowed_sources.local_plugins]
source = "local"
path = "/opt/company/codex-plugins"Aturan Git mencocokkan URL repositori yang telah dinormalisasi dan, jika ada, nilai
ref yang tepat. Pola host adalah ekspresi reguler yang dicocokkan dengan host Git dalam huruf kecil;
gunakan ^ dan $ untuk pencocokan seluruh host. Aturan lokal memerlukan jalur absolut
yang telah dinormalisasi. Lihat referensi requirements.toml
untuk skema lengkap dan perilaku penggabungan.
Persyaratan ini menolak operasi penambahan marketplace, penginstalan plugin, dan penyegaran marketplace Git yang dikonfigurasi untuk sumber yang dikonfigurasi pengguna jika tidak cocok. Marketplace OpenAI yang dikelola Codex tetap tersedia jika sumber dan nama khususnya cocok. Persyaratan ini tidak memfilter marketplace pengguna yang sudah dikonfigurasi atau pluginnya saat runtime.
Pembatasan sumber ini hanya berlaku jika klien lokal mendukung operasi marketplace plugin: ChatGPT Work dan Codex dalam aplikasi desktop, serta Codex CLI. Pembatasan ini tidak menambahkan plugin ke Chat, ekstensi IDE, atau perangkat seluler.
Nilai default terkelola (managed_config.toml)
Nilai default terkelola digabungkan di atas config.toml lokal milik pengguna dan memiliki
prioritas lebih tinggi daripada penimpaan --config CLI, sehingga menetapkan nilai awal saat
klien lokal yang didukung diluncurkan. Pengguna tetap dapat mengubah pengaturan tersebut selama suatu
proses berjalan; klien menerapkan kembali nilai default terkelola saat dimulai berikutnya.
Jika nilai default terkelola, profil MDM macOS, atau konfigurasi tersimpan menetapkan gpt-5.4
atau gpt-5.4-mini bagi pengguna yang masuk dengan ChatGPT, perbarui sebelum 31 Agustus 2026. Ganti gpt-5.4 dengan gpt-5.6-terra dan gpt-5.4-mini dengan
gpt-5.6-luna. OpenAI API dan Codex yang diautentikasi dengan API key Anda sendiri
tidak terpengaruh. Lihat ketersediaan model ruang
kerja.
Pastikan nilai default terkelola Anda memenuhi persyaratan; runtime lokal menolak nilai yang tidak diizinkan.
Urutan prioritas dan pelapisan
Runtime lokal menyusun konfigurasi efektif dalam urutan berikut (bagian atas menimpa bagian bawah):
- Preferensi terkelola (MDM macOS; prioritas tertinggi)
managed_config.toml(file sistem/terkelola)config.toml(konfigurasi dasar pengguna)
Penimpaan --config key=value CLI diterapkan ke konfigurasi dasar, tetapi lapisan terkelola menimpanya. Artinya, setiap proses dimulai dari nilai default terkelola meskipun Anda memberikan flag lokal.
Persyaratan yang dikelola melalui cloud memengaruhi lapisan persyaratan (bukan nilai default terkelola). Lihat bagian Persyaratan yang diterapkan admin di atas untuk urutan prioritas.
Lokasi
- Linux/macOS (Unix):
/etc/codex/managed_config.toml - Windows/non-Unix:
~/.codex/managed_config.toml
Jika file tidak ada, runtime lokal melewati lapisan terkelola.
Preferensi terkelola macOS (MDM)
Pada macOS, admin dapat mengirim profil perangkat yang menyediakan payload TOML berkode base64 di:
- Domain preferensi:
com.openai.codex - Kunci:
config_toml_base64(nilai default terkelola)requirements_toml_base64(persyaratan)
Runtime lokal mengurai payload "preferensi terkelola" ini sebagai TOML. Untuk
nilai default terkelola (config_toml_base64), preferensi terkelola memiliki
prioritas tertinggi. Untuk persyaratan (requirements_toml_base64), urutan prioritas mengikuti
urutan persyaratan yang dikelola melalui cloud yang dijelaskan di atas. Tabel
[features] di sisi persyaratan yang sama berfungsi dalam requirements_toml_base64; gunakan
kunci fitur kanonis di sana juga.
Alur kerja penyiapan MDM
Runtime lokal mematuhi payload MDM macOS standar, sehingga Anda dapat mendistribusikan
pengaturan dengan alat seperti Jamf Pro, Fleet, atau Kandji. Deployment
ringan terlihat seperti berikut:
- Buat TOML payload terkelola dan enkode dengan
base64(tanpa pembungkusan). - Masukkan string ke profil MDM Anda di bawah domain
com.openai.codexpadaconfig_toml_base64(nilai default terkelola) ataurequirements_toml_base64(persyaratan). - Kirim profil, lalu minta pengguna memulai ulang klien lokal yang didukung dan memastikan ringkasan konfigurasi awal mencerminkan nilai terkelola.
- Saat mencabut atau mengubah kebijakan, perbarui payload terkelola; klien membaca preferensi yang telah disegarkan saat diluncurkan berikutnya.
Hindari menyematkan rahasia atau nilai dinamis yang sering berubah dalam payload. Perlakukan TOML terkelola seperti pengaturan MDM lain yang berada di bawah kontrol perubahan.
Contoh managed_config.toml
# Set conservative defaults
approval_policy = "on-request"
sandbox_mode = "workspace-write"
[sandbox_workspace_write]
network_access = false # keep network disabled unless explicitly allowed
[otel]
environment = "prod"
exporter = "otlp-http" # point at your collector
log_user_prompt = false # keep prompts redacted
# exporter details live under exporter tables; see Monitoring and telemetry aboveBatasan pengaman yang direkomendasikan
- Utamakan
workspace-writedengan persetujuan bagi sebagian besar pengguna; sediakan akses penuh hanya untuk container terkontrol. - Pertahankan
network_access = falsekecuali peninjauan keamanan Anda mengizinkan pengumpul atau domain yang diperlukan oleh alur kerja Anda. - Gunakan konfigurasi terkelola untuk menetapkan pengaturan OTel (pengekspor, lingkungan), tetapi pertahankan
log_user_prompt = falsekecuali kebijakan Anda secara eksplisit mengizinkan penyimpanan isi prompt. - Audit secara berkala perbedaan antara
config.tomllokal dan kebijakan terkelola untuk mendeteksi penyimpangan; lapisan terkelola harus mengungguli flag dan file lokal.