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.elevated_windows_sandbox` | `boolean` | Enable the elevated Windows sandbox pipeline (experimental). |54| `features.memories` | `boolean` | Enable [Memories](https://developers.openai.com/codex/memories) (off by default). |
48| `features.experimental_windows_sandbox` | `boolean` | Run the Windows restricted-token sandbox (experimental). |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). |
49| `features.multi_agent` | `boolean` | Enable multi-agent collaboration tools (`spawn\_agent`, `send\_input`, `resume\_agent`, `wait`, and `close\_agent`) (experimental; off by default). |
50| `features.personality` | `boolean` | Enable personality selection controls (stable; on by default). |56| `features.personality` | `boolean` | Enable personality selection controls (stable; on by default). |
51| `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). |
52| `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). |
53| `features.request_rule` | `boolean` | Enable Smart approvals (`prefix_rule` suggestions on escalation requests; stable; on by default). |
54| `features.runtime_metrics` | `boolean` | Show runtime metrics summary in TUI turn separators (experimental). |
55| `features.search_tool` | `boolean` | Enable `search_tool_bm25` for Apps tool discovery before invoking app MCP tools (experimental). |
56| `features.shell_snapshot` | `boolean` | Snapshot shell environment to speed up repeated commands (beta). |
57| `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). |
58| `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). |
59| `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). |
60| `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. |
61| `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"`. |
62| `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"`. |
67| `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. |
68| `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. |
69| `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. |
70| `include_apply_patch_tool` | `boolean` | Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`. |
71| `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`. |
72| `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`. |
73| `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. |
82| `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. |
83| `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. |
84| `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. |
85| `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. |
86| `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. |
87| `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. |
88| `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. |
89| `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. |
90| `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. |
91| `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. |
92| `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`). |
93| `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). |
94| `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. |
95| `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. |
96| `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`. |
97| `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). |
98| `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. |
99| `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. |
100| `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. |
107| `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). |
108| `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). |
109| `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). |
110| `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. |
111| `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). |
112| `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. |
113| `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. |
114| `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. |
115| `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. |
116| `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. |
117| `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. |
119| `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. |
120| `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. |
121| `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. |
122| `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). |
123| `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`). |
124| `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. |
129| `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. |
130| `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. |
131| `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`). |
132| `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. |
133| `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. |
134| `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. |
136| `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. |
137| `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. |
138| `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. |
139| `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. |
140| `profile` | `string` | Default profile applied at startup (equivalent to `--profile`). |182| `profile` | `string` | Default profile applied at startup (equivalent to `--profile`). |
141| `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. |
142| `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. |
143| `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`. |
144| `profiles.<name>.include_apply_patch_tool` | `boolean` | Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`. |
145| `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. |
146| `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. |
147| `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. |
148| `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. |
149| `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. |
150| `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. |
151| `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. |
152| `projects.<path>.trust_level` | `string` | Mark a project or worktree as trusted or untrusted (`"trusted"` | `"untrusted"`). Untrusted projects skip project-scoped `.codex/` layers. |198| `projects.<path>.trust_level` | `string` | Mark a project or worktree as trusted or untrusted (`"trusted"` | `"untrusted"`). Untrusted projects skip project-scoped `.codex/` layers, including project-local config, hooks, and rules. |
153| `review_model` | `string` | Optional model override used by `/review` (defaults to the current session model). |199| `review_model` | `string` | Optional model override used by `/review` (defaults to the current session model). |
154| `sandbox_mode` | `read-only | workspace-write | danger-full-access` | Sandbox policy for filesystem and network access during command execution. |200| `sandbox_mode` | `read-only | workspace-write | danger-full-access` | Sandbox policy for filesystem and network access during command execution. |
155| `sandbox_workspace_write.exclude_slash_tmp` | `boolean` | Exclude `/tmp` from writable roots in workspace-write mode. |201| `sandbox_workspace_write.exclude_slash_tmp` | `boolean` | Exclude `/tmp` from writable roots in workspace-write mode. |
156| `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. |
157| `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. |
158| `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. |
159| `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. |
160| `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. |
161| `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. |
166| `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. |
167| `skills.config.<index>.enabled` | `boolean` | Enable or disable the referenced skill. |214| `skills.config.<index>.enabled` | `boolean` | Enable or disable the referenced skill. |
168| `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. |
169| `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. |
170| `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. |
171| `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. |
172| `tui` | `table` | TUI-specific options such as enabling inline desktop notifications. |222| `tui` | `table` | TUI-specific options such as enabling inline desktop notifications. |
173| `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). |
174| `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). |
175| `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). |
176| `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. |
177| `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). |
178| `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). |
179| `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. |
180| `windows_wsl_setup_acknowledged` | `boolean` | Track Windows onboarding acknowledgement (Windows only). |234| `windows_wsl_setup_acknowledged` | `boolean` | Track Windows onboarding acknowledgement (Windows only). |
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. |
181 237
182Key238Key
183 239
205 261
206Key262Key
207 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
208`agents.max_depth`288`agents.max_depth`
209 289
210Type / Values290Type / Values
225 305
226Details306Details
227 307
228Maximum number of agent threads that can be open concurrently.308Maximum number of agent threads that can be open concurrently. Defaults to `6` when unset.
229 309
230Key310Key
231 311
241 321
242Key322Key
243 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
244`approval_policy`336`approval_policy`
245 337
246Type / Values338Type / Values
247 339
248`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`
249 365
250Details366Details
251 367
252Controls 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.
253 369
254Key370Key
255 371
256`approval_policy.reject.mcp_elicitations`372`approval_policy.granular.rules`
257 373
258Type / Values374Type / Values
259 375
261 377
262Details378Details
263 379
264When `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.
265 381
266Key382Key
267 383
268`approval_policy.reject.rules`384`approval_policy.granular.sandbox_approval`
269 385
270Type / Values386Type / Values
271 387
273 389
274Details390Details
275 391
276When `true`, approvals triggered by execpolicy `prompt` rules are auto-rejected.392When `true`, sandbox escalation approval prompts are allowed to surface.
277 393
278Key394Key
279 395
280`approval_policy.reject.sandbox_approval`396`approval_policy.granular.skill_approval`
281 397
282Type / Values398Type / Values
283 399
285 401
286Details402Details
287 403
288When `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.
289 417
290Key418Key
291 419
409 537
410Key538Key
411 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
412`background_terminal_max_timeout`552`background_terminal_max_timeout`
413 553
414Type / Values554Type / Values
457 597
458Key598Key
459 599
460`compact_prompt`600`commit_attribution`
461 601
462Type / Values602Type / Values
463 603
465 605
466Details606Details
467 607
468Inline override for the history compaction prompt.608Override the commit co-author trailer text. Set an empty string to disable automatic attribution.
469 609
470Key610Key
471 611
472`developer_instructions`612`compact_prompt`
473 613
474Type / Values614Type / Values
475 615
477 617
478Details618Details
479 619
480Additional developer instructions injected into the session (optional).620Inline override for the history compaction prompt.
481 621
482Key622Key
483 623
484`disable_paste_burst`624`default_permissions`
485 625
486Type / Values626Type / Values
487 627
488`boolean`628`string`
489 629
490Details630Details
491 631
492Disable burst-paste detection in the TUI.632Name of the default permissions profile to apply to sandboxed tool calls.
493 633
494Key634Key
495 635
496`experimental_compact_prompt_file`636`developer_instructions`
497 637
498Type / Values638Type / Values
499 639
500`string (path)`640`string`
501 641
502Details642Details
503 643
504Load the compaction prompt override from a file (experimental).644Additional developer instructions injected into the session (optional).
505 645
506Key646Key
507 647
508`experimental_use_freeform_apply_patch`648`disable_paste_burst`
509 649
510Type / Values650Type / Values
511 651
513 653
514Details654Details
515 655
516Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform` or `codex --enable apply_patch_freeform`.656Disable burst-paste detection in the TUI.
517 657
518Key658Key
519 659
520`experimental_use_unified_exec_tool`660`experimental_compact_prompt_file`
521 661
522Type / Values662Type / Values
523 663
524`boolean`664`string (path)`
525 665
526Details666Details
527 667
528Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`.668Load the compaction prompt override from a file (experimental).
529 669
530Key670Key
531 671
532`features.apply_patch_freeform`672`experimental_use_unified_exec_tool`
533 673
534Type / Values674Type / Values
535 675
537 677
538Details678Details
539 679
540Expose the freeform `apply_patch` tool (experimental).680Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`.
541 681
542Key682Key
543 683
553 693
554Key694Key
555 695
556`features.apps_mcp_gateway`696`features.codex_hooks`
557
558Type / Values
559
560`boolean`
561
562Details
563
564Route Apps MCP calls through the OpenAI connectors MCP gateway (`https://api.openai.com/v1/connectors/mcp/`) instead of legacy routing (experimental).
565
566Key
567
568`features.child_agents_md`
569 697
570Type / Values698Type / Values
571 699
573 701
574Details702Details
575 703
576Append 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).
577 705
578Key706Key
579 707
580`features.collaboration_modes`708`features.enable_request_compression`
581 709
582Type / Values710Type / Values
583 711
585 713
586Details714Details
587 715
588Enable collaboration modes such as plan mode (stable; on by default).716Compress streaming request bodies with zstd when supported (stable; on by default).
589 717
590Key718Key
591 719
592`features.elevated_windows_sandbox`720`features.fast_mode`
593 721
594Type / Values722Type / Values
595 723
597 725
598Details726Details
599 727
600Enable the elevated Windows sandbox pipeline (experimental).728Enable Fast mode selection and the `service_tier = "fast"` path (stable; on by default).
601 729
602Key730Key
603 731
604`features.experimental_windows_sandbox`732`features.memories`
605 733
606Type / Values734Type / Values
607 735
609 737
610Details738Details
611 739
612Run the Windows restricted-token sandbox (experimental).740Enable [Memories](https://developers.openai.com/codex/memories) (off by default).
613 741
614Key742Key
615 743
621 749
622Details750Details
623 751
624Enable multi-agent collaboration tools (`spawn\_agent`, `send\_input`, `resume\_agent`, `wait`, and `close\_agent`) (experimental; off by default).752Enable multi-agent collaboration tools (`spawn_agent`, `send_input`, `resume_agent`, `wait_agent`, and `close_agent`) (stable; on by default).
625 753
626Key754Key
627 755
637 765
638Key766Key
639 767
640`features.powershell_utf8`768`features.prevent_idle_sleep`
641
642Type / Values
643
644`boolean`
645
646Details
647
648Force PowerShell UTF-8 output (defaults to true).
649
650Key
651
652`features.remote_models`
653
654Type / Values
655
656`boolean`
657
658Details
659
660Refresh remote model list before showing readiness (experimental).
661
662Key
663
664`features.request_rule`
665 769
666Type / Values770Type / Values
667 771
669 773
670Details774Details
671 775
672Enable 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).
673 777
674Key778Key
675 779
676`features.runtime_metrics`780`features.shell_snapshot`
677 781
678Type / Values782Type / Values
679 783
681 785
682Details786Details
683 787
684Show runtime metrics summary in TUI turn separators (experimental).788Snapshot shell environment to speed up repeated commands (stable; on by default).
685 789
686Key790Key
687 791
688`features.search_tool`792`features.shell_tool`
689 793
690Type / Values794Type / Values
691 795
693 797
694Details798Details
695 799
696Enable `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).
697 801
698Key802Key
699 803
700`features.shell_snapshot`804`features.skill_mcp_dependency_install`
701 805
702Type / Values806Type / Values
703 807
705 809
706Details810Details
707 811
708Snapshot shell environment to speed up repeated commands (beta).812Allow prompting and installing missing MCP dependencies for skills (stable; on by default).
709 813
710Key814Key
711 815
712`features.shell_tool`816`features.undo`
713 817
714Type / Values818Type / Values
715 819
717 821
718Details822Details
719 823
720Enable the default `shell` tool for running commands (stable; on by default).824Enable undo support (stable; off by default).
721 825
722Key826Key
723 827
729 833
730Details834Details
731 835
732Use the unified PTY-backed exec tool (beta).836Use the unified PTY-backed exec tool (stable; enabled by default except on Windows).
733
734Key
735
736`features.use_linux_sandbox_bwrap`
737
738Type / Values
739
740`boolean`
741
742Details
743
744Use the bubblewrap-based Linux sandbox pipeline (experimental; off by default).
745 837
746Key838Key
747 839
865 957
866Key958Key
867 959
868`include_apply_patch_tool`
869
870Type / Values
871
872`boolean`
873
874Details
875
876Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`.
877
878Key
879
880`instructions`960`instructions`
881 961
882Type / Values962Type / Values
1049 1129
1050Type / Values1130Type / Values
1051 1131
1052`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`
1053 1145
1054Details1146Details
1055 1147
1056Additional 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.
1057 1149
1058Key1150Key
1059 1151
1069 1161
1070Key1162Key
1071 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
1072`mcp_servers.<id>.required`1176`mcp_servers.<id>.required`
1073 1177
1074Type / Values1178Type / Values
1081 1185
1082Key1186Key
1083 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
1084`mcp_servers.<id>.startup_timeout_ms`1200`mcp_servers.<id>.startup_timeout_ms`
1085 1201
1086Type / Values1202Type / Values
1129 1245
1130Key1246Key
1131 1247
1132`model`1248`memories.consolidation_model`
1133 1249
1134Type / Values1250Type / Values
1135 1251
1137 1253
1138Details1254Details
1139 1255
1140Model to use (e.g., `gpt-5-codex`).1256Optional model override for global memory consolidation.
1141 1257
1142Key1258Key
1143 1259
1144`model_auto_compact_token_limit`1260`memories.disable_on_external_context`
1145 1261
1146Type / Values1262Type / Values
1147 1263
1148`number`1264`boolean`
1149 1265
1150Details1266Details
1151 1267
1152Token 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`.
1153 1269
1154Key1270Key
1155 1271
1156`model_catalog_json`1272`memories.extract_model`
1157 1273
1158Type / Values1274Type / Values
1159 1275
1160`string (path)`1276`string`
1161 1277
1162Details1278Details
1163 1279
1164Optional 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.
1165 1281
1166Key1282Key
1167 1283
1168`model_context_window`1284`memories.generate_memories`
1169 1285
1170Type / Values1286Type / Values
1171 1287
1172`number`1288`boolean`
1173 1289
1174Details1290Details
1175 1291
1176Context window tokens available to the active model.1292When `false`, newly created threads are not stored as memory-generation inputs. Defaults to `true`.
1177 1293
1178Key1294Key
1179 1295
1180`model_instructions_file`1296`memories.max_raw_memories_for_consolidation`
1181 1297
1182Type / Values1298Type / Values
1183 1299
1184`string (path)`1300`number`
1185 1301
1186Details1302Details
1187 1303
1188Replacement for built-in instructions instead of `AGENTS.md`.1304Maximum recent raw memories retained for global consolidation. Defaults to `256` and is capped at `4096`.
1189 1305
1190Key1306Key
1191 1307
1192`model_provider`1308`memories.max_rollout_age_days`
1193 1309
1194Type / Values1310Type / Values
1195 1311
1196`string`1312`number`
1197 1313
1198Details1314Details
1199 1315
1200Provider id from `model_providers` (default: `openai`).1316Maximum age of threads considered for memory generation. Defaults to `30` and is clamped to `0`-`90`.
1201 1317
1202Key1318Key
1203 1319
1204`model_providers.<id>.base_url`1320`memories.max_rollouts_per_startup`
1205 1321
1206Type / Values1322Type / Values
1207 1323
1208`string`1324`number`
1209 1325
1210Details1326Details
1211 1327
1212API base URL for the model provider.1328Maximum rollout candidates processed per startup pass. Defaults to `16` and is capped at `128`.
1213 1329
1214Key1330Key
1215 1331
1216`model_providers.<id>.env_http_headers`1332`memories.max_unused_days`
1217 1333
1218Type / Values1334Type / Values
1219 1335
1220`map<string,string>`1336`number`
1221 1337
1222Details1338Details
1223 1339
1224HTTP 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`.
1225 1341
1226Key1342Key
1227 1343
1228`model_providers.<id>.env_key`1344`memories.min_rollout_idle_hours`
1229 1345
1230Type / Values1346Type / Values
1231 1347
1232`string`1348`number`
1233 1349
1234Details1350Details
1235 1351
1236Environment 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`.
1237 1353
1238Key1354Key
1239 1355
1240`model_providers.<id>.env_key_instructions`1356`memories.use_memories`
1241 1357
1242Type / Values1358Type / Values
1243 1359
1244`string`1360`boolean`
1245 1361
1246Details1362Details
1247 1363
1248Optional setup guidance for the provider API key.1364When `false`, Codex skips injecting existing memories into future sessions. Defaults to `true`.
1249 1365
1250Key1366Key
1251 1367
1252`model_providers.<id>.experimental_bearer_token`1368`model`
1253 1369
1254Type / Values1370Type / Values
1255 1371
1257 1373
1258Details1374Details
1259 1375
1260Direct bearer token for the provider (discouraged; use `env_key`).1376Model to use (e.g., `gpt-5.5`).
1261 1377
1262Key1378Key
1263 1379
1264`model_providers.<id>.http_headers`1380`model_auto_compact_token_limit`
1265 1381
1266Type / Values1382Type / Values
1267 1383
1268`map<string,string>`1384`number`
1269 1385
1270Details1386Details
1271 1387
1272Static HTTP headers added to provider requests.1388Token threshold that triggers automatic history compaction (unset uses model defaults).
1273 1389
1274Key1390Key
1275 1391
1276`model_providers.<id>.name`1392`model_catalog_json`
1277 1393
1278Type / Values1394Type / Values
1279 1395
1280`string`1396`string (path)`
1281 1397
1282Details1398Details
1283 1399
1284Display 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.
1285 1401
1286Key1402Key
1287 1403
1288`model_providers.<id>.query_params`1404`model_context_window`
1289 1405
1290Type / Values1406Type / Values
1291 1407
1292`map<string,string>`1408`number`
1293 1409
1294Details1410Details
1295 1411
1296Extra query parameters appended to provider requests.1412Context window tokens available to the active model.
1297 1413
1298Key1414Key
1299 1415
1300`model_providers.<id>.request_max_retries`1416`model_instructions_file`
1301 1417
1302Type / Values1418Type / Values
1303 1419
1304`number`1420`string (path)`
1305 1421
1306Details1422Details
1307 1423
1308Retry count for HTTP requests to the provider (default: 4).1424Replacement for built-in instructions instead of `AGENTS.md`.
1309 1425
1310Key1426Key
1311 1427
1312`model_providers.<id>.requires_openai_auth`1428`model_provider`
1313 1429
1314Type / Values1430Type / Values
1315 1431
1316`boolean`1432`string`
1317 1433
1318Details1434Details
1319 1435
1320The provider uses OpenAI authentication (defaults to false).1436Provider id from `model_providers` (default: `openai`).
1321 1437
1322Key1438Key
1323 1439
1324`model_providers.<id>.stream_idle_timeout_ms`1440`model_providers.<id>`
1325 1441
1326Type / Values1442Type / Values
1327 1443
1328`number`1444`table`
1329 1445
1330Details1446Details
1331 1447
1332Idle 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.
1333 1449
1334Key1450Key
1335 1451
1336`model_providers.<id>.stream_max_retries`1452`model_providers.<id>.auth`
1453
1454Type / Values
1455
1456`table`
1457
1458Details
1459
1460Command-backed bearer token configuration for a custom provider. Do not combine with `env_key`, `experimental_bearer_token`, or `requires_openai_auth`.
1461
1462Key
1463
1464`model_providers.<id>.auth.args`
1465
1466Type / Values
1467
1468`array<string>`
1469
1470Details
1471
1472Arguments passed to the token command.
1473
1474Key
1475
1476`model_providers.<id>.auth.command`
1477
1478Type / Values
1479
1480`string`
1481
1482Details
1483
1484Command to run when Codex needs a bearer token. The command must print the token to stdout.
1485
1486Key
1487
1488`model_providers.<id>.auth.cwd`
1489
1490Type / Values
1491
1492`string (path)`
1493
1494Details
1495
1496Working directory for the token command.
1497
1498Key
1499
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`
1337 1657
1338Type / Values1658Type / Values
1339 1659
1345 1665
1346Key1666Key
1347 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
1348`model_providers.<id>.wire_api`1680`model_providers.<id>.wire_api`
1349 1681
1350Type / Values1682Type / Values
1351 1683
1352`chat | responses`1684`responses`
1353 1685
1354Details1686Details
1355 1687
1356Protocol used by the provider (defaults to `chat` if omitted).1688Protocol used by the provider. `responses` is the only supported value, and it is the default when omitted.
1357 1689
1358Key1690Key
1359 1691
1401 1733
1402Details1734Details
1403 1735
1404Control GPT-5 Responses API verbosity (defaults to `medium`).1736Optional GPT-5 Responses API verbosity override; when unset, the selected model/preset default is used.
1405 1737
1406Key1738Key
1407 1739
1489 1821
1490Key1822Key
1491 1823
1492`oss_provider`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.
2037
2038Key
2039
2040`otel.trace_exporter.<id>.tls.client-private-key`
2041
2042Type / Values
2043
2044`string`
2045
2046Details
2047
2048Client private key path for OTEL trace exporter TLS.
2049
2050Key
2051
2052`permissions.<name>.filesystem`
1493 2053
1494Type / Values2054Type / Values
1495 2055
1496`lmstudio | ollama`2056`table`
1497 2057
1498Details2058Details
1499 2059
1500Default 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`.
1501 2061
1502Key2062Key
1503 2063
1504`otel.environment`2064`permissions.<name>.filesystem.":project_roots".<subpath-or-glob>`
1505 2065
1506Type / Values2066Type / Values
1507 2067
1508`string`2068`"read" | "write" | "none"`
1509 2069
1510Details2070Details
1511 2071
1512Environment 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"`.
1513 2073
1514Key2074Key
1515 2075
1516`otel.exporter`2076`permissions.<name>.filesystem.<path-or-glob>`
1517 2077
1518Type / Values2078Type / Values
1519 2079
1520`none | otlp-http | otlp-grpc`2080`"read" | "write" | "none" | table`
1521 2081
1522Details2082Details
1523 2083
1524Select 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.
1525 2085
1526Key2086Key
1527 2087
1528`otel.exporter.<id>.endpoint`2088`permissions.<name>.filesystem.glob_scan_max_depth`
1529 2089
1530Type / Values2090Type / Values
1531 2091
1532`string`2092`number`
1533 2093
1534Details2094Details
1535 2095
1536Exporter 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.
1537 2097
1538Key2098Key
1539 2099
1540`otel.exporter.<id>.headers`2100`permissions.<name>.network.allow_local_binding`
1541 2101
1542Type / Values2102Type / Values
1543 2103
1544`map<string,string>`2104`boolean`
1545 2105
1546Details2106Details
1547 2107
1548Static headers included with OTEL exporter requests.2108Permit local bind/listen operations through the managed proxy.
1549 2109
1550Key2110Key
1551 2111
1552`otel.exporter.<id>.protocol`2112`permissions.<name>.network.allow_upstream_proxy`
1553 2113
1554Type / Values2114Type / Values
1555 2115
1556`binary | json`2116`boolean`
1557 2117
1558Details2118Details
1559 2119
1560Protocol used by the OTLP/HTTP exporter.2120Allow the managed proxy to chain to another upstream proxy.
1561 2121
1562Key2122Key
1563 2123
1564`otel.exporter.<id>.tls.ca-certificate`2124`permissions.<name>.network.dangerously_allow_all_unix_sockets`
1565 2125
1566Type / Values2126Type / Values
1567 2127
1568`string`2128`boolean`
1569 2129
1570Details2130Details
1571 2131
1572CA certificate path for OTEL exporter TLS.2132Allow the proxy to use arbitrary Unix sockets instead of the default restricted set.
1573 2133
1574Key2134Key
1575 2135
1576`otel.exporter.<id>.tls.client-certificate`2136`permissions.<name>.network.dangerously_allow_non_loopback_proxy`
1577 2137
1578Type / Values2138Type / Values
1579 2139
1580`string`2140`boolean`
1581 2141
1582Details2142Details
1583 2143
1584Client certificate path for OTEL exporter TLS.2144Permit non-loopback bind addresses for the managed proxy listener.
1585 2145
1586Key2146Key
1587 2147
1588`otel.exporter.<id>.tls.client-private-key`2148`permissions.<name>.network.domains`
1589 2149
1590Type / Values2150Type / Values
1591 2151
1592`string`2152`map<string, allow | deny>`
1593 2153
1594Details2154Details
1595 2155
1596Client 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.
1597 2157
1598Key2158Key
1599 2159
1600`otel.log_user_prompt`2160`permissions.<name>.network.enable_socks5`
1601 2161
1602Type / Values2162Type / Values
1603 2163
1605 2165
1606Details2166Details
1607 2167
1608Opt in to exporting raw user prompts with OpenTelemetry logs.2168Expose a SOCKS5 listener when this permissions profile enables the managed network proxy.
1609 2169
1610Key2170Key
1611 2171
1612`otel.trace_exporter`2172`permissions.<name>.network.enable_socks5_udp`
1613 2173
1614Type / Values2174Type / Values
1615 2175
1616`none | otlp-http | otlp-grpc`2176`boolean`
1617 2177
1618Details2178Details
1619 2179
1620Select the OpenTelemetry trace exporter and provide any endpoint metadata.2180Allow UDP over the SOCKS5 listener when enabled.
1621 2181
1622Key2182Key
1623 2183
1624`otel.trace_exporter.<id>.endpoint`2184`permissions.<name>.network.enabled`
1625 2185
1626Type / Values2186Type / Values
1627 2187
1628`string`2188`boolean`
1629 2189
1630Details2190Details
1631 2191
1632Trace exporter endpoint for OTEL logs.2192Enable network access for this named permissions profile.
1633 2193
1634Key2194Key
1635 2195
1636`otel.trace_exporter.<id>.headers`2196`permissions.<name>.network.mode`
1637 2197
1638Type / Values2198Type / Values
1639 2199
1640`map<string,string>`2200`limited | full`
1641 2201
1642Details2202Details
1643 2203
1644Static headers included with OTEL trace exporter requests.2204Network proxy mode used for subprocess traffic.
1645 2205
1646Key2206Key
1647 2207
1648`otel.trace_exporter.<id>.protocol`2208`permissions.<name>.network.proxy_url`
1649 2209
1650Type / Values2210Type / Values
1651 2211
1652`binary | json`2212`string`
1653 2213
1654Details2214Details
1655 2215
1656Protocol used by the OTLP/HTTP trace exporter.2216HTTP proxy endpoint used when this permissions profile enables the managed network proxy.
1657 2217
1658Key2218Key
1659 2219
1660`otel.trace_exporter.<id>.tls.ca-certificate`2220`permissions.<name>.network.socks_url`
1661 2221
1662Type / Values2222Type / Values
1663 2223
1665 2225
1666Details2226Details
1667 2227
1668CA certificate path for OTEL trace exporter TLS.2228SOCKS5 proxy endpoint used by this permissions profile.
1669 2229
1670Key2230Key
1671 2231
1672`otel.trace_exporter.<id>.tls.client-certificate`2232`permissions.<name>.network.unix_sockets`
1673 2233
1674Type / Values2234Type / Values
1675 2235
1676`string`2236`map<string, allow | none>`
1677 2237
1678Details2238Details
1679 2239
1680Client certificate path for OTEL trace exporter TLS.2240Unix socket rules for the managed proxy. Use socket paths as keys, with `allow` or `none` values.
1681 2241
1682Key2242Key
1683 2243
1684`otel.trace_exporter.<id>.tls.client-private-key`2244`personality`
1685 2245
1686Type / Values2246Type / Values
1687 2247
1688`string`2248`none | friendly | pragmatic`
1689 2249
1690Details2250Details
1691 2251
1692Client 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`.
1693 2253
1694Key2254Key
1695 2255
1696`personality`2256`plan_mode_reasoning_effort`
1697 2257
1698Type / Values2258Type / Values
1699 2259
1700`none | friendly | pragmatic`2260`none | minimal | low | medium | high | xhigh`
1701 2261
1702Details2262Details
1703 2263
1704Default 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.
1705 2265
1706Key2266Key
1707 2267
1729 2289
1730Key2290Key
1731 2291
1732`profiles.<name>.experimental_use_freeform_apply_patch`2292`profiles.<name>.analytics.enabled`
1733 2293
1734Type / Values2294Type / Values
1735 2295
1737 2297
1738Details2298Details
1739 2299
1740Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`.2300Profile-scoped analytics enablement override.
1741 2301
1742Key2302Key
1743 2303
1753 2313
1754Key2314Key
1755 2315
1756`profiles.<name>.include_apply_patch_tool`2316`profiles.<name>.model_catalog_json`
1757 2317
1758Type / Values2318Type / Values
1759 2319
1760`boolean`2320`string (path)`
1761 2321
1762Details2322Details
1763 2323
1764Legacy 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).
1765 2325
1766Key2326Key
1767 2327
1768`profiles.<name>.model_catalog_json`2328`profiles.<name>.model_instructions_file`
1769 2329
1770Type / Values2330Type / Values
1771 2331
1773 2333
1774Details2334Details
1775 2335
1776Profile-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.
1777 2337
1778Key2338Key
1779 2339
1801 2361
1802Key2362Key
1803 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
1804`profiles.<name>.web_search`2400`profiles.<name>.web_search`
1805 2401
1806Type / Values2402Type / Values
1813 2409
1814Key2410Key
1815 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
1816`project_doc_fallback_filenames`2424`project_doc_fallback_filenames`
1817 2425
1818Type / Values2426Type / Values
1857 2465
1858Details2466Details
1859 2467
1860Mark a project or worktree as trusted or untrusted (`"trusted"` | `"untrusted"`). Untrusted projects skip project-scoped `.codex/` layers.2468Mark a project or worktree as trusted or untrusted (`"trusted"` | `"untrusted"`). Untrusted projects skip project-scoped `.codex/` layers, including project-local config, hooks, and rules.
1861 2469
1862Key2470Key
1863 2471
1933 2541
1934Key2542Key
1935 2543
2544`service_tier`
2545
2546Type / Values
2547
2548`flex | fast`
2549
2550Details
2551
2552Preferred service tier for new turns.
2553
2554Key
2555
1936`shell_environment_policy.exclude`2556`shell_environment_policy.exclude`
1937 2557
1938Type / Values2558Type / Values
2053 2673
2054Key2674Key
2055 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
2056`suppress_unstable_features_warning`2688`suppress_unstable_features_warning`
2057 2689
2058Type / Values2690Type / Values
2077 2709
2078Key2710Key
2079 2711
2080`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`
2081 2725
2082Type / Values2726Type / Values
2083 2727
2085 2729
2086Details2730Details
2087 2731
2088Deprecated 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.
2089 2745
2090Key2746Key
2091 2747
2125 2781
2126Key2782Key
2127 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
2128`tui.notification_method`2808`tui.notification_method`
2129 2809
2130Type / Values2810Type / Values
2133 2813
2134Details2814Details
2135 2815
2136Notification method for unfocused terminal notifications (default: auto).2816Notification method for terminal notifications (default: auto).
2137 2817
2138Key2818Key
2139 2819
2173 2853
2174Key2854Key
2175 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
2176`web_search`2880`web_search`
2177 2881
2178Type / Values2882Type / Values
2195 2899
2196Track Windows onboarding acknowledgement (Windows only).2900Track Windows onboarding acknowledgement (Windows only).
2197 2901
2902Key
2903
2904`windows.sandbox`
2905
2906Type / Values
2907
2908`unelevated | elevated`
2909
2910Details
2911
2912Windows-only native sandbox mode when running Codex natively on Windows.
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
2198Expand to view all2926Expand to view all
2199 2927
2200You 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).
2214For ChatGPT Business and Enterprise users, Codex can also apply cloud-fetched2942For ChatGPT Business and Enterprise users, Codex can also apply cloud-fetched
2215requirements. See the security page for precedence details.2943requirements. See the security page for precedence details.
2216 2944
2945Use `[features]` in `requirements.toml` to pin feature flags by the same
2946canonical keys that `config.toml` uses. Omitted keys remain unconstrained.
2947
2217| Key | Type / Values | Details |2948| Key | Type / Values | Details |
2218| --- | --- | --- |2949| --- | --- | --- |
2219| `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`. |
2220| `allowed_sandbox_modes` | `array<string>` | Allowed values for `sandbox_mode`. |2952| `allowed_sandbox_modes` | `array<string>` | Allowed values for `sandbox_mode`. |
2221| `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. |
2222| `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. |
2223| `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). |
2224| `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. |
2225| `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. |
2226| `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. |
2227| `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`. |
2228| `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). |
2241 2977
2242Details2978Details
2243 2979
2244Allowed 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`.
2245 2993
2246Key2994Key
2247 2995
2269 3017
2270Key3018Key
2271 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
2272`mcp_servers`3056`mcp_servers`
2273 3057
2274Type / Values3058Type / Values
2317 3101
2318Key3102Key
2319 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
2320`rules`3116`rules`
2321 3117
2322Type / Values3118Type / Values