Gunakan halaman ini sebagai referensi yang dapat ditelusuri untuk file konfigurasi Codex. Untuk panduan konseptual dan contoh, mulailah dengan Dasar-dasar konfigurasi dan Konfigurasi Lanjutan .
config.toml
Konfigurasi tingkat pengguna berada di ~/.codex/config.toml. Anda juga dapat menambahkan penggantian cakupan proyek dalam file .codex/config.toml. Codex hanya memuat file konfigurasi cakupan proyek jika Anda memercayai proyek tersebut.
Konfigurasi cakupan proyek tidak dapat mengganti penyedia lokal mesin, autentikasi,
metadata permintaan aplikasi milik host, notifikasi, pemilihan profil konfigurasi,
atau kunci perutean telemetri. Codex mengabaikan openai_base_url,
chatgpt_base_url, apps_mcp_product_sku, model_provider,
model_providers, notify, profile, profiles,
experimental_realtime_ws_base_url, dan otel ketika muncul dalam
.codex/config.toml lokal proyek; tempatkan kunci penyedia, notifikasi, dan telemetri
dalam konfigurasi tingkat pengguna. File profil konfigurasi berada di samping
config.toml sebagai $CODEX_HOME/profile-name.config.toml; pilih salah satunya dengan
--profile profile-name.
Untuk kunci sandbox dan persetujuan (approval_policy, sandbox_mode, dan sandbox_workspace_write.*), gunakan referensi ini bersama Sandbox dan persetujuan , Jalur terlindungi dalam root yang dapat ditulis , dan Akses jaringan . Untuk profil izin beta, lihat Izin .
<ConfigTable
options={[
{
key: "model",
type: "string",
description: "Model yang akan digunakan (misalnya, gpt-5.5).",
},
{
key: "review_model",
type: "string",
description:
"Penggantian model opsional yang digunakan oleh /review (secara default menggunakan model sesi saat ini).",
},
{
key: "model_provider",
type: "string",
description: "ID penyedia dari model_providers (default: openai).",
},
{
key: "openai_base_url",
type: "string",
description:
"Penggantian URL dasar untuk penyedia model openai bawaan.",
},
{
key: "model_context_window",
type: "number",
description: "Token jendela konteks yang tersedia bagi model aktif.",
},
{
key: "model_auto_compact_token_limit",
type: "number",
description:
"Ambang batas token yang memicu pemadatan riwayat otomatis (jika tidak ditetapkan, menggunakan default model).",
},
{
key: "model_auto_compact_token_limit_scope",
type: "total | body_after_prefix",
description:
"Mengontrol apakah ambang batas pemadatan otomatis menghitung seluruh konteks aktif (total, default) atau hanya pertumbuhan setelah prefiks jendela pemadatan yang dibawa (body_after_prefix).",
},
{
key: "model_catalog_json",
type: "string (path)",
description:
"Path opsional ke katalog model JSON yang dimuat saat startup. File profil $CODEX_HOME/profile-name.config.toml yang dipilih dapat menggantinya untuk setiap profil.",
},
{
key: "oss_provider",
type: "lmstudio | ollama",
description:
"Penyedia lokal default yang digunakan saat berjalan dengan --oss (secara default meminta pilihan jika tidak ditetapkan).",
},
{
key: "approval_policy",
type: "untrusted | on-request | never | { granular = { sandbox_approval = bool, rules = bool, mcp_elicitations = bool, request_permissions = bool, skill_approval = bool } }",
description:
"Mengontrol kapan Codex berhenti sementara untuk meminta persetujuan sebelum menjalankan perintah. Anda juga dapat menggunakan approval_policy = { granular = { ... } } untuk mengizinkan atau menolak otomatis kategori prompt tertentu sekaligus mempertahankan prompt lain tetap interaktif. on-failure tidak digunakan lagi; gunakan on-request untuk proses interaktif atau never untuk proses noninteraktif.",
},
{
key: "approval_policy.granular.sandbox_approval",
type: "boolean",
description:
"Jika true, prompt persetujuan eskalasi sandbox diizinkan untuk ditampilkan.",
},
{
key: "approval_policy.granular.rules",
type: "boolean",
description:
"Jika true, persetujuan yang dipicu oleh aturan execpolicy prompt diizinkan untuk ditampilkan.",
},
{
key: "approval_policy.granular.mcp_elicitations",
type: "boolean",
description:
"Jika true, prompt elisitasi MCP diizinkan untuk ditampilkan dan tidak ditolak secara otomatis.",
},
{
key: "approval_policy.granular.request_permissions",
type: "boolean",
description:
"Jika true, prompt dari alat request_permissions diizinkan untuk ditampilkan.",
},
{
key: "approval_policy.granular.skill_approval",
type: "boolean",
description:
"Jika true, prompt persetujuan skrip skill diizinkan untuk ditampilkan.",
},
{
key: "approvals_reviewer",
type: "user | auto_review",
description:
"Pihak yang meninjau prompt persetujuan yang memenuhi syarat berdasarkan on-request atau kebijakan persetujuan terperinci. Default-nya adalah user; auto_review menggunakan subagen peninjau. Pengaturan ini tidak mengubah sandboxing atau tindakan peninjauan yang telah diizinkan di dalam sandbox.",
},
{
key: "auto_review.policy",
type: "string",
description:
"Instruksi kebijakan Markdown lokal untuk peninjauan otomatis. guardian_policy_config terkelola diprioritaskan. Nilai kosong diabaikan.",
},
{
key: "allow_login_shell",
type: "boolean",
description:
"Izinkan alat berbasis shell menggunakan semantik login shell. Default-nya adalah true; jika false, permintaan login = true ditolak dan login yang tidak dicantumkan secara default menggunakan shell non-login.",
},
{
key: "sandbox_mode",
type: "read-only | workspace-write | danger-full-access",
description:
"Kebijakan sandbox untuk akses sistem file dan jaringan selama eksekusi perintah.",
},
{
key: "sandbox_workspace_write.writable_roots",
type: "array",
description:
'Root tambahan yang dapat ditulis ketika sandbox_mode = "workspace-write".',
},
{
key: "sandbox_workspace_write.network_access",
type: "boolean",
description:
"Izinkan akses jaringan keluar di dalam sandbox workspace-write.",
},
{
key: "sandbox_workspace_write.exclude_tmpdir_env_var",
type: "boolean",
description:
"Kecualikan $TMPDIR dari root yang dapat ditulis dalam mode workspace-write.",
},
{
key: "sandbox_workspace_write.exclude_slash_tmp",
type: "boolean",
description:
"Kecualikan /tmp dari root yang dapat ditulis dalam mode workspace-write.",
},
{
key: "windows.sandbox",
type: "unelevated | elevated",
description:
"Mode sandbox native khusus Windows saat menjalankan Codex secara native di Windows.",
},
{
key: "windows.sandbox_private_desktop",
type: "boolean",
description:
"Jalankan proses anak akhir yang di-sandbox di desktop privat secara default pada Windows native. Tetapkan false hanya untuk kompatibilitas dengan perilaku Winsta0\\\\Default yang lebih lama.",
},
{
key: "computer_use.windows.always_allowed_app_ids",
type: "array",
description:
"Pengidentifikasi aplikasi Windows yang dapat dibuka Computer Use tanpa meminta persetujuan. Aplikasi yang tidak ada dalam daftar memerlukan persetujuan; hapus entri tersimpan dari pengaturan Computer Use di aplikasi desktop ChatGPT.",
},
{
key: "notify",
type: "array",
description:
"Perintah yang dipanggil untuk notifikasi; menerima payload JSON dari Codex.",
},
{
key: "check_for_update_on_startup",
type: "boolean",
description:
"Periksa pembaruan Codex saat startup (tetapkan ke false hanya jika pembaruan dikelola secara terpusat).",
},
{
key: "feedback.enabled",
type: "boolean",
description:
"Aktifkan pengiriman umpan balik melalui /feedback di seluruh klien lokal (default: true).",
},
{
key: "analytics.enabled",
type: "boolean",
description:
"Aktifkan atau nonaktifkan analitik untuk mesin/profil ini. Jika tidak ditetapkan, default klien berlaku.",
},
{
key: "instructions",
type: "string",
description:
"Dicadangkan untuk penggunaan mendatang; utamakan model_instructions_file atau AGENTS.md.",
},
{
key: "developer_instructions",
type: "string",
description:
"Instruksi developer tambahan yang disuntikkan ke dalam sesi (opsional).",
},
{
key: "log_dir",
type: "string (path)",
description:
"Direktori tempat Codex menulis file log; default-nya adalah $CODEX_HOME/log. Menetapkan ini secara eksplisit juga mengaktifkan log TUI teks biasa yang bersifat opt-in, codex-tui.log, di direktori tersebut.",
},
{
key: "sqlite_home",
type: "string (path)",
description:
"Direktori tempat Codex menyimpan DB status berbasis SQLite yang digunakan oleh pekerjaan agen dan status runtime lain yang dapat dilanjutkan.",
},
{
key: "compact_prompt",
type: "string",
description: "Penggantian inline untuk prompt pemadatan riwayat.",
},
{
key: "model_instructions_file",
type: "string (path)",
description:
"Pengganti instruksi bawaan sebagai alternatif AGENTS.md.",
},
{
key: "personality",
type: "none | friendly | pragmatic",
description:
"Gaya komunikasi default untuk model yang mengiklankan supportsPersonality; dapat diganti per utas/giliran atau melalui /personality.",
},
{
key: "service_tier",
type: "string",
description:
"Tingkat layanan yang diutamakan untuk giliran baru. Gunakan fast atau tingkat lain yang diiklankan oleh model aktif; fast dipetakan ke nilai permintaan priority.",
},
{
key: "experimental_compact_prompt_file",
type: "string (path)",
description:
"Muat penggantian prompt pemadatan dari file (eksperimental).",
},
{
key: "skills.config",
type: "array",
description: "Penggantian pengaktifan per skill yang disimpan dalam config.toml.",
},
{
key: "skills.config..path",
type: "string (path)",
description: "Path ke folder skill yang berisi SKILL.md.",
},
{
key: "skills.config..enabled",
type: "boolean",
description: "Aktifkan atau nonaktifkan skill yang dirujuk.",
},
{
key: "apps..enabled",
type: "boolean",
description:
"Aktifkan atau nonaktifkan aplikasi/konektor tertentu berdasarkan ID (default: true).",
},
{
key: "apps._default.enabled",
type: "boolean",
description:
"Status aktif default untuk semua aplikasi kecuali diganti per aplikasi.",
},
{
key: "apps._default.destructive_enabled",
type: "boolean",
description:
"Izin/penolakan default untuk alat aplikasi dengan destructive_hint = true.",
},
{
key: "apps._default.open_world_enabled",
type: "boolean",
description:
"Izin/penolakan default untuk alat aplikasi dengan open_world_hint = true.",
},
{
key: "apps._default.approvals_reviewer",
type: "user | auto_review",
description:
"Peninjau default untuk prompt persetujuan alat aplikasi kecuali diganti per aplikasi. Jika tidak dicantumkan, aplikasi mewarisi nilai approvals_reviewer tingkat teratas.",
},
{
key: "apps._default.default_tools_approval_mode",
type: "auto | prompt | writes | approve",
description:
"Perilaku persetujuan default untuk alat aplikasi tanpa penggantian per aplikasi atau per alat.",
},
{
key: "apps..destructive_enabled",
type: "boolean",
description:
"Izinkan atau blokir alat dalam aplikasi ini yang mengiklankan destructive_hint = true.",
},
{
key: "apps..open_world_enabled",
type: "boolean",
description:
"Izinkan atau blokir alat dalam aplikasi ini yang mengiklankan open_world_hint = true.",
},
{
key: "apps..default_tools_enabled",
type: "boolean",
description:
"Status aktif default untuk alat dalam aplikasi ini kecuali terdapat penggantian per alat.",
},
{
key: "apps..approvals_reviewer",
type: "user | auto_review",
description:
"Peninjau untuk prompt persetujuan alat aplikasi ini. Menggantikan apps._default.approvals_reviewer.",
},
{
key: "apps..default_tools_approval_mode",
type: "auto | prompt | writes | approve",
description:
"Perilaku persetujuan default untuk alat dalam aplikasi ini kecuali terdapat penggantian per alat.",
},
{
key: "apps..tools..enabled",
type: "boolean",
description:
"Penggantian status aktif per alat untuk alat aplikasi (misalnya repos/list).",
},
{
key: "apps..tools..approval_mode",
type: "auto | prompt | writes | approve",
description: "Penggantian perilaku persetujuan per alat untuk satu alat aplikasi.",
},
{
key: "tool_suggest.discoverables",
type: "array",
description:
'Izinkan saran alat untuk konektor atau plugin tambahan yang dapat ditemukan. Setiap entri menggunakan type = "connector" atau "plugin" serta sebuah id.',
},
{
key: "tool_suggest.disabled_tools",
type: "array",
description:
'Nonaktifkan saran untuk konektor atau plugin tertentu yang dapat ditemukan. Setiap entri menggunakan type = "connector" atau "plugin" serta sebuah id.',
},
{
key: "features.apps",
type: "boolean",
description:
"Aktifkan integrasi aplikasi (konektor) (stabil; aktif secara default).",
},
{
key: "features.hooks",
type: "boolean",
description:
"Aktifkan hook siklus hidup yang dimuat dari hooks.json atau konfigurasi inline [hooks]. features.codex_hooks adalah alias yang tidak digunakan lagi.",
},
{
key: "features.code_mode.enabled",
type: "boolean",
description:
"Aktifkan konfigurasi fitur mode kode. Fitur ini masih dalam pengembangan dan dinonaktifkan secara default.",
},
{
key: "features.code_mode.excluded_tool_namespaces",
type: "array",
description:
"Namespace alat yang dikecualikan mode kode dari panduan alat mode kode bertingkat dan eksposur eksekutor.",
},
{
key: "features.code_mode.direct_only_tool_namespaces",
type: "array",
description:
"Namespace alat yang hanya dapat digunakan mode kode melalui pemanggilan alat langsung.",
},
{
key: "features.rollout_budget.enabled",
type: "boolean",
description:
"Aktifkan pelacakan anggaran rollout. Fitur ini masih dalam pengembangan dan dinonaktifkan secara default. Jika diaktifkan, features.rollout_budget.limit_tokens wajib diisi.",
},
{
key: "features.rollout_budget.limit_tokens",
type: "integer",
description:
"Batas token positif untuk pelacakan anggaran rollout. Wajib diisi saat anggaran rollout diaktifkan.",
},
{
key: "features.rollout_budget.reminder_interval_tokens",
type: "integer",
description:
"Interval token positif antar-pengingat anggaran rollout. Default-nya adalah 10% dari limit_tokens, dengan minimum 1 token.",
},
{
key: "features.rollout_budget.sampling_token_weight",
type: "number",
description:
"Pengali terbatas nonnegatif untuk token sampel dalam penghitungan anggaran rollout. Default-nya adalah 1.0.",
},
{
key: "features.rollout_budget.prefill_token_weight",
type: "number",
description:
"Pengali terbatas nonnegatif untuk token prefill dalam penghitungan anggaran rollout. Default-nya adalah 1.0.",
},
{
key: "hooks",
type: "table",
description:
"Hook siklus hidup yang dikonfigurasi secara inline dalam config.toml. Menggunakan skema peristiwa yang sama dengan hooks.json; lihat panduan Hooks untuk contoh dan peristiwa yang didukung.",
},
{
key: "hooks.",
type: "array",
description:
"Grup pencocok untuk peristiwa hook seperti PreToolUse, PermissionRequest, PostToolUse, PreCompact, PostCompact, SessionStart, SessionEnd, SubagentStart, SubagentStop, UserPromptSubmit, atau Stop.",
},
{
key: "hooks.[].hooks",
type: "array",
description:
"Handler hook untuk grup pencocok. Hook perintah saat ini didukung; handler hook prompt dan agen diurai tetapi dilewati.",
},
{
key: "hooks.[].hooks[].commandWindows",
type: "string",
description:
"Penggantian perintah khusus Windows untuk hook perintah. Alias TOML command_windows juga diterima.",
},
{
key: "features.memories",
type: "boolean",
description:
"Aktifkan Memori (nonaktif secara default).",
},
{
key: "mcp_servers..command",
type: "string",
description: "Perintah peluncur untuk server MCP stdio.",
},
{
key: "mcp_servers..args",
type: "array",
description: "Argumen yang diteruskan ke perintah server MCP stdio.",
},
{
key: "mcp_servers..env",
type: "map<string,string>",
description: "Variabel lingkungan yang diteruskan ke server MCP stdio.",
},
{
key: "mcp_servers..env_vars",
type: 'array<string | { name = string, source = "local" | "remote" }>',
description:
'Variabel lingkungan tambahan yang dimasukkan ke daftar izin untuk server MCP stdio. Entri string secara default menggunakan source = "local"; gunakan source = "remote" hanya dengan stdio jarak jauh yang didukung eksekutor.',
},
{
key: "mcp_servers..cwd",
type: "string",
description: "Direktori kerja untuk proses server MCP stdio.",
},
{
key: "mcp_servers..url",
type: "string",
description: "Endpoint untuk server MCP HTTP yang dapat dialirkan.",
},
{
key: "mcp_servers..auth",
type: "oauth | chatgpt",
description:
"Autentikasi cadangan untuk server MCP HTTP setelah bearer token dan header otorisasi yang dikonfigurasi. oauth (default) menggunakan kredensial MCP OAuth tersimpan jika tersedia. chatgpt menggunakan sesi ChatGPT saat ini untuk origin ChatGPT pihak pertama yang tepercaya, lalu beralih ke OAuth tersimpan. Kedua mode dapat terhubung tanpa autentikasi jika tidak ada sumber kredensial yang ditemukan.",
},
{
key: "mcp_servers..bearer_token_env_var",
type: "string",
description:
"Variabel lingkungan yang menjadi sumber bearer token untuk server MCP HTTP.",
},
{
key: "mcp_servers..http_headers",
type: "map<string,string>",
description: "Header HTTP statis yang disertakan dalam setiap permintaan MCP HTTP.",
},
{
key: "mcp_servers..env_http_headers",
type: "map<string,string>",
description:
"Header HTTP yang diisi dari variabel lingkungan untuk server MCP HTTP.",
},
{
key: "mcp_servers..enabled",
type: "boolean",
description: "Nonaktifkan server MCP tanpa menghapus konfigurasinya.",
},
{
key: "mcp_servers..required",
type: "boolean",
description:
"Jika true, gagalkan startup/pelanjutan jika server MCP aktif ini tidak dapat diinisialisasi.",
},
{
key: "mcp_servers..startup_timeout_sec",
type: "number",
description:
"Ganti batas waktu startup default 10 detik untuk server MCP.",
},
{
key: "mcp_servers..startup_timeout_ms",
type: "number",
description: "Alias untuk startup_timeout_sec dalam milidetik.",
},
{
key: "mcp_servers..tool_timeout_sec",
type: "number",
description:
"Ganti batas waktu default 60 detik per alat untuk server MCP.",
},
{
key: "mcp_servers..enabled_tools",
type: "array",
description: "Daftar izin nama alat yang diekspos oleh server MCP.",
},
{
key: "mcp_servers..disabled_tools",
type: "array",
description:
"Daftar penolakan yang diterapkan setelah enabled_tools untuk server MCP.",
},
{
key: "mcp_servers..default_tools_approval_mode",
type: "auto | prompt | writes | approve",
description:
"Perilaku persetujuan default untuk alat MCP pada server ini kecuali terdapat penggantian per alat.",
},
{
key: "mcp_servers..tools..approval_mode",
type: "auto | prompt | writes | approve",
description:
"Penggantian perilaku persetujuan per alat untuk satu alat MCP pada server ini.",
},
{
key: "mcp_servers..scopes",
type: "array",
description:
"Cakupan OAuth yang diminta saat melakukan autentikasi ke server MCP tersebut.",
},
{
key: "mcp_servers..oauth_resource",
type: "string",
description:
"Parameter sumber daya OAuth RFC 8707 opsional yang akan disertakan selama login MCP.",
},
{
key: "mcp_servers..experimental_environment",
type: "local | remote",
description:
"Penempatan eksperimental untuk server MCP. remote memulai server stdio melalui lingkungan eksekutor jarak jauh; penempatan jarak jauh HTTP yang dapat dialirkan belum diimplementasikan.",
},
{
key: "agents",
type: "table",
description:
"Pengaturan multiagen dan deklarasi peran khusus. Nama pengaturan skalar dicadangkan dan tidak dapat digunakan sebagai nama peran khusus.",
},
{
key: "agents.enabled",
type: "boolean",
description: "Aktifkan atau nonaktifkan alat multiagen (default: true).",
},
{
key: "agents.max_concurrent_threads_per_session",
type: "number",
description:
"Jumlah maksimum utas agen turunan yang dapat dibuka secara bersamaan, tidak termasuk utas utama. Jika tidak ditetapkan, Codex memilih nilai default.",
},
{
key: "agents.max_threads",
type: "number",
description:
"Alias lama untuk agents.max_concurrent_threads_per_session.",
},
{
key: "agents.default_subagent_model",
type: "string",
description:
"Model default untuk agen turunan. Model yang ditentukan secara eksplisit saat membuat agen diprioritaskan.",
},
{
key: "agents.default_subagent_reasoning_effort",
type: "string",
description:
"Upaya penalaran default untuk agen turunan. Upaya yang ditentukan secara eksplisit saat membuat agen diprioritaskan.",
},
{
key: "agents.interrupt_message",
type: "boolean",
description:
"Catat pesan yang terlihat oleh model saat giliran agen diinterupsi (default: true).",
},
{
key: "agents..description",
type: "string",
description:
"Panduan peran yang ditampilkan kepada Codex saat memilih dan membuat jenis agen tersebut.",
},
{
key: "agents..config_file",
type: "string (path)",
description:
"Path ke lapisan konfigurasi TOML untuk peran tersebut; path relatif diselesaikan dari file konfigurasi yang mendeklarasikan peran.",
},
{
key: "memories.generate_memories",
type: "boolean",
description:
"Jika false, utas yang baru dibuat tidak disimpan sebagai input pembuatan memori. Default-nya adalah true.",
},
{
key: "memories.use_memories",
type: "boolean",
description:
"Jika false, Codex melewati penyuntikan memori yang ada ke sesi mendatang. Default-nya adalah true.",
},
{
key: "memories.disable_on_external_context",
type: "boolean",
description:
"Jika true, utas yang menggunakan konteks eksternal seperti pemanggilan alat MCP, pencarian web, atau pencarian alat dikecualikan dari pembuatan memori. Default-nya adalah false. Alias lama: memories.no_memories_if_mcp_or_web_search.",
},
{
key: "memories.max_raw_memories_for_consolidation",
type: "number",
description:
"Jumlah maksimum memori mentah terbaru yang dipertahankan untuk konsolidasi global. Default-nya adalah 256 dan dibatasi hingga 4096.",
},
{
key: "memories.max_unused_days",
type: "number",
description:
"Jumlah hari maksimum sejak memori terakhir digunakan sebelum tidak lagi memenuhi syarat untuk konsolidasi. Default-nya adalah 30 dan dibatasi dalam rentang 0-365.",
},
{
key: "memories.max_rollout_age_days",
type: "number",
description:
"Usia maksimum utas yang dipertimbangkan untuk pembuatan memori. Default-nya adalah 30 dan dibatasi dalam rentang 0-90.",
},
{
key: "memories.max_rollouts_per_startup",
type: "number",
description:
"Jumlah maksimum kandidat rollout yang diproses per tahap startup. Default-nya adalah 16 dan dibatasi hingga 128.",
},
{
key: "memories.min_rollout_idle_hours",
type: "number",
description:
"Waktu tidak aktif minimum sebelum suatu utas dipertimbangkan untuk pembuatan memori. Default-nya adalah 6 dan dibatasi dalam rentang 1-48.",
},
{
key: "memories.min_rate_limit_remaining_percent",
type: "number",
description:
"Persentase tersisa minimum yang diperlukan dalam jendela batas laju Codex sebelum pembuatan memori dimulai. Default-nya adalah 25 dan dibatasi dalam rentang 0-100.",
},
{
key: "memories.extract_model",
type: "string",
description: "Penggantian model opsional untuk ekstraksi memori per utas.",
},
{
key: "memories.consolidation_model",
type: "string",
description: "Penggantian model opsional untuk konsolidasi memori global.",
},
{
key: "features.unified_exec",
type: "boolean",
description:
"Gunakan alat exec terpadu yang didukung PTY (stabil; aktif secara default kecuali di Windows).",
},
{
key: "features.shell_snapshot",
type: "boolean",
description:
"Buat snapshot lingkungan shell untuk mempercepat perintah berulang (stabil; aktif secara default).",
},
{
key: "features.multi_agent",
type: "boolean",
description:
"Aktifkan alat kolaborasi multiagen (spawn_agent, send_input, resume_agent, wait_agent, dan close_agent) (stabil; aktif secara default).",
},
{
key: "features.goals",
type: "boolean",
description:
"Aktifkan sasaran tersimpan dan pelanjutan otomatis (stabil; aktif secara default).",
},
{
key: "features.remote_plugin",
type: "boolean",
description: "Aktifkan katalog plugin jarak jauh (stabil; aktif secara default).",
},
{
key: "features.personality",
type: "boolean",
description:
"Aktifkan kontrol pemilihan kepribadian (stabil; aktif secara default).",
},
{
key: "features.network_proxy",
type: "boolean | table",
description:
"Aktifkan jaringan yang di-sandbox. Gunakan bentuk tabel saat menetapkan opsi kebijakan jaringan seperti domains (eksperimental; nonaktif secara default).",
},
{
key: "features.network_proxy.enabled",
type: "boolean",
description: "Aktifkan jaringan yang di-sandbox. Default-nya adalah false.",
},
{
key: "features.network_proxy.domains",
type: "map<string, allow | deny>",
description:
"Kebijakan domain untuk jaringan yang di-sandbox. Secara default tidak ditetapkan, yang berarti tidak ada tujuan eksternal yang diizinkan sampai Anda menambahkan aturan allow. Mendukung host persis, *.example.com hanya untuk subdomain, **.example.com untuk domain apex beserta subdomain, dan aturan izin global *; utamakan aturan terbatas karena * membuka akses keluar publik secara luas. Tambahkan aturan deny untuk tujuan yang diblokir; deny diprioritaskan jika terjadi konflik.",
},
{
key: "features.network_proxy.unix_sockets",
type: "map<string, allow | deny>",
description:
"Kebijakan soket Unix untuk jaringan yang di-sandbox. Secara default tidak ditetapkan; tambahkan entri allow untuk soket yang diizinkan.",
},
{
key: "features.network_proxy.allow_local_binding",
type: "boolean",
description:
"Izinkan akses jaringan lokal/privat yang lebih luas. Default-nya adalah false; aturan izin literal IP lokal persis atau localhost tetap dapat mengizinkan target lokal tertentu.",
},
{
key: "features.network_proxy.enable_socks5",
type: "boolean",
description: "Ekspos dukungan SOCKS5. Default-nya adalah true.",
},
{
key: "features.network_proxy.enable_socks5_udp",
type: "boolean",
description: "Izinkan UDP melalui SOCKS5. Default-nya adalah true.",
},
{
key: "features.network_proxy.allow_upstream_proxy",
type: "boolean",
description:
"Izinkan perangkaian melalui proksi upstream dari lingkungan. Default-nya adalah true.",
},
{
key: "features.network_proxy.dangerously_allow_non_loopback_proxy",
type: "boolean",
description:
"Izinkan alamat listener non-loopback. Default-nya adalah false; mengaktifkannya dapat mengekspos listener proksi di luar localhost.",
},
{
key: "features.network_proxy.dangerously_allow_all_unix_sockets",
type: "boolean",
description:
"Izinkan tujuan soket Unix sembarang, bukan hanya akses berdasarkan daftar izin. Default-nya adalah false; gunakan hanya di lingkungan yang dikontrol ketat.",
},
{
key: "features.network_proxy.proxy_url",
type: "string",
description:
'URL listener HTTP untuk jaringan yang di-sandbox. Default-nya adalah "http://127.0.0.1:3128".',
},
{
key: "features.network_proxy.socks_url",
type: "string",
description:
'URL listener SOCKS5. Default-nya adalah "http://127.0.0.1:8081".',
},
{
key: "features.web_search",
type: "boolean",
description:
"Sakelar lama yang tidak digunakan lagi; utamakan pengaturan tingkat teratas web_search.",
},
{
key: "features.web_search_cached",
type: "boolean",
description:
'Sakelar lama yang tidak digunakan lagi. Jika web_search tidak ditetapkan, true dipetakan ke web_search = "cached".',
},
{
key: "features.web_search_request",
type: "boolean",
description:
'Sakelar lama yang tidak digunakan lagi. Jika web_search tidak ditetapkan, true dipetakan ke web_search = "live".',
},
{
key: "features.shell_tool",
type: "boolean",
description:
"Aktifkan alat shell default untuk menjalankan perintah (stabil; aktif secara default).",
},
{
key: "features.enable_request_compression",
type: "boolean",
description:
"Kompres isi permintaan streaming dengan zstd jika didukung (stabil; aktif secara default).",
},
{
key: "features.skill_mcp_dependency_install",
type: "boolean",
description:
"Izinkan permintaan dan pemasangan dependensi MCP yang belum tersedia untuk skill (stabil; aktif secara default).",
},
{
key: "features.fast_mode",
type: "boolean",
description:
"Aktifkan pemilihan tingkat layanan katalog model dalam TUI, termasuk perintah tingkat Fast saat model aktif mengiklankannya (stabil; aktif secara default).",
},
{
key: "features.prevent_idle_sleep",
type: "boolean",
description:
"Cegah mesin memasuki mode tidur saat suatu giliran sedang aktif (eksperimental; nonaktif secara default).",
},
{
key: "suppress_unstable_features_warning",
type: "boolean",
description:
"Sembunyikan peringatan yang muncul saat flag fitur yang masih dikembangkan diaktifkan.",
},
{
key: "model_providers.",
type: "table",
description:
"Definisi penyedia khusus. ID penyedia bawaan (openai, ollama, dan lmstudio) dicadangkan dan tidak dapat diganti.",
},
{
key: "model_providers..name",
type: "string",
description: "Nama tampilan untuk penyedia model khusus.",
},
{
key: "model_providers..base_url",
type: "string",
description: "URL dasar API untuk penyedia model.",
},
{
key: "model_providers..env_key",
type: "string",
description: "Variabel lingkungan yang menyediakan API key penyedia.",
},
{
key: "model_providers..env_key_instructions",
type: "string",
description: "Panduan penyiapan opsional untuk API key penyedia.",
},
{
key: "model_providers..experimental_bearer_token",
type: "string",
description:
"Bearer token langsung untuk penyedia (tidak disarankan; gunakan env_key).",
},
{
key: "model_providers..requires_openai_auth",
type: "boolean",
description:
"Penyedia menggunakan autentikasi OpenAI (default: false).",
},
{
key: "model_providers..wire_api",
type: "responses",
description:
"Protokol yang digunakan penyedia. responses adalah satu-satunya nilai yang didukung dan menjadi default jika tidak dicantumkan.",
},
{
key: "model_providers..query_params",
type: "map<string,string>",
description: "Parameter kueri tambahan yang ditambahkan ke permintaan penyedia.",
},
{
key: "model_providers..http_headers",
type: "map<string,string>",
description: "Header HTTP statis yang ditambahkan ke permintaan penyedia.",
},
{
key: "model_providers..env_http_headers",
type: "map<string,string>",
description:
"Header HTTP yang diisi dari variabel lingkungan jika tersedia.",
},
{
key: "model_providers..request_max_retries",
type: "number",
description:
"Jumlah percobaan ulang untuk permintaan HTTP ke penyedia (default: 4).",
},
{
key: "model_providers..stream_max_retries",
type: "number",
description: "Jumlah percobaan ulang untuk interupsi streaming SSE (default: 5).",
},
{
key: "model_providers..stream_idle_timeout_ms",
type: "number",
description:
"Batas waktu tidak aktif untuk stream SSE dalam milidetik (default: 300000).",
},
{
key: "model_providers..supports_websockets",
type: "boolean",
description:
"Menentukan apakah penyedia tersebut mendukung transport WebSocket Responses API.",
},
{
key: "model_providers..supports_standalone_web_search",
type: "boolean",
description:
"Iklankan dukungan untuk endpoint pencarian web mandiri yang kompatibel (default: false). Pencarian mandiri masih dalam pengembangan dan nonaktif secara default; kompatibilitas penyedia saja tidak mengaktifkannya.",
},
{
key: "model_providers..auth",
type: "table",
description:
"Konfigurasi bearer token berbasis perintah untuk penyedia khusus. Jangan gabungkan dengan env_key, experimental_bearer_token, atau requires_openai_auth.",
},
{
key: "model_providers..auth.command",
type: "string",
description:
"Perintah yang dijalankan saat Codex memerlukan bearer token. Perintah harus mencetak token ke stdout.",
},
{
key: "model_providers..auth.args",
type: "array",
description: "Argumen yang diteruskan ke perintah token.",
},
{
key: "model_providers..auth.timeout_ms",
type: "number",
description:
"Waktu proses maksimum perintah token dalam milidetik (default: 5000).",
},
{
key: "model_providers..auth.refresh_interval_ms",
type: "number",
description:
"Seberapa sering Codex menyegarkan token secara proaktif dalam milidetik (default: 300000). Tetapkan ke 0 untuk menyegarkan hanya setelah percobaan ulang autentikasi.",
},
{
key: "model_providers..auth.cwd",
type: "string (path)",
description: "Direktori kerja untuk perintah token.",
},
{
key: "model_providers.amazon-bedrock.aws.profile",
type: "string",
description:
"Nama profil AWS yang digunakan oleh penyedia amazon-bedrock bawaan.",
},
{
key: "model_providers.amazon-bedrock.aws.region",
type: "string",
description: "Wilayah AWS yang digunakan oleh penyedia amazon-bedrock bawaan.",
},
{
key: "model_reasoning_effort",
type: "minimal | low | medium | high | xhigh",
description:
"Sesuaikan upaya penalaran untuk model yang didukung (khusus Responses API; xhigh bergantung pada model).",
},
{
key: "plan_mode_reasoning_effort",
type: "none | minimal | low | medium | high | xhigh",
description:
"Penggantian penalaran khusus mode Rencana. Jika tidak ditetapkan, mode Rencana menggunakan preset bawaan.",
},
{
key: "model_reasoning_summary",
type: "auto | concise | detailed | none",
description:
"Pilih tingkat detail ringkasan penalaran atau nonaktifkan ringkasan sepenuhnya.",
},
{
key: "model_verbosity",
type: "low | medium | high",
description:
"Penggantian tingkat kepanjangan GPT-5 Responses API opsional; jika tidak ditetapkan, default model/preset yang dipilih akan digunakan.",
},
{
key: "model_supports_reasoning_summaries",
type: "boolean",
description: "Paksa Codex untuk mengirim atau tidak mengirim metadata penalaran.",
},
{
key: "shell_environment_policy.inherit",
type: "all | core | none",
description:
"Pewarisan lingkungan dasar saat membuat subproses.",
},
{
key: "shell_environment_policy.ignore_default_excludes",
type: "boolean",
description:
"Pertahankan variabel yang mengandung KEY, SECRET, atau TOKEN sebelum filter lain dijalankan (default: true). Tetapkan ke false untuk menerapkan pengecualian otomatis berdasarkan nama rahasia.",
},
{
key: "shell_environment_policy.filters",
type: "map<string, include | exclude>",
description:
"Filter pola variabel lingkungan kanonis yang tidak membedakan kapitalisasi. Entri penyertaan membuat daftar izin dan tidak dapat memulihkan nilai yang dikecualikan. Nilai eksplisit set diterapkan setelah pengecualian. Jangan gabungkan filter dengan array lama exclude atau include_only dalam lapisan yang sama.",
},
{
key: "shell_environment_policy.exclude",
type: "array",
description:
"Pola pengecualian variabel lingkungan lama. Gunakan shell_environment_policy.filters untuk konfigurasi baru; jangan gabungkan kedua bentuk dalam lapisan yang sama.",
},
{
key: "shell_environment_policy.include_only",
type: "array",
description:
"Daftar izin pola variabel lingkungan lama. Gunakan shell_environment_policy.filters untuk konfigurasi baru; jangan gabungkan kedua bentuk dalam lapisan yang sama.",
},
{
key: "shell_environment_policy.set",
type: "map<string,string>",
description:
"Nilai lingkungan eksplisit yang disuntikkan setelah pengecualian; filter penyertaan tetap dapat menghapusnya.",
},
{
key: "shell_environment_policy.experimental_use_profile",
type: "boolean",
description: "Gunakan profil shell pengguna saat membuat subproses.",
},
{
key: "project_root_markers",
type: "array",
description:
"Daftar nama file penanda root proyek; digunakan saat menelusuri direktori induk untuk menemukan root proyek.",
},
{
key: "project_doc_max_bytes",
type: "number",
description:
"Jumlah byte maksimum yang dibaca dari AGENTS.md saat menyusun instruksi proyek.",
},
{
key: "project_doc_fallback_filenames",
type: "array",
description: "Nama file tambahan yang dicoba saat AGENTS.md tidak tersedia.",
},
{
key: "history.persistence",
type: "save-all | none",
description:
"Kontrol apakah Codex menyimpan transkrip sesi ke history.jsonl.",
},
{
key: "tool_output_token_limit",
type: "number",
description:
"Anggaran token untuk menyimpan keluaran alat/fungsi individual dalam riwayat.",
},
{
key: "background_terminal_max_timeout",
type: "number",
description:
"Jendela polling maksimum dalam milidetik untuk polling write_stdin kosong (polling terminal latar belakang). Default: 300000 (5 menit). Menggantikan key lama background_terminal_timeout.",
},
{
key: "history.max_bytes",
type: "number",
description:
"Jika ditetapkan, membatasi ukuran file riwayat dalam byte dengan menghapus entri terlama.",
},
{
key: "file_opener",
type: "vscode | vscode-insiders | windsurf | cursor | none",
description:
"Skema URI yang digunakan untuk membuka sitasi dari keluaran Codex (default: vscode).",
},
{
key: "otel.environment",
type: "string",
description:
"Tag lingkungan yang diterapkan pada peristiwa OpenTelemetry yang dipancarkan (default: dev).",
},
{
key: "otel.exporter",
type: "none | otlp-http | otlp-grpc",
description:
"Pilih eksportir OpenTelemetry dan berikan metadata endpoint yang diperlukan.",
},
{
key: "otel.trace_exporter",
type: "none | otlp-http | otlp-grpc",
description:
"Pilih eksportir jejak OpenTelemetry dan berikan metadata endpoint yang diperlukan.",
},
{
key: "otel.metrics_exporter",
type: "none | statsig | otlp-http | otlp-grpc",
description:
"Pilih eksportir metrik OpenTelemetry (default-nya adalah statsig).",
},
{
key: "otel.log_user_prompt",
type: "boolean",
description:
"Ikut serta dalam ekspor prompt pengguna mentah bersama log OpenTelemetry.",
},
{
key: "otel.exporter..endpoint",
type: "string",
description: "Endpoint eksportir untuk log OTEL.",
},
{
key: "otel.exporter..protocol",
type: "binary | json",
description: "Protokol yang digunakan oleh eksportir OTLP/HTTP.",
},
{
key: "otel.exporter..headers",
type: "map<string,string>",
description: "Header statis yang disertakan dalam permintaan eksportir OTEL.",
},
{
key: "otel.trace_exporter..endpoint",
type: "string",
description: "Endpoint eksportir jejak untuk log OTEL.",
},
{
key: "otel.trace_exporter..protocol",
type: "binary | json",
description: "Protokol yang digunakan oleh eksportir jejak OTLP/HTTP.",
},
{
key: "otel.trace_exporter..headers",
type: "map<string,string>",
description: "Header statis yang disertakan dalam permintaan eksportir jejak OTEL.",
},
{
key: "otel.exporter..tls.ca-certificate",
type: "string",
description: "Path sertifikat CA untuk TLS eksportir OTEL.",
},
{
key: "otel.exporter..tls.client-certificate",
type: "string",
description: "Path sertifikat klien untuk TLS eksportir OTEL.",
},
{
key: "otel.exporter..tls.client-private-key",
type: "string",
description: "Path key privat klien untuk TLS eksportir OTEL.",
},
{
key: "otel.trace_exporter..tls.ca-certificate",
type: "string",
description: "Path sertifikat CA untuk TLS eksportir jejak OTEL.",
},
{
key: "otel.trace_exporter..tls.client-certificate",
type: "string",
description: "Path sertifikat klien untuk TLS eksportir jejak OTEL.",
},
{
key: "otel.trace_exporter..tls.client-private-key",
type: "string",
description: "Path key privat klien untuk TLS eksportir jejak OTEL.",
},
{
key: "tui",
type: "table",
description:
"Opsi khusus TUI seperti mengaktifkan notifikasi desktop inline.",
},
{
key: "tui.notifications",
type: "boolean | array",
description:
"Aktifkan notifikasi TUI; batasi secara opsional ke jenis peristiwa tertentu.",
},
{
key: "tui.notification_method",
type: "auto | osc9 | bel",
description:
"Metode notifikasi untuk notifikasi terminal (default: auto).",
},
{
key: "tui.notification_condition",
type: "unfocused | always",
description:
"Kontrol apakah notifikasi TUI dipicu hanya saat terminal tidak berfokus atau tanpa memandang fokus. Default-nya adalah unfocused.",
},
{
key: "tui.animations",
type: "boolean",
description:
"Aktifkan animasi terminal (layar sambutan, efek kilau, spinner) (default: true).",
},
{
key: "tui.alternate_screen",
type: "auto | always | never",
description:
"Kontrol penggunaan layar alternatif untuk TUI (default: auto; auto melewatinya di Zellij untuk mempertahankan scrollback).",
},
{
key: "tui.resume_cwd",
type: "current | session",
description:
"Direktori kerja yang digunakan saat melanjutkan atau membuat fork sesi. Jika tidak ditetapkan, Codex meminta Anda memilih jika direktori saat ini berbeda dari direktori sesi yang disimpan.",
},
{
key: "tui.vim_mode_default",
type: "boolean",
description:
"Mulai composer dalam mode normal Vim, bukan mode insert (default: false). Anda tetap dapat mengalihkannya per sesi dengan /vim.",
},
{
key: "tui.raw_output_mode",
type: "boolean",
description:
"Mulai TUI dalam mode scrollback mentah untuk pemilihan terminal yang mudah disalin (default: false). Anda dapat mengalihkannya dengan /raw atau key binding default alt-r.",
},
{
key: "tui.show_tooltips",
type: "boolean",
description:
"Tampilkan tooltip orientasi awal di layar sambutan TUI (default: true).",
},
{
key: "tui.status_line",
type: "array | null",
description:
"Daftar berurutan pengidentifikasi item baris status footer TUI. null menonaktifkan baris status.",
},
{
key: "tui.terminal_title",
type: "array | null",
description:
'Daftar berurutan pengidentifikasi item judul jendela/tab terminal. Default-nya adalah ["spinner", "project"]; null menonaktifkan pembaruan judul.',
},
{
key: "tui.theme",
type: "string",
description:
"Penggantian tema penyorotan sintaks (nama tema dalam kebab-case).",
},
{
key: "tui.keymap..",
type: "string | array",
description:
"Pengikatan pintasan keyboard untuk tindakan TUI. Konteks yang didukung mencakup global, chat, composer, editor, vim_normal, vim_operator, vim_text_object, pager, list, dan approval. Tindakan composer tertentu beralih ke pengikatan tui.keymap.global yang cocok; pengikatan khusus konteks diprioritaskan jika didukung.",
},
{
key: "tui.keymap.. = []",
type: "empty array",
description:
"Lepaskan pengikatan tindakan dalam konteks keymap tersebut. Nama key menggunakan string yang dinormalisasi seperti ctrl-a, shift-enter, page-down, atau minus.",
},
{
key: "plugins..mcp_servers..enabled",
type: "boolean",
description:
"Aktifkan atau nonaktifkan server MCP yang dibundel oleh plugin terpasang tanpa mengubah manifes plugin.",
},
{
key: "plugins..mcp_servers..default_tools_approval_mode",
type: "auto | prompt | writes | approve",
description:
"Perilaku persetujuan default untuk alat pada server MCP yang disediakan plugin.",
},
{
key: "plugins..mcp_servers..enabled_tools",
type: "array",
description:
"Daftar izin alat yang diekspos dari server MCP yang disediakan plugin.",
},
{
key: "plugins..mcp_servers..disabled_tools",
type: "array",
description:
"Daftar penolakan yang diterapkan setelah enabled_tools untuk server MCP yang disediakan plugin.",
},
{
key: "plugins..mcp_servers..tools..approval_mode",
type: "auto | prompt | writes | approve",
description:
"Penggantian perilaku persetujuan per alat untuk alat MCP yang disediakan plugin.",
},
{
key: "tui.model_availability_nux.",
type: "integer",
description: "Status tooltip startup internal yang menggunakan slug model sebagai key.",
},
{
key: "hide_agent_reasoning",
type: "boolean",
description:
"Sembunyikan peristiwa penalaran dalam TUI maupun keluaran codex exec.",
},
{
key: "show_raw_agent_reasoning",
type: "boolean",
description:
"Tampilkan konten penalaran mentah saat model aktif memancarkannya.",
},
{
key: "disable_paste_burst",
type: "boolean",
description: "Nonaktifkan deteksi penempelan beruntun dalam TUI.",
},
{
key: "windows_wsl_setup_acknowledged",
type: "boolean",
description: "Lacak pengakuan orientasi awal Windows (khusus Windows).",
},
{
key: "chatgpt_base_url",
type: "string",
description: "Ganti URL dasar yang digunakan selama alur login ChatGPT.",
},
{
key: "cli_auth_credentials_store",
type: "file | keyring | auto",
description:
"Kontrol tempat CLI menyimpan kredensial dalam cache (auth.json berbasis file atau keychain OS).",
},
{
key: "mcp_oauth_credentials_store",
type: "auto | file | keyring",
description: "Penyimpanan yang diutamakan untuk kredensial MCP OAuth.",
},
{
key: "mcp_oauth_callback_port",
type: "integer",
description:
"Port tetap opsional untuk server callback HTTP lokal yang digunakan selama login MCP OAuth. Jika tidak ditetapkan, Codex mengikat ke port sementara yang dipilih OS.",
},
{
key: "mcp_oauth_callback_url",
type: "string",
description:
"Penggantian URL dasar callback opsional untuk login MCP OAuth (misalnya, URL ingress devbox). Codex menambahkan ID callback khusus server sebelum mengirim OAuth redirect_uri akhir, jadi daftarkan URI turunan lengkap pada penyedia Anda. mcp_oauth_callback_port tetap mengontrol port listener callback.",
},
{
key: "experimental_use_unified_exec_tool",
type: "boolean",
description:
"Nama lama untuk mengaktifkan exec terpadu; utamakan [features].unified_exec atau codex --enable unified_exec.",
},
{
key: "tools.web_search",
type: 'boolean | { context_size = "low|medium|high", allowed_domains = [string], location = { country, region, city, timezone } }',
description:
"Konfigurasi alat pencarian web opsional. Bentuk boolean lama tetap diterima, tetapi bentuk objek memungkinkan Anda menetapkan ukuran konteks pencarian, domain yang diizinkan, dan perkiraan lokasi pengguna.",
},
{
key: "tools.view_image",
type: "boolean",
description: "Aktifkan alat lampiran gambar lokal view_image.",
},
{
key: "web_search",
type: "disabled | cached | indexed | live",
description:
'Mode pencarian web (default: "cached"; cached menggunakan indeks yang dikelola OpenAI tanpa akses web eksternal; indexed mengizinkan akses eksternal hanya jika diizinkan oleh indeks pencarian; jika Anda menggunakan --yolo atau pengaturan sandbox akses penuh lainnya, default-nya menjadi "live"). Gunakan "live" untuk pengambilan langsung tanpa batas, atau "disabled" untuk menghapus alat.',
},
{
key: "default_permissions",
type: "string",
description:
"Nama profil izin default yang diterapkan pada pemanggilan alat yang di-sandbox. Profil bawaan adalah :read-only, :workspace, dan :danger-full-access; nama profil khusus memerlukan tabel [permissions.<name>] yang cocok. Jangan gabungkan dengan sandbox_mode atau [sandbox_workspace_write].",
},
{
key: "permissions..description",
type: "string",
description:
"Deskripsi yang mudah dibaca untuk profil bernama ini. Profil tidak mewarisi deskripsi induknya melalui extends.",
},
{
key: "permissions..extends",
type: "string",
description:
"Profil induk opsional yang diterapkan sebelum profil bernama ini. Tetapkan ke profil bernama lain, :read-only, atau :workspace; :danger-full-access, induk yang tidak didefinisikan, dan siklus akan ditolak.",
},
{
key: "permissions..workspace_roots",
type: "table",
description:
"Root workspace yang ditentukan profil dan menerima aturan sistem file :workspace_roots bersama root workspace runtime sesi.",
},
{
key: "permissions..workspace_roots.",
type: "boolean",
description:
"Sertakan path ke dalam kumpulan root workspace profil saat true. Entri yang dinonaktifkan tetap tidak aktif.",
},
{
key: "permissions..filesystem",
type: "table",
description:
"Profil izin sistem file bernama. Setiap key merupakan path absolut atau token khusus seperti :minimal atau :workspace_roots.",
},
{
key: "permissions..filesystem.glob_scan_max_depth",
type: "number",
description:
"Kedalaman maksimum untuk memperluas pola glob penolakan baca pada platform yang membuat snapshot kecocokan sebelum startup sandbox. Harus setidaknya 1 jika ditetapkan.",
},
{
key: "permissions..filesystem.",
type: '"read" | "write" | "deny" | table',
description:
'Berikan akses langsung untuk path, pola glob, atau token khusus, atau batasi entri bertingkat di bawah root tersebut. Gunakan "deny" untuk menolak pembacaan path yang cocok.',
},
{
key: 'permissions..filesystem.":workspace_roots".',
type: '"read" | "write" | "deny"',
description:
'Akses sistem file terbatas yang relatif terhadap setiap root workspace efektif. Gunakan "." untuk root itu sendiri; subpath glob seperti "**/*.env" dapat menolak pembacaan dengan "deny".',
},
{
key: "permissions..network.enabled",
type: "boolean",
description:
"Aktifkan akses jaringan untuk profil izin bernama ini. Ini mengubah kebijakan jaringan sandbox; pengaturan ini tidak memulai proksi jaringan dengan sendirinya.",
},
{
key: "permissions..network.proxy_url",
type: "string",
description:
"URL listener HTTP yang digunakan saat profil izin ini mengaktifkan jaringan yang di-sandbox.",
},
{
key: "permissions..network.enable_socks5",
type: "boolean",
description:
"Ekspos dukungan SOCKS5 saat profil izin ini mengaktifkan jaringan yang di-sandbox.",
},
{
key: "permissions..network.socks_url",
type: "string",
description: "Endpoint proksi SOCKS5 yang digunakan oleh profil izin ini.",
},
{
key: "permissions..network.enable_socks5_udp",
type: "boolean",
description: "Izinkan UDP melalui listener SOCKS5 saat diaktifkan.",
},
{
key: "permissions..network.allow_upstream_proxy",
type: "boolean",
description:
"Izinkan jaringan yang di-sandbox dirangkai melalui proksi upstream lain.",
},
{
key: "permissions..network.dangerously_allow_non_loopback_proxy",
type: "boolean",
description:
"Izinkan alamat bind non-loopback untuk listener jaringan yang di-sandbox. Mengaktifkannya dapat mengekspos listener di luar localhost.",
},
{
key: "permissions..network.dangerously_allow_all_unix_sockets",
type: "boolean",
description:
"Izinkan tujuan soket Unix sembarang, bukan kumpulan terbatas default. Gunakan hanya di lingkungan yang dikontrol ketat.",
},
{
key: "permissions..network.mode",
type: "limited | full",
description: "Mode proksi jaringan yang digunakan untuk lalu lintas subproses.",
},
{
key: "permissions..network.domains",
type: "table",
description:
"Aturan domain untuk jaringan yang di-sandbox. Mendukung host persis, *.example.com hanya untuk subdomain, **.example.com untuk domain apex beserta subdomain, dan aturan izin global *. deny diprioritaskan jika terjadi konflik.",
},
{
key: "permissions..network.domains.",
type: "allow | deny",
description:
"Izinkan atau tolak host persis atau pola wildcard terbatas seperti *.example.com atau **.example.com.",
},
{
key: "permissions..network.unix_sockets",
type: "table",
description:
"Penggantian daftar izin soket Unix untuk jaringan yang di-sandbox. Gunakan path soket sebagai key; allow menambahkan path, sedangkan deny menolaknya.",
},
{
key: "permissions..network.unix_sockets.",
type: "allow | deny",
description:
"Tambahkan path soket Unix absolut ke daftar izin efektif dengan allow, atau tolak dengan deny. Entri yang ditolak dihilangkan dari daftar izin efektif.",
},
{
key: "permissions..network.allow_local_binding",
type: "boolean",
description:
"Izinkan akses jaringan lokal/privat yang lebih luas melalui jaringan yang di-sandbox. Aturan izin literal IP lokal persis atau localhost tetap dapat mengizinkan target lokal tertentu saat nilai ini tetap false.",
},
{
key: "projects..trust_level",
type: "string",
description:
'Tandai proyek atau worktree sebagai tepercaya atau tidak tepercaya ("trusted" | "untrusted"). Proyek tidak tepercaya melewati lapisan .codex/ yang tercakup dalam proyek, termasuk konfigurasi, hook, dan aturan lokal proyek.',
},
{
key: "notice.hide_full_access_warning",
type: "boolean",
description: "Lacak pengakuan prompt peringatan akses penuh.",
},
{
key: "notice.hide_world_writable_warning",
type: "boolean",
description:
"Lacak pengakuan peringatan direktori Windows yang dapat ditulis oleh semua pengguna.",
},
{
key: "notice.hide_rate_limit_model_nudge",
type: "boolean",
description: "Lacak pilihan untuk tidak menerima pengingat pergantian model akibat batas laju.",
},
{
key: "notice.hide_gpt5_1_migration_prompt",
type: "boolean",
description: "Lacak pengakuan prompt migrasi GPT-5.1.",
},
{
key: "notice.hide_gpt-5.1-codex-max_migration_prompt",
type: "boolean",
description:
"Lacak pengakuan prompt migrasi gpt-5.1-codex-max.",
},
{
key: "notice.model_migrations",
type: "map<string,string>",
description: "Lacak migrasi model yang telah diakui sebagai pemetaan lama->baru.",
},
{
key: "forced_login_method",
type: "chatgpt | api",
description: "Batasi Codex ke metode autentikasi tertentu.",
},
{
key: "forced_chatgpt_workspace_id",
type: "string (uuid)",
description: "Batasi login ChatGPT ke pengidentifikasi workspace tertentu.",
},
]}
client:load
/>
Anda dapat menemukan skema JSON terbaru untuk config.toml di sini .
Untuk mendapatkan pelengkapan otomatis dan diagnostik saat mengedit config.toml di VS Code atau Cursor, Anda dapat menginstal ekstensi Even Better TOML dan menambahkan baris ini di bagian atas config.toml Anda:
#:schema https://developers.openai.com/codex/config-schema.json Catatan: Ganti nama experimental_instructions_file menjadi model_instructions_file. Codex menghentikan penggunaan kunci lama tersebut; perbarui konfigurasi yang ada agar menggunakan nama baru.
requirements.toml
requirements.toml adalah file konfigurasi yang diberlakukan oleh administrator dan membatasi pengaturan sensitif terhadap keamanan yang tidak dapat ditimpa oleh pengguna. Untuk detail, lokasi, dan contoh, lihat Persyaratan yang diberlakukan administrator .
Bagi pengguna ChatGPT Business dan Enterprise, Codex juga dapat menerapkan persyaratan
yang diambil dari cloud. Lihat halaman keamanan untuk mengetahui detail urutan prioritas.
Gunakan [features] di requirements.toml untuk menetapkan flag fitur runtime berdasarkan
kunci kanonis yang sama dengan yang digunakan config.toml. Persyaratan juga dapat mencakup kunci
khusus aplikasi terdokumentasi yang tidak termasuk dalam config.toml. Kunci yang tidak dicantumkan tetap
tidak dibatasi.
Beberapa persyaratan terkelola memberlakukan nilai konfigurasi yang persis sama, bukan
daftar yang diizinkan. Pengguna tidak dapat menimpa jalur, preferensi pembaruan, kebijakan shell login,
pengaturan umpan balik, atau pengaturan desktop privat Windows yang diberlakukan.
Daftar profil izin terkelola yang diizinkan memerlukan Codex 0.138.0 atau yang lebih baru. Codex
0.137.0 dan versi sebelumnya mengabaikan allowed_permission_profiles serta
default_permissions terkelola.
Gunakan allowed_sandbox_modes bersama sandbox_mode. Untuk deployment profil izin,
gunakan allowed_permission_profiles bersama
default_permissions terkelola.
Tabel [models.new_thread] menyediakan default terkelola, bukan pemberlakuan.
Pilihan peluncuran eksplisit dari flag CLI khusus atau penimpaan --config memiliki
prioritas. Penimpaan model atau upaya penalaran secara eksplisit akan melewati kedua
kolom model terkelola; service_tier bersifat independen.
<ConfigTable
options={[
{
key: "sqlite_home",
type: "string (path)",
description:
"Berlakukan direktori tempat Codex menyimpan status runtime berbasis SQLite.",
},
{
key: "log_dir",
type: "string (path)",
description: "Berlakukan direktori tempat Codex menulis file log lokal.",
},
{
key: "model_catalog_json",
type: "string (path)",
description: "Berlakukan katalog model JSON yang digunakan Codex saat dimulai.",
},
{
key: "check_for_update_on_startup",
type: "boolean",
description: "Berlakukan apakah Codex memeriksa pembaruan saat dimulai.",
},
{
key: "allow_login_shell",
type: "boolean",
description: "Berlakukan apakah alat shell dapat memulai shell login.",
},
{
key: "feedback",
type: "table",
description: "Pengaturan umpan balik terkelola.",
},
{
key: "feedback.enabled",
type: "boolean",
description:
"Berlakukan apakah pengguna dapat mengirimkan umpan balik di seluruh klien Codex.",
},
{
key: "allowed_approval_policies",
type: "array",
description:
"Nilai yang diizinkan untuk approval_policy (misalnya untrusted, on-request, never, dan granular).",
},
{
key: "allowed_approvals_reviewers",
type: "array",
description:
"Nilai yang diizinkan untuk approvals_reviewer, seperti user dan auto_review.",
},
{
key: "guardian_policy_config",
type: "string",
description:
"Instruksi kebijakan Markdown terkelola untuk peninjauan otomatis. Ini lebih diprioritaskan daripada [auto_review].policy lokal. Nilai kosong diabaikan.",
},
{
key: "allowed_permission_profiles",
type: "table",
description:
"Daftar lengkap profil izin yang diizinkan. Profil yang ditetapkan ke true diizinkan. Profil yang tidak dicantumkan atau ditetapkan ke false ditolak, termasuk profil yang ditambahkan dalam versi mendatang. Saat sumber persyaratan digabungkan, entri dicocokkan berdasarkan nama profil.",
},
{
key: "allowed_permission_profiles.",
type: "boolean",
description:
"Izinkan atau tolak profil izin bawaan atau khusus yang ditentukan dalam konfigurasi atau sumber persyaratan yang dimuat. Sumber persyaratan berikutnya dengan prioritas lebih tinggi dapat menggunakan false untuk menonaktifkan profil yang diizinkan oleh sumber sebelumnya dengan prioritas lebih rendah.",
},
{
key: "default_permissions",
type: "string",
description:
"Profil izin default terkelola. Profil harus diizinkan oleh allowed_permission_profiles. Tetapkan ini secara eksplisit agar perilakunya dapat diprediksi; jika tidak dicantumkan, Codex menggunakan default :workspace hanya jika :workspace dan :read-only sama-sama diizinkan secara eksplisit.",
},
{
key: "enforce_residency",
type: "string",
description:
"Wajibkan lalu lintas layanan Codex menggunakan residensi data yang didukung. Saat ini menerima us.",
},
{
key: "models",
type: "table",
description:
"Default model terkelola untuk utas baru. Nilai ini lebih diprioritaskan daripada default pengguna dan proyek, tetapi pilihan eksplisit untuk utas baru dapat menimpanya.",
},
{
key: "models.new_thread",
type: "table",
description:
"Default yang diterapkan saat utas lokal baru dimulai. Setiap pengaturan model bersifat opsional.",
},
{
key: "models.new_thread.model",
type: "string",
description:
"Model default untuk utas baru. Penimpaan --model atau model/penalaran --config secara eksplisit memiliki prioritas.",
},
{
key: "models.new_thread.model_reasoning_effort",
type: "string",
description:
"Upaya penalaran default untuk utas baru. Penimpaan model atau upaya penalaran secara eksplisit akan melewati kedua kolom model terkelola.",
},
{
key: "models.new_thread.service_tier",
type: "string",
description:
"Tingkat layanan default untuk utas baru. Penimpaan tingkat layanan secara eksplisit memiliki prioritas secara independen dari kolom model.",
},
{
key: "permissions",
type: "table",
description:
"Profil izin yang ditentukan administrator dan menggunakan nama profil sebagai kunci. Menggunakan kolom profil yang sama dengan config.toml.",
},
{
key: "permissions.",
type: "table",
description:
"Profil izin yang ditentukan administrator. Nama tidak boleh diawali dengan :, menggunakan nama khusus filesystem, atau menduplikasi profil dari konfigurasi yang dimuat. Menggunakan kolom profil yang sama dengan config.toml; lihat panduan Izin untuk skema profil lengkap.",
},
{
key: "allowed_sandbox_modes",
type: "array",
description: "Nilai yang diizinkan untuk sandbox_mode.",
},
{
key: "windows",
type: "table",
description: "Persyaratan sandbox Windows native.",
},
{
key: "windows.allowed_sandbox_implementations",
type: "array",
description:
"Implementasi sandbox Windows native yang diizinkan untuk windows.sandbox (elevated dan unelevated). Daftar tidak boleh kosong. Jika keduanya diizinkan dan tidak ada mode yang dipilih, Codex memilih elevated.",
},
{
key: "windows.sandbox_private_desktop",
type: "boolean",
description:
"Berlakukan apakah sandbox Windows native memulai proses turunannya di desktop privat.",
},
{
key: "remote_sandbox_config",
type: "array",
description:
"Persyaratan sandbox khusus host. Entri pertama dengan hostname_patterns yang cocok dengan nama host yang ditentukan akan menimpa allowed_sandbox_modes tingkat atas untuk sumber persyaratan tersebut. Entri khusus host saat ini hanya menimpa mode sandbox.",
},
{
key: "remote_sandbox_config[].hostname_patterns",
type: "array",
description:
"Pola nama host yang tidak peka huruf besar-kecil. Mendukung * untuk urutan karakter apa pun dan ? untuk satu karakter.",
},
{
key: "remote_sandbox_config[].allowed_sandbox_modes",
type: "array",
description:
"Mode sandbox yang diizinkan untuk diterapkan saat entri khusus host ini cocok.",
},
{
key: "allowed_web_search_modes",
type: "array",
description:
"Nilai yang diizinkan untuk web_search (disabled, cached, indexed, live). disabled selalu diizinkan; daftar kosong secara efektif hanya mengizinkan disabled.",
},
{
key: "allow_managed_hooks_only",
type: "boolean",
description:
"Jika true, Codex melewati hook pengguna, proyek, sesi, dan plugin, tetapi tetap mengizinkan hook terkelola dari requirements.toml dan lapisan konfigurasi terkelola lainnya.",
},
{
key: "allow_appshots",
type: "boolean",
description:
"Tetapkan ke false untuk menonaktifkan Appshots bagi pengguna terkelola. Jika tidak dicantumkan, Appshots tetap tidak dibatasi oleh persyaratan dan mengikuti ketersediaan produk normal.",
},
{
key: "allow_remote_control",
type: "boolean",
description:
"Tetapkan ke false untuk menonaktifkan kendali jarak jauh perangkat bagi pengguna terkelola. Jika tidak dicantumkan, kendali jarak jauh perangkat tetap tidak dibatasi oleh persyaratan dan mengikuti ketersediaan produk normal.",
},
{
key: "features.plugin_sharing",
type: "boolean",
description:
"Tetapkan ke false dalam requirements.toml yang dikelola di cloud untuk menonaktifkan berbagi ruang kerja bagi plugin yang dibuat secara lokal.",
},
{
key: "features",
type: "table",
description:
"Nilai fitur yang ditetapkan. Gunakan nama kanonis dari config.toml untuk fitur runtime; kunci persyaratan khusus aplikasi yang terdokumentasi juga didukung di sini.",
},
{
key: "features.",
type: "boolean",
description:
"Wajibkan fitur runtime atau aplikasi yang terdokumentasi agar tetap diaktifkan atau dinonaktifkan.",
},
{
key: "features.apps",
type: "boolean",
description:
"Tetapkan ketersediaan integrasi Apps menjadi aktif atau nonaktif bagi pengguna terkelola.",
},
{
key: "features.in_app_updates",
type: "boolean",
description:
"Tetapkan ke false dalam requirements.toml untuk menonaktifkan pembaruan dalam aplikasi. Pembaruan tetap diaktifkan secara default jika persyaratan ini tidak dicantumkan.",
},
{
key: "features.in_app_browser",
type: "boolean",
description:
"Tetapkan ke false dalam requirements.toml untuk menonaktifkan panel browser bawaan.",
},
{
key: "features.browser_use",
type: "boolean",
description:
"Tetapkan ke false dalam requirements.toml untuk menonaktifkan Computer Use di browser dan ketersediaan Browser Agent.",
},
{
key: "features.browser_use_external",
type: "boolean",
description:
"Tetapkan ke false dalam requirements.toml untuk menonaktifkan Computer Use di browser eksternal.",
},
{
key: "features.browser_use_full_cdp_access",
type: "boolean",
description:
"Tetapkan ke false dalam requirements.toml untuk menonaktifkan akses penuh Chrome DevTools Protocol di runtime lokal, termasuk mode Browser Developer, dan mencegah aplikasi desktop ChatGPT mengaktifkan pengaturan terkait. Jika tidak dicantumkan, ketersediaan produk normal berlaku.",
},
{
key: "features.fast_mode",
type: "boolean",
description:
"Tetapkan fitur kanonis fast_mode menjadi aktif atau nonaktif bagi pengguna terkelola.",
},
{
key: "features.guardian_approval",
type: "boolean",
description:
"Tetapkan ketersediaan persetujuan Guardian menjadi aktif atau nonaktif bagi pengguna terkelola.",
},
{
key: "features.memories",
type: "boolean",
description: "Tetapkan ketersediaan Memories menjadi aktif atau nonaktif bagi pengguna terkelola.",
},
{
key: "features.multi_agent",
type: "boolean",
description: "Tetapkan ketersediaan multi-agent menjadi aktif atau nonaktif bagi pengguna terkelola.",
},
{
key: "features.plugins",
type: "boolean",
description: "Tetapkan ketersediaan plugin menjadi aktif atau nonaktif bagi pengguna terkelola.",
},
{
key: "features.remote_plugin",
type: "boolean",
description:
"Tetapkan ketersediaan katalog plugin jarak jauh menjadi aktif atau nonaktif bagi pengguna terkelola.",
},
{
key: "features.computer_use",
type: "boolean",
description:
"Tetapkan ke false dalam requirements.toml untuk menonaktifkan Computer Use, Record & Replay, serta alur penginstalan atau pengaktifan terkait.",
},
{
key: "features.workspace_dependencies",
type: "boolean",
description:
"Tetapkan ketersediaan runtime dependensi ruang kerja yang dibundel menjadi aktif atau nonaktif bagi pengguna terkelola.",
},
{
key: "computer_use",
type: "table",
description:
"Persyaratan Computer Use yang diberlakukan dari requirements.toml.",
},
{
key: "computer_use.allow_locked_computer_use",
type: "boolean",
description:
"Tetapkan ke false untuk mencegah Computer Use beroperasi setelah perangkat macOS terkelola dikunci. Jika tidak dicantumkan, penggunaan saat terkunci tetap tidak dibatasi oleh persyaratan.",
},
{
key: "experimental_network",
type: "table",
description:
"Persyaratan akses jaringan yang diberlakukan dari requirements.toml. Batasan ini terpisah dari features.network_proxy dan dapat mengonfigurasi jaringan dalam sandbox tanpa flag fitur pengguna.",
},
{
key: "experimental_network.enabled",
type: "boolean",
description:
"Aktifkan persyaratan jaringan dalam sandbox. Ini tidak memberikan akses jaringan jika sandbox aktif tetap menonaktifkan jaringan perintah.",
},
{
key: "experimental_network.http_port",
type: "integer",
description:
"Port listener HTTP loopback yang digunakan untuk persyaratan [experimental_network].",
},
{
key: "experimental_network.socks_port",
type: "integer",
description:
"Port listener SOCKS5 loopback yang digunakan untuk persyaratan [experimental_network].",
},
{
key: "experimental_network.allow_upstream_proxy",
type: "boolean",
description:
"Izinkan jaringan dalam sandbox dirangkai melalui proksi upstream dari lingkungan.",
},
{
key: "experimental_network.dangerously_allow_non_loopback_proxy",
type: "boolean",
description:
"Izinkan alamat listener non-loopback untuk persyaratan [experimental_network]. Mengaktifkannya dapat mengekspos listener di luar localhost.",
},
{
key: "experimental_network.dangerously_allow_all_unix_sockets",
type: "boolean",
description:
"Izinkan tujuan soket Unix apa pun, bukan hanya akses yang tercantum dalam daftar izin. Gunakan hanya di lingkungan yang dikendalikan secara ketat.",
},
{
key: "experimental_network.domains",
type: "map<string, allow | deny>",
description:
"Kebijakan domain administrator berbentuk peta untuk jaringan dalam sandbox. Mendukung host persis, *.example.com hanya untuk subdomain, **.example.com untuk domain apex beserta subdomain, dan aturan izin * global; utamakan aturan dengan cakupan terbatas karena * membuka akses keluar publik secara luas. deny diprioritaskan jika terjadi konflik. Jangan gabungkan ini dengan experimental_network.allowed_domains atau experimental_network.denied_domains.",
},
{
key: "experimental_network.allowed_domains",
type: "array",
description:
"Aturan izin administrator berbentuk daftar untuk jaringan dalam sandbox. Jangan gabungkan ini dengan experimental_network.domains.",
},
{
key: "experimental_network.denied_domains",
type: "array",
description:
"Aturan penolakan administrator berbentuk daftar untuk jaringan dalam sandbox. Jangan gabungkan ini dengan experimental_network.domains.",
},
{
key: "experimental_network.managed_allowed_domains_only",
type: "boolean",
description:
"Jika true, hanya aturan izin yang dikelola administrator yang tetap berlaku ketika persyaratan jaringan dalam sandbox aktif; tambahan daftar izin pengguna diabaikan. Tanpa aturan izin terkelola, aturan izin domain yang ditambahkan pengguna tidak tetap berlaku.",
},
{
key: "experimental_network.unix_sockets",
type: "map<string, allow | deny>",
description:
"Kebijakan soket Unix yang dikelola administrator untuk jaringan dalam sandbox.",
},
{
key: "experimental_network.allow_local_binding",
type: "boolean",
description:
"Izinkan akses jaringan lokal/privat yang lebih luas untuk jaringan dalam sandbox. Aturan izin literal IP lokal persis atau localhost masih dapat mengizinkan target lokal tertentu saat ini tetap false.",
},
{
key: "hooks",
type: "table",
description:
"Hook siklus hidup terkelola yang diberlakukan administrator. Memerlukan direktori hook terkelola dan menggunakan skema peristiwa yang sama dengan [hooks] inline dalam config.toml.",
},
{
key: "hooks.managed_dir",
type: "string (absolute path)",
description:
"Direktori yang berisi skrip hook terkelola di macOS dan Linux. Codex memvalidasi bahwa jalurnya absolut dan tersedia sebelum memuat hook terkelola.",
},
{
key: "hooks.windows_managed_dir",
type: "string (absolute path)",
description:
"Direktori yang berisi skrip hook terkelola di Windows. Codex memvalidasi bahwa jalurnya absolut dan tersedia sebelum memuat hook terkelola.",
},
{
key: "hooks.",
type: "array",
description:
"Grup pencocok untuk peristiwa hook seperti PreToolUse, PermissionRequest, PostToolUse, PreCompact, PostCompact, SessionStart, SessionEnd, SubagentStart, SubagentStop, UserPromptSubmit, atau Stop.",
},
{
key: "hooks.[].hooks",
type: "array",
description:
"Penangan hook untuk grup pencocok. Hook perintah saat ini didukung; penangan hook prompt dan agen diuraikan, tetapi dilewati.",
},
{
key: "hooks.[].hooks[].commandWindows",
type: "string",
description:
"Penimpaan perintah khusus Windows untuk hook perintah. Alias TOML command_windows juga diterima.",
},
{
key: "permissions.filesystem.deny_read",
type: "array",
description:
"Penolakan baca sistem file yang diberlakukan administrator. Entri dapat berupa jalur atau pola glob, dan pengguna tidak dapat melonggarkannya melalui konfigurasi lokal.",
},
{
key: "mcp_servers",
type: "table",
description:
"Daftar MCP server yang boleh diaktifkan. Nama server (<id>) dan identitasnya harus cocok agar MCP server dapat diaktifkan. MCP server terkonfigurasi yang tidak ada dalam daftar izin (atau memiliki identitas yang tidak cocok) akan dinonaktifkan.",
},
{
key: "mcp_servers..identity",
type: "table",
description:
"Aturan identitas untuk satu MCP server. Tetapkan command (stdio) atau url (HTTP yang dapat dialirkan).",
},
{
key: "mcp_servers..identity.command",
type: "string | table",
description:
"Izinkan MCP server stdio berdasarkan string perintah yang persis sama, atau gunakan tabel pencocok untuk mewajibkan pencocokan executable secara persis dan argumen secara berurutan. Bentuk string tidak memeriksa argumen, cwd, env, atau env_vars.",
},
{
key: "mcp_servers..identity.command.executable",
type: "string",
description:
"Executable yang harus sama persis dengan command terkonfigurasi milik server stdio.",
},
{
key: "mcp_servers..identity.command.args",
type: "array",
description:
"Pencocok argumen berurutan untuk server stdio. Daftar argumen terkonfigurasi harus memiliki panjang yang sama dan setiap posisi harus cocok. Pencocok perintah tidak memeriksa cwd, env, atau env_vars.",
},
{
key: "mcp_servers..identity.command.args[].match",
type: "exact | prefix | regex",
description: "Operasi pencocokan untuk posisi argumen ini.",
},
{
key: "mcp_servers..identity.command.args[].value",
type: "string",
description: "Nilai yang digunakan oleh pencocok argumen exact atau prefix.",
},
{
key: "mcp_servers..identity.command.args[].expression",
type: "string",
description:
"Ekspresi reguler yang digunakan oleh pencocok argumen regex. Ekspresi harus valid dan cocok dengan keseluruhan nilai argumen.",
},
{
key: "mcp_servers..identity.url",
type: "string | table",
description:
"Izinkan MCP server HTTP yang dapat dialirkan berdasarkan string URL yang persis sama, atau gunakan tabel pencocok nilai exact, prefix, atau regex.",
},
{
key: "mcp_servers..identity.url.match",
type: "exact | prefix | regex",
description: "Operasi pencocokan untuk URL MCP server yang dikonfigurasi.",
},
{
key: "mcp_servers..identity.url.value",
type: "string",
description: "Nilai yang digunakan oleh pencocok URL exact atau prefix.",
},
{
key: "mcp_servers..identity.url.expression",
type: "string",
description:
"Ekspresi reguler yang digunakan oleh pencocok URL regex. Ekspresi harus valid dan cocok dengan keseluruhan nilai URL.",
},
{
key: "plugins",
type: "table",
description:
"Daftar izin MCP server khusus plugin yang menggunakan pengidentifikasi plugin sebagai kunci. Jika tabel ini tersedia, server yang dibundel bersama plugin tanpa entri plugin dan server yang cocok akan dinonaktifkan.",
},
{
key: "plugins..mcp_servers",
type: "table",
description:
"Daftar izin untuk MCP server yang dibundel bersama satu plugin. Persyaratan server plugin menggunakan bentuk identitas persis dan pencocok yang sama dengan persyaratan mcp_servers tingkat atas.",
},
{
key: "plugins..mcp_servers..identity",
type: "table",
description:
"Aturan identitas untuk satu MCP server yang dibundel bersama plugin. Tetapkan command (stdio) atau url (HTTP yang dapat dialirkan).",
},
{
key: "plugins..mcp_servers..identity.command",
type: "string | table",
description:
"Izinkan MCP server stdio milik plugin berdasarkan string perintah yang persis sama, atau gunakan tabel pencocok untuk mewajibkan pencocokan executable secara persis dan argumen secara berurutan.",
},
{
key: "plugins..mcp_servers..identity.command.executable",
type: "string",
description:
"Executable yang harus sama persis dengan perintah terkonfigurasi milik server stdio yang dibundel bersama plugin.",
},
{
key: "plugins..mcp_servers..identity.command.args",
type: "array",
description:
"Pencocok argumen berurutan untuk server stdio yang dibundel bersama plugin. Daftar argumen terkonfigurasi harus memiliki panjang yang sama dan setiap posisi harus cocok.",
},
{
key: "plugins..mcp_servers..identity.command.args[].match",
type: "exact | prefix | regex",
description: "Operasi pencocokan untuk posisi argumen ini.",
},
{
key: "plugins..mcp_servers..identity.command.args[].value",
type: "string",
description: "Nilai yang digunakan oleh pencocok argumen exact atau prefix.",
},
{
key: "plugins..mcp_servers..identity.command.args[].expression",
type: "string",
description:
"Ekspresi reguler yang digunakan oleh pencocok argumen regex. Ekspresi harus cocok dengan keseluruhan nilai argumen.",
},
{
key: "plugins..mcp_servers..identity.url",
type: "string | table",
description:
"Izinkan MCP server HTTP yang dapat dialirkan milik plugin berdasarkan string URL yang persis sama, atau gunakan tabel pencocok nilai exact, prefix, atau regex.",
},
{
key: "plugins..mcp_servers..identity.url.match",
type: "exact | prefix | regex",
description: "Operasi pencocokan untuk URL MCP server yang dibundel bersama plugin.",
},
{
key: "plugins..mcp_servers..identity.url.value",
type: "string",
description: "Nilai yang digunakan oleh pencocok URL exact atau prefix.",
},
{
key: "plugins..mcp_servers..identity.url.expression",
type: "string",
description:
"Ekspresi reguler yang digunakan oleh pencocok URL regex. Ekspresi harus cocok dengan keseluruhan nilai URL.",
},
{
key: "marketplaces",
type: "table",
description:
"Persyaratan administrator untuk sumber marketplace plugin. Aturan berlaku saat restrict_to_allowed_sources bernilai true.",
},
{
key: "marketplaces.restrict_to_allowed_sources",
type: "boolean",
description:
"Jika true, wajibkan sumber marketplace yang dikonfigurasi pengguna agar cocok dengan allowed_sources untuk operasi penambahan marketplace, penginstalan plugin, dan penyegaran marketplace Git yang dikonfigurasi. Marketplace OpenAI yang dikelola Codex tetap diizinkan jika sumber dan nama khususnya cocok. Ini tidak memfilter marketplace pengguna yang sudah dikonfigurasi saat runtime.",
},
{
key: "marketplaces.allowed_sources",
type: "table",
description:
"Sumber marketplace yang diizinkan dan menggunakan nama aturan yang dipilih administrator sebagai kunci. Nama yang berbeda diakumulasikan di seluruh lapisan persyaratan; kolom dengan nama yang sama mengikuti prioritas lapisan normal.",
},
{
key: "marketplaces.allowed_sources.",
type: "table",
description:
"Satu aturan sumber yang diizinkan. Nilai akhir source setelah penggabungan persyaratan menentukan kolom sejajar yang ditafsirkan Codex.",
},
{
key: "marketplaces.allowed_sources..source",
type: "git | host_pattern | local",
description:
"Jenis pencocok sumber marketplace. Gunakan git untuk satu repositori, host_pattern untuk host Git yang dicocokkan dengan ekspresi reguler, atau local untuk satu direktori.",
},
{
key: "marketplaces.allowed_sources..url",
type: "string",
description:
'URL repositori Git yang diwajibkan saat source = "git". Codex menormalkan URL terkonfigurasi dan URL yang diizinkan sebelum mewajibkan kecocokan repositori yang persis sama.',
},
{
key: "marketplaces.allowed_sources..ref",
type: "string",
description:
"Ref Git persis yang bersifat opsional untuk aturan git. Jika tidak dicantumkan, aturan mengizinkan ref apa pun untuk repositori yang cocok.",
},
{
key: "marketplaces.allowed_sources..host_pattern",
type: "string",
description:
'Ekspresi reguler yang diwajibkan saat source = "host_pattern". Codex mencocokkannya dengan nama host berhuruf kecil yang diuraikan dari sumber Git bergaya HTTPS, SSH, atau SCP. Gunakan ^ dan $ untuk mewajibkan kecocokan seluruh host.',
},
{
key: "marketplaces.allowed_sources..path",
type: "string (absolute path)",
description:
'Direktori marketplace lokal yang diwajibkan saat source = "local". Codex mewajibkan jalur absolut dan membandingkan jalur setelah normalisasi.',
},
{
key: "apps",
type: "table",
description:
"Persyaratan aplikasi terkelola yang menggunakan pengidentifikasi aplikasi sebagai kunci. Persyaratan dapat menonaktifkan aplikasi atau membatasi perilaku persetujuan untuk setiap alat.",
},
{
key: "apps..enabled",
type: "boolean",
description:
"Tetapkan ke false untuk menonaktifkan aplikasi. Persyaratan yang menonaktifkan tetap bersifat membatasi saat beberapa sumber persyaratan digabungkan.",
},
{
key: "apps..tools..approval_mode",
type: "auto | prompt | writes | approve",
description: "Tetapkan mode persetujuan terkelola untuk satu alat aplikasi.",
},
{
key: "rules",
type: "table",
description:
"Aturan perintah yang diberlakukan administrator dan digabungkan dengan file .rules. Aturan persyaratan harus bersifat membatasi.",
},
{
key: "rules.prefix_rules",
type: "array",
description:
"Daftar aturan prefiks yang diberlakukan. Setiap aturan harus menyertakan pattern dan decision.",
},
{
key: "rules.prefix_rules[].pattern",
type: "array",
description:
"Prefiks perintah yang dinyatakan sebagai token pola. Setiap token menetapkan token atau any_of.",
},
{
key: "rules.prefix_rules[].pattern[].token",
type: "string",
description: "Satu token literal pada posisi ini.",
},
{
key: "rules.prefix_rules[].pattern[].any_of",
type: "array",
description: "Daftar token alternatif yang diizinkan pada posisi ini.",
},
{
key: "rules.prefix_rules[].decision",
type: "prompt | forbidden",
description:
"Wajib. Aturan persyaratan hanya dapat meminta konfirmasi atau melarang (bukan mengizinkan).",
},
{
key: "rules.prefix_rules[].justification",
type: "string",
description:
"Alasan opsional yang tidak kosong dan ditampilkan dalam prompt persetujuan atau pesan penolakan.",
},
]}
client:load
/>
Sebelumnya Konfigurasi Lanjutan Berikutnya Variabel lingkungan