Konfigurasi Lanjutan
Konfigurasi Lanjutan
Opsi konfigurasi lanjutan untuk klien lokal Codex
Gunakan opsi ini saat Anda memerlukan kontrol lebih besar atas penyedia, kebijakan, dan integrasi. Untuk memulai dengan cepat, lihat Dasar-dasar konfigurasi.
Untuk mengetahui latar belakang tentang panduan proyek, kemampuan yang dapat digunakan kembali, perintah garis miring kustom, alur kerja subagen, dan integrasi, lihat Penyesuaian. Untuk kunci konfigurasi, lihat Referensi Konfigurasi.
Profil
Profil memungkinkan Anda menyimpan lapisan konfigurasi bernama dan beralih di antaranya dari
CLI. Saat Anda meneruskan --profile profile-name, Codex memuat
~/.codex/config.toml, lalu menimpanya dengan ~/.codex/profile-name.config.toml.
Nama profil dapat berisi huruf, angka, tanda hubung, dan garis bawah.
Buat file TOML terpisah untuk setiap profil. Gunakan kunci konfigurasi tingkat teratas dalam
file profil; jangan menempatkannya di bawah [profiles.profile-name].
# ~/.codex/deep-review.config.toml
model = "gpt-5.6-sol"
model_reasoning_effort = "xhigh"
approval_policy = "on-request"
model_catalog_json = "/Users/me/.codex/model-catalogs/deep-review.json"codex --profile deep-review
codex exec --profile deep-review "review this change"Karena file profil merupakan lapisan di atas konfigurasi pengguna dasar Anda dan di bawah
konfigurasi proyek serta CLI, file tersebut hanya memerlukan nilai yang berbeda dari konfigurasi
dasar Anda. File profil juga dapat menimpa model_catalog_json; Codex menggunakan
nilai profil saat kedua file menetapkannya.
Di Codex 0.134.0 dan versi lebih baru, --profile tidak lagi membaca [profiles.profile-name]
dari config.toml, dan pemilih profile = "profile-name" tingkat teratas tidak lagi
didukung. Pindahkan pengaturan profil lama ke
~/.codex/profile-name.config.toml, lalu hapus tabel
[profiles.profile-name] yang sesuai dan pemilih profile = "profile-name" dari
config.toml.
Penimpaan sekali pakai dari CLI
Selain mengedit ~/.codex/config.toml, Anda dapat menimpa konfigurasi untuk satu kali proses dari CLI:
- Utamakan flag khusus jika tersedia (misalnya,
--model). - Gunakan
-c/--configsaat Anda perlu menimpa kunci arbitrer.
Contoh:
# Dedicated flag
codex --model gpt-5.6-terra
# Generic key/value override (value is TOML, not JSON)
codex --config model='"gpt-5.6-terra"'
codex --config sandbox_workspace_write.network_access=true
codex --config 'shell_environment_policy.include_only=["PATH","HOME"]'Catatan:
- Kunci dapat menggunakan notasi titik untuk menetapkan nilai bertingkat (misalnya,
mcp_servers.context7.enabled=false). - Nilai
--configdiurai sebagai TOML. Jika ragu, apit nilai dengan tanda kutip agar shell Anda tidak memisahkannya pada spasi. - Jika nilai tidak dapat diurai sebagai TOML, Codex memperlakukannya sebagai string.
Lokasi konfigurasi dan status
Codex menyimpan status lokalnya di bawah CODEX_HOME (nilai default-nya adalah ~/.codex).
File umum yang mungkin Anda temukan di sana:
config.toml(konfigurasi lokal Anda)auth.json(jika Anda menggunakan penyimpanan kredensial berbasis file) atau rantai kunci/keyring OS Andahistory.jsonl(jika persistensi riwayat diaktifkan)- Status per pengguna lainnya seperti log dan cache
Untuk detail autentikasi (termasuk mode penyimpanan kredensial), lihat Autentikasi. Untuk daftar lengkap kunci konfigurasi, lihat Referensi Konfigurasi.
Untuk nilai default, aturan, dan keterampilan bersama yang disimpan ke dalam repo atau jalur sistem, lihat Konfigurasi Tim.
Jika Anda hanya perlu mengarahkan penyedia OpenAI bawaan ke proksi LLM, router, atau proyek yang mengaktifkan residensi data, tetapkan openai_base_url di config.toml alih-alih menentukan penyedia baru. Tindakan ini mengubah URL dasar untuk penyedia openai bawaan tanpa memerlukan entri model_providers.<id> terpisah.
openai_base_url = "https://us.api.openai.com/v1"File konfigurasi proyek (.codex/config.toml)
Selain konfigurasi pengguna Anda, Codex membaca penimpaan khusus proyek dari file .codex/config.toml di dalam repo Anda. Codex menelusuri dari root proyek hingga direktori kerja Anda saat ini dan memuat setiap .codex/config.toml yang ditemukannya. Jika beberapa file menentukan kunci yang sama, file yang paling dekat dengan direktori kerja Anda akan berlaku.
Demi keamanan, Codex hanya memuat file konfigurasi khusus proyek saat proyek dipercaya. Jika proyek tidak dipercaya, Codex mengabaikan lapisan .codex/ proyek, termasuk .codex/config.toml, hook lokal proyek, dan aturan lokal proyek. Lapisan pengguna dan sistem tetap terpisah dan tetap dimuat.
Jalur relatif di dalam konfigurasi proyek (misalnya, model_instructions_file) diselesaikan relatif terhadap folder .codex/ yang berisi config.toml.
File konfigurasi proyek tidak dapat menimpa pengaturan yang mengalihkan kredensial, mengubah
metadata permintaan aplikasi milik host, mengubah autentikasi penyedia, memilih profil konfigurasi,
atau menjalankan perintah notifikasi/telemetri lokal mesin. Codex mengabaikan
kunci berikut dalam .codex/config.toml lokal proyek dan menampilkan peringatan
saat dimulai ketika menemukannya: openai_base_url, chatgpt_base_url,
apps_mcp_product_sku, model_provider, model_providers, notify,
profile, profiles, experimental_realtime_ws_base_url, dan otel. Tetapkan
kunci penyedia, notifikasi, dan telemetri dalam
~/.codex/config.toml tingkat pengguna Anda; pilih profil konfigurasi dengan --profile profile-name
dan ~/.codex/profile-name.config.toml.
Hook
Codex juga dapat memuat hook siklus hidup dari file hooks.json atau tabel
[hooks] inline dalam file config.toml yang berada di samping lapisan konfigurasi aktif.
Dalam praktiknya, empat lokasi yang paling berguna adalah:
~/.codex/hooks.json~/.codex/config.toml<repo>/.codex/hooks.json<repo>/.codex/config.toml
Hook lokal proyek hanya dimuat saat lapisan .codex/ proyek dipercaya.
Hook tingkat pengguna tetap tidak bergantung pada kepercayaan proyek.
Hook TOML inline menggunakan struktur peristiwa yang sama seperti hooks.json:
[[hooks.PreToolUse]]
matcher = "^Bash$"
[[hooks.PreToolUse.hooks]]
type = "command"
command = '/usr/bin/python3 "$(git rev-parse --show-toplevel)/.codex/hooks/pre_tool_use_policy.py"'
timeout = 30
statusMessage = "Checking Bash command"Jika satu lapisan berisi hooks.json sekaligus [hooks] inline, Codex memuat
keduanya dan menampilkan peringatan. Utamakan satu representasi per lapisan.
Untuk daftar peristiwa saat ini, bidang input, perilaku output, dan batasan, lihat Hook.
Peran agen ([agents] dalam config.toml)
Untuk konfigurasi peran subagen ([agents] dalam config.toml), lihat Subagen.
Deteksi root proyek
Codex menemukan konfigurasi proyek (misalnya, lapisan .codex/ dan AGENTS.md) dengan menelusuri ke atas dari direktori kerja hingga mencapai root proyek.
Secara default, Codex menganggap direktori yang berisi .git sebagai root proyek. Untuk menyesuaikan perilaku ini, tetapkan project_root_markers dalam config.toml:
# Treat a directory as the project root when it contains any of these markers.
project_root_markers = [".git", ".hg", ".sl"]Tetapkan project_root_markers = [] untuk melewati pencarian direktori induk dan memperlakukan direktori kerja saat ini sebagai root proyek.
Penyedia model kustom
Penyedia model menentukan cara Codex terhubung ke model (URL dasar, API protokol, autentikasi, dan header HTTP opsional). Penyedia kustom tidak dapat menggunakan kembali ID penyedia bawaan yang dicadangkan: openai, ollama, dan lmstudio.
Tentukan penyedia tambahan dan arahkan model_provider kepadanya:
model = "gpt-5.6-terra"
model_provider = "proxy"
[model_providers.proxy]
name = "OpenAI using LLM proxy"
base_url = "http://proxy.example.com"
env_key = "OPENAI_API_KEY"
[model_providers.local_ollama]
name = "Ollama"
base_url = "http://localhost:11434/v1"
[model_providers.mistral]
name = "Mistral"
base_url = "https://api.mistral.ai/v1"
env_key = "MISTRAL_API_KEY"Jika penyedia kustom mendukung endpoint pencarian web mandiri, nyatakan kemampuan tersebut dalam konfigurasi penyedianya:
[model_providers.proxy]
name = "OpenAI using LLM proxy"
base_url = "https://proxy.example.com/v1"
env_key = "OPENAI_API_KEY"
supports_standalone_web_search = truePengaturan ini secara default bernilai false untuk penyedia kustom. Pencarian web mandiri masih
dalam pengembangan dan dinonaktifkan secara default. Menetapkan kemampuan penyedia ke true
tidak mengaktifkannya: penyedia harus mendukung endpoint yang kompatibel,
dan model serta runtime yang dipilih harus mendukung pencarian mandiri. Mode web_search yang
dikonfigurasi dan pembatasan pencarian terkelola tetap berlaku.
Tambahkan header permintaan bila diperlukan:
[model_providers.example]
http_headers = { "X-Example-Header" = "example-value" }
env_http_headers = { "X-Example-Features" = "EXAMPLE_FEATURES" }Gunakan autentikasi berbasis perintah saat penyedia memerlukan Codex mengambil token bearer dari pembantu kredensial eksternal:
[model_providers.proxy]
name = "OpenAI using LLM proxy"
base_url = "https://proxy.example.com/v1"
wire_api = "responses"
[model_providers.proxy.auth]
command = "/usr/local/bin/fetch-codex-token"
args = ["--audience", "codex"]
timeout_ms = 5000
refresh_interval_ms = 300000Perintah autentikasi tidak menerima stdin dan harus mencetak token ke stdout. Codex memangkas spasi kosong di sekitarnya, memperlakukan token kosong sebagai kesalahan, dan menyegarkan secara proaktif pada refresh_interval_ms; tetapkan refresh_interval_ms = 0 agar penyegaran hanya dilakukan setelah percobaan ulang autentikasi. Jangan gabungkan [model_providers.<id>.auth] dengan env_key, experimental_bearer_token, atau requires_openai_auth.
Penyedia Amazon Bedrock
Codex menyertakan penyedia model amazon-bedrock bawaan. Tetapkan langsung sebagai
model_provider; tidak seperti penyedia kustom, penyedia bawaan ini hanya mendukung
penimpaan profil dan wilayah AWS bertingkat.
model_provider = "amazon-bedrock"
model = "<bedrock-model-id>"
[model_providers.amazon-bedrock.aws]
profile = "default"
region = "eu-central-1"Jika Anda menghilangkan profile, Codex menggunakan rantai kredensial AWS standar. Tetapkan
region ke wilayah Bedrock yang didukung dan harus menangani permintaan.
Untuk alur penyiapan lengkap, opsi autentikasi, model yang didukung, dan ketersediaan fitur, lihat Menggunakan ChatGPT Work dan Codex dengan Amazon Bedrock.
Mode OSS (penyedia lokal)
Codex dapat berjalan dengan penyedia "sumber terbuka" lokal seperti Ollama atau LM
Studio saat Anda meneruskan --oss. Pilih salah satunya untuk satu kali proses dengan
--local-provider, atau tetapkan oss_provider sebagai default. Jika keduanya tidak ditetapkan,
CLI interaktif meminta Anda memilih; codex exec akan keluar dengan kesalahan.
# Default local provider used with `--oss`
oss_provider = "ollama" # or "lmstudio"Penyedia Azure dan penyetelan per penyedia
[model_providers.azure]
name = "Azure"
base_url = "https://YOUR_PROJECT_NAME.openai.azure.com/openai"
env_key = "AZURE_OPENAI_API_KEY"
query_params = { api-version = "2025-04-01-preview" }
wire_api = "responses"
request_max_retries = 4
stream_max_retries = 10
stream_idle_timeout_ms = 300000Untuk mengubah URL dasar bagi penyedia OpenAI bawaan, gunakan openai_base_url; jangan membuat [model_providers.openai] karena Anda tidak dapat menimpa ID penyedia bawaan.
Organisasi API yang menggunakan residensi data
Proyek yang dibuat dengan residensi data aktif dapat membuat penyedia model untuk memperbarui base_url dengan prefiks yang tepat. Untuk ruang kerja ChatGPT dengan residensi data, penyedia kustom tidak diperlukan; Codex mematuhi pengaturan residensi ruang kerja saat Anda masuk dengan ChatGPT.
model_provider = "openaidr"
[model_providers.openaidr]
name = "OpenAI Data Residency"
base_url = "https://us.api.openai.com/v1" # Replace 'us' with domain prefixPenalaran model, verbositas, dan batas
model_reasoning_summary = "none" # Disable summaries
model_verbosity = "low" # Shorten responses
model_supports_reasoning_summaries = true # Force reasoning
model_context_window = 128000 # Context window sizemodel_verbosity hanya berlaku untuk penyedia yang menggunakan Responses API. Penyedia Chat Completions akan mengabaikan pengaturan tersebut.
Kebijakan persetujuan dan mode sandbox
Pilih tingkat keketatan persetujuan (memengaruhi kapan Codex dijeda) dan tingkat sandbox (memengaruhi akses file/jaringan).
Untuk detail operasional yang perlu diperhatikan saat mengedit config.toml, lihat Kombinasi umum sandbox dan persetujuan, Jalur yang dilindungi dalam root yang dapat ditulis, dan Akses jaringan.
Codex dan ChatGPT Work tidak lagi mendukung approval_policy = "untrusted". Lihat
Bermigrasi dari kebijakan persetujuan untrusted yang telah dihentikan
untuk pengaturan yang didukung dan persetujuan yang lebih ketat berdasarkan proyek.
Untuk profil izin beta yang mengonfigurasi akses sistem file dan jaringan secara bersamaan, lihat Izin.
Anda juga dapat menggunakan kebijakan persetujuan terperinci (approval_policy = { granular = { ... } }) untuk mengizinkan atau menolak otomatis setiap kategori prompt. Ini berguna saat Anda menginginkan persetujuan interaktif normal untuk beberapa kasus, tetapi menginginkan kasus lainnya, seperti prompt request_permissions atau skrip keterampilan, gagal secara tertutup dan otomatis.
Tetapkan approvals_reviewer = "auto_review" untuk mengarahkan permintaan persetujuan
interaktif yang memenuhi syarat melalui peninjauan otomatis. Ini mengubah peninjau, bukan batas
sandbox.
Gunakan [auto_review].policy untuk instruksi kebijakan peninjau lokal. guardian_policy_config
yang dikelola memiliki prioritas.
approval_policy = "on-request" # Other options: never or { granular = { ... } }
approvals_reviewer = "user" # Or "auto_review" for automatic review
sandbox_mode = "workspace-write"
allow_login_shell = false # Optional hardening: disallow login shells for shell tools
# Example granular approval policy:
# approval_policy = { granular = {
# sandbox_approval = true,
# rules = true,
# mcp_elicitations = true,
# request_permissions = false,
# skill_approval = false
# } }
[sandbox_workspace_write]
exclude_tmpdir_env_var = false # Allow $TMPDIR
exclude_slash_tmp = false # Allow /tmp
writable_roots = ["/Users/YOU/.pyenv/shims"]
network_access = false # Opt in to outbound network
[auto_review]
policy = """
Use your organization's automatic review policy.
"""Profil izin bernama
Untuk profil bawaan, sintaks profil kustom, serta model konfigurasi sistem file dan jaringan lengkap, lihat Izin.
Untuk daftar kunci lengkap dan batasan persyaratan, lihat Referensi Konfigurasi dan Konfigurasi terkelola.
Nonaktifkan sandbox sepenuhnya (gunakan hanya jika lingkungan Anda telah mengisolasi proses):
sandbox_mode = "danger-full-access"Kebijakan lingkungan shell
shell_environment_policy mengontrol variabel lingkungan yang diteruskan Codex ke
perintah yang dijalankan. Mulailah dengan lingkungan kosong menggunakan inherit = "none", atau
warisi kumpulan yang telah dipangkas menggunakan inherit = "core". Tambahkan nilai eksplisit dan filter
berdasarkan kunci agar rahasia yang tidak diperlukan tidak diteruskan ke perintah yang dijalankan.
[shell_environment_policy]
inherit = "core"
set = { MY_FLAG = "1" }
ignore_default_excludes = false
[shell_environment_policy.filters]
"AWS_*" = "exclude"
"AZURE_*" = "exclude"Pola filter tidak peka huruf besar-kecil dan mendukung * serta ?. Gunakan "exclude"
untuk menghapus variabel yang cocok. Jika suatu pola menggunakan "include", Codex hanya
mempertahankan variabel yang cocok dengan pola penyertaan. Penyertaan tidak memulihkan variabel
yang telah dikecualikan. Kunci filter digabungkan tanpa membedakan huruf besar-kecil di seluruh
lapisan konfigurasi.
ignore_default_excludes secara default bernilai true, sehingga Codex tidak otomatis
menghapus nama variabel yang berisi KEY, SECRET, atau TOKEN. Tetapkan ke false
untuk menerapkan pengecualian otomatis tersebut sebelum filter eksplisit Anda dijalankan.
Codex menerapkan pengecualian otomatis terlebih dahulu, lalu pengecualian kustom, nilai dari
set, dan terakhir daftar izin pola penyertaan. Karena set dijalankan setelah
pengecualian, pengaturan ini dapat memulihkan variabel yang dikecualikan. Daftar izin pola penyertaan
tetap dapat menghapus nilai yang dipulihkan tersebut.
Array exclude dan include_only yang lebih lama tetap didukung untuk konfigurasi
yang sudah ada. Jangan gabungkan salah satu array dengan
[shell_environment_policy.filters] dalam lapisan konfigurasi yang sama; Codex
menolak kombinasi tersebut.
Server MCP
Lihat dokumentasi MCP khusus untuk detail konfigurasi.
Observabilitas dan telemetri
Aktifkan ekspor log OpenTelemetry (OTel) untuk melacak proses Codex (permintaan API, SSE/peristiwa, prompt, persetujuan/hasil alat). Dinonaktifkan secara default; aktifkan secara eksplisit melalui [otel]:
[otel]
environment = "staging" # defaults to "dev"
exporter = "none" # set to otlp-http or otlp-grpc to send events
log_user_prompt = false # redact user prompts unless explicitly enabledPilih eksportir:
[otel]
exporter = { otlp-http = {
endpoint = "https://otel.example.com/v1/logs",
protocol = "binary",
headers = { "x-otlp-api-key" = "${OTLP_TOKEN}" }
}}[otel]
exporter = { otlp-grpc = {
endpoint = "https://otel.example.com:4317",
headers = { "x-otlp-meta" = "abc123" }
}}Jika exporter = "none", Codex mencatat peristiwa tetapi tidak mengirim apa pun. Eksportir memproses batch secara asinkron dan melakukan flush saat dimatikan. Metadata peristiwa mencakup nama layanan, versi CLI, tag lingkungan, ID percakapan, model, pengaturan sandbox/persetujuan, dan bidang per peristiwa (lihat Referensi Konfigurasi).
Data yang dipancarkan
Codex memancarkan peristiwa log terstruktur untuk proses dan penggunaan alat. Jenis peristiwa yang mewakili antara lain:
codex.conversation_starts(model, pengaturan penalaran, kebijakan sandbox/persetujuan)codex.api_request(percobaan, status/keberhasilan, durasi, dan detail kesalahan)codex.sse_event(jenis peristiwa stream, keberhasilan/kegagalan, durasi, serta jumlah token padaresponse.completed)codex.websocket_requestdancodex.websocket_event(durasi permintaan serta jenis/keberhasilan/kesalahan per pesan)codex.user_prompt(panjang; konten disamarkan kecuali diaktifkan secara eksplisit)codex.tool_decision(disetujui/ditolak dan apakah keputusan berasal dari konfigurasi atau pengguna)codex.tool_result(durasi, keberhasilan, cuplikan output)
Metrik OTel yang dipancarkan
Saat alur metrik OTel diaktifkan, Codex memancarkan penghitung dan histogram durasi untuk aktivitas API, stream, dan alat.
Setiap metrik di bawah juga mencakup tag metadata default: auth_mode, originator, session_source, model, dan app.version.
| Metrik | Jenis | Bidang | Deskripsi |
|---|---|---|---|
codex.api_request |
penghitung | status, success |
Jumlah permintaan API berdasarkan status HTTP dan keberhasilan/kegagalan. |
codex.api_request.duration_ms |
histogram | status, success |
Durasi permintaan API dalam milidetik. |
codex.sse_event |
penghitung | kind, success |
Jumlah peristiwa SSE berdasarkan jenis peristiwa dan keberhasilan/kegagalan. |
codex.sse_event.duration_ms |
histogram | kind, success |
Durasi pemrosesan peristiwa SSE dalam milidetik. |
codex.websocket.request |
penghitung | success |
Jumlah permintaan WebSocket berdasarkan keberhasilan/kegagalan. |
codex.websocket.request.duration_ms |
histogram | success |
Durasi permintaan WebSocket dalam milidetik. |
codex.websocket.event |
penghitung | kind, success |
Jumlah pesan/peristiwa WebSocket berdasarkan jenis dan keberhasilan/kegagalan. |
codex.websocket.event.duration_ms |
histogram | kind, success |
Durasi pemrosesan pesan/peristiwa WebSocket dalam milidetik. |
codex.tool.call |
penghitung | tool, success |
Jumlah pemanggilan alat berdasarkan nama alat dan keberhasilan/kegagalan. |
codex.tool.call.duration_ms |
histogram | tool, success |
Durasi eksekusi alat dalam milidetik berdasarkan nama alat dan hasil. |
Untuk panduan keamanan dan privasi lebih lanjut terkait telemetri, lihat Keamanan.
Metrik
Secara default, Codex secara berkala mengirim sedikit data penggunaan dan kesehatan anonim kembali ke OpenAI. Data ini membantu mendeteksi saat Codex tidak berfungsi dengan benar dan menunjukkan fitur serta opsi konfigurasi yang digunakan, sehingga tim Codex dapat berfokus pada hal yang paling penting. Metrik ini tidak berisi informasi identitas pribadi (PII). Pengumpulan metrik tidak bergantung pada ekspor log/jejak OTel.
Jika Anda ingin menonaktifkan pengumpulan metrik sepenuhnya pada aplikasi desktop ChatGPT, Codex CLI, dan ekstensi IDE di suatu mesin, tetapkan flag analitik dalam konfigurasi Anda:
[analytics]
enabled = falseSetiap metrik mencakup bidangnya sendiri beserta bidang konteks default di bawah ini.
Bidang konteks default (berlaku untuk setiap peristiwa/metrik)
auth_mode:swic|api|unknown.model: nama model yang digunakan.app.version: versi Codex.
Katalog metrik
Setiap metrik mencakup bidang wajib beserta bidang konteks default di atas. Nama metrik di bawah menghilangkan prefiks codex..
Sebagian besar nama metrik dipusatkan di codex-rs/otel/src/metrics/names.rs; metrik khusus fitur yang dipancarkan di luar file tersebut juga disertakan di sini.
Jika suatu metrik mencakup bidang tool, bidang tersebut mencerminkan alat internal yang digunakan (misalnya, apply_patch atau shell) dan tidak berisi perintah shell atau patch aktual yang coba diterapkan oleh codex.
Runtime dan transportasi model
| Metrik | Jenis | Bidang | Deskripsi |
|---|---|---|---|
api_request |
penghitung | status, success |
Jumlah permintaan API berdasarkan status HTTP dan keberhasilan/kegagalan. |
api_request.duration_ms |
histogram | status, success |
Durasi permintaan API dalam milidetik. |
sse_event |
penghitung | kind, success |
Jumlah peristiwa SSE berdasarkan jenis peristiwa dan keberhasilan/kegagalan. |
sse_event.duration_ms |
histogram | kind, success |
Durasi pemrosesan peristiwa SSE dalam milidetik. |
websocket.request |
penghitung | success |
Jumlah permintaan WebSocket berdasarkan keberhasilan/kegagalan. |
websocket.request.duration_ms |
histogram | success |
Durasi permintaan WebSocket dalam milidetik. |
websocket.event |
penghitung | kind, success |
Jumlah pesan/peristiwa WebSocket berdasarkan jenis dan keberhasilan/kegagalan. |
websocket.event.duration_ms |
histogram | kind, success |
Durasi pemrosesan pesan/peristiwa WebSocket dalam milidetik. |
responses_api_overhead.duration_ms |
histogram | Waktu overhead Responses API dari respons WebSocket. | |
responses_api_inference_time.duration_ms |
histogram | Waktu inferensi Responses API dari respons WebSocket. | |
responses_api_engine_iapi_ttft.duration_ms |
histogram | Waktu hingga token pertama IAPI mesin Responses API. | |
responses_api_engine_service_ttft.duration_ms |
histogram | Waktu layanan hingga token pertama mesin Responses API. | |
responses_api_engine_iapi_tbt.duration_ms |
histogram | Waktu antar-token IAPI mesin Responses API. | |
responses_api_engine_service_tbt.duration_ms |
histogram | Waktu layanan antar-token mesin Responses API. | |
transport.fallback_to_http |
penghitung | from_wire_api |
Jumlah fallback WebSocket-ke-HTTP. |
remote_models.fetch_update.duration_ms |
histogram | Waktu untuk mengambil definisi model jarak jauh. | |
remote_models.load_cache.duration_ms |
histogram | Waktu untuk memuat cache model jarak jauh. | |
startup_prewarm.duration_ms |
histogram | status |
Durasi prapemanasan awal berdasarkan hasil. |
startup_prewarm.age_at_first_turn_ms |
histogram | status |
Usia prapemanasan awal saat giliran nyata pertama menyelesaikannya. |
cloud_requirements.fetch.duration_ms |
histogram | Durasi pengambilan persyaratan cloud yang dikelola ruang kerja. | |
cloud_requirements.fetch_attempt |
penghitung | Lihat catatan | Percobaan pengambilan persyaratan cloud yang dikelola ruang kerja. |
cloud_requirements.fetch_final |
penghitung | Lihat catatan | Hasil akhir pengambilan persyaratan cloud yang dikelola ruang kerja. |
cloud_requirements.load |
penghitung | trigger, outcome |
Hasil pemuatan persyaratan cloud yang dikelola ruang kerja. |
Metrik cloud_requirements.fetch_attempt mencakup bidang trigger, attempt, outcome, dan status_code. Metrik cloud_requirements.fetch_final mencakup bidang trigger, outcome, reason, attempt_count, dan status_code.
Aktivitas giliran dan alat
| Metrik | Jenis | Bidang | Deskripsi |
|---|---|---|---|
turn.e2e_duration_ms |
histogram | Waktu menyeluruh untuk satu giliran penuh. | |
turn.ttft.duration_ms |
histogram | Waktu hingga token pertama untuk satu giliran. | |
turn.ttfm.duration_ms |
histogram | Waktu hingga item output model pertama untuk satu giliran. | |
turn.network_proxy |
penghitung | active, tmp_mem_enabled |
Apakah proksi jaringan terkelola aktif untuk giliran tersebut. |
turn.memory |
penghitung | read_allowed, feature_enabled, config_use_memories, has_citations |
Ketersediaan pembacaan memori dan penggunaan kutipan memori per giliran. |
turn.tool.call |
histogram | tmp_mem_enabled |
Jumlah panggilan alat dalam giliran. |
turn.token_usage |
histogram | token_type, tmp_mem_enabled |
Penggunaan token per giliran berdasarkan jenis token (total, input, cached_input, output, atau reasoning_output). |
tool.call |
penghitung | tool, success |
Jumlah pemanggilan alat berdasarkan nama alat dan keberhasilan/kegagalan. |
tool.call.duration_ms |
histogram | tool, success |
Durasi eksekusi alat dalam milidetik berdasarkan nama alat dan hasil. |
tool.unified_exec |
penghitung | tty |
Panggilan alat exec terpadu berdasarkan mode TTY. |
approval.requested |
penghitung | tool, approved |
Hasil permintaan persetujuan alat (approved, approved_with_amendment, approved_for_session, denied, abort). |
mcp.call |
penghitung | Lihat catatan | Hasil pemanggilan alat MCP. |
mcp.call.duration_ms |
histogram | Lihat catatan | Durasi pemanggilan alat MCP. |
mcp.tools.list.duration_ms |
histogram | cache |
Durasi daftar alat MCP, termasuk status cache hit/miss. |
mcp.tools.fetch_uncached.duration_ms |
histogram | Durasi pengambilan alat MCP yang tidak ditemukan dalam cache. | |
mcp.tools.cache_write.duration_ms |
histogram | Durasi penulisan cache alat MCP Codex Apps. | |
hooks.run |
penghitung | hook_name, source, status |
Jumlah proses hook berdasarkan nama, sumber, dan status hook. |
hooks.run.duration_ms |
histogram | hook_name, source, status |
Durasi proses hook dalam milidetik. |
Metrik mcp.call dan mcp.call.duration_ms mencakup status; emisi panggilan alat normal juga mencakup tool, beserta connector_id dan connector_name jika tersedia. Panggilan MCP Codex Apps yang diblokir dapat memancarkan mcp.call hanya dengan status.
Utas, tugas, dan fitur
| Metrik | Jenis | Bidang | Deskripsi |
|---|---|---|---|
feature.state |
penghitung | feature, value |
Nilai fitur yang berbeda dari default (memancarkan satu baris per nilai non-default). |
status_line |
penghitung | Sesi dimulai dengan baris status yang dikonfigurasi. | |
model_warning |
penghitung | Peringatan dikirim ke model. | |
thread.started |
penghitung | is_git |
Utas baru dibuat, ditandai berdasarkan apakah direktori kerja berada dalam repo Git. |
conversation.turn.count |
penghitung | Giliran pengguna/asisten per utas, dicatat pada akhir utas. | |
thread.fork |
penghitung | source |
Utas baru dibuat dengan mencabangkan utas yang ada. |
thread.rename |
penghitung | Utas diganti namanya. | |
thread.side |
penghitung | source |
Percakapan sampingan dibuat. |
thread.skills.enabled_total |
histogram | Jumlah keterampilan yang diaktifkan untuk utas baru. | |
thread.skills.kept_total |
histogram | Jumlah keterampilan aktif yang dipertahankan setelah perenderan prompt. | |
thread.skills.truncated |
histogram | Apakah perenderan keterampilan memotong daftar keterampilan yang diaktifkan (1 atau 0). |
|
task.compact |
penghitung | type |
Jumlah pemadatan per jenis (remote atau local), termasuk manual dan otomatis. |
task.review |
penghitung | Jumlah peninjauan yang dipicu. | |
task.undo |
penghitung | Jumlah tindakan urungkan yang dipicu. | |
task.user_shell |
penghitung | Jumlah tindakan shell pengguna (misalnya, ! dalam TUI). |
|
shell_snapshot |
penghitung | Lihat catatan | Apakah pengambilan snapshot shell berhasil. |
shell_snapshot.duration_ms |
histogram | success |
Waktu untuk mengambil snapshot shell. |
skill.injected |
penghitung | status, skill |
Hasil injeksi keterampilan berdasarkan keterampilan. |
plugins.startup_sync |
penghitung | transport, status |
Percobaan sinkronisasi awal plugin pilihan. |
plugins.startup_sync.final |
penghitung | transport, status |
Hasil akhir sinkronisasi awal plugin pilihan. |
multi_agent.spawn |
penghitung | role |
Pembuatan agen berdasarkan peran. |
multi_agent.resume |
penghitung | Agen dilanjutkan. | |
multi_agent.nickname_pool_reset |
penghitung | Pengaturan ulang kumpulan nama panggilan agen. |
Metrik shell_snapshot mencakup success dan, jika gagal, failure_reason.
Memori dan status lokal
| Metrik | Jenis | Bidang | Deskripsi |
|---|---|---|---|
memory.phase1 |
penghitung | status |
Jumlah tugas memori fase 1 berdasarkan status. |
memory.phase1.e2e_ms |
histogram | Durasi menyeluruh untuk memori fase 1. | |
memory.phase1.output |
penghitung | Output memori fase 1 yang ditulis. | |
memory.phase1.token_usage |
histogram | token_type |
Penggunaan token memori fase 1 berdasarkan jenis token. |
memory.phase2 |
penghitung | status |
Jumlah tugas memori fase 2 berdasarkan status. |
memory.phase2.e2e_ms |
histogram | Durasi menyeluruh untuk memori fase 2. | |
memory.phase2.input |
penghitung | Jumlah input memori fase 2. | |
memory.phase2.token_usage |
histogram | token_type |
Penggunaan token memori fase 2 berdasarkan jenis token. |
memories.usage |
penghitung | kind, tool, success |
Penggunaan memori berdasarkan jenis, alat, dan keberhasilan/kegagalan. |
external_agent_config.detect |
penghitung | Lihat catatan | Deteksi konfigurasi agen eksternal berdasarkan jenis item migrasi. |
external_agent_config.import |
penghitung | Lihat catatan | Impor konfigurasi agen eksternal berdasarkan jenis item migrasi. |
db.backfill |
penghitung | status |
Hasil pengisian ulang DB status awal (upserted, failed). |
db.backfill.duration_ms |
histogram | status |
Durasi pengisian ulang DB status awal. |
db.error |
penghitung | stage |
Kesalahan selama operasi DB status. |
Metrik external_agent_config.detect dan external_agent_config.import mencakup migration_type; migrasi keterampilan juga mencakup skills_count.
Sandbox Windows
| Metrik | Jenis | Bidang | Deskripsi |
|---|---|---|---|
windows_sandbox.setup_success |
penghitung | originator, mode |
Keberhasilan penyiapan sandbox Windows. |
windows_sandbox.setup_failure |
penghitung | originator, mode |
Kegagalan penyiapan sandbox Windows. |
windows_sandbox.setup_duration_ms |
histogram | result, originator, mode |
Durasi penyiapan sandbox Windows. |
windows_sandbox.elevated_setup_success |
penghitung | Keberhasilan penyiapan sandbox Windows dengan hak tinggi. | |
windows_sandbox.elevated_setup_failure |
penghitung | Lihat catatan | Kegagalan penyiapan sandbox Windows dengan hak tinggi. |
windows_sandbox.elevated_setup_canceled |
penghitung | Lihat catatan | Percobaan penyiapan sandbox Windows dengan hak tinggi yang dibatalkan. |
windows_sandbox.elevated_setup_duration_ms |
histogram | result |
Durasi penyiapan sandbox dengan hak tinggi. |
windows_sandbox.elevated_prompt_shown |
penghitung | Prompt penyiapan sandbox dengan hak tinggi ditampilkan. | |
windows_sandbox.elevated_prompt_accept |
penghitung | Prompt penyiapan sandbox dengan hak tinggi diterima. | |
windows_sandbox.elevated_prompt_use_legacy |
penghitung | Pengguna memilih sandbox lama dari prompt dengan hak tinggi. | |
windows_sandbox.elevated_prompt_quit |
penghitung | Pengguna keluar dari prompt dengan hak tinggi. | |
windows_sandbox.fallback_prompt_shown |
penghitung | Prompt sandbox fallback ditampilkan. | |
windows_sandbox.fallback_retry_elevated |
penghitung | Pengguna mencoba ulang penyiapan dengan hak tinggi dari prompt fallback. | |
windows_sandbox.fallback_use_legacy |
penghitung | Pengguna memilih sandbox lama dari prompt fallback. | |
windows_sandbox.fallback_prompt_quit |
penghitung | Pengguna keluar dari prompt fallback. | |
windows_sandbox.legacy_setup_preflight_failed |
penghitung | Lihat catatan | Kegagalan prapemeriksaan penyiapan sandbox Windows lama. |
windows_sandbox.setup_elevated_sandbox_command |
penghitung | Perintah penyiapan sandbox dengan hak tinggi dipanggil. | |
windows_sandbox.createprocessasuserw_failed |
penghitung | error_code, path_kind, exe, level |
Kegagalan CreateProcessAsUserW Windows. |
Metrik kegagalan penyiapan dengan hak istimewa yang ditingkatkan mencakup code dan message ketika detail kegagalan penyiapan Windows tersedia, dan dapat mencakup originator ketika dihasilkan dari jalur penyiapan bersama. Metrik windows_sandbox.legacy_setup_preflight_failed mencakup originator ketika dihasilkan dari jalur penyiapan bersama, tetapi kegagalan pemeriksaan awal perintah fallback mungkin tidak menyertakan bidang apa pun.
Kontrol umpan balik
Secara default, klien lokal memungkinkan pengguna mengirimkan umpan balik dari /feedback. Untuk menonaktifkan pengumpulan umpan balik di aplikasi desktop ChatGPT, Codex CLI, dan ekstensi IDE pada suatu komputer, perbarui konfigurasi Anda:
[feedback]
enabled = falseSaat dinonaktifkan, /feedback menampilkan pesan bahwa fitur dinonaktifkan dan Codex menolak pengiriman umpan balik.
Menyembunyikan atau menampilkan peristiwa penalaran
Jika Anda ingin mengurangi keluaran "penalaran" yang mengganggu (misalnya dalam log CI), Anda dapat menyembunyikannya:
hide_agent_reasoning = trueJika Anda ingin menampilkan konten penalaran mentah saat model menghasilkannya:
show_raw_agent_reasoning = trueAktifkan penalaran mentah hanya jika hal tersebut dapat diterima untuk alur kerja Anda. Beberapa model/penyedia (seperti gpt-oss) tidak menghasilkan penalaran mentah; dalam hal ini, pengaturan tersebut tidak memiliki efek yang terlihat.
Notifikasi
Gunakan notify untuk memicu program eksternal setiap kali Codex menghasilkan peristiwa yang didukung (saat ini hanya agent-turn-complete). Fitur ini berguna untuk notifikasi desktop, webhook obrolan, pembaruan CI, atau peringatan melalui saluran lain yang tidak dicakup oleh notifikasi TUI bawaan.
notify = ["python3", "/path/to/notify.py"]Contoh notify.py (dipotong) yang merespons agent-turn-complete:
#!/usr/bin/env python3
import json, subprocess, sys
def main() -> int:
notification = json.loads(sys.argv[1])
if notification.get("type") != "agent-turn-complete":
return 0
title = f"Codex: {notification.get('last-assistant-message', 'Turn Complete!')}"
message = " ".join(notification.get("input-messages", []))
subprocess.check_output([
"terminal-notifier",
"-title", title,
"-message", message,
"-group", "codex-" + notification.get("thread-id", ""),
"-activate", "com.googlecode.iterm2",
])
return 0
if __name__ == "__main__":
sys.exit(main())Skrip menerima satu argumen JSON. Bidang yang umum meliputi:
type(saat iniagent-turn-complete)thread-id(pengidentifikasi sesi)turn-id(pengidentifikasi giliran)cwd(direktori kerja)input-messages(pesan pengguna yang mengarah ke giliran tersebut)last-assistant-message(teks pesan terakhir asisten)
Tempatkan skrip di suatu lokasi pada disk dan arahkan notify ke skrip tersebut.
notify dibandingkan dengan tui.notifications
notifymenjalankan program eksternal (cocok untuk webhook, pemberi notifikasi desktop, dan kait CI).tui.notificationsmerupakan fitur bawaan TUI dan dapat memfilter berdasarkan jenis peristiwa secara opsional (misalnya,agent-turn-completedanapproval-requested).tui.notification_methodmengontrol cara TUI menghasilkan notifikasi terminal (auto,osc9, ataubel).tui.notification_conditionmengontrol apakah notifikasi TUI hanya dipicu ketika terminal berada dalam keadaanunfocusedataualways.
Dalam mode auto, Codex mengutamakan notifikasi OSC 9 (urutan escape terminal yang ditafsirkan oleh beberapa terminal sebagai notifikasi desktop) dan menggunakan BEL (\x07) sebagai fallback jika tidak tersedia.
Lihat Referensi Konfigurasi untuk mengetahui kunci yang tepat.
Persistensi riwayat
Secara default, Codex menyimpan transkrip sesi lokal di bawah CODEX_HOME (misalnya, ~/.codex/history.jsonl). Untuk menonaktifkan persistensi riwayat lokal:
[history]
persistence = "none"Untuk membatasi ukuran file riwayat, atur history.max_bytes. Ketika file melampaui batas, Codex menghapus entri terlama dan memadatkan file sambil mempertahankan catatan terbaru.
[history]
max_bytes = 104857600 # 100 MiBKutipan yang dapat diklik
Jika Anda menggunakan integrasi terminal/editor yang mendukungnya, Codex dapat merender kutipan file sebagai tautan yang dapat diklik. Konfigurasikan file_opener untuk memilih skema URI yang digunakan Codex:
file_opener = "vscode" # or cursor, windsurf, vscode-insiders, noneContoh: kutipan seperti /home/user/project/main.py:42 dapat ditulis ulang menjadi tautan vscode://file/...:42 yang dapat diklik.
Penemuan instruksi proyek
Codex membaca AGENTS.md (dan file terkait) serta menyertakan panduan proyek dalam jumlah terbatas pada giliran pertama suatu sesi. Dua pengaturan mengontrol cara kerjanya:
project_doc_max_bytes: jumlah konten yang dibaca dari setiap fileAGENTS.mdproject_doc_fallback_filenames: nama file tambahan yang akan dicoba ketikaAGENTS.mdtidak ditemukan pada suatu tingkat direktori
Untuk panduan terperinci, lihat Instruksi khusus dengan AGENTS.md.
Desktop
Opsi di bagian ini hanya berlaku untuk aplikasi desktop ChatGPT.
Menambahkan penangan file khusus
Dalam ~/.codex/config.toml tingkat pengguna Anda, tambahkan entri di bawah
desktop.custom_file_handlers untuk membuka file di editor atau peluncur internal
yang secara default tidak didukung oleh aplikasi desktop ChatGPT. Setiap entri menambahkan
target editor ke menu Buka di milik aplikasi. Aplikasi menampilkan target ketika
command merupakan jalur absolut yang ada atau dapat ditemukan dari PATH aplikasi.
Contoh berikut menunjukkan tiga cara untuk meneruskan file ke penangan:
# Append the opened path directly after the command.
[desktop.custom_file_handlers.vscodium]
label = "VSCodium"
icon = "/Users/you/.codex/icons/vscodium.png"
command = "codium"
# Place fixed arguments before the opened path.
[desktop.custom_file_handlers.textedit]
label = "TextEdit"
icon = "/Users/you/.codex/icons/textedit.png"
command = "/usr/bin/open"
args = ["-a", "TextEdit"]
# Append one JSON argument with the path and editor context.
[desktop.custom_file_handlers.company_editor]
label = "Company Editor"
icon = "/opt/company/editor/icon.png"
command = "/opt/company/bin/editor"
input = "json_argument"Simpan config.toml, lalu mulai ulang aplikasi desktop ChatGPT.
ID penangan adalah segmen terakhir dari header tabel TOML. ID tersebut harus berisi
1–64 karakter, diawali huruf atau angka ASCII, dan karakter lainnya hanya boleh berupa
huruf ASCII, angka, titik, garis bawah, atau tanda hubung. Aplikasi mengekspos
ID dengan awalan custom:; misalnya, company_editor menjadi
custom:company_editor. Apit ID yang berisi titik dengan tanda kutip agar TOML tidak
menafsirkannya sebagai tabel bertingkat. Contoh:
[desktop.custom_file_handlers."company.editor"]
label = "Company Editor"
icon = "/opt/company/editor/icon.png"
command = "/opt/company/bin/editor"Setiap penangan mendukung bidang berikut:
| Bidang | Wajib | Deskripsi |
|---|---|---|
label |
Ya | Nama tampilan dalam aplikasi. |
icon |
Ya | Ikon aplikasi bawaan seperti apps/vscode.png, URL base64 data:image/..., URI file:, atau jalur absolut gambar lokal. Sumber yang tidak didukung menggunakan ikon default VS Code. |
command |
Ya | Jalur berkas eksekusi atau nama perintah yang akan dideteksi dan dijalankan. |
args |
Tidak | Larik string yang disisipkan di antara command dan masukan file. Nilai defaultnya adalah []. |
input |
Tidak | Cara aplikasi mengirim masukan file: path, json_argument, atau json_stdin. Nilai defaultnya adalah path. |
supports_ssh |
Tidak | Menentukan apakah penangan ditawarkan untuk file dalam ruang kerja SSH. Nilai defaultnya adalah false. Gunakan json_stdin ketika penangan memerlukan detail host dan jalur jarak jauh. |
Nilai input mengontrol apa yang mengikuti args:
pathmenambahkan jalur sebagai argumen perintah terakhir.json_argumentmenambahkan objek JSON dengantarget,path,appPath, danlocation. Nilailocationmerupakan objek dengan nilailinedancolumnberbasis 1, ataunull.json_stdinmenulis objek JSON ke masukan standar alih-alih menambahkan argumen. Objek tersebut juga menyertakanhostConfig,remoteWorkspaceRoot, danremotePath; bidang-bidang ini bernilainulljika tidak berlaku.
Misalnya, company_editor dapat menerima argumen ini ketika pengguna membuka
lokasi sumber tertentu:
{
"target": "custom:company_editor",
"path": "/repo/src/index.ts",
"appPath": null,
"location": { "line": 12, "column": 3 }
}Memilih penangan khusus sebagai editor pilihan akan mempertahankan pilihan tersebut dengan cara yang sama seperti ketika memilih editor bawaan, termasuk preferensi per proyek.
Opsi TUI
Menjalankan codex tanpa subperintah akan meluncurkan antarmuka pengguna terminal (TUI) interaktif. Codex menyediakan beberapa konfigurasi khusus TUI di bawah [tui], termasuk:
tui.notifications: mengaktifkan/menonaktifkan notifikasi (atau membatasinya pada jenis tertentu)tui.notification_method: memilihauto,osc9, ataubeluntuk notifikasi terminaltui.notification_condition: memilihunfocusedataualwaysuntuk menentukan kapan notifikasi dipicutui.animations: mengaktifkan/menonaktifkan animasi ASCII dan efek kilautui.alternate_screen: mengontrol penggunaan layar alternatif (atur keneveruntuk mempertahankan riwayat gulir terminal)tui.show_tooltips: menampilkan atau menyembunyikan keterangan alat pengenalan pada layar selamat datang
Nilai default tui.notification_method adalah auto. Dalam mode auto, Codex mengutamakan notifikasi OSC 9 (urutan escape terminal yang ditafsirkan oleh beberapa terminal sebagai notifikasi desktop) ketika terminal tampak mendukungnya, dan menggunakan BEL (\x07) sebagai fallback jika tidak tersedia.
Lihat Referensi Konfigurasi untuk daftar lengkap kunci.