6 6
7User-level configuration lives in `~/.codex/config.toml`. You can also add project-scoped overrides in `.codex/config.toml` files. Codex loads project-scoped config files only when you trust the project.7User-level configuration lives in `~/.codex/config.toml`. You can also add project-scoped overrides in `.codex/config.toml` files. Codex loads project-scoped config files only when you trust the project.
8 8
9For sandbox and approval keys (`approval_policy`, `sandbox_mode`, and `sandbox_workspace_write.*`), pair this reference with [Sandbox and approvals](https://developers.openai.com/codex/security#sandbox-and-approvals), [Protected paths in writable roots](https://developers.openai.com/codex/security#protected-paths-in-writable-roots), and [Network access](https://developers.openai.com/codex/security#network-access).9For sandbox and approval keys (`approval_policy`, `sandbox_mode`, and `sandbox_workspace_write.*`), pair this reference with [Sandbox and approvals](https://developers.openai.com/codex/agent-approvals-security#sandbox-and-approvals), [Protected paths in writable roots](https://developers.openai.com/codex/agent-approvals-security#protected-paths-in-writable-roots), and [Network access](https://developers.openai.com/codex/agent-approvals-security#network-access).
10 10
11| Key | Type / Values | Details |11| Key | Type / Values | Details |
12| --- | --- | --- |12| --- | --- | --- |
13| `agents.<name>.config_file` | `string (path)` | Path to a TOML config layer for that role; relative paths resolve from the config file that declares the role. |13| `agents.<name>.config_file` | `string (path)` | Path to a TOML config layer for that role; relative paths resolve from the config file that declares the role. |
14| `agents.<name>.description` | `string` | Role guidance shown to Codex when choosing and spawning that agent type. |14| `agents.<name>.description` | `string` | Role guidance shown to Codex when choosing and spawning that agent type. |
15| `agents.<name>.nickname_candidates` | `array<string>` | Optional pool of display nicknames for spawned agents in that role. |
16| `agents.job_max_runtime_seconds` | `number` | Default per-worker timeout for `spawn_agents_on_csv` jobs. When unset, the tool falls back to 1800 seconds per worker. |
15| `agents.max_depth` | `number` | Maximum nesting depth allowed for spawned agent threads (root sessions start at depth 0; default: 1). |17| `agents.max_depth` | `number` | Maximum nesting depth allowed for spawned agent threads (root sessions start at depth 0; default: 1). |
16| `agents.max_threads` | `number` | Maximum number of agent threads that can be open concurrently. |18| `agents.max_threads` | `number` | Maximum number of agent threads that can be open concurrently. Defaults to `6` when unset. |
17| `allow_login_shell` | `boolean` | Allow shell-based tools to use login-shell semantics. Defaults to `true`; when `false`, `login = true` requests are rejected and omitted `login` defaults to non-login shells. |19| `allow_login_shell` | `boolean` | Allow shell-based tools to use login-shell semantics. Defaults to `true`; when `false`, `login = true` requests are rejected and omitted `login` defaults to non-login shells. |
18| `approval_policy` | `untrusted | on-request | never | { reject = { sandbox_approval = bool, rules = bool, mcp_elicitations = bool } }` | Controls when Codex pauses for approval before executing commands. You can also use `approval_policy = { reject = { ... } }` to auto-reject specific prompt categories while keeping other prompts interactive. `on-failure` is deprecated; use `on-request` for interactive runs or `never` for non-interactive runs. |20| `analytics.enabled` | `boolean` | Enable or disable analytics for this machine/profile. When unset, the client default applies. |
19| `approval_policy.reject.mcp_elicitations` | `boolean` | When `true`, MCP elicitation prompts are auto-rejected instead of shown to the user. |21| `approval_policy` | `untrusted | on-request | never | { granular = { sandbox_approval = bool, rules = bool, mcp_elicitations = bool, request_permissions = bool, skill_approval = bool } }` | Controls when Codex pauses for approval before executing commands. You can also use `approval_policy = { granular = { ... } }` to allow or auto-reject specific prompt categories while keeping other prompts interactive. `on-failure` is deprecated; use `on-request` for interactive runs or `never` for non-interactive runs. |
20| `approval_policy.reject.rules` | `boolean` | When `true`, approvals triggered by execpolicy `prompt` rules are auto-rejected. |22| `approval_policy.granular.mcp_elicitations` | `boolean` | When `true`, MCP elicitation prompts are allowed to surface instead of being auto-rejected. |
21| `approval_policy.reject.sandbox_approval` | `boolean` | When `true`, sandbox escalation approval prompts are auto-rejected. |23| `approval_policy.granular.request_permissions` | `boolean` | When `true`, prompts from the `request_permissions` tool are allowed to surface. |
24| `approval_policy.granular.rules` | `boolean` | When `true`, approvals triggered by execpolicy `prompt` rules are allowed to surface. |
25| `approval_policy.granular.sandbox_approval` | `boolean` | When `true`, sandbox escalation approval prompts are allowed to surface. |
26| `approval_policy.granular.skill_approval` | `boolean` | When `true`, skill-script approval prompts are allowed to surface. |
27| `approvals_reviewer` | `user | auto_review` | Who reviews eligible approval prompts under `on-request` or granular approval policies. Defaults to `user`; `auto_review` uses the reviewer subagent. This setting doesn't change sandboxing or review actions already allowed inside the sandbox. |
22| `apps._default.destructive_enabled` | `boolean` | Default allow/deny for app tools with `destructive_hint = true`. |28| `apps._default.destructive_enabled` | `boolean` | Default allow/deny for app tools with `destructive_hint = true`. |
23| `apps._default.enabled` | `boolean` | Default app enabled state for all apps unless overridden per app. |29| `apps._default.enabled` | `boolean` | Default app enabled state for all apps unless overridden per app. |
24| `apps._default.open_world_enabled` | `boolean` | Default allow/deny for app tools with `open_world_hint = true`. |30| `apps._default.open_world_enabled` | `boolean` | Default allow/deny for app tools with `open_world_hint = true`. |
29| `apps.<id>.open_world_enabled` | `boolean` | Allow or block tools in this app that advertise `open_world_hint = true`. |35| `apps.<id>.open_world_enabled` | `boolean` | Allow or block tools in this app that advertise `open_world_hint = true`. |
30| `apps.<id>.tools.<tool>.approval_mode` | `auto | prompt | approve` | Per-tool approval behavior override for a single app tool. |36| `apps.<id>.tools.<tool>.approval_mode` | `auto | prompt | approve` | Per-tool approval behavior override for a single app tool. |
31| `apps.<id>.tools.<tool>.enabled` | `boolean` | Per-tool enabled override for an app tool (for example `repos/list`). |37| `apps.<id>.tools.<tool>.enabled` | `boolean` | Per-tool enabled override for an app tool (for example `repos/list`). |
38| `auto_review.policy` | `string` | Local Markdown policy instructions for automatic review. Managed `guardian_policy_config` takes precedence. Blank values are ignored. |
32| `background_terminal_max_timeout` | `number` | Maximum poll window in milliseconds for empty `write_stdin` polls (background terminal polling). Default: `300000` (5 minutes). Replaces the older `background_terminal_timeout` key. |39| `background_terminal_max_timeout` | `number` | Maximum poll window in milliseconds for empty `write_stdin` polls (background terminal polling). Default: `300000` (5 minutes). Replaces the older `background_terminal_timeout` key. |
33| `chatgpt_base_url` | `string` | Override the base URL used during the ChatGPT login flow. |40| `chatgpt_base_url` | `string` | Override the base URL used during the ChatGPT login flow. |
34| `check_for_update_on_startup` | `boolean` | Check for Codex updates on startup (set to false only when updates are centrally managed). |41| `check_for_update_on_startup` | `boolean` | Check for Codex updates on startup (set to false only when updates are centrally managed). |
35| `cli_auth_credentials_store` | `file | keyring | auto` | Control where the CLI stores cached credentials (file-based auth.json vs OS keychain). |42| `cli_auth_credentials_store` | `file | keyring | auto` | Control where the CLI stores cached credentials (file-based auth.json vs OS keychain). |
43| `commit_attribution` | `string` | Override the commit co-author trailer text. Set an empty string to disable automatic attribution. |
36| `compact_prompt` | `string` | Inline override for the history compaction prompt. |44| `compact_prompt` | `string` | Inline override for the history compaction prompt. |
45| `default_permissions` | `string` | Name of the default permissions profile to apply to sandboxed tool calls. |
37| `developer_instructions` | `string` | Additional developer instructions injected into the session (optional). |46| `developer_instructions` | `string` | Additional developer instructions injected into the session (optional). |
38| `disable_paste_burst` | `boolean` | Disable burst-paste detection in the TUI. |47| `disable_paste_burst` | `boolean` | Disable burst-paste detection in the TUI. |
39| `experimental_compact_prompt_file` | `string (path)` | Load the compaction prompt override from a file (experimental). |48| `experimental_compact_prompt_file` | `string (path)` | Load the compaction prompt override from a file (experimental). |
40| `experimental_use_freeform_apply_patch` | `boolean` | Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform` or `codex --enable apply_patch_freeform`. |
41| `experimental_use_unified_exec_tool` | `boolean` | Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`. |49| `experimental_use_unified_exec_tool` | `boolean` | Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`. |
42| `features.apply_patch_freeform` | `boolean` | Expose the freeform `apply_patch` tool (experimental). |
43| `features.apps` | `boolean` | Enable ChatGPT Apps/connectors support (experimental). |50| `features.apps` | `boolean` | Enable ChatGPT Apps/connectors support (experimental). |
44| `features.apps_mcp_gateway` | `boolean` | Route Apps MCP calls through the OpenAI connectors MCP gateway (`https://api.openai.com/v1/connectors/mcp/`) instead of legacy routing (experimental). |51| `features.codex_hooks` | `boolean` | Enable lifecycle hooks loaded from `hooks.json` (under development; off by default). |
45| `features.child_agents_md` | `boolean` | Append AGENTS.md scope/precedence guidance even when no AGENTS.md is present (experimental). |52| `features.enable_request_compression` | `boolean` | Compress streaming request bodies with zstd when supported (stable; on by default). |
46| `features.collaboration_modes` | `boolean` | Enable collaboration modes such as plan mode (stable; on by default). |53| `features.fast_mode` | `boolean` | Enable Fast mode selection and the `service_tier = "fast"` path (stable; on by default). |
47| `features.multi_agent` | `boolean` | Enable multi-agent collaboration tools (`spawn\_agent`, `send\_input`, `resume\_agent`, `wait`, and `close\_agent`) (experimental; off by default). |54| `features.memories` | `boolean` | Enable [Memories](https://developers.openai.com/codex/memories) (off by default). |
55| `features.multi_agent` | `boolean` | Enable multi-agent collaboration tools (`spawn_agent`, `send_input`, `resume_agent`, `wait_agent`, and `close_agent`) (stable; on by default). |
48| `features.personality` | `boolean` | Enable personality selection controls (stable; on by default). |56| `features.personality` | `boolean` | Enable personality selection controls (stable; on by default). |
49| `features.powershell_utf8` | `boolean` | Force PowerShell UTF-8 output (defaults to true). |57| `features.prevent_idle_sleep` | `boolean` | Prevent the machine from sleeping while a turn is actively running (experimental; off by default). |
50| `features.remote_models` | `boolean` | Refresh remote model list before showing readiness (experimental). |58| `features.shell_snapshot` | `boolean` | Snapshot shell environment to speed up repeated commands (stable; on by default). |
51| `features.request_rule` | `boolean` | Enable Smart approvals (`prefix_rule` suggestions on escalation requests; stable; on by default). |
52| `features.runtime_metrics` | `boolean` | Show runtime metrics summary in TUI turn separators (experimental). |
53| `features.search_tool` | `boolean` | Enable `search_tool_bm25` for Apps tool discovery before invoking app MCP tools (experimental). |
54| `features.shell_snapshot` | `boolean` | Snapshot shell environment to speed up repeated commands (beta). |
55| `features.shell_tool` | `boolean` | Enable the default `shell` tool for running commands (stable; on by default). |59| `features.shell_tool` | `boolean` | Enable the default `shell` tool for running commands (stable; on by default). |
56| `features.unified_exec` | `boolean` | Use the unified PTY-backed exec tool (beta). |60| `features.skill_mcp_dependency_install` | `boolean` | Allow prompting and installing missing MCP dependencies for skills (stable; on by default). |
57| `features.use_linux_sandbox_bwrap` | `boolean` | Use the bubblewrap-based Linux sandbox pipeline (experimental; off by default). |61| `features.undo` | `boolean` | Enable undo support (stable; off by default). |
62| `features.unified_exec` | `boolean` | Use the unified PTY-backed exec tool (stable; enabled by default except on Windows). |
58| `features.web_search` | `boolean` | Deprecated legacy toggle; prefer the top-level `web_search` setting. |63| `features.web_search` | `boolean` | Deprecated legacy toggle; prefer the top-level `web_search` setting. |
59| `features.web_search_cached` | `boolean` | Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "cached"`. |64| `features.web_search_cached` | `boolean` | Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "cached"`. |
60| `features.web_search_request` | `boolean` | Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "live"`. |65| `features.web_search_request` | `boolean` | Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "live"`. |
65| `hide_agent_reasoning` | `boolean` | Suppress reasoning events in both the TUI and `codex exec` output. |70| `hide_agent_reasoning` | `boolean` | Suppress reasoning events in both the TUI and `codex exec` output. |
66| `history.max_bytes` | `number` | If set, caps the history file size in bytes by dropping oldest entries. |71| `history.max_bytes` | `number` | If set, caps the history file size in bytes by dropping oldest entries. |
67| `history.persistence` | `save-all | none` | Control whether Codex saves session transcripts to history.jsonl. |72| `history.persistence` | `save-all | none` | Control whether Codex saves session transcripts to history.jsonl. |
68| `include_apply_patch_tool` | `boolean` | Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`. |
69| `instructions` | `string` | Reserved for future use; prefer `model_instructions_file` or `AGENTS.md`. |73| `instructions` | `string` | Reserved for future use; prefer `model_instructions_file` or `AGENTS.md`. |
70| `log_dir` | `string (path)` | Directory where Codex writes log files (for example `codex-tui.log`); defaults to `$CODEX_HOME/log`. |74| `log_dir` | `string (path)` | Directory where Codex writes log files (for example `codex-tui.log`); defaults to `$CODEX_HOME/log`. |
71| `mcp_oauth_callback_port` | `integer` | Optional fixed port for the local HTTP callback server used during MCP OAuth login. When unset, Codex binds to an ephemeral port chosen by the OS. |75| `mcp_oauth_callback_port` | `integer` | Optional fixed port for the local HTTP callback server used during MCP OAuth login. When unset, Codex binds to an ephemeral port chosen by the OS. |
80| `mcp_servers.<id>.enabled_tools` | `array<string>` | Allow list of tool names exposed by the MCP server. |84| `mcp_servers.<id>.enabled_tools` | `array<string>` | Allow list of tool names exposed by the MCP server. |
81| `mcp_servers.<id>.env` | `map<string,string>` | Environment variables forwarded to the MCP stdio server. |85| `mcp_servers.<id>.env` | `map<string,string>` | Environment variables forwarded to the MCP stdio server. |
82| `mcp_servers.<id>.env_http_headers` | `map<string,string>` | HTTP headers populated from environment variables for an MCP HTTP server. |86| `mcp_servers.<id>.env_http_headers` | `map<string,string>` | HTTP headers populated from environment variables for an MCP HTTP server. |
83| `mcp_servers.<id>.env_vars` | `array<string>` | Additional environment variables to whitelist for an MCP stdio server. |87| `mcp_servers.<id>.env_vars` | `array<string | { name = string, source = "local" | "remote" }>` | Additional environment variables to whitelist for an MCP stdio server. String entries default to `source = "local"`; use `source = "remote"` only with executor-backed remote stdio. |
88| `mcp_servers.<id>.experimental_environment` | `local | remote` | Experimental placement for an MCP server. `remote` starts stdio servers through a remote executor environment; streamable HTTP remote placement is not implemented. |
84| `mcp_servers.<id>.http_headers` | `map<string,string>` | Static HTTP headers included with each MCP HTTP request. |89| `mcp_servers.<id>.http_headers` | `map<string,string>` | Static HTTP headers included with each MCP HTTP request. |
90| `mcp_servers.<id>.oauth_resource` | `string` | Optional RFC 8707 OAuth resource parameter to include during MCP login. |
85| `mcp_servers.<id>.required` | `boolean` | When true, fail startup/resume if this enabled MCP server cannot initialize. |91| `mcp_servers.<id>.required` | `boolean` | When true, fail startup/resume if this enabled MCP server cannot initialize. |
92| `mcp_servers.<id>.scopes` | `array<string>` | OAuth scopes to request when authenticating to that MCP server. |
86| `mcp_servers.<id>.startup_timeout_ms` | `number` | Alias for `startup_timeout_sec` in milliseconds. |93| `mcp_servers.<id>.startup_timeout_ms` | `number` | Alias for `startup_timeout_sec` in milliseconds. |
87| `mcp_servers.<id>.startup_timeout_sec` | `number` | Override the default 10s startup timeout for an MCP server. |94| `mcp_servers.<id>.startup_timeout_sec` | `number` | Override the default 10s startup timeout for an MCP server. |
88| `mcp_servers.<id>.tool_timeout_sec` | `number` | Override the default 60s per-tool timeout for an MCP server. |95| `mcp_servers.<id>.tool_timeout_sec` | `number` | Override the default 60s per-tool timeout for an MCP server. |
89| `mcp_servers.<id>.url` | `string` | Endpoint for an MCP streamable HTTP server. |96| `mcp_servers.<id>.url` | `string` | Endpoint for an MCP streamable HTTP server. |
90| `model` | `string` | Model to use (e.g., `gpt-5-codex`). |97| `memories.consolidation_model` | `string` | Optional model override for global memory consolidation. |
98| `memories.disable_on_external_context` | `boolean` | When `true`, threads that use external context such as MCP tool calls, web search, or tool search are kept out of memory generation. Defaults to `false`. Legacy alias: `memories.no_memories_if_mcp_or_web_search`. |
99| `memories.extract_model` | `string` | Optional model override for per-thread memory extraction. |
100| `memories.generate_memories` | `boolean` | When `false`, newly created threads are not stored as memory-generation inputs. Defaults to `true`. |
101| `memories.max_raw_memories_for_consolidation` | `number` | Maximum recent raw memories retained for global consolidation. Defaults to `256` and is capped at `4096`. |
102| `memories.max_rollout_age_days` | `number` | Maximum age of threads considered for memory generation. Defaults to `30` and is clamped to `0`-`90`. |
103| `memories.max_rollouts_per_startup` | `number` | Maximum rollout candidates processed per startup pass. Defaults to `16` and is capped at `128`. |
104| `memories.max_unused_days` | `number` | Maximum days since a memory was last used before it becomes ineligible for consolidation. Defaults to `30` and is clamped to `0`-`365`. |
105| `memories.min_rollout_idle_hours` | `number` | Minimum idle time before a thread is considered for memory generation. Defaults to `6` and is clamped to `1`-`48`. |
106| `memories.use_memories` | `boolean` | When `false`, Codex skips injecting existing memories into future sessions. Defaults to `true`. |
107| `model` | `string` | Model to use (e.g., `gpt-5.5`). |
91| `model_auto_compact_token_limit` | `number` | Token threshold that triggers automatic history compaction (unset uses model defaults). |108| `model_auto_compact_token_limit` | `number` | Token threshold that triggers automatic history compaction (unset uses model defaults). |
92| `model_catalog_json` | `string (path)` | Optional path to a JSON model catalog loaded on startup. Profile-level `profiles.<name>.model_catalog_json` can override this per profile. |109| `model_catalog_json` | `string (path)` | Optional path to a JSON model catalog loaded on startup. Profile-level `profiles.<name>.model_catalog_json` can override this per profile. |
93| `model_context_window` | `number` | Context window tokens available to the active model. |110| `model_context_window` | `number` | Context window tokens available to the active model. |
94| `model_instructions_file` | `string (path)` | Replacement for built-in instructions instead of `AGENTS.md`. |111| `model_instructions_file` | `string (path)` | Replacement for built-in instructions instead of `AGENTS.md`. |
95| `model_provider` | `string` | Provider id from `model_providers` (default: `openai`). |112| `model_provider` | `string` | Provider id from `model_providers` (default: `openai`). |
113| `model_providers.<id>` | `table` | Custom provider definition. Built-in provider IDs (`openai`, `ollama`, and `lmstudio`) are reserved and cannot be overridden. |
114| `model_providers.<id>.auth` | `table` | Command-backed bearer token configuration for a custom provider. Do not combine with `env_key`, `experimental_bearer_token`, or `requires_openai_auth`. |
115| `model_providers.<id>.auth.args` | `array<string>` | Arguments passed to the token command. |
116| `model_providers.<id>.auth.command` | `string` | Command to run when Codex needs a bearer token. The command must print the token to stdout. |
117| `model_providers.<id>.auth.cwd` | `string (path)` | Working directory for the token command. |
118| `model_providers.<id>.auth.refresh_interval_ms` | `number` | How often Codex proactively refreshes the token in milliseconds (default: 300000). Set to `0` to refresh only after an authentication retry. |
119| `model_providers.<id>.auth.timeout_ms` | `number` | Maximum token command runtime in milliseconds (default: 5000). |
96| `model_providers.<id>.base_url` | `string` | API base URL for the model provider. |120| `model_providers.<id>.base_url` | `string` | API base URL for the model provider. |
97| `model_providers.<id>.env_http_headers` | `map<string,string>` | HTTP headers populated from environment variables when present. |121| `model_providers.<id>.env_http_headers` | `map<string,string>` | HTTP headers populated from environment variables when present. |
98| `model_providers.<id>.env_key` | `string` | Environment variable supplying the provider API key. |122| `model_providers.<id>.env_key` | `string` | Environment variable supplying the provider API key. |
105| `model_providers.<id>.requires_openai_auth` | `boolean` | The provider uses OpenAI authentication (defaults to false). |129| `model_providers.<id>.requires_openai_auth` | `boolean` | The provider uses OpenAI authentication (defaults to false). |
106| `model_providers.<id>.stream_idle_timeout_ms` | `number` | Idle timeout for SSE streams in milliseconds (default: 300000). |130| `model_providers.<id>.stream_idle_timeout_ms` | `number` | Idle timeout for SSE streams in milliseconds (default: 300000). |
107| `model_providers.<id>.stream_max_retries` | `number` | Retry count for SSE streaming interruptions (default: 5). |131| `model_providers.<id>.stream_max_retries` | `number` | Retry count for SSE streaming interruptions (default: 5). |
108| `model_providers.<id>.wire_api` | `chat | responses` | Protocol used by the provider (defaults to `chat` if omitted). |132| `model_providers.<id>.supports_websockets` | `boolean` | Whether that provider supports the Responses API WebSocket transport. |
133| `model_providers.<id>.wire_api` | `responses` | Protocol used by the provider. `responses` is the only supported value, and it is the default when omitted. |
109| `model_reasoning_effort` | `minimal | low | medium | high | xhigh` | Adjust reasoning effort for supported models (Responses API only; `xhigh` is model-dependent). |134| `model_reasoning_effort` | `minimal | low | medium | high | xhigh` | Adjust reasoning effort for supported models (Responses API only; `xhigh` is model-dependent). |
110| `model_reasoning_summary` | `auto | concise | detailed | none` | Select reasoning summary detail or disable summaries entirely. |135| `model_reasoning_summary` | `auto | concise | detailed | none` | Select reasoning summary detail or disable summaries entirely. |
111| `model_supports_reasoning_summaries` | `boolean` | Force Codex to send or not send reasoning metadata. |136| `model_supports_reasoning_summaries` | `boolean` | Force Codex to send or not send reasoning metadata. |
112| `model_verbosity` | `low | medium | high` | Control GPT-5 Responses API verbosity (defaults to `medium`). |137| `model_verbosity` | `low | medium | high` | Optional GPT-5 Responses API verbosity override; when unset, the selected model/preset default is used. |
113| `notice.hide_full_access_warning` | `boolean` | Track acknowledgement of the full access warning prompt. |138| `notice.hide_full_access_warning` | `boolean` | Track acknowledgement of the full access warning prompt. |
114| `notice.hide_gpt-5.1-codex-max_migration_prompt` | `boolean` | Track acknowledgement of the gpt-5.1-codex-max migration prompt. |139| `notice.hide_gpt-5.1-codex-max_migration_prompt` | `boolean` | Track acknowledgement of the gpt-5.1-codex-max migration prompt. |
115| `notice.hide_gpt5_1_migration_prompt` | `boolean` | Track acknowledgement of the GPT-5.1 migration prompt. |140| `notice.hide_gpt5_1_migration_prompt` | `boolean` | Track acknowledgement of the GPT-5.1 migration prompt. |
117| `notice.hide_world_writable_warning` | `boolean` | Track acknowledgement of the Windows world-writable directories warning. |142| `notice.hide_world_writable_warning` | `boolean` | Track acknowledgement of the Windows world-writable directories warning. |
118| `notice.model_migrations` | `map<string,string>` | Track acknowledged model migrations as old->new mappings. |143| `notice.model_migrations` | `map<string,string>` | Track acknowledged model migrations as old->new mappings. |
119| `notify` | `array<string>` | Command invoked for notifications; receives a JSON payload from Codex. |144| `notify` | `array<string>` | Command invoked for notifications; receives a JSON payload from Codex. |
145| `openai_base_url` | `string` | Base URL override for the built-in `openai` model provider. |
120| `oss_provider` | `lmstudio | ollama` | Default local provider used when running with `--oss` (defaults to prompting if unset). |146| `oss_provider` | `lmstudio | ollama` | Default local provider used when running with `--oss` (defaults to prompting if unset). |
121| `otel.environment` | `string` | Environment tag applied to emitted OpenTelemetry events (default: `dev`). |147| `otel.environment` | `string` | Environment tag applied to emitted OpenTelemetry events (default: `dev`). |
122| `otel.exporter` | `none | otlp-http | otlp-grpc` | Select the OpenTelemetry exporter and provide any endpoint metadata. |148| `otel.exporter` | `none | otlp-http | otlp-grpc` | Select the OpenTelemetry exporter and provide any endpoint metadata. |
127| `otel.exporter.<id>.tls.client-certificate` | `string` | Client certificate path for OTEL exporter TLS. |153| `otel.exporter.<id>.tls.client-certificate` | `string` | Client certificate path for OTEL exporter TLS. |
128| `otel.exporter.<id>.tls.client-private-key` | `string` | Client private key path for OTEL exporter TLS. |154| `otel.exporter.<id>.tls.client-private-key` | `string` | Client private key path for OTEL exporter TLS. |
129| `otel.log_user_prompt` | `boolean` | Opt in to exporting raw user prompts with OpenTelemetry logs. |155| `otel.log_user_prompt` | `boolean` | Opt in to exporting raw user prompts with OpenTelemetry logs. |
156| `otel.metrics_exporter` | `none | statsig | otlp-http | otlp-grpc` | Select the OpenTelemetry metrics exporter (defaults to `statsig`). |
130| `otel.trace_exporter` | `none | otlp-http | otlp-grpc` | Select the OpenTelemetry trace exporter and provide any endpoint metadata. |157| `otel.trace_exporter` | `none | otlp-http | otlp-grpc` | Select the OpenTelemetry trace exporter and provide any endpoint metadata. |
131| `otel.trace_exporter.<id>.endpoint` | `string` | Trace exporter endpoint for OTEL logs. |158| `otel.trace_exporter.<id>.endpoint` | `string` | Trace exporter endpoint for OTEL logs. |
132| `otel.trace_exporter.<id>.headers` | `map<string,string>` | Static headers included with OTEL trace exporter requests. |159| `otel.trace_exporter.<id>.headers` | `map<string,string>` | Static headers included with OTEL trace exporter requests. |
134| `otel.trace_exporter.<id>.tls.ca-certificate` | `string` | CA certificate path for OTEL trace exporter TLS. |161| `otel.trace_exporter.<id>.tls.ca-certificate` | `string` | CA certificate path for OTEL trace exporter TLS. |
135| `otel.trace_exporter.<id>.tls.client-certificate` | `string` | Client certificate path for OTEL trace exporter TLS. |162| `otel.trace_exporter.<id>.tls.client-certificate` | `string` | Client certificate path for OTEL trace exporter TLS. |
136| `otel.trace_exporter.<id>.tls.client-private-key` | `string` | Client private key path for OTEL trace exporter TLS. |163| `otel.trace_exporter.<id>.tls.client-private-key` | `string` | Client private key path for OTEL trace exporter TLS. |
164| `permissions.<name>.filesystem` | `table` | Named filesystem permission profile. Each key is an absolute path or special token such as `:minimal` or `:project_roots`. |
165| `permissions.<name>.filesystem.":project_roots".<subpath-or-glob>` | `"read" | "write" | "none"` | Scoped filesystem access relative to the detected project roots. Use `"."` for the root itself; glob subpaths such as `"**/*.env"` can deny reads with `"none"`. |
166| `permissions.<name>.filesystem.<path-or-glob>` | `"read" | "write" | "none" | table` | Grant direct access for a path, glob pattern, or special token, or scope nested entries under that root. Use `"none"` to deny reads for matching paths. |
167| `permissions.<name>.filesystem.glob_scan_max_depth` | `number` | Maximum depth for expanding deny-read glob patterns on platforms that snapshot matches before sandbox startup. Must be at least `1` when set. |
168| `permissions.<name>.network.allow_local_binding` | `boolean` | Permit local bind/listen operations through the managed proxy. |
169| `permissions.<name>.network.allow_upstream_proxy` | `boolean` | Allow the managed proxy to chain to another upstream proxy. |
170| `permissions.<name>.network.dangerously_allow_all_unix_sockets` | `boolean` | Allow the proxy to use arbitrary Unix sockets instead of the default restricted set. |
171| `permissions.<name>.network.dangerously_allow_non_loopback_proxy` | `boolean` | Permit non-loopback bind addresses for the managed proxy listener. |
172| `permissions.<name>.network.domains` | `map<string, allow | deny>` | Domain rules for the managed proxy. Use domain names or wildcard patterns as keys, with `allow` or `deny` values. |
173| `permissions.<name>.network.enable_socks5` | `boolean` | Expose a SOCKS5 listener when this permissions profile enables the managed network proxy. |
174| `permissions.<name>.network.enable_socks5_udp` | `boolean` | Allow UDP over the SOCKS5 listener when enabled. |
175| `permissions.<name>.network.enabled` | `boolean` | Enable network access for this named permissions profile. |
176| `permissions.<name>.network.mode` | `limited | full` | Network proxy mode used for subprocess traffic. |
177| `permissions.<name>.network.proxy_url` | `string` | HTTP proxy endpoint used when this permissions profile enables the managed network proxy. |
178| `permissions.<name>.network.socks_url` | `string` | SOCKS5 proxy endpoint used by this permissions profile. |
179| `permissions.<name>.network.unix_sockets` | `map<string, allow | none>` | Unix socket rules for the managed proxy. Use socket paths as keys, with `allow` or `none` values. |
137| `personality` | `none | friendly | pragmatic` | Default communication style for models that advertise `supportsPersonality`; can be overridden per thread/turn or via `/personality`. |180| `personality` | `none | friendly | pragmatic` | Default communication style for models that advertise `supportsPersonality`; can be overridden per thread/turn or via `/personality`. |
181| `plan_mode_reasoning_effort` | `none | minimal | low | medium | high | xhigh` | Plan-mode-specific reasoning override. When unset, Plan mode uses its built-in preset default. |
138| `profile` | `string` | Default profile applied at startup (equivalent to `--profile`). |182| `profile` | `string` | Default profile applied at startup (equivalent to `--profile`). |
139| `profiles.<name>.*` | `various` | Profile-scoped overrides for any of the supported configuration keys. |183| `profiles.<name>.*` | `various` | Profile-scoped overrides for any of the supported configuration keys. |
140| `profiles.<name>.experimental_use_freeform_apply_patch` | `boolean` | Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`. |184| `profiles.<name>.analytics.enabled` | `boolean` | Profile-scoped analytics enablement override. |
141| `profiles.<name>.experimental_use_unified_exec_tool` | `boolean` | Legacy name for enabling unified exec; prefer `[features].unified_exec`. |185| `profiles.<name>.experimental_use_unified_exec_tool` | `boolean` | Legacy name for enabling unified exec; prefer `[features].unified_exec`. |
142| `profiles.<name>.include_apply_patch_tool` | `boolean` | Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`. |
143| `profiles.<name>.model_catalog_json` | `string (path)` | Profile-scoped model catalog JSON path override (applied on startup only; overrides the top-level `model_catalog_json` for that profile). |186| `profiles.<name>.model_catalog_json` | `string (path)` | Profile-scoped model catalog JSON path override (applied on startup only; overrides the top-level `model_catalog_json` for that profile). |
187| `profiles.<name>.model_instructions_file` | `string (path)` | Profile-scoped replacement for the built-in instruction file. |
144| `profiles.<name>.oss_provider` | `lmstudio | ollama` | Profile-scoped OSS provider for `--oss` sessions. |188| `profiles.<name>.oss_provider` | `lmstudio | ollama` | Profile-scoped OSS provider for `--oss` sessions. |
145| `profiles.<name>.personality` | `none | friendly | pragmatic` | Profile-scoped communication style override for supported models. |189| `profiles.<name>.personality` | `none | friendly | pragmatic` | Profile-scoped communication style override for supported models. |
190| `profiles.<name>.plan_mode_reasoning_effort` | `none | minimal | low | medium | high | xhigh` | Profile-scoped Plan-mode reasoning override. |
191| `profiles.<name>.service_tier` | `flex | fast` | Profile-scoped service tier preference for new turns. |
192| `profiles.<name>.tools_view_image` | `boolean` | Enable or disable the `view_image` tool in that profile. |
146| `profiles.<name>.web_search` | `disabled | cached | live` | Profile-scoped web search mode override (default: `"cached"`). |193| `profiles.<name>.web_search` | `disabled | cached | live` | Profile-scoped web search mode override (default: `"cached"`). |
194| `profiles.<name>.windows.sandbox` | `unelevated | elevated` | Profile-scoped Windows sandbox mode override. |
147| `project_doc_fallback_filenames` | `array<string>` | Additional filenames to try when `AGENTS.md` is missing. |195| `project_doc_fallback_filenames` | `array<string>` | Additional filenames to try when `AGENTS.md` is missing. |
148| `project_doc_max_bytes` | `number` | Maximum bytes read from `AGENTS.md` when building project instructions. |196| `project_doc_max_bytes` | `number` | Maximum bytes read from `AGENTS.md` when building project instructions. |
149| `project_root_markers` | `array<string>` | List of project root marker filenames; used when searching parent directories for the project root. |197| `project_root_markers` | `array<string>` | List of project root marker filenames; used when searching parent directories for the project root. |
154| `sandbox_workspace_write.exclude_tmpdir_env_var` | `boolean` | Exclude `$TMPDIR` from writable roots in workspace-write mode. |202| `sandbox_workspace_write.exclude_tmpdir_env_var` | `boolean` | Exclude `$TMPDIR` from writable roots in workspace-write mode. |
155| `sandbox_workspace_write.network_access` | `boolean` | Allow outbound network access inside the workspace-write sandbox. |203| `sandbox_workspace_write.network_access` | `boolean` | Allow outbound network access inside the workspace-write sandbox. |
156| `sandbox_workspace_write.writable_roots` | `array<string>` | Additional writable roots when `sandbox_mode = "workspace-write"`. |204| `sandbox_workspace_write.writable_roots` | `array<string>` | Additional writable roots when `sandbox_mode = "workspace-write"`. |
205| `service_tier` | `flex | fast` | Preferred service tier for new turns. |
157| `shell_environment_policy.exclude` | `array<string>` | Glob patterns for removing environment variables after the defaults. |206| `shell_environment_policy.exclude` | `array<string>` | Glob patterns for removing environment variables after the defaults. |
158| `shell_environment_policy.experimental_use_profile` | `boolean` | Use the user shell profile when spawning subprocesses. |207| `shell_environment_policy.experimental_use_profile` | `boolean` | Use the user shell profile when spawning subprocesses. |
159| `shell_environment_policy.ignore_default_excludes` | `boolean` | Keep variables containing KEY/SECRET/TOKEN before other filters run. |208| `shell_environment_policy.ignore_default_excludes` | `boolean` | Keep variables containing KEY/SECRET/TOKEN before other filters run. |
164| `skills.config` | `array<object>` | Per-skill enablement overrides stored in config.toml. |213| `skills.config` | `array<object>` | Per-skill enablement overrides stored in config.toml. |
165| `skills.config.<index>.enabled` | `boolean` | Enable or disable the referenced skill. |214| `skills.config.<index>.enabled` | `boolean` | Enable or disable the referenced skill. |
166| `skills.config.<index>.path` | `string (path)` | Path to a skill folder containing `SKILL.md`. |215| `skills.config.<index>.path` | `string (path)` | Path to a skill folder containing `SKILL.md`. |
216| `sqlite_home` | `string (path)` | Directory where Codex stores the SQLite-backed state DB used by agent jobs and other resumable runtime state. |
167| `suppress_unstable_features_warning` | `boolean` | Suppress the warning that appears when under-development feature flags are enabled. |217| `suppress_unstable_features_warning` | `boolean` | Suppress the warning that appears when under-development feature flags are enabled. |
168| `tool_output_token_limit` | `number` | Token budget for storing individual tool/function outputs in history. |218| `tool_output_token_limit` | `number` | Token budget for storing individual tool/function outputs in history. |
169| `tools.web_search` | `boolean` | Deprecated legacy toggle for web search; prefer the top-level `web_search` setting. |219| `tool_suggest.discoverables` | `array<table>` | Allow tool suggestions for additional discoverable connectors or plugins. Each entry uses `type = "connector"` or `"plugin"` and an `id`. |
220| `tools.view_image` | `boolean` | Enable the local-image attachment tool `view_image`. |
221| `tools.web_search` | `boolean | { context_size = "low|medium|high", allowed_domains = [string], location = { country, region, city, timezone } }` | Optional web search tool configuration. The legacy boolean form is still accepted, but the object form lets you set search context size, allowed domains, and approximate user location. |
170| `tui` | `table` | TUI-specific options such as enabling inline desktop notifications. |222| `tui` | `table` | TUI-specific options such as enabling inline desktop notifications. |
171| `tui.alternate_screen` | `auto | always | never` | Control alternate screen usage for the TUI (default: auto; auto skips it in Zellij to preserve scrollback). |223| `tui.alternate_screen` | `auto | always | never` | Control alternate screen usage for the TUI (default: auto; auto skips it in Zellij to preserve scrollback). |
172| `tui.animations` | `boolean` | Enable terminal animations (welcome screen, shimmer, spinner) (default: true). |224| `tui.animations` | `boolean` | Enable terminal animations (welcome screen, shimmer, spinner) (default: true). |
173| `tui.notification_method` | `auto | osc9 | bel` | Notification method for unfocused terminal notifications (default: auto). |225| `tui.model_availability_nux.<model>` | `integer` | Internal startup-tooltip state keyed by model slug. |
226| `tui.notification_condition` | `unfocused | always` | Control whether TUI notifications fire only when the terminal is unfocused or regardless of focus. Defaults to `unfocused`. |
227| `tui.notification_method` | `auto | osc9 | bel` | Notification method for terminal notifications (default: auto). |
174| `tui.notifications` | `boolean | array<string>` | Enable TUI notifications; optionally restrict to specific event types. |228| `tui.notifications` | `boolean | array<string>` | Enable TUI notifications; optionally restrict to specific event types. |
175| `tui.show_tooltips` | `boolean` | Show onboarding tooltips in the TUI welcome screen (default: true). |229| `tui.show_tooltips` | `boolean` | Show onboarding tooltips in the TUI welcome screen (default: true). |
176| `tui.status_line` | `array<string> | null` | Ordered list of TUI footer status-line item identifiers. `null` disables the status line. |230| `tui.status_line` | `array<string> | null` | Ordered list of TUI footer status-line item identifiers. `null` disables the status line. |
231| `tui.terminal_title` | `array<string> | null` | Ordered list of terminal window/tab title item identifiers. Defaults to `["spinner", "project"]`; `null` disables title updates. |
232| `tui.theme` | `string` | Syntax-highlighting theme override (kebab-case theme name). |
177| `web_search` | `disabled | cached | live` | Web search mode (default: `"cached"`; cached uses an OpenAI-maintained index and does not fetch live pages; if you use `--yolo` or another full access sandbox setting, it defaults to `"live"`). Use `"live"` to fetch the most recent data from the web, or `"disabled"` to remove the tool. |233| `web_search` | `disabled | cached | live` | Web search mode (default: `"cached"`; cached uses an OpenAI-maintained index and does not fetch live pages; if you use `--yolo` or another full access sandbox setting, it defaults to `"live"`). Use `"live"` to fetch the most recent data from the web, or `"disabled"` to remove the tool. |
178| `windows_wsl_setup_acknowledged` | `boolean` | Track Windows onboarding acknowledgement (Windows only). |234| `windows_wsl_setup_acknowledged` | `boolean` | Track Windows onboarding acknowledgement (Windows only). |
179| `windows.sandbox` | `unelevated | elevated` | Windows-only native sandbox mode when running Codex natively on Windows. |235| `windows.sandbox` | `unelevated | elevated` | Windows-only native sandbox mode when running Codex natively on Windows. |
236| `windows.sandbox_private_desktop` | `boolean` | Run the final sandboxed child process on a private desktop by default on native Windows. Set `false` only for compatibility with the older `Winsta0\\Default` behavior. |
180 237
181Key238Key
182 239
204 261
205Key262Key
206 263
264`agents.<name>.nickname_candidates`
265
266Type / Values
267
268`array<string>`
269
270Details
271
272Optional pool of display nicknames for spawned agents in that role.
273
274Key
275
276`agents.job_max_runtime_seconds`
277
278Type / Values
279
280`number`
281
282Details
283
284Default per-worker timeout for `spawn_agents_on_csv` jobs. When unset, the tool falls back to 1800 seconds per worker.
285
286Key
287
207`agents.max_depth`288`agents.max_depth`
208 289
209Type / Values290Type / Values
224 305
225Details306Details
226 307
227Maximum number of agent threads that can be open concurrently.308Maximum number of agent threads that can be open concurrently. Defaults to `6` when unset.
228 309
229Key310Key
230 311
240 321
241Key322Key
242 323
324`analytics.enabled`
325
326Type / Values
327
328`boolean`
329
330Details
331
332Enable or disable analytics for this machine/profile. When unset, the client default applies.
333
334Key
335
243`approval_policy`336`approval_policy`
244 337
245Type / Values338Type / Values
246 339
247`untrusted | on-request | never | { reject = { sandbox_approval = bool, rules = bool, mcp_elicitations = bool } }`340`untrusted | on-request | never | { granular = { sandbox_approval = bool, rules = bool, mcp_elicitations = bool, request_permissions = bool, skill_approval = bool } }`
341
342Details
343
344Controls when Codex pauses for approval before executing commands. You can also use `approval_policy = { granular = { ... } }` to allow or auto-reject specific prompt categories while keeping other prompts interactive. `on-failure` is deprecated; use `on-request` for interactive runs or `never` for non-interactive runs.
345
346Key
347
348`approval_policy.granular.mcp_elicitations`
349
350Type / Values
351
352`boolean`
353
354Details
355
356When `true`, MCP elicitation prompts are allowed to surface instead of being auto-rejected.
357
358Key
359
360`approval_policy.granular.request_permissions`
361
362Type / Values
363
364`boolean`
248 365
249Details366Details
250 367
251Controls when Codex pauses for approval before executing commands. You can also use `approval_policy = { reject = { ... } }` to auto-reject specific prompt categories while keeping other prompts interactive. `on-failure` is deprecated; use `on-request` for interactive runs or `never` for non-interactive runs.368When `true`, prompts from the `request_permissions` tool are allowed to surface.
252 369
253Key370Key
254 371
255`approval_policy.reject.mcp_elicitations`372`approval_policy.granular.rules`
256 373
257Type / Values374Type / Values
258 375
260 377
261Details378Details
262 379
263When `true`, MCP elicitation prompts are auto-rejected instead of shown to the user.380When `true`, approvals triggered by execpolicy `prompt` rules are allowed to surface.
264 381
265Key382Key
266 383
267`approval_policy.reject.rules`384`approval_policy.granular.sandbox_approval`
268 385
269Type / Values386Type / Values
270 387
272 389
273Details390Details
274 391
275When `true`, approvals triggered by execpolicy `prompt` rules are auto-rejected.392When `true`, sandbox escalation approval prompts are allowed to surface.
276 393
277Key394Key
278 395
279`approval_policy.reject.sandbox_approval`396`approval_policy.granular.skill_approval`
280 397
281Type / Values398Type / Values
282 399
284 401
285Details402Details
286 403
287When `true`, sandbox escalation approval prompts are auto-rejected.404When `true`, skill-script approval prompts are allowed to surface.
405
406Key
407
408`approvals_reviewer`
409
410Type / Values
411
412`user | auto_review`
413
414Details
415
416Who reviews eligible approval prompts under `on-request` or granular approval policies. Defaults to `user`; `auto_review` uses the reviewer subagent. This setting doesn't change sandboxing or review actions already allowed inside the sandbox.
288 417
289Key418Key
290 419
408 537
409Key538Key
410 539
540`auto_review.policy`
541
542Type / Values
543
544`string`
545
546Details
547
548Local Markdown policy instructions for automatic review. Managed `guardian_policy_config` takes precedence. Blank values are ignored.
549
550Key
551
411`background_terminal_max_timeout`552`background_terminal_max_timeout`
412 553
413Type / Values554Type / Values
456 597
457Key598Key
458 599
459`compact_prompt`600`commit_attribution`
460 601
461Type / Values602Type / Values
462 603
464 605
465Details606Details
466 607
467Inline override for the history compaction prompt.608Override the commit co-author trailer text. Set an empty string to disable automatic attribution.
468 609
469Key610Key
470 611
471`developer_instructions`612`compact_prompt`
472 613
473Type / Values614Type / Values
474 615
476 617
477Details618Details
478 619
479Additional developer instructions injected into the session (optional).620Inline override for the history compaction prompt.
480 621
481Key622Key
482 623
483`disable_paste_burst`624`default_permissions`
484 625
485Type / Values626Type / Values
486 627
487`boolean`628`string`
488 629
489Details630Details
490 631
491Disable burst-paste detection in the TUI.632Name of the default permissions profile to apply to sandboxed tool calls.
492 633
493Key634Key
494 635
495`experimental_compact_prompt_file`636`developer_instructions`
496 637
497Type / Values638Type / Values
498 639
499`string (path)`640`string`
500 641
501Details642Details
502 643
503Load the compaction prompt override from a file (experimental).644Additional developer instructions injected into the session (optional).
504 645
505Key646Key
506 647
507`experimental_use_freeform_apply_patch`648`disable_paste_burst`
508 649
509Type / Values650Type / Values
510 651
512 653
513Details654Details
514 655
515Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform` or `codex --enable apply_patch_freeform`.656Disable burst-paste detection in the TUI.
516 657
517Key658Key
518 659
519`experimental_use_unified_exec_tool`660`experimental_compact_prompt_file`
520 661
521Type / Values662Type / Values
522 663
523`boolean`664`string (path)`
524 665
525Details666Details
526 667
527Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`.668Load the compaction prompt override from a file (experimental).
528 669
529Key670Key
530 671
531`features.apply_patch_freeform`672`experimental_use_unified_exec_tool`
532 673
533Type / Values674Type / Values
534 675
536 677
537Details678Details
538 679
539Expose the freeform `apply_patch` tool (experimental).680Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`.
540 681
541Key682Key
542 683
552 693
553Key694Key
554 695
555`features.apps_mcp_gateway`696`features.codex_hooks`
556
557Type / Values
558
559`boolean`
560
561Details
562
563Route Apps MCP calls through the OpenAI connectors MCP gateway (`https://api.openai.com/v1/connectors/mcp/`) instead of legacy routing (experimental).
564
565Key
566
567`features.child_agents_md`
568 697
569Type / Values698Type / Values
570 699
572 701
573Details702Details
574 703
575Append AGENTS.md scope/precedence guidance even when no AGENTS.md is present (experimental).704Enable lifecycle hooks loaded from `hooks.json` (under development; off by default).
576 705
577Key706Key
578 707
579`features.collaboration_modes`708`features.enable_request_compression`
580 709
581Type / Values710Type / Values
582 711
584 713
585Details714Details
586 715
587Enable collaboration modes such as plan mode (stable; on by default).716Compress streaming request bodies with zstd when supported (stable; on by default).
588 717
589Key718Key
590 719
591`features.multi_agent`720`features.fast_mode`
592 721
593Type / Values722Type / Values
594 723
596 725
597Details726Details
598 727
599Enable multi-agent collaboration tools (`spawn\_agent`, `send\_input`, `resume\_agent`, `wait`, and `close\_agent`) (experimental; off by default).728Enable Fast mode selection and the `service_tier = "fast"` path (stable; on by default).
600 729
601Key730Key
602 731
603`features.personality`732`features.memories`
604 733
605Type / Values734Type / Values
606 735
608 737
609Details738Details
610 739
611Enable personality selection controls (stable; on by default).740Enable [Memories](https://developers.openai.com/codex/memories) (off by default).
612 741
613Key742Key
614 743
615`features.powershell_utf8`744`features.multi_agent`
616 745
617Type / Values746Type / Values
618 747
620 749
621Details750Details
622 751
623Force PowerShell UTF-8 output (defaults to true).752Enable multi-agent collaboration tools (`spawn_agent`, `send_input`, `resume_agent`, `wait_agent`, and `close_agent`) (stable; on by default).
624 753
625Key754Key
626 755
627`features.remote_models`756`features.personality`
628 757
629Type / Values758Type / Values
630 759
632 761
633Details762Details
634 763
635Refresh remote model list before showing readiness (experimental).764Enable personality selection controls (stable; on by default).
636 765
637Key766Key
638 767
639`features.request_rule`768`features.prevent_idle_sleep`
640 769
641Type / Values770Type / Values
642 771
644 773
645Details774Details
646 775
647Enable Smart approvals (`prefix_rule` suggestions on escalation requests; stable; on by default).776Prevent the machine from sleeping while a turn is actively running (experimental; off by default).
648 777
649Key778Key
650 779
651`features.runtime_metrics`780`features.shell_snapshot`
652 781
653Type / Values782Type / Values
654 783
656 785
657Details786Details
658 787
659Show runtime metrics summary in TUI turn separators (experimental).788Snapshot shell environment to speed up repeated commands (stable; on by default).
660 789
661Key790Key
662 791
663`features.search_tool`792`features.shell_tool`
664 793
665Type / Values794Type / Values
666 795
668 797
669Details798Details
670 799
671Enable `search_tool_bm25` for Apps tool discovery before invoking app MCP tools (experimental).800Enable the default `shell` tool for running commands (stable; on by default).
672 801
673Key802Key
674 803
675`features.shell_snapshot`804`features.skill_mcp_dependency_install`
676 805
677Type / Values806Type / Values
678 807
680 809
681Details810Details
682 811
683Snapshot shell environment to speed up repeated commands (beta).812Allow prompting and installing missing MCP dependencies for skills (stable; on by default).
684 813
685Key814Key
686 815
687`features.shell_tool`816`features.undo`
688 817
689Type / Values818Type / Values
690 819
692 821
693Details822Details
694 823
695Enable the default `shell` tool for running commands (stable; on by default).824Enable undo support (stable; off by default).
696 825
697Key826Key
698 827
704 833
705Details834Details
706 835
707Use the unified PTY-backed exec tool (beta).836Use the unified PTY-backed exec tool (stable; enabled by default except on Windows).
708
709Key
710
711`features.use_linux_sandbox_bwrap`
712
713Type / Values
714
715`boolean`
716
717Details
718
719Use the bubblewrap-based Linux sandbox pipeline (experimental; off by default).
720 837
721Key838Key
722 839
840 957
841Key958Key
842 959
843`include_apply_patch_tool`
844
845Type / Values
846
847`boolean`
848
849Details
850
851Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`.
852
853Key
854
855`instructions`960`instructions`
856 961
857Type / Values962Type / Values
1024 1129
1025Type / Values1130Type / Values
1026 1131
1027`array<string>`1132`array<string | { name = string, source = "local" | "remote" }>`
1133
1134Details
1135
1136Additional environment variables to whitelist for an MCP stdio server. String entries default to `source = "local"`; use `source = "remote"` only with executor-backed remote stdio.
1137
1138Key
1139
1140`mcp_servers.<id>.experimental_environment`
1141
1142Type / Values
1143
1144`local | remote`
1028 1145
1029Details1146Details
1030 1147
1031Additional environment variables to whitelist for an MCP stdio server.1148Experimental placement for an MCP server. `remote` starts stdio servers through a remote executor environment; streamable HTTP remote placement is not implemented.
1032 1149
1033Key1150Key
1034 1151
1044 1161
1045Key1162Key
1046 1163
1164`mcp_servers.<id>.oauth_resource`
1165
1166Type / Values
1167
1168`string`
1169
1170Details
1171
1172Optional RFC 8707 OAuth resource parameter to include during MCP login.
1173
1174Key
1175
1047`mcp_servers.<id>.required`1176`mcp_servers.<id>.required`
1048 1177
1049Type / Values1178Type / Values
1056 1185
1057Key1186Key
1058 1187
1188`mcp_servers.<id>.scopes`
1189
1190Type / Values
1191
1192`array<string>`
1193
1194Details
1195
1196OAuth scopes to request when authenticating to that MCP server.
1197
1198Key
1199
1059`mcp_servers.<id>.startup_timeout_ms`1200`mcp_servers.<id>.startup_timeout_ms`
1060 1201
1061Type / Values1202Type / Values
1104 1245
1105Key1246Key
1106 1247
1107`model`1248`memories.consolidation_model`
1108 1249
1109Type / Values1250Type / Values
1110 1251
1112 1253
1113Details1254Details
1114 1255
1115Model to use (e.g., `gpt-5-codex`).1256Optional model override for global memory consolidation.
1116 1257
1117Key1258Key
1118 1259
1119`model_auto_compact_token_limit`1260`memories.disable_on_external_context`
1120 1261
1121Type / Values1262Type / Values
1122 1263
1123`number`1264`boolean`
1124 1265
1125Details1266Details
1126 1267
1127Token threshold that triggers automatic history compaction (unset uses model defaults).1268When `true`, threads that use external context such as MCP tool calls, web search, or tool search are kept out of memory generation. Defaults to `false`. Legacy alias: `memories.no_memories_if_mcp_or_web_search`.
1128 1269
1129Key1270Key
1130 1271
1131`model_catalog_json`1272`memories.extract_model`
1132 1273
1133Type / Values1274Type / Values
1134 1275
1135`string (path)`1276`string`
1136 1277
1137Details1278Details
1138 1279
1139Optional path to a JSON model catalog loaded on startup. Profile-level `profiles.<name>.model_catalog_json` can override this per profile.1280Optional model override for per-thread memory extraction.
1140 1281
1141Key1282Key
1142 1283
1143`model_context_window`1284`memories.generate_memories`
1144 1285
1145Type / Values1286Type / Values
1146 1287
1147`number`1288`boolean`
1148 1289
1149Details1290Details
1150 1291
1151Context window tokens available to the active model.1292When `false`, newly created threads are not stored as memory-generation inputs. Defaults to `true`.
1152 1293
1153Key1294Key
1154 1295
1155`model_instructions_file`1296`memories.max_raw_memories_for_consolidation`
1156 1297
1157Type / Values1298Type / Values
1158 1299
1159`string (path)`1300`number`
1160 1301
1161Details1302Details
1162 1303
1163Replacement for built-in instructions instead of `AGENTS.md`.1304Maximum recent raw memories retained for global consolidation. Defaults to `256` and is capped at `4096`.
1164 1305
1165Key1306Key
1166 1307
1167`model_provider`1308`memories.max_rollout_age_days`
1168 1309
1169Type / Values1310Type / Values
1170 1311
1171`string`1312`number`
1172 1313
1173Details1314Details
1174 1315
1175Provider id from `model_providers` (default: `openai`).1316Maximum age of threads considered for memory generation. Defaults to `30` and is clamped to `0`-`90`.
1176 1317
1177Key1318Key
1178 1319
1179`model_providers.<id>.base_url`1320`memories.max_rollouts_per_startup`
1180 1321
1181Type / Values1322Type / Values
1182 1323
1183`string`1324`number`
1184 1325
1185Details1326Details
1186 1327
1187API base URL for the model provider.1328Maximum rollout candidates processed per startup pass. Defaults to `16` and is capped at `128`.
1188 1329
1189Key1330Key
1190 1331
1191`model_providers.<id>.env_http_headers`1332`memories.max_unused_days`
1192 1333
1193Type / Values1334Type / Values
1194 1335
1195`map<string,string>`1336`number`
1196 1337
1197Details1338Details
1198 1339
1199HTTP headers populated from environment variables when present.1340Maximum days since a memory was last used before it becomes ineligible for consolidation. Defaults to `30` and is clamped to `0`-`365`.
1200 1341
1201Key1342Key
1202 1343
1203`model_providers.<id>.env_key`1344`memories.min_rollout_idle_hours`
1204 1345
1205Type / Values1346Type / Values
1206 1347
1207`string`1348`number`
1208 1349
1209Details1350Details
1210 1351
1211Environment variable supplying the provider API key.1352Minimum idle time before a thread is considered for memory generation. Defaults to `6` and is clamped to `1`-`48`.
1212 1353
1213Key1354Key
1214 1355
1215`model_providers.<id>.env_key_instructions`1356`memories.use_memories`
1216 1357
1217Type / Values1358Type / Values
1218 1359
1219`string`1360`boolean`
1220 1361
1221Details1362Details
1222 1363
1223Optional setup guidance for the provider API key.1364When `false`, Codex skips injecting existing memories into future sessions. Defaults to `true`.
1224 1365
1225Key1366Key
1226 1367
1227`model_providers.<id>.experimental_bearer_token`1368`model`
1228 1369
1229Type / Values1370Type / Values
1230 1371
1232 1373
1233Details1374Details
1234 1375
1235Direct bearer token for the provider (discouraged; use `env_key`).1376Model to use (e.g., `gpt-5.5`).
1236 1377
1237Key1378Key
1238 1379
1239`model_providers.<id>.http_headers`1380`model_auto_compact_token_limit`
1240 1381
1241Type / Values1382Type / Values
1242 1383
1243`map<string,string>`1384`number`
1244 1385
1245Details1386Details
1246 1387
1247Static HTTP headers added to provider requests.1388Token threshold that triggers automatic history compaction (unset uses model defaults).
1248 1389
1249Key1390Key
1250 1391
1251`model_providers.<id>.name`1392`model_catalog_json`
1252 1393
1253Type / Values1394Type / Values
1254 1395
1255`string`1396`string (path)`
1256 1397
1257Details1398Details
1258 1399
1259Display name for a custom model provider.1400Optional path to a JSON model catalog loaded on startup. Profile-level `profiles.<name>.model_catalog_json` can override this per profile.
1260 1401
1261Key1402Key
1262 1403
1263`model_providers.<id>.query_params`1404`model_context_window`
1264 1405
1265Type / Values1406Type / Values
1266 1407
1267`map<string,string>`1408`number`
1268 1409
1269Details1410Details
1270 1411
1271Extra query parameters appended to provider requests.1412Context window tokens available to the active model.
1272 1413
1273Key1414Key
1274 1415
1275`model_providers.<id>.request_max_retries`1416`model_instructions_file`
1276 1417
1277Type / Values1418Type / Values
1278 1419
1279`number`1420`string (path)`
1280 1421
1281Details1422Details
1282 1423
1283Retry count for HTTP requests to the provider (default: 4).1424Replacement for built-in instructions instead of `AGENTS.md`.
1284 1425
1285Key1426Key
1286 1427
1287`model_providers.<id>.requires_openai_auth`1428`model_provider`
1288 1429
1289Type / Values1430Type / Values
1290 1431
1291`boolean`1432`string`
1292 1433
1293Details1434Details
1294 1435
1295The provider uses OpenAI authentication (defaults to false).1436Provider id from `model_providers` (default: `openai`).
1296 1437
1297Key1438Key
1298 1439
1299`model_providers.<id>.stream_idle_timeout_ms`1440`model_providers.<id>`
1300 1441
1301Type / Values1442Type / Values
1302 1443
1303`number`1444`table`
1304 1445
1305Details1446Details
1306 1447
1307Idle timeout for SSE streams in milliseconds (default: 300000).1448Custom provider definition. Built-in provider IDs (`openai`, `ollama`, and `lmstudio`) are reserved and cannot be overridden.
1308 1449
1309Key1450Key
1310 1451
1311`model_providers.<id>.stream_max_retries`1452`model_providers.<id>.auth`
1312 1453
1313Type / Values1454Type / Values
1314 1455
1315`number`1456`table`
1316 1457
1317Details1458Details
1318 1459
1319Retry count for SSE streaming interruptions (default: 5).1460Command-backed bearer token configuration for a custom provider. Do not combine with `env_key`, `experimental_bearer_token`, or `requires_openai_auth`.
1320 1461
1321Key1462Key
1322 1463
1323`model_providers.<id>.wire_api`1464`model_providers.<id>.auth.args`
1324 1465
1325Type / Values1466Type / Values
1326 1467
1327`chat | responses`1468`array<string>`
1328 1469
1329Details1470Details
1330 1471
1331Protocol used by the provider (defaults to `chat` if omitted).1472Arguments passed to the token command.
1332 1473
1333Key1474Key
1334 1475
1335`model_reasoning_effort`1476`model_providers.<id>.auth.command`
1336 1477
1337Type / Values1478Type / Values
1338 1479
1339`minimal | low | medium | high | xhigh`1480`string`
1340 1481
1341Details1482Details
1342 1483
1343Adjust reasoning effort for supported models (Responses API only; `xhigh` is model-dependent).1484Command to run when Codex needs a bearer token. The command must print the token to stdout.
1344 1485
1345Key1486Key
1346 1487
1347`model_reasoning_summary`1488`model_providers.<id>.auth.cwd`
1348 1489
1349Type / Values1490Type / Values
1350 1491
1351`auto | concise | detailed | none`1492`string (path)`
1352 1493
1353Details1494Details
1354 1495
1355Select reasoning summary detail or disable summaries entirely.1496Working directory for the token command.
1356 1497
1357Key1498Key
1358 1499
1359`model_supports_reasoning_summaries`1500`model_providers.<id>.auth.refresh_interval_ms`
1501
1502Type / Values
1503
1504`number`
1505
1506Details
1507
1508How often Codex proactively refreshes the token in milliseconds (default: 300000). Set to `0` to refresh only after an authentication retry.
1509
1510Key
1511
1512`model_providers.<id>.auth.timeout_ms`
1513
1514Type / Values
1515
1516`number`
1517
1518Details
1519
1520Maximum token command runtime in milliseconds (default: 5000).
1521
1522Key
1523
1524`model_providers.<id>.base_url`
1525
1526Type / Values
1527
1528`string`
1529
1530Details
1531
1532API base URL for the model provider.
1533
1534Key
1535
1536`model_providers.<id>.env_http_headers`
1537
1538Type / Values
1539
1540`map<string,string>`
1541
1542Details
1543
1544HTTP headers populated from environment variables when present.
1545
1546Key
1547
1548`model_providers.<id>.env_key`
1549
1550Type / Values
1551
1552`string`
1553
1554Details
1555
1556Environment variable supplying the provider API key.
1557
1558Key
1559
1560`model_providers.<id>.env_key_instructions`
1561
1562Type / Values
1563
1564`string`
1565
1566Details
1567
1568Optional setup guidance for the provider API key.
1569
1570Key
1571
1572`model_providers.<id>.experimental_bearer_token`
1573
1574Type / Values
1575
1576`string`
1577
1578Details
1579
1580Direct bearer token for the provider (discouraged; use `env_key`).
1581
1582Key
1583
1584`model_providers.<id>.http_headers`
1585
1586Type / Values
1587
1588`map<string,string>`
1589
1590Details
1591
1592Static HTTP headers added to provider requests.
1593
1594Key
1595
1596`model_providers.<id>.name`
1597
1598Type / Values
1599
1600`string`
1601
1602Details
1603
1604Display name for a custom model provider.
1605
1606Key
1607
1608`model_providers.<id>.query_params`
1609
1610Type / Values
1611
1612`map<string,string>`
1613
1614Details
1615
1616Extra query parameters appended to provider requests.
1617
1618Key
1619
1620`model_providers.<id>.request_max_retries`
1621
1622Type / Values
1623
1624`number`
1625
1626Details
1627
1628Retry count for HTTP requests to the provider (default: 4).
1629
1630Key
1631
1632`model_providers.<id>.requires_openai_auth`
1633
1634Type / Values
1635
1636`boolean`
1637
1638Details
1639
1640The provider uses OpenAI authentication (defaults to false).
1641
1642Key
1643
1644`model_providers.<id>.stream_idle_timeout_ms`
1645
1646Type / Values
1647
1648`number`
1649
1650Details
1651
1652Idle timeout for SSE streams in milliseconds (default: 300000).
1653
1654Key
1655
1656`model_providers.<id>.stream_max_retries`
1657
1658Type / Values
1659
1660`number`
1661
1662Details
1663
1664Retry count for SSE streaming interruptions (default: 5).
1665
1666Key
1667
1668`model_providers.<id>.supports_websockets`
1669
1670Type / Values
1671
1672`boolean`
1673
1674Details
1675
1676Whether that provider supports the Responses API WebSocket transport.
1677
1678Key
1679
1680`model_providers.<id>.wire_api`
1681
1682Type / Values
1683
1684`responses`
1685
1686Details
1687
1688Protocol used by the provider. `responses` is the only supported value, and it is the default when omitted.
1689
1690Key
1691
1692`model_reasoning_effort`
1693
1694Type / Values
1695
1696`minimal | low | medium | high | xhigh`
1697
1698Details
1699
1700Adjust reasoning effort for supported models (Responses API only; `xhigh` is model-dependent).
1701
1702Key
1703
1704`model_reasoning_summary`
1705
1706Type / Values
1707
1708`auto | concise | detailed | none`
1709
1710Details
1711
1712Select reasoning summary detail or disable summaries entirely.
1713
1714Key
1715
1716`model_supports_reasoning_summaries`
1360 1717
1361Type / Values1718Type / Values
1362 1719
1376 1733
1377Details1734Details
1378 1735
1379Control GPT-5 Responses API verbosity (defaults to `medium`).1736Optional GPT-5 Responses API verbosity override; when unset, the selected model/preset default is used.
1380 1737
1381Key1738Key
1382 1739
1448 1805
1449Details1806Details
1450 1807
1451Track acknowledged model migrations as old->new mappings.1808Track acknowledged model migrations as old->new mappings.
1809
1810Key
1811
1812`notify`
1813
1814Type / Values
1815
1816`array<string>`
1817
1818Details
1819
1820Command invoked for notifications; receives a JSON payload from Codex.
1821
1822Key
1823
1824`openai_base_url`
1825
1826Type / Values
1827
1828`string`
1829
1830Details
1831
1832Base URL override for the built-in `openai` model provider.
1833
1834Key
1835
1836`oss_provider`
1837
1838Type / Values
1839
1840`lmstudio | ollama`
1841
1842Details
1843
1844Default local provider used when running with `--oss` (defaults to prompting if unset).
1845
1846Key
1847
1848`otel.environment`
1849
1850Type / Values
1851
1852`string`
1853
1854Details
1855
1856Environment tag applied to emitted OpenTelemetry events (default: `dev`).
1857
1858Key
1859
1860`otel.exporter`
1861
1862Type / Values
1863
1864`none | otlp-http | otlp-grpc`
1865
1866Details
1867
1868Select the OpenTelemetry exporter and provide any endpoint metadata.
1869
1870Key
1871
1872`otel.exporter.<id>.endpoint`
1873
1874Type / Values
1875
1876`string`
1877
1878Details
1879
1880Exporter endpoint for OTEL logs.
1881
1882Key
1883
1884`otel.exporter.<id>.headers`
1885
1886Type / Values
1887
1888`map<string,string>`
1889
1890Details
1891
1892Static headers included with OTEL exporter requests.
1893
1894Key
1895
1896`otel.exporter.<id>.protocol`
1897
1898Type / Values
1899
1900`binary | json`
1901
1902Details
1903
1904Protocol used by the OTLP/HTTP exporter.
1905
1906Key
1907
1908`otel.exporter.<id>.tls.ca-certificate`
1909
1910Type / Values
1911
1912`string`
1913
1914Details
1915
1916CA certificate path for OTEL exporter TLS.
1917
1918Key
1919
1920`otel.exporter.<id>.tls.client-certificate`
1921
1922Type / Values
1923
1924`string`
1925
1926Details
1927
1928Client certificate path for OTEL exporter TLS.
1929
1930Key
1931
1932`otel.exporter.<id>.tls.client-private-key`
1933
1934Type / Values
1935
1936`string`
1937
1938Details
1939
1940Client private key path for OTEL exporter TLS.
1941
1942Key
1943
1944`otel.log_user_prompt`
1945
1946Type / Values
1947
1948`boolean`
1949
1950Details
1951
1952Opt in to exporting raw user prompts with OpenTelemetry logs.
1953
1954Key
1955
1956`otel.metrics_exporter`
1957
1958Type / Values
1959
1960`none | statsig | otlp-http | otlp-grpc`
1961
1962Details
1963
1964Select the OpenTelemetry metrics exporter (defaults to `statsig`).
1965
1966Key
1967
1968`otel.trace_exporter`
1969
1970Type / Values
1971
1972`none | otlp-http | otlp-grpc`
1973
1974Details
1975
1976Select the OpenTelemetry trace exporter and provide any endpoint metadata.
1977
1978Key
1979
1980`otel.trace_exporter.<id>.endpoint`
1981
1982Type / Values
1983
1984`string`
1985
1986Details
1987
1988Trace exporter endpoint for OTEL logs.
1989
1990Key
1991
1992`otel.trace_exporter.<id>.headers`
1993
1994Type / Values
1995
1996`map<string,string>`
1997
1998Details
1999
2000Static headers included with OTEL trace exporter requests.
2001
2002Key
2003
2004`otel.trace_exporter.<id>.protocol`
2005
2006Type / Values
2007
2008`binary | json`
2009
2010Details
2011
2012Protocol used by the OTLP/HTTP trace exporter.
2013
2014Key
2015
2016`otel.trace_exporter.<id>.tls.ca-certificate`
2017
2018Type / Values
2019
2020`string`
2021
2022Details
2023
2024CA certificate path for OTEL trace exporter TLS.
2025
2026Key
2027
2028`otel.trace_exporter.<id>.tls.client-certificate`
2029
2030Type / Values
2031
2032`string`
2033
2034Details
2035
2036Client certificate path for OTEL trace exporter TLS.
1452 2037
1453Key2038Key
1454 2039
1455`notify`2040`otel.trace_exporter.<id>.tls.client-private-key`
1456 2041
1457Type / Values2042Type / Values
1458 2043
1459`array<string>`2044`string`
1460 2045
1461Details2046Details
1462 2047
1463Command invoked for notifications; receives a JSON payload from Codex.2048Client private key path for OTEL trace exporter TLS.
1464 2049
1465Key2050Key
1466 2051
1467`oss_provider`2052`permissions.<name>.filesystem`
1468 2053
1469Type / Values2054Type / Values
1470 2055
1471`lmstudio | ollama`2056`table`
1472 2057
1473Details2058Details
1474 2059
1475Default local provider used when running with `--oss` (defaults to prompting if unset).2060Named filesystem permission profile. Each key is an absolute path or special token such as `:minimal` or `:project_roots`.
1476 2061
1477Key2062Key
1478 2063
1479`otel.environment`2064`permissions.<name>.filesystem.":project_roots".<subpath-or-glob>`
1480 2065
1481Type / Values2066Type / Values
1482 2067
1483`string`2068`"read" | "write" | "none"`
1484 2069
1485Details2070Details
1486 2071
1487Environment tag applied to emitted OpenTelemetry events (default: `dev`).2072Scoped filesystem access relative to the detected project roots. Use `"."` for the root itself; glob subpaths such as `"**/*.env"` can deny reads with `"none"`.
1488 2073
1489Key2074Key
1490 2075
1491`otel.exporter`2076`permissions.<name>.filesystem.<path-or-glob>`
1492 2077
1493Type / Values2078Type / Values
1494 2079
1495`none | otlp-http | otlp-grpc`2080`"read" | "write" | "none" | table`
1496 2081
1497Details2082Details
1498 2083
1499Select the OpenTelemetry exporter and provide any endpoint metadata.2084Grant direct access for a path, glob pattern, or special token, or scope nested entries under that root. Use `"none"` to deny reads for matching paths.
1500 2085
1501Key2086Key
1502 2087
1503`otel.exporter.<id>.endpoint`2088`permissions.<name>.filesystem.glob_scan_max_depth`
1504 2089
1505Type / Values2090Type / Values
1506 2091
1507`string`2092`number`
1508 2093
1509Details2094Details
1510 2095
1511Exporter endpoint for OTEL logs.2096Maximum depth for expanding deny-read glob patterns on platforms that snapshot matches before sandbox startup. Must be at least `1` when set.
1512 2097
1513Key2098Key
1514 2099
1515`otel.exporter.<id>.headers`2100`permissions.<name>.network.allow_local_binding`
1516 2101
1517Type / Values2102Type / Values
1518 2103
1519`map<string,string>`2104`boolean`
1520 2105
1521Details2106Details
1522 2107
1523Static headers included with OTEL exporter requests.2108Permit local bind/listen operations through the managed proxy.
1524 2109
1525Key2110Key
1526 2111
1527`otel.exporter.<id>.protocol`2112`permissions.<name>.network.allow_upstream_proxy`
1528 2113
1529Type / Values2114Type / Values
1530 2115
1531`binary | json`2116`boolean`
1532 2117
1533Details2118Details
1534 2119
1535Protocol used by the OTLP/HTTP exporter.2120Allow the managed proxy to chain to another upstream proxy.
1536 2121
1537Key2122Key
1538 2123
1539`otel.exporter.<id>.tls.ca-certificate`2124`permissions.<name>.network.dangerously_allow_all_unix_sockets`
1540 2125
1541Type / Values2126Type / Values
1542 2127
1543`string`2128`boolean`
1544 2129
1545Details2130Details
1546 2131
1547CA certificate path for OTEL exporter TLS.2132Allow the proxy to use arbitrary Unix sockets instead of the default restricted set.
1548 2133
1549Key2134Key
1550 2135
1551`otel.exporter.<id>.tls.client-certificate`2136`permissions.<name>.network.dangerously_allow_non_loopback_proxy`
1552 2137
1553Type / Values2138Type / Values
1554 2139
1555`string`2140`boolean`
1556 2141
1557Details2142Details
1558 2143
1559Client certificate path for OTEL exporter TLS.2144Permit non-loopback bind addresses for the managed proxy listener.
1560 2145
1561Key2146Key
1562 2147
1563`otel.exporter.<id>.tls.client-private-key`2148`permissions.<name>.network.domains`
1564 2149
1565Type / Values2150Type / Values
1566 2151
1567`string`2152`map<string, allow | deny>`
1568 2153
1569Details2154Details
1570 2155
1571Client private key path for OTEL exporter TLS.2156Domain rules for the managed proxy. Use domain names or wildcard patterns as keys, with `allow` or `deny` values.
1572 2157
1573Key2158Key
1574 2159
1575`otel.log_user_prompt`2160`permissions.<name>.network.enable_socks5`
1576 2161
1577Type / Values2162Type / Values
1578 2163
1580 2165
1581Details2166Details
1582 2167
1583Opt in to exporting raw user prompts with OpenTelemetry logs.2168Expose a SOCKS5 listener when this permissions profile enables the managed network proxy.
1584 2169
1585Key2170Key
1586 2171
1587`otel.trace_exporter`2172`permissions.<name>.network.enable_socks5_udp`
1588 2173
1589Type / Values2174Type / Values
1590 2175
1591`none | otlp-http | otlp-grpc`2176`boolean`
1592 2177
1593Details2178Details
1594 2179
1595Select the OpenTelemetry trace exporter and provide any endpoint metadata.2180Allow UDP over the SOCKS5 listener when enabled.
1596 2181
1597Key2182Key
1598 2183
1599`otel.trace_exporter.<id>.endpoint`2184`permissions.<name>.network.enabled`
1600 2185
1601Type / Values2186Type / Values
1602 2187
1603`string`2188`boolean`
1604 2189
1605Details2190Details
1606 2191
1607Trace exporter endpoint for OTEL logs.2192Enable network access for this named permissions profile.
1608 2193
1609Key2194Key
1610 2195
1611`otel.trace_exporter.<id>.headers`2196`permissions.<name>.network.mode`
1612 2197
1613Type / Values2198Type / Values
1614 2199
1615`map<string,string>`2200`limited | full`
1616 2201
1617Details2202Details
1618 2203
1619Static headers included with OTEL trace exporter requests.2204Network proxy mode used for subprocess traffic.
1620 2205
1621Key2206Key
1622 2207
1623`otel.trace_exporter.<id>.protocol`2208`permissions.<name>.network.proxy_url`
1624 2209
1625Type / Values2210Type / Values
1626 2211
1627`binary | json`2212`string`
1628 2213
1629Details2214Details
1630 2215
1631Protocol used by the OTLP/HTTP trace exporter.2216HTTP proxy endpoint used when this permissions profile enables the managed network proxy.
1632 2217
1633Key2218Key
1634 2219
1635`otel.trace_exporter.<id>.tls.ca-certificate`2220`permissions.<name>.network.socks_url`
1636 2221
1637Type / Values2222Type / Values
1638 2223
1640 2225
1641Details2226Details
1642 2227
1643CA certificate path for OTEL trace exporter TLS.2228SOCKS5 proxy endpoint used by this permissions profile.
1644 2229
1645Key2230Key
1646 2231
1647`otel.trace_exporter.<id>.tls.client-certificate`2232`permissions.<name>.network.unix_sockets`
1648 2233
1649Type / Values2234Type / Values
1650 2235
1651`string`2236`map<string, allow | none>`
1652 2237
1653Details2238Details
1654 2239
1655Client certificate path for OTEL trace exporter TLS.2240Unix socket rules for the managed proxy. Use socket paths as keys, with `allow` or `none` values.
1656 2241
1657Key2242Key
1658 2243
1659`otel.trace_exporter.<id>.tls.client-private-key`2244`personality`
1660 2245
1661Type / Values2246Type / Values
1662 2247
1663`string`2248`none | friendly | pragmatic`
1664 2249
1665Details2250Details
1666 2251
1667Client private key path for OTEL trace exporter TLS.2252Default communication style for models that advertise `supportsPersonality`; can be overridden per thread/turn or via `/personality`.
1668 2253
1669Key2254Key
1670 2255
1671`personality`2256`plan_mode_reasoning_effort`
1672 2257
1673Type / Values2258Type / Values
1674 2259
1675`none | friendly | pragmatic`2260`none | minimal | low | medium | high | xhigh`
1676 2261
1677Details2262Details
1678 2263
1679Default communication style for models that advertise `supportsPersonality`; can be overridden per thread/turn or via `/personality`.2264Plan-mode-specific reasoning override. When unset, Plan mode uses its built-in preset default.
1680 2265
1681Key2266Key
1682 2267
1704 2289
1705Key2290Key
1706 2291
1707`profiles.<name>.experimental_use_freeform_apply_patch`2292`profiles.<name>.analytics.enabled`
1708 2293
1709Type / Values2294Type / Values
1710 2295
1712 2297
1713Details2298Details
1714 2299
1715Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`.2300Profile-scoped analytics enablement override.
1716 2301
1717Key2302Key
1718 2303
1728 2313
1729Key2314Key
1730 2315
1731`profiles.<name>.include_apply_patch_tool`2316`profiles.<name>.model_catalog_json`
1732 2317
1733Type / Values2318Type / Values
1734 2319
1735`boolean`2320`string (path)`
1736 2321
1737Details2322Details
1738 2323
1739Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`.2324Profile-scoped model catalog JSON path override (applied on startup only; overrides the top-level `model_catalog_json` for that profile).
1740 2325
1741Key2326Key
1742 2327
1743`profiles.<name>.model_catalog_json`2328`profiles.<name>.model_instructions_file`
1744 2329
1745Type / Values2330Type / Values
1746 2331
1748 2333
1749Details2334Details
1750 2335
1751Profile-scoped model catalog JSON path override (applied on startup only; overrides the top-level `model_catalog_json` for that profile).2336Profile-scoped replacement for the built-in instruction file.
1752 2337
1753Key2338Key
1754 2339
1776 2361
1777Key2362Key
1778 2363
2364`profiles.<name>.plan_mode_reasoning_effort`
2365
2366Type / Values
2367
2368`none | minimal | low | medium | high | xhigh`
2369
2370Details
2371
2372Profile-scoped Plan-mode reasoning override.
2373
2374Key
2375
2376`profiles.<name>.service_tier`
2377
2378Type / Values
2379
2380`flex | fast`
2381
2382Details
2383
2384Profile-scoped service tier preference for new turns.
2385
2386Key
2387
2388`profiles.<name>.tools_view_image`
2389
2390Type / Values
2391
2392`boolean`
2393
2394Details
2395
2396Enable or disable the `view_image` tool in that profile.
2397
2398Key
2399
1779`profiles.<name>.web_search`2400`profiles.<name>.web_search`
1780 2401
1781Type / Values2402Type / Values
1788 2409
1789Key2410Key
1790 2411
2412`profiles.<name>.windows.sandbox`
2413
2414Type / Values
2415
2416`unelevated | elevated`
2417
2418Details
2419
2420Profile-scoped Windows sandbox mode override.
2421
2422Key
2423
1791`project_doc_fallback_filenames`2424`project_doc_fallback_filenames`
1792 2425
1793Type / Values2426Type / Values
1908 2541
1909Key2542Key
1910 2543
2544`service_tier`
2545
2546Type / Values
2547
2548`flex | fast`
2549
2550Details
2551
2552Preferred service tier for new turns.
2553
2554Key
2555
1911`shell_environment_policy.exclude`2556`shell_environment_policy.exclude`
1912 2557
1913Type / Values2558Type / Values
2028 2673
2029Key2674Key
2030 2675
2676`sqlite_home`
2677
2678Type / Values
2679
2680`string (path)`
2681
2682Details
2683
2684Directory where Codex stores the SQLite-backed state DB used by agent jobs and other resumable runtime state.
2685
2686Key
2687
2031`suppress_unstable_features_warning`2688`suppress_unstable_features_warning`
2032 2689
2033Type / Values2690Type / Values
2052 2709
2053Key2710Key
2054 2711
2055`tools.web_search`2712`tool_suggest.discoverables`
2713
2714Type / Values
2715
2716`array<table>`
2717
2718Details
2719
2720Allow tool suggestions for additional discoverable connectors or plugins. Each entry uses `type = "connector"` or `"plugin"` and an `id`.
2721
2722Key
2723
2724`tools.view_image`
2056 2725
2057Type / Values2726Type / Values
2058 2727
2060 2729
2061Details2730Details
2062 2731
2063Deprecated legacy toggle for web search; prefer the top-level `web_search` setting.2732Enable the local-image attachment tool `view_image`.
2733
2734Key
2735
2736`tools.web_search`
2737
2738Type / Values
2739
2740`boolean | { context_size = "low|medium|high", allowed_domains = [string], location = { country, region, city, timezone } }`
2741
2742Details
2743
2744Optional web search tool configuration. The legacy boolean form is still accepted, but the object form lets you set search context size, allowed domains, and approximate user location.
2064 2745
2065Key2746Key
2066 2747
2100 2781
2101Key2782Key
2102 2783
2784`tui.model_availability_nux.<model>`
2785
2786Type / Values
2787
2788`integer`
2789
2790Details
2791
2792Internal startup-tooltip state keyed by model slug.
2793
2794Key
2795
2796`tui.notification_condition`
2797
2798Type / Values
2799
2800`unfocused | always`
2801
2802Details
2803
2804Control whether TUI notifications fire only when the terminal is unfocused or regardless of focus. Defaults to `unfocused`.
2805
2806Key
2807
2103`tui.notification_method`2808`tui.notification_method`
2104 2809
2105Type / Values2810Type / Values
2108 2813
2109Details2814Details
2110 2815
2111Notification method for unfocused terminal notifications (default: auto).2816Notification method for terminal notifications (default: auto).
2112 2817
2113Key2818Key
2114 2819
2148 2853
2149Key2854Key
2150 2855
2856`tui.terminal_title`
2857
2858Type / Values
2859
2860`array<string> | null`
2861
2862Details
2863
2864Ordered list of terminal window/tab title item identifiers. Defaults to `["spinner", "project"]`; `null` disables title updates.
2865
2866Key
2867
2868`tui.theme`
2869
2870Type / Values
2871
2872`string`
2873
2874Details
2875
2876Syntax-highlighting theme override (kebab-case theme name).
2877
2878Key
2879
2151`web_search`2880`web_search`
2152 2881
2153Type / Values2882Type / Values
2182 2911
2183Windows-only native sandbox mode when running Codex natively on Windows.2912Windows-only native sandbox mode when running Codex natively on Windows.
2184 2913
2914Key
2915
2916`windows.sandbox_private_desktop`
2917
2918Type / Values
2919
2920`boolean`
2921
2922Details
2923
2924Run the final sandboxed child process on a private desktop by default on native Windows. Set `false` only for compatibility with the older `Winsta0\\Default` behavior.
2925
2185Expand to view all2926Expand to view all
2186 2927
2187You can find the latest JSON schema for `config.toml` [here](https://developers.openai.com/codex/config-schema.json).2928You can find the latest JSON schema for `config.toml` [here](https://developers.openai.com/codex/config-schema.json).
2201For ChatGPT Business and Enterprise users, Codex can also apply cloud-fetched2942For ChatGPT Business and Enterprise users, Codex can also apply cloud-fetched
2202requirements. See the security page for precedence details.2943requirements. See the security page for precedence details.
2203 2944
2945Use `[features]` in `requirements.toml` to pin feature flags by the same
2946canonical keys that `config.toml` uses. Omitted keys remain unconstrained.
2947
2204| Key | Type / Values | Details |2948| Key | Type / Values | Details |
2205| --- | --- | --- |2949| --- | --- | --- |
2206| `allowed_approval_policies` | `array<string>` | Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `reject`). |2950| `allowed_approval_policies` | `array<string>` | Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `granular`). |
2951| `allowed_approvals_reviewers` | `array<string>` | Allowed values for `approvals_reviewer`, such as `user` and `auto_review`. |
2207| `allowed_sandbox_modes` | `array<string>` | Allowed values for `sandbox_mode`. |2952| `allowed_sandbox_modes` | `array<string>` | Allowed values for `sandbox_mode`. |
2208| `allowed_web_search_modes` | `array<string>` | Allowed values for `web_search` (`disabled`, `cached`, `live`). `disabled` is always allowed; an empty list effectively allows only `disabled`. |2953| `allowed_web_search_modes` | `array<string>` | Allowed values for `web_search` (`disabled`, `cached`, `live`). `disabled` is always allowed; an empty list effectively allows only `disabled`. |
2954| `features` | `table` | Pinned feature values keyed by the canonical names from `config.toml`'s `[features]` table. |
2955| `features.<name>` | `boolean` | Require a specific canonical feature key to stay enabled or disabled. |
2956| `guardian_policy_config` | `string` | Managed Markdown policy instructions for automatic review. This takes precedence over local `[auto_review].policy`. Blank values are ignored. |
2209| `mcp_servers` | `table` | Allowlist of MCP servers that may be enabled. Both the server name (`<id>`) and its identity must match for the MCP server to be enabled. Any configured MCP server not in the allowlist (or with a mismatched identity) is disabled. |2957| `mcp_servers` | `table` | Allowlist of MCP servers that may be enabled. Both the server name (`<id>`) and its identity must match for the MCP server to be enabled. Any configured MCP server not in the allowlist (or with a mismatched identity) is disabled. |
2210| `mcp_servers.<id>.identity` | `table` | Identity rule for a single MCP server. Set either `command` (stdio) or `url` (streamable HTTP). |2958| `mcp_servers.<id>.identity` | `table` | Identity rule for a single MCP server. Set either `command` (stdio) or `url` (streamable HTTP). |
2211| `mcp_servers.<id>.identity.command` | `string` | Allow an MCP stdio server when its `mcp_servers.<id>.command` matches this command. |2959| `mcp_servers.<id>.identity.command` | `string` | Allow an MCP stdio server when its `mcp_servers.<id>.command` matches this command. |
2212| `mcp_servers.<id>.identity.url` | `string` | Allow an MCP streamable HTTP server when its `mcp_servers.<id>.url` matches this URL. |2960| `mcp_servers.<id>.identity.url` | `string` | Allow an MCP streamable HTTP server when its `mcp_servers.<id>.url` matches this URL. |
2961| `permissions.filesystem.deny_read` | `array<string>` | Admin-enforced filesystem read denials. Entries can be paths or glob patterns, and users cannot weaken them with local config. |
2213| `rules` | `table` | Admin-enforced command rules merged with `.rules` files. Requirements rules must be restrictive. |2962| `rules` | `table` | Admin-enforced command rules merged with `.rules` files. Requirements rules must be restrictive. |
2214| `rules.prefix_rules` | `array<table>` | List of enforced prefix rules. Each rule must include `pattern` and `decision`. |2963| `rules.prefix_rules` | `array<table>` | List of enforced prefix rules. Each rule must include `pattern` and `decision`. |
2215| `rules.prefix_rules[].decision` | `prompt | forbidden` | Required. Requirements rules can only prompt or forbid (not allow). |2964| `rules.prefix_rules[].decision` | `prompt | forbidden` | Required. Requirements rules can only prompt or forbid (not allow). |
2228 2977
2229Details2978Details
2230 2979
2231Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `reject`).2980Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `granular`).
2981
2982Key
2983
2984`allowed_approvals_reviewers`
2985
2986Type / Values
2987
2988`array<string>`
2989
2990Details
2991
2992Allowed values for `approvals_reviewer`, such as `user` and `auto_review`.
2232 2993
2233Key2994Key
2234 2995
2256 3017
2257Key3018Key
2258 3019
3020`features`
3021
3022Type / Values
3023
3024`table`
3025
3026Details
3027
3028Pinned feature values keyed by the canonical names from `config.toml`'s `[features]` table.
3029
3030Key
3031
3032`features.<name>`
3033
3034Type / Values
3035
3036`boolean`
3037
3038Details
3039
3040Require a specific canonical feature key to stay enabled or disabled.
3041
3042Key
3043
3044`guardian_policy_config`
3045
3046Type / Values
3047
3048`string`
3049
3050Details
3051
3052Managed Markdown policy instructions for automatic review. This takes precedence over local `[auto_review].policy`. Blank values are ignored.
3053
3054Key
3055
2259`mcp_servers`3056`mcp_servers`
2260 3057
2261Type / Values3058Type / Values
2304 3101
2305Key3102Key
2306 3103
3104`permissions.filesystem.deny_read`
3105
3106Type / Values
3107
3108`array<string>`
3109
3110Details
3111
3112Admin-enforced filesystem read denials. Entries can be paths or glob patterns, and users cannot weaken them with local config.
3113
3114Key
3115
2307`rules`3116`rules`
2308 3117
2309Type / Values3118Type / Values