Konfigurasi Lanjutan
Untuk indeks dokumentasi lengkap, lihat llms.txt. Versi Markdown dari halaman dokumentasi tersedia dengan menambahkan .md ke URL halaman.
Gunakan opsi berikut saat Anda memerlukan kontrol lebih besar atas penyedia, kebijakan, dan integrasi. Untuk memulai dengan cepat, lihat Dasar-dasar konfigurasi.
Untuk informasi latar belakang tentang panduan proyek, kemampuan yang dapat digunakan kembali, perintah garis miring khusus, 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 atas dalam
file profil; jangan menempatkannya di bawah [profiles.profile-name].
# ~/.codex/deep-review.config.toml
model = "gpt-5.5"
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 dan di bawah
konfigurasi proyek serta CLI, file tersebut hanya perlu berisi nilai yang berbeda dari konfigurasi
dasar Anda. File profil juga dapat menimpa model_catalog_json; Codex menggunakan
nilai profil ketika kedua file menetapkannya.
Di Codex 0.134.0 dan yang lebih baru, --profile tidak lagi membaca [profiles.profile-name]
dari config.toml, dan pemilih tingkat atas profile = "profile-name" 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 satu kali dari CLI
Selain mengedit ~/.codex/config.toml, Anda dapat menimpa konfigurasi untuk satu kali eksekusi dari CLI:
- Utamakan flag khusus jika tersedia (misalnya,
--model). - Gunakan
-c/--configsaat Anda perlu menimpa kunci apa pun.
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, beri tanda kutip pada nilai agar shell tidak memecahnya 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 (default-nya ~/.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 default, aturan, dan keterampilan bersama yang disimpan dalam repo atau jalur sistem, lihat Konfigurasi Tim.
Jika Anda hanya perlu mengarahkan penyedia bawaan OpenAI ke proksi LLM, router, atau proyek dengan residensi data yang diaktifkan, tetapkan openai_base_url dalam config.toml alih-alih mendefinisikan penyedia baru. Tindakan ini mengubah URL dasar untuk penyedia bawaan openai 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, Codex membaca penimpaan dalam cakupan proyek dari file .codex/config.toml di dalam repo Anda. Codex menelusuri dari akar proyek hingga direktori kerja saat ini dan memuat setiap .codex/config.toml yang ditemukan. Jika beberapa file mendefinisikan kunci yang sama, file yang paling dekat dengan direktori kerja Anda akan berlaku.
Demi keamanan, Codex hanya memuat file konfigurasi dalam cakupan proyek ketika 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
startup 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] sebaris 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 ketika lapisan .codex/ proyek dipercaya.
Hook tingkat pengguna tetap independen dari kepercayaan proyek.
Hook TOML sebaris 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 dan [hooks] sebaris, Codex memuat
keduanya dan menampilkan peringatan. Utamakan satu representasi per lapisan.
Untuk daftar peristiwa, bidang input, perilaku output, dan batasan saat ini, lihat Hook.
Peran agen ([agents] dalam config.toml)
Untuk konfigurasi peran subagen ([agents] dalam config.toml), lihat Subagen.
Deteksi akar proyek
Codex menemukan konfigurasi proyek (misalnya, lapisan .codex/ dan AGENTS.md) dengan menelusuri ke atas dari direktori kerja hingga mencapai akar proyek.
Secara default, Codex memperlakukan direktori yang berisi .git sebagai akar 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 akar proyek.
Penyedia model khusus
Penyedia model menentukan cara Codex terhubung ke model (URL dasar, API wire, autentikasi, dan header HTTP opsional). Penyedia khusus 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 khusus 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 khusus. 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 ketika penyedia memerlukan Codex untuk 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 sekelilingnya, memperlakukan token kosong sebagai kesalahan, dan menyegarkannya secara proaktif pada refresh_interval_ms; tetapkan refresh_interval_ms = 0 untuk menyegarkan hanya setelah autentikasi dicoba ulang. Jangan gabungkan [model_providers.<id>.auth] dengan env_key, experimental_bearer_token, atau requires_openai_auth.
Penyedia Amazon Bedrock
Codex menyertakan penyedia model bawaan amazon-bedrock. Tetapkan langsung sebagai
model_provider; tidak seperti penyedia khusus, 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 eksekusi dengan
--local-provider, atau tetapkan oss_provider sebagai default. Jika tidak ada yang ditetapkan,
CLI interaktif meminta Anda memilih; codex exec keluar dengan kesalahan.
# Default local provider used with `--oss`
oss_provider = "ollama" # or "lmstudio"Penyedia Azure dan penyesuaian 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 penyedia bawaan OpenAI, gunakan openai_base_url; jangan buat [model_providers.openai] karena Anda tidak dapat menimpa ID penyedia bawaan.
Pelanggan ChatGPT yang menggunakan residensi data
Proyek yang dibuat dengan residensi data diaktifkan dapat membuat penyedia model untuk memperbarui base_url dengan prefiks yang benar.
model_provider = "openaidr"
[model_providers.openaidr]
name = "OpenAI Data Residency"
base_url = "https://us.api.openai.com/v1" # Replace 'us' with domain prefixPenalaran model, tingkat detail, 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 akar yang dapat ditulisi, dan Akses jaringan.
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 perintah. Ini berguna jika Anda menginginkan persetujuan interaktif normal untuk beberapa kasus, tetapi menginginkan kasus lainnya, seperti request_permissions atau perintah skrip keterampilan, ditolak otomatis secara aman.
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
terkelola lebih diprioritaskan.
approval_policy = "untrusted" # Other options: on-request, 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 khusus, dan model konfigurasi sistem file serta 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 sudah mengisolasi proses):
sandbox_mode = "danger-full-access"Kebijakan lingkungan shell
shell_environment_policy mengontrol variabel lingkungan mana yang diteruskan Codex ke
perintah yang dijalankan. Mulai dengan lingkungan kosong menggunakan inherit = "none", atau
warisi kumpulan yang telah dipangkas menggunakan inherit = "core". Tambahkan nilai eksplisit dan filter
berkunci untuk menghindari penerusan rahasia yang tidak diperlukan 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 pola apa pun menggunakan "include", Codex hanya mempertahankan
variabel yang cocok dengan pola penyertaan. Penyertaan tidak memulihkan variabel
yang sudah dikecualikan. Kunci filter digabungkan tanpa membedakan huruf besar-kecil di seluruh
lapisan konfigurasi.
ignore_default_excludes secara default bernilai true, sehingga Codex tidak secara 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 khusus, nilai dari
set, dan terakhir daftar izin pola penyertaan. Karena set dijalankan setelah
pengecualian, ini dapat memulihkan variabel yang dikecualikan. Daftar izin pola penyertaan
tetap dapat menghapus nilai yang dipulihkan tersebut.
Array lama exclude dan include_only 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 eksekusi Codex (permintaan API, SSE/peristiwa, perintah, 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 pengekspor:
[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 merekam peristiwa tetapi tidak mengirim apa pun. Pengekspor mengelompokkan data secara asinkron dan mengirimkan sisanya 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 eksekusi dan penggunaan alat. Jenis peristiwa yang mewakili meliputi:
codex.conversation_starts(model, pengaturan penalaran, kebijakan sandbox/persetujuan)codex.api_request(percobaan, status/keberhasilan, durasi, dan detail kesalahan)codex.sse_event(jenis peristiwa aliran, 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
Ketika pipeline metrik OTel diaktifkan, Codex memancarkan penghitung dan histogram durasi untuk aktivitas API, aliran, dan alat.
Setiap metrik di bawah juga menyertakan 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 mengirimkan sejumlah kecil data penggunaan dan kesehatan anonim kembali ke OpenAI. Hal 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 pengenal 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 dalam codex-rs/otel/src/metrics/names.rs; metrik khusus fitur yang dipancarkan di luar file tersebut juga disertakan di sini.
Jika suatu metrik menyertakan bidang tool, bidang tersebut mencerminkan alat internal yang digunakan (misalnya, apply_patch atau shell) dan tidak berisi perintah shell atau patch sebenarnya yang hendak 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 antartoken IAPI mesin Responses API. | |
responses_api_engine_service_tbt.duration_ms |
histogram | Waktu layanan antartoken mesin Responses API. | |
transport.fallback_to_http |
penghitung | from_wire_api |
Jumlah peralihan cadangan dari 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 pemanasan awal saat startup berdasarkan hasil. |
startup_prewarm.age_at_first_turn_ms |
histogram | status |
Usia pemanasan awal saat startup ketika 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 menyertakan bidang trigger, attempt, outcome, dan status_code. Metrik cloud_requirements.fetch_final menyertakan 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 pemanggilan alat dalam giliran tersebut. |
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 |
Pemanggilan alat eksekusi 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 ditemukan/tidak ditemukan. |
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 eksekusi hook berdasarkan nama, sumber, dan status hook. |
hooks.run.duration_ms |
histogram | hook_name, source, status |
Durasi eksekusi hook dalam milidetik. |
Metrik mcp.call dan mcp.call.duration_ms menyertakan status; emisi pemanggilan alat normal juga menyertakan tool, serta connector_id dan connector_name jika tersedia. Pemanggilan 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, direkam pada akhir utas. | |
thread.fork |
penghitung | source |
Utas baru dibuat dengan mencabangkan utas yang sudah 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 perintah. | |
thread.skills.truncated |
histogram | Apakah perenderan keterampilan memotong daftar keterampilan aktif (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 pembatalan 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 plugin terkurasi saat startup. |
plugins.startup_sync.final |
penghitung | transport, status |
Hasil akhir sinkronisasi plugin terkurasi saat startup. |
multi_agent.spawn |
penghitung | role |
Pembuatan agen berdasarkan peran. |
multi_agent.resume |
penghitung | Agen dilanjutkan. | |
multi_agent.nickname_pool_reset |
penghitung | Kumpulan nama panggilan agen direset. |
Metrik shell_snapshot menyertakan success dan, jika gagal, failure_reason.
Memori dan status lokal
| Metrik | Jenis | Bidang | Deskripsi |
|---|---|---|---|
memory.phase1 |
penghitung | status |
Jumlah pekerjaan 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 pekerjaan 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 menyertakan migration_type; migrasi keterampilan juga menyertakan skills_count.
Sandbox Windows
| Metrik | Jenis | Bidang | Deskripsi |
|---|---|---|---|
windows_sandbox.setup_success |
penghitung | originator, mode |
Penyiapan sandbox Windows yang berhasil. |
windows_sandbox.setup_failure |
penghitung | originator, mode |
Penyiapan sandbox Windows yang gagal. |
windows_sandbox.setup_duration_ms |
histogram | result, originator, mode |
Durasi penyiapan sandbox Windows. |
windows_sandbox.elevated_setup_success |
penghitung | Penyiapan sandbox Windows dengan hak lebih tinggi yang berhasil. | |
windows_sandbox.elevated_setup_failure |
penghitung | Lihat catatan | Penyiapan sandbox Windows dengan hak lebih tinggi yang gagal. |
windows_sandbox.elevated_setup_canceled |
penghitung | Lihat catatan | Percobaan penyiapan sandbox Windows dengan hak lebih tinggi yang dibatalkan. |
windows_sandbox.elevated_setup_duration_ms |
histogram | result |
Durasi penyiapan sandbox dengan hak lebih tinggi. |
windows_sandbox.elevated_prompt_shown |
penghitung | Perintah penyiapan sandbox dengan hak lebih tinggi ditampilkan. | |
windows_sandbox.elevated_prompt_accept |
penghitung | Perintah penyiapan sandbox dengan hak lebih tinggi diterima. | |
windows_sandbox.elevated_prompt_use_legacy |
penghitung | Pengguna memilih sandbox lama dari perintah dengan hak lebih tinggi. | |
windows_sandbox.elevated_prompt_quit |
penghitung | Pengguna keluar dari perintah dengan hak lebih tinggi. | |
windows_sandbox.fallback_prompt_shown |
penghitung | Perintah sandbox cadangan ditampilkan. | |
windows_sandbox.fallback_retry_elevated |
penghitung | Pengguna mencoba kembali penyiapan dengan hak lebih tinggi dari perintah cadangan. | |
windows_sandbox.fallback_use_legacy |
penghitung | Pengguna memilih sandbox lama dari perintah cadangan. | |
windows_sandbox.fallback_prompt_quit |
penghitung | Pengguna keluar dari perintah cadangan. | |
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 lebih tinggi dipanggil. | |
windows_sandbox.createprocessasuserw_failed |
penghitung | error_code, path_kind, exe, level |
Kegagalan CreateProcessAsUserW Windows. |
Metrik kegagalan penyiapan dengan hak akses yang ditingkatkan mencakup code dan message ketika detail kegagalan penyiapan Windows tersedia, dan dapat mencakup originator ketika dipancarkan dari jalur penyiapan bersama. Metrik windows_sandbox.legacy_setup_preflight_failed mencakup originator ketika dipancarkan dari jalur penyiapan bersama, tetapi kegagalan pemeriksaan awal untuk prompt cadangan 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 mesin, perbarui konfigurasi Anda:
[feedback]
enabled = falseJika 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 dalam alur kerja Anda. Beberapa model/penyedia (seperti gpt-oss) tidak menghasilkan penalaran mentah; dalam hal ini, pengaturan tersebut tidak menimbulkan efek yang terlihat.
Notifikasi
Gunakan notify untuk memicu program eksternal setiap kali Codex memancarkan peristiwa yang didukung (saat ini hanya agent-turn-complete). Fitur ini berguna untuk notifikasi pop-up desktop, webhook obrolan, pembaruan CI, atau pemberitahuan melalui saluran lain yang tidak dicakup oleh notifikasi bawaan TUI.
notify = ["python3", "/path/to/notify.py"]Contoh notify.py (dipotong) yang bereaksi terhadap 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 mencakup:
type(saat iniagent-turn-complete)thread-id(pengidentifikasi sesi)turn-id(pengidentifikasi giliran)cwd(direktori kerja)input-messages(pesan pengguna yang memicu giliran tersebut)last-assistant-message(teks pesan terakhir asisten)
Tempatkan skrip di lokasi tertentu pada disk dan arahkan notify ke lokasi tersebut.
notify dibandingkan dengan tui.notifications
notifymenjalankan program eksternal (cocok untuk webhook, pemberi notifikasi desktop, dan hook CI).tui.notificationsmerupakan fitur bawaan TUI dan secara opsional dapat memfilter berdasarkan jenis peristiwa (misalnya,agent-turn-completedanapproval-requested).tui.notification_methodmengontrol cara TUI memancarkan notifikasi terminal (auto,osc9, ataubel).tui.notification_conditionmengontrol apakah notifikasi TUI hanya dipicu ketika terminal berada dalam kondisiunfocusedataualways.
Dalam mode auto, Codex mengutamakan notifikasi OSC 9 (urutan escape terminal yang ditafsirkan oleh beberapa terminal sebagai notifikasi desktop) dan menggunakan BEL (\x07) sebagai cadangan jika tidak tersedia.
Lihat Referensi Konfigurasi untuk mengetahui kunci yang tepat.
Persistensi riwayat
Secara default, Codex menyimpan transkrip sesi lokal di CODEX_HOME (misalnya, ~/.codex/history.jsonl). Untuk menonaktifkan persistensi riwayat lokal:
[history]
persistence = "none"Untuk membatasi ukuran file riwayat, tetapkan history.max_bytes. Ketika ukuran file melampaui batas, Codex menghapus entri paling lama dan memadatkan file sambil mempertahankan catatan terbaru.
[history]
max_bytes = 104857600 # 100 MiBSitasi yang dapat diklik
Jika Anda menggunakan integrasi terminal/editor yang mendukungnya, Codex dapat merender sitasi 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: sitasi 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 opsi mengontrol cara kerjanya:
project_doc_max_bytes: jumlah 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 pada aplikasi. Aplikasi menampilkan target ketika
command merupakan jalur absolut yang ada atau dapat ditemukan dari PATH milik aplikasi.
Contoh berikut menunjukkan tiga cara 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 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 mengandung 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 data:image/... base64, URI file:, atau jalur absolut gambar lokal. Sumber yang tidak didukung menggunakan ikon default VS Code. |
command |
Ya | Jalur berkas yang dapat dieksekusi 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 mengirimkan masukan file: path, json_argument, atau json_stdin. Nilai defaultnya adalah path. |
supports_ssh |
Tidak | Apakah penangan akan ditawarkan untuk file di 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. Nilailocationadalah objek dengan nilailinedancolumnyang berbasis 1, ataunull.json_stdinmenulis objek JSON ke masukan standar alih-alih menambahkannya sebagai argumen. Objek ini juga menyertakanhostConfig,remoteWorkspaceRoot, danremotePath; bidang-bidang ini bernilainullketika 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 menyimpan pilihan dengan cara yang sama seperti memilih editor bawaan, termasuk preferensi per proyek.
Opsi TUI
Menjalankan codex tanpa subperintah akan meluncurkan antarmuka pengguna terminal (TUI) interaktif. Codex menyediakan sejumlah 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 (tetapkan keneveruntuk mempertahankan riwayat gulir terminal)tui.show_tooltips: menampilkan atau menyembunyikan tooltip orientasi 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 tampaknya mendukungnya, dan menggunakan BEL (\x07) sebagai cadangan jika tidak tersedia.
Lihat Referensi Konfigurasi untuk daftar lengkap kunci.