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/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
9| Key | Type / Values | Details |11| Key | Type / Values | Details |
10| --- | --- | --- |12| --- | --- | --- |
11| `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. |
12| `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. |
13| `agents.max_threads` | `number` | Maximum number of agent threads that can be open concurrently. |15| `agents.<name>.nickname_candidates` | `array<string>` | Optional pool of display nicknames for spawned agents in that role. |
14| `approval_policy` | `untrusted | on-request | never` | Controls when Codex pauses for approval before executing commands. `on-failure` is deprecated; use `on-request` for interactive runs or `never` for non-interactive runs. |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| `apps.<id>.disabled_reason` | `unknown | user` | Optional reason attached when an app/connector is disabled. |17| `agents.max_depth` | `number` | Maximum nesting depth allowed for spawned agent threads (root sessions start at depth 0; default: 1). |
18| `agents.max_threads` | `number` | Maximum number of agent threads that can be open concurrently. Defaults to `6` when unset. |
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. |
20| `analytics.enabled` | `boolean` | Enable or disable analytics for this machine/profile. When unset, the client default applies. |
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. |
22| `approval_policy.granular.mcp_elicitations` | `boolean` | When `true`, MCP elicitation prompts are allowed to surface instead of being 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 | guardian_subagent` | Select who reviews eligible approval prompts. Defaults to `user`; `guardian_subagent` routes supported reviews through the Guardian reviewer subagent. |
28| `apps._default.destructive_enabled` | `boolean` | Default allow/deny for app tools with `destructive_hint = true`. |
29| `apps._default.enabled` | `boolean` | Default app enabled state for all apps unless overridden per app. |
30| `apps._default.open_world_enabled` | `boolean` | Default allow/deny for app tools with `open_world_hint = true`. |
31| `apps.<id>.default_tools_approval_mode` | `auto | prompt | approve` | Default approval behavior for tools in this app unless a per-tool override exists. |
32| `apps.<id>.default_tools_enabled` | `boolean` | Default enabled state for tools in this app unless a per-tool override exists. |
33| `apps.<id>.destructive_enabled` | `boolean` | Allow or block tools in this app that advertise `destructive_hint = true`. |
16| `apps.<id>.enabled` | `boolean` | Enable or disable a specific app/connector by id (default: true). |34| `apps.<id>.enabled` | `boolean` | Enable or disable a specific app/connector by id (default: true). |
35| `apps.<id>.open_world_enabled` | `boolean` | Allow or block tools in this app that advertise `open_world_hint = true`. |
36| `apps.<id>.tools.<tool>.approval_mode` | `auto | prompt | approve` | Per-tool approval behavior override for a single app tool. |
37| `apps.<id>.tools.<tool>.enabled` | `boolean` | Per-tool enabled override for an app tool (for example `repos/list`). |
38| `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. |
17| `chatgpt_base_url` | `string` | Override the base URL used during the ChatGPT login flow. |39| `chatgpt_base_url` | `string` | Override the base URL used during the ChatGPT login flow. |
18| `check_for_update_on_startup` | `boolean` | Check for Codex updates on startup (set to false only when updates are centrally managed). |40| `check_for_update_on_startup` | `boolean` | Check for Codex updates on startup (set to false only when updates are centrally managed). |
19| `cli_auth_credentials_store` | `file | keyring | auto` | Control where the CLI stores cached credentials (file-based auth.json vs OS keychain). |41| `cli_auth_credentials_store` | `file | keyring | auto` | Control where the CLI stores cached credentials (file-based auth.json vs OS keychain). |
42| `commit_attribution` | `string` | Override the commit co-author trailer text. Set an empty string to disable automatic attribution. |
20| `compact_prompt` | `string` | Inline override for the history compaction prompt. |43| `compact_prompt` | `string` | Inline override for the history compaction prompt. |
44| `default_permissions` | `string` | Name of the default permissions profile to apply to sandboxed tool calls. |
21| `developer_instructions` | `string` | Additional developer instructions injected into the session (optional). |45| `developer_instructions` | `string` | Additional developer instructions injected into the session (optional). |
22| `disable_paste_burst` | `boolean` | Disable burst-paste detection in the TUI. |46| `disable_paste_burst` | `boolean` | Disable burst-paste detection in the TUI. |
23| `experimental_compact_prompt_file` | `string (path)` | Load the compaction prompt override from a file (experimental). |47| `experimental_compact_prompt_file` | `string (path)` | Load the compaction prompt override from a file (experimental). |
24| `experimental_use_freeform_apply_patch` | `boolean` | Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform` or `codex --enable apply_patch_freeform`. |
25| `experimental_use_unified_exec_tool` | `boolean` | Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`. |48| `experimental_use_unified_exec_tool` | `boolean` | Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`. |
26| `features.apply_patch_freeform` | `boolean` | Expose the freeform `apply_patch` tool (experimental). |
27| `features.apps` | `boolean` | Enable ChatGPT Apps/connectors support (experimental). |49| `features.apps` | `boolean` | Enable ChatGPT Apps/connectors support (experimental). |
28| `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). |50| `features.codex_hooks` | `boolean` | Enable lifecycle hooks loaded from `hooks.json` (under development; off by default). |
29| `features.child_agents_md` | `boolean` | Append AGENTS.md scope/precedence guidance even when no AGENTS.md is present (experimental). |51| `features.enable_request_compression` | `boolean` | Compress streaming request bodies with zstd when supported (stable; on by default). |
30| `features.collaboration_modes` | `boolean` | Enable collaboration modes such as plan mode (stable; on by default). |52| `features.fast_mode` | `boolean` | Enable Fast mode selection and the `service_tier = "fast"` path (stable; on by default). |
31| `features.elevated_windows_sandbox` | `boolean` | Enable the elevated Windows sandbox pipeline (experimental). |53| `features.guardian_approval` | `boolean` | Route eligible approval requests through the guardian reviewer subagent (experimental; off by default). Use with `approvals_reviewer = "guardian_subagent"`. |
32| `features.experimental_windows_sandbox` | `boolean` | Run the Windows restricted-token sandbox (experimental). |54| `features.memories` | `boolean` | Enable [Memories](https://developers.openai.com/codex/memories) (off by default). |
33| `features.multi_agent` | `boolean` | Enable multi-agent collaboration tools (`spawn\_agent`, `send\_input`, `resume\_agent`, `wait`, and `close\_agent`) (experimental; off by default). |55| `features.multi_agent` | `boolean` | Enable multi-agent collaboration tools (`spawn_agent`, `send_input`, `resume_agent`, `wait_agent`, and `close_agent`) (stable; on by default). |
34| `features.personality` | `boolean` | Enable personality selection controls (stable; on by default). |56| `features.personality` | `boolean` | Enable personality selection controls (stable; on by default). |
35| `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). |
36| `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). |
37| `features.request_rule` | `boolean` | Enable Smart approvals (`prefix_rule` suggestions on escalation requests; stable; on by default). |
38| `features.runtime_metrics` | `boolean` | Show runtime metrics summary in TUI turn separators (experimental). |
39| `features.search_tool` | `boolean` | Enable `search_tool_bm25` for Apps tool discovery before invoking app MCP tools (experimental). |
40| `features.shell_snapshot` | `boolean` | Snapshot shell environment to speed up repeated commands (beta). |
41| `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). |
42| `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). |
43| `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). |
44| `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. |
45| `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"`. |
46| `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"`. |
51| `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. |
52| `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. |
53| `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. |
54| `include_apply_patch_tool` | `boolean` | Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`. |
55| `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`. |
56| `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`. |
57| `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. |
76| `mcp_oauth_callback_url` | `string` | Optional redirect URI override for MCP OAuth login (for example, a devbox ingress URL). `mcp_oauth_callback_port` still controls the callback listener port. |
58| `mcp_oauth_credentials_store` | `auto | file | keyring` | Preferred store for MCP OAuth credentials. |77| `mcp_oauth_credentials_store` | `auto | file | keyring` | Preferred store for MCP OAuth credentials. |
59| `mcp_servers.<id>.args` | `array<string>` | Arguments passed to the MCP stdio server command. |78| `mcp_servers.<id>.args` | `array<string>` | Arguments passed to the MCP stdio server command. |
60| `mcp_servers.<id>.bearer_token_env_var` | `string` | Environment variable sourcing the bearer token for an MCP HTTP server. |79| `mcp_servers.<id>.bearer_token_env_var` | `string` | Environment variable sourcing the bearer token for an MCP HTTP server. |
65| `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. |
66| `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. |
67| `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. |
68| `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. |
69| `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. |
70| `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. |
71| `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. |
72| `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. |
73| `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. |
74| `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. |
75| `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.4`). |
76| `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). |
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. |
77| `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. |
78| `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`. |
79| `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). |
80| `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. |
81| `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. |
82| `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. |
89| `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). |
90| `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). |
91| `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). |
92| `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. |
93| `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). |
94| `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. |
95| `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. |
96| `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. |
97| `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. |
98| `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. |
99| `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. |
101| `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. |
102| `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. |
103| `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. |
104| `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). |
105| `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`). |
106| `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. |
111| `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. |
112| `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. |
113| `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`). |
114| `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. |
115| `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. |
116| `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. |
118| `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. |
119| `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. |
120| `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. |
121| `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. |
122| `profile` | `string` | Default profile applied at startup (equivalent to `--profile`). |182| `profile` | `string` | Default profile applied at startup (equivalent to `--profile`). |
123| `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. |
124| `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. |
125| `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`. |
126| `profiles.<name>.include_apply_patch_tool` | `boolean` | Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`. |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. |
127| `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. |
128| `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. |
129| `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. |
130| `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. |
131| `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. |
132| `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. |
137| `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. |
138| `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. |
139| `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. |
140| `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. |
141| `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. |
142| `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. |
147| `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. |
148| `skills.config.<index>.enabled` | `boolean` | Enable or disable the referenced skill. |214| `skills.config.<index>.enabled` | `boolean` | Enable or disable the referenced skill. |
149| `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. |
150| `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. |
151| `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. |
152| `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. |
153| `tui` | `table` | TUI-specific options such as enabling inline desktop notifications. |222| `tui` | `table` | TUI-specific options such as enabling inline desktop notifications. |
154| `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). |
155| `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). |
156| `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). |
157| `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. |
158| `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). |
159| `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). |
160| `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. |
161| `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. |
162 237
163Key238Key
164 239
186 261
187Key262Key
188 263
189`agents.max_threads`264`agents.<name>.nickname_candidates`
190 265
191Type / Values266Type / Values
192 267
193`number`268`array<string>`
194 269
195Details270Details
196 271
197Maximum number of agent threads that can be open concurrently.272Optional pool of display nicknames for spawned agents in that role.
198 273
199Key274Key
200 275
201`approval_policy`276`agents.job_max_runtime_seconds`
202 277
203Type / Values278Type / Values
204 279
205`untrusted | on-request | never`280`number`
206 281
207Details282Details
208 283
209Controls when Codex pauses for approval before executing commands. `on-failure` is deprecated; use `on-request` for interactive runs or `never` for non-interactive runs.284Default per-worker timeout for `spawn_agents_on_csv` jobs. When unset, the tool falls back to 1800 seconds per worker.
210 285
211Key286Key
212 287
213`apps.<id>.disabled_reason`288`agents.max_depth`
214 289
215Type / Values290Type / Values
216 291
217`unknown | user`292`number`
218 293
219Details294Details
220 295
221Optional reason attached when an app/connector is disabled.296Maximum nesting depth allowed for spawned agent threads (root sessions start at depth 0; default: 1).
222 297
223Key298Key
224 299
225`apps.<id>.enabled`300`agents.max_threads`
226 301
227Type / Values302Type / Values
228 303
229`boolean`304`number`
230 305
231Details306Details
232 307
233Enable or disable a specific app/connector by id (default: true).308Maximum number of agent threads that can be open concurrently. Defaults to `6` when unset.
234 309
235Key310Key
236 311
237`chatgpt_base_url`312`allow_login_shell`
238 313
239Type / Values314Type / Values
240 315
241`string`316`boolean`
242 317
243Details318Details
244 319
245Override the base URL used during the ChatGPT login flow.320Allow 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.
246 321
247Key322Key
248 323
249`check_for_update_on_startup`324`analytics.enabled`
250 325
251Type / Values326Type / Values
252 327
254 329
255Details330Details
256 331
257Check for Codex updates on startup (set to false only when updates are centrally managed).332Enable or disable analytics for this machine/profile. When unset, the client default applies.
258 333
259Key334Key
260 335
261`cli_auth_credentials_store`336`approval_policy`
262 337
263Type / Values338Type / Values
264 339
265`file | keyring | auto`340`untrusted | on-request | never | { granular = { sandbox_approval = bool, rules = bool, mcp_elicitations = bool, request_permissions = bool, skill_approval = bool } }`
266 341
267Details342Details
268 343
269Control where the CLI stores cached credentials (file-based auth.json vs OS keychain).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.
270 345
271Key346Key
272 347
273`compact_prompt`348`approval_policy.granular.mcp_elicitations`
274 349
275Type / Values350Type / Values
276 351
277`string`352`boolean`
278 353
279Details354Details
280 355
281Inline override for the history compaction prompt.356When `true`, MCP elicitation prompts are allowed to surface instead of being auto-rejected.
282 357
283Key358Key
284 359
285`developer_instructions`360`approval_policy.granular.request_permissions`
286 361
287Type / Values362Type / Values
288 363
289`string`364`boolean`
290 365
291Details366Details
292 367
293Additional developer instructions injected into the session (optional).368When `true`, prompts from the `request_permissions` tool are allowed to surface.
294 369
295Key370Key
296 371
297`disable_paste_burst`372`approval_policy.granular.rules`
298 373
299Type / Values374Type / Values
300 375
302 377
303Details378Details
304 379
305Disable burst-paste detection in the TUI.380When `true`, approvals triggered by execpolicy `prompt` rules are allowed to surface.
306 381
307Key382Key
308 383
309`experimental_compact_prompt_file`384`approval_policy.granular.sandbox_approval`
310 385
311Type / Values386Type / Values
312 387
313`string (path)`388`boolean`
314 389
315Details390Details
316 391
317Load the compaction prompt override from a file (experimental).392When `true`, sandbox escalation approval prompts are allowed to surface.
318 393
319Key394Key
320 395
321`experimental_use_freeform_apply_patch`396`approval_policy.granular.skill_approval`
322 397
323Type / Values398Type / Values
324 399
326 401
327Details402Details
328 403
329Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform` or `codex --enable apply_patch_freeform`.404When `true`, skill-script approval prompts are allowed to surface.
330 405
331Key406Key
332 407
333`experimental_use_unified_exec_tool`408`approvals_reviewer`
334 409
335Type / Values410Type / Values
336 411
337`boolean`412`user | guardian_subagent`
338 413
339Details414Details
340 415
341Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`.416Select who reviews eligible approval prompts. Defaults to `user`; `guardian_subagent` routes supported reviews through the Guardian reviewer subagent.
342 417
343Key418Key
344 419
345`features.apply_patch_freeform`420`apps._default.destructive_enabled`
346 421
347Type / Values422Type / Values
348 423
350 425
351Details426Details
352 427
353Expose the freeform `apply_patch` tool (experimental).428Default allow/deny for app tools with `destructive_hint = true`.
354 429
355Key430Key
356 431
357`features.apps`432`apps._default.enabled`
358 433
359Type / Values434Type / Values
360 435
362 437
363Details438Details
364 439
365Enable ChatGPT Apps/connectors support (experimental).440Default app enabled state for all apps unless overridden per app.
366 441
367Key442Key
368 443
369`features.apps_mcp_gateway`444`apps._default.open_world_enabled`
370 445
371Type / Values446Type / Values
372 447
374 449
375Details450Details
376 451
377Route Apps MCP calls through the OpenAI connectors MCP gateway (`https://api.openai.com/v1/connectors/mcp/`) instead of legacy routing (experimental).452Default allow/deny for app tools with `open_world_hint = true`.
378 453
379Key454Key
380 455
381`features.child_agents_md`456`apps.<id>.default_tools_approval_mode`
382 457
383Type / Values458Type / Values
384 459
385`boolean`460`auto | prompt | approve`
386 461
387Details462Details
388 463
389Append AGENTS.md scope/precedence guidance even when no AGENTS.md is present (experimental).464Default approval behavior for tools in this app unless a per-tool override exists.
390 465
391Key466Key
392 467
393`features.collaboration_modes`468`apps.<id>.default_tools_enabled`
394 469
395Type / Values470Type / Values
396 471
398 473
399Details474Details
400 475
401Enable collaboration modes such as plan mode (stable; on by default).476Default enabled state for tools in this app unless a per-tool override exists.
402 477
403Key478Key
404 479
405`features.elevated_windows_sandbox`480`apps.<id>.destructive_enabled`
406 481
407Type / Values482Type / Values
408 483
410 485
411Details486Details
412 487
413Enable the elevated Windows sandbox pipeline (experimental).488Allow or block tools in this app that advertise `destructive_hint = true`.
414 489
415Key490Key
416 491
417`features.experimental_windows_sandbox`492`apps.<id>.enabled`
418 493
419Type / Values494Type / Values
420 495
422 497
423Details498Details
424 499
425Run the Windows restricted-token sandbox (experimental).500Enable or disable a specific app/connector by id (default: true).
426 501
427Key502Key
428 503
429`features.multi_agent`504`apps.<id>.open_world_enabled`
430 505
431Type / Values506Type / Values
432 507
434 509
435Details510Details
436 511
437Enable multi-agent collaboration tools (`spawn\_agent`, `send\_input`, `resume\_agent`, `wait`, and `close\_agent`) (experimental; off by default).512Allow or block tools in this app that advertise `open_world_hint = true`.
438 513
439Key514Key
440 515
441`features.personality`516`apps.<id>.tools.<tool>.approval_mode`
442 517
443Type / Values518Type / Values
444 519
445`boolean`520`auto | prompt | approve`
446 521
447Details522Details
448 523
449Enable personality selection controls (stable; on by default).524Per-tool approval behavior override for a single app tool.
450 525
451Key526Key
452 527
453`features.powershell_utf8`528`apps.<id>.tools.<tool>.enabled`
454 529
455Type / Values530Type / Values
456 531
458 533
459Details534Details
460 535
461Force PowerShell UTF-8 output (defaults to true).536Per-tool enabled override for an app tool (for example `repos/list`).
462 537
463Key538Key
464 539
465`features.remote_models`540`background_terminal_max_timeout`
466 541
467Type / Values542Type / Values
468 543
469`boolean`544`number`
470 545
471Details546Details
472 547
473Refresh remote model list before showing readiness (experimental).548Maximum poll window in milliseconds for empty `write_stdin` polls (background terminal polling). Default: `300000` (5 minutes). Replaces the older `background_terminal_timeout` key.
474 549
475Key550Key
476 551
477`features.request_rule`552`chatgpt_base_url`
478 553
479Type / Values554Type / Values
480 555
481`boolean`556`string`
482 557
483Details558Details
484 559
485Enable Smart approvals (`prefix_rule` suggestions on escalation requests; stable; on by default).560Override the base URL used during the ChatGPT login flow.
486 561
487Key562Key
488 563
489`features.runtime_metrics`564`check_for_update_on_startup`
490 565
491Type / Values566Type / Values
492 567
494 569
495Details570Details
496 571
497Show runtime metrics summary in TUI turn separators (experimental).572Check for Codex updates on startup (set to false only when updates are centrally managed).
498 573
499Key574Key
500 575
501`features.search_tool`576`cli_auth_credentials_store`
502 577
503Type / Values578Type / Values
504 579
505`boolean`580`file | keyring | auto`
506 581
507Details582Details
508 583
509Enable `search_tool_bm25` for Apps tool discovery before invoking app MCP tools (experimental).584Control where the CLI stores cached credentials (file-based auth.json vs OS keychain).
510 585
511Key586Key
512 587
513`features.shell_snapshot`588`commit_attribution`
514 589
515Type / Values590Type / Values
516 591
517`boolean`592`string`
518 593
519Details594Details
520 595
521Snapshot shell environment to speed up repeated commands (beta).596Override the commit co-author trailer text. Set an empty string to disable automatic attribution.
522 597
523Key598Key
524 599
525`features.shell_tool`600`compact_prompt`
526 601
527Type / Values602Type / Values
528 603
529`boolean`604`string`
530 605
531Details606Details
532 607
533Enable the default `shell` tool for running commands (stable; on by default).608Inline override for the history compaction prompt.
534 609
535Key610Key
536 611
537`features.unified_exec`612`default_permissions`
538 613
539Type / Values614Type / Values
540 615
541`boolean`616`string`
542 617
543Details618Details
544 619
545Use the unified PTY-backed exec tool (beta).620Name of the default permissions profile to apply to sandboxed tool calls.
546 621
547Key622Key
548 623
549`features.use_linux_sandbox_bwrap`624`developer_instructions`
550 625
551Type / Values626Type / Values
552 627
553`boolean`628`string`
554 629
555Details630Details
556 631
557Use the bubblewrap-based Linux sandbox pipeline (experimental; off by default).632Additional developer instructions injected into the session (optional).
558 633
559Key634Key
560 635
561`features.web_search`636`disable_paste_burst`
562 637
563Type / Values638Type / Values
564 639
566 641
567Details642Details
568 643
569Deprecated legacy toggle; prefer the top-level `web_search` setting.644Disable burst-paste detection in the TUI.
570 645
571Key646Key
572 647
573`features.web_search_cached`648`experimental_compact_prompt_file`
574 649
575Type / Values650Type / Values
576 651
577`boolean`652`string (path)`
578 653
579Details654Details
580 655
581Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "cached"`.656Load the compaction prompt override from a file (experimental).
582 657
583Key658Key
584 659
585`features.web_search_request`660`experimental_use_unified_exec_tool`
586 661
587Type / Values662Type / Values
588 663
590 665
591Details666Details
592 667
593Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "live"`.668Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`.
594 669
595Key670Key
596 671
597`feedback.enabled`672`features.apps`
598 673
599Type / Values674Type / Values
600 675
602 677
603Details678Details
604 679
605Enable feedback submission via `/feedback` across Codex surfaces (default: true).680Enable ChatGPT Apps/connectors support (experimental).
606 681
607Key682Key
608 683
609`file_opener`684`features.codex_hooks`
610 685
611Type / Values686Type / Values
612 687
613`vscode | vscode-insiders | windsurf | cursor | none`688`boolean`
614 689
615Details690Details
616 691
617URI scheme used to open citations from Codex output (default: `vscode`).692Enable lifecycle hooks loaded from `hooks.json` (under development; off by default).
618 693
619Key694Key
620 695
621`forced_chatgpt_workspace_id`696`features.enable_request_compression`
622 697
623Type / Values698Type / Values
624 699
625`string (uuid)`700`boolean`
626 701
627Details702Details
628 703
629Limit ChatGPT logins to a specific workspace identifier.704Compress streaming request bodies with zstd when supported (stable; on by default).
630 705
631Key706Key
632 707
633`forced_login_method`708`features.fast_mode`
634 709
635Type / Values710Type / Values
636 711
637`chatgpt | api`712`boolean`
638 713
639Details714Details
640 715
641Restrict Codex to a specific authentication method.716Enable Fast mode selection and the `service_tier = "fast"` path (stable; on by default).
642 717
643Key718Key
644 719
645`hide_agent_reasoning`720`features.guardian_approval`
646 721
647Type / Values722Type / Values
648 723
650 725
651Details726Details
652 727
653Suppress reasoning events in both the TUI and `codex exec` output.728Route eligible approval requests through the guardian reviewer subagent (experimental; off by default). Use with `approvals_reviewer = "guardian_subagent"`.
654 729
655Key730Key
656 731
657`history.max_bytes`732`features.memories`
658 733
659Type / Values734Type / Values
660 735
661`number`736`boolean`
662 737
663Details738Details
664 739
665If set, caps the history file size in bytes by dropping oldest entries.740Enable [Memories](https://developers.openai.com/codex/memories) (off by default).
666 741
667Key742Key
668 743
669`history.persistence`744`features.multi_agent`
670 745
671Type / Values746Type / Values
672 747
673`save-all | none`748`boolean`
674 749
675Details750Details
676 751
677Control whether Codex saves session transcripts to history.jsonl.752Enable multi-agent collaboration tools (`spawn_agent`, `send_input`, `resume_agent`, `wait_agent`, and `close_agent`) (stable; on by default).
678 753
679Key754Key
680 755
681`include_apply_patch_tool`756`features.personality`
682 757
683Type / Values758Type / Values
684 759
686 761
687Details762Details
688 763
689Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`.764Enable personality selection controls (stable; on by default).
690 765
691Key766Key
692 767
693`instructions`768`features.prevent_idle_sleep`
694 769
695Type / Values770Type / Values
696 771
697`string`772`boolean`
698 773
699Details774Details
700 775
701Reserved for future use; prefer `model_instructions_file` or `AGENTS.md`.776Prevent the machine from sleeping while a turn is actively running (experimental; off by default).
702 777
703Key778Key
704 779
705`log_dir`780`features.shell_snapshot`
706 781
707Type / Values782Type / Values
708 783
709`string (path)`784`boolean`
710 785
711Details786Details
712 787
713Directory where Codex writes log files (for example `codex-tui.log`); defaults to `$CODEX_HOME/log`.788Snapshot shell environment to speed up repeated commands (stable; on by default).
714 789
715Key790Key
716 791
717`mcp_oauth_callback_port`792`features.shell_tool`
718 793
719Type / Values794Type / Values
720 795
721`integer`796`boolean`
722 797
723Details798Details
724 799
725Optional 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.800Enable the default `shell` tool for running commands (stable; on by default).
726 801
727Key802Key
728 803
729`mcp_oauth_credentials_store`804`features.skill_mcp_dependency_install`
730 805
731Type / Values806Type / Values
732 807
733`auto | file | keyring`808`boolean`
734 809
735Details810Details
736 811
737Preferred store for MCP OAuth credentials.812Allow prompting and installing missing MCP dependencies for skills (stable; on by default).
738 813
739Key814Key
740 815
741`mcp_servers.<id>.args`816`features.undo`
742 817
743Type / Values818Type / Values
744 819
745`array<string>`820`boolean`
746 821
747Details822Details
748 823
749Arguments passed to the MCP stdio server command.824Enable undo support (stable; off by default).
750 825
751Key826Key
752 827
753`mcp_servers.<id>.bearer_token_env_var`828`features.unified_exec`
754 829
755Type / Values830Type / Values
756 831
757`string`832`boolean`
758 833
759Details834Details
760 835
761Environment variable sourcing the bearer token for an MCP HTTP server.836Use the unified PTY-backed exec tool (stable; enabled by default except on Windows).
762 837
763Key838Key
764 839
765`mcp_servers.<id>.command`840`features.web_search`
766 841
767Type / Values842Type / Values
768 843
769`string`844`boolean`
770 845
771Details846Details
772 847
773Launcher command for an MCP stdio server.848Deprecated legacy toggle; prefer the top-level `web_search` setting.
774 849
775Key850Key
776 851
777`mcp_servers.<id>.cwd`852`features.web_search_cached`
778 853
779Type / Values854Type / Values
780 855
781`string`856`boolean`
782 857
783Details858Details
784 859
785Working directory for the MCP stdio server process.860Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "cached"`.
786 861
787Key862Key
788 863
789`mcp_servers.<id>.disabled_tools`864`features.web_search_request`
790 865
791Type / Values866Type / Values
792 867
793`array<string>`868`boolean`
794 869
795Details870Details
796 871
797Deny list applied after `enabled_tools` for the MCP server.872Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "live"`.
798 873
799Key874Key
800 875
801`mcp_servers.<id>.enabled`876`feedback.enabled`
802 877
803Type / Values878Type / Values
804 879
806 881
807Details882Details
808 883
809Disable an MCP server without removing its configuration.884Enable feedback submission via `/feedback` across Codex surfaces (default: true).
810 885
811Key886Key
812 887
813`mcp_servers.<id>.enabled_tools`888`file_opener`
814 889
815Type / Values890Type / Values
816 891
817`array<string>`892`vscode | vscode-insiders | windsurf | cursor | none`
818 893
819Details894Details
820 895
821Allow list of tool names exposed by the MCP server.896URI scheme used to open citations from Codex output (default: `vscode`).
822 897
823Key898Key
824 899
825`mcp_servers.<id>.env`900`forced_chatgpt_workspace_id`
826 901
827Type / Values902Type / Values
828 903
829`map<string,string>`904`string (uuid)`
830 905
831Details906Details
832 907
833Environment variables forwarded to the MCP stdio server.908Limit ChatGPT logins to a specific workspace identifier.
834 909
835Key910Key
836 911
837`mcp_servers.<id>.env_http_headers`912`forced_login_method`
838 913
839Type / Values914Type / Values
840 915
841`map<string,string>`916`chatgpt | api`
842 917
843Details918Details
844 919
845HTTP headers populated from environment variables for an MCP HTTP server.920Restrict Codex to a specific authentication method.
846 921
847Key922Key
848 923
849`mcp_servers.<id>.env_vars`924`hide_agent_reasoning`
850 925
851Type / Values926Type / Values
852 927
853`array<string>`928`boolean`
854 929
855Details930Details
856 931
857Additional environment variables to whitelist for an MCP stdio server.932Suppress reasoning events in both the TUI and `codex exec` output.
858 933
859Key934Key
860 935
861`mcp_servers.<id>.http_headers`936`history.max_bytes`
862 937
863Type / Values938Type / Values
864 939
865`map<string,string>`940`number`
866 941
867Details942Details
868 943
869Static HTTP headers included with each MCP HTTP request.944If set, caps the history file size in bytes by dropping oldest entries.
870 945
871Key946Key
872 947
873`mcp_servers.<id>.required`948`history.persistence`
874 949
875Type / Values950Type / Values
876 951
877`boolean`952`save-all | none`
878 953
879Details954Details
880 955
881When true, fail startup/resume if this enabled MCP server cannot initialize.956Control whether Codex saves session transcripts to history.jsonl.
882 957
883Key958Key
884 959
885`mcp_servers.<id>.startup_timeout_ms`960`instructions`
886 961
887Type / Values962Type / Values
888 963
889`number`964`string`
890 965
891Details966Details
892 967
893Alias for `startup_timeout_sec` in milliseconds.968Reserved for future use; prefer `model_instructions_file` or `AGENTS.md`.
894 969
895Key970Key
896 971
897`mcp_servers.<id>.startup_timeout_sec`972`log_dir`
898 973
899Type / Values974Type / Values
900 975
901`number`976`string (path)`
902 977
903Details978Details
904 979
905Override the default 10s startup timeout for an MCP server.980Directory where Codex writes log files (for example `codex-tui.log`); defaults to `$CODEX_HOME/log`.
906 981
907Key982Key
908 983
909`mcp_servers.<id>.tool_timeout_sec`984`mcp_oauth_callback_port`
910 985
911Type / Values986Type / Values
912 987
913`number`988`integer`
914 989
915Details990Details
916 991
917Override the default 60s per-tool timeout for an MCP server.992Optional 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.
918 993
919Key994Key
920 995
921`mcp_servers.<id>.url`996`mcp_oauth_callback_url`
922 997
923Type / Values998Type / Values
924 999
926 1001
927Details1002Details
928 1003
929Endpoint for an MCP streamable HTTP server.1004Optional redirect URI override for MCP OAuth login (for example, a devbox ingress URL). `mcp_oauth_callback_port` still controls the callback listener port.
930 1005
931Key1006Key
932 1007
933`model`1008`mcp_oauth_credentials_store`
934 1009
935Type / Values1010Type / Values
936 1011
937`string`1012`auto | file | keyring`
938 1013
939Details1014Details
940 1015
941Model to use (e.g., `gpt-5-codex`).1016Preferred store for MCP OAuth credentials.
942 1017
943Key1018Key
944 1019
945`model_auto_compact_token_limit`1020`mcp_servers.<id>.args`
946 1021
947Type / Values1022Type / Values
948 1023
949`number`1024`array<string>`
950 1025
951Details1026Details
952 1027
953Token threshold that triggers automatic history compaction (unset uses model defaults).1028Arguments passed to the MCP stdio server command.
954 1029
955Key1030Key
956 1031
957`model_context_window`1032`mcp_servers.<id>.bearer_token_env_var`
958 1033
959Type / Values1034Type / Values
960 1035
961`number`1036`string`
962 1037
963Details1038Details
964 1039
965Context window tokens available to the active model.1040Environment variable sourcing the bearer token for an MCP HTTP server.
966 1041
967Key1042Key
968 1043
969`model_instructions_file`1044`mcp_servers.<id>.command`
970 1045
971Type / Values1046Type / Values
972 1047
973`string (path)`1048`string`
974 1049
975Details1050Details
976 1051
977Replacement for built-in instructions instead of `AGENTS.md`.1052Launcher command for an MCP stdio server.
978 1053
979Key1054Key
980 1055
981`model_provider`1056`mcp_servers.<id>.cwd`
982 1057
983Type / Values1058Type / Values
984 1059
986 1061
987Details1062Details
988 1063
989Provider id from `model_providers` (default: `openai`).1064Working directory for the MCP stdio server process.
990 1065
991Key1066Key
992 1067
993`model_providers.<id>.base_url`1068`mcp_servers.<id>.disabled_tools`
994 1069
995Type / Values1070Type / Values
996 1071
997`string`1072`array<string>`
998 1073
999Details1074Details
1000 1075
1001API base URL for the model provider.1076Deny list applied after `enabled_tools` for the MCP server.
1002 1077
1003Key1078Key
1004 1079
1005`model_providers.<id>.env_http_headers`1080`mcp_servers.<id>.enabled`
1081
1082Type / Values
1083
1084`boolean`
1085
1086Details
1087
1088Disable an MCP server without removing its configuration.
1089
1090Key
1091
1092`mcp_servers.<id>.enabled_tools`
1093
1094Type / Values
1095
1096`array<string>`
1097
1098Details
1099
1100Allow list of tool names exposed by the MCP server.
1101
1102Key
1103
1104`mcp_servers.<id>.env`
1006 1105
1007Type / Values1106Type / Values
1008 1107
1010 1109
1011Details1110Details
1012 1111
1013HTTP headers populated from environment variables when present.1112Environment variables forwarded to the MCP stdio server.
1014 1113
1015Key1114Key
1016 1115
1017`model_providers.<id>.env_key`1116`mcp_servers.<id>.env_http_headers`
1117
1118Type / Values
1119
1120`map<string,string>`
1121
1122Details
1123
1124HTTP headers populated from environment variables for an MCP HTTP server.
1125
1126Key
1127
1128`mcp_servers.<id>.env_vars`
1129
1130Type / Values
1131
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`
1145
1146Details
1147
1148Experimental placement for an MCP server. `remote` starts stdio servers through a remote executor environment; streamable HTTP remote placement is not implemented.
1149
1150Key
1151
1152`mcp_servers.<id>.http_headers`
1153
1154Type / Values
1155
1156`map<string,string>`
1157
1158Details
1159
1160Static HTTP headers included with each MCP HTTP request.
1161
1162Key
1163
1164`mcp_servers.<id>.oauth_resource`
1018 1165
1019Type / Values1166Type / Values
1020 1167
1022 1169
1023Details1170Details
1024 1171
1025Environment variable supplying the provider API key.1172Optional RFC 8707 OAuth resource parameter to include during MCP login.
1026 1173
1027Key1174Key
1028 1175
1029`model_providers.<id>.env_key_instructions`1176`mcp_servers.<id>.required`
1177
1178Type / Values
1179
1180`boolean`
1181
1182Details
1183
1184When true, fail startup/resume if this enabled MCP server cannot initialize.
1185
1186Key
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
1200`mcp_servers.<id>.startup_timeout_ms`
1201
1202Type / Values
1203
1204`number`
1205
1206Details
1207
1208Alias for `startup_timeout_sec` in milliseconds.
1209
1210Key
1211
1212`mcp_servers.<id>.startup_timeout_sec`
1213
1214Type / Values
1215
1216`number`
1217
1218Details
1219
1220Override the default 10s startup timeout for an MCP server.
1221
1222Key
1223
1224`mcp_servers.<id>.tool_timeout_sec`
1225
1226Type / Values
1227
1228`number`
1229
1230Details
1231
1232Override the default 60s per-tool timeout for an MCP server.
1233
1234Key
1235
1236`mcp_servers.<id>.url`
1030 1237
1031Type / Values1238Type / Values
1032 1239
1034 1241
1035Details1242Details
1036 1243
1037Optional setup guidance for the provider API key.1244Endpoint for an MCP streamable HTTP server.
1038 1245
1039Key1246Key
1040 1247
1041`model_providers.<id>.experimental_bearer_token`1248`memories.consolidation_model`
1042 1249
1043Type / Values1250Type / Values
1044 1251
1046 1253
1047Details1254Details
1048 1255
1049Direct bearer token for the provider (discouraged; use `env_key`).1256Optional model override for global memory consolidation.
1050 1257
1051Key1258Key
1052 1259
1053`model_providers.<id>.http_headers`1260`memories.disable_on_external_context`
1054 1261
1055Type / Values1262Type / Values
1056 1263
1057`map<string,string>`1264`boolean`
1058 1265
1059Details1266Details
1060 1267
1061Static HTTP headers added to provider requests.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`.
1062 1269
1063Key1270Key
1064 1271
1065`model_providers.<id>.name`1272`memories.extract_model`
1066 1273
1067Type / Values1274Type / Values
1068 1275
1070 1277
1071Details1278Details
1072 1279
1073Display name for a custom model provider.1280Optional model override for per-thread memory extraction.
1074 1281
1075Key1282Key
1076 1283
1077`model_providers.<id>.query_params`1284`memories.generate_memories`
1078 1285
1079Type / Values1286Type / Values
1080 1287
1081`map<string,string>`1288`boolean`
1082 1289
1083Details1290Details
1084 1291
1085Extra query parameters appended to provider requests.1292When `false`, newly created threads are not stored as memory-generation inputs. Defaults to `true`.
1086 1293
1087Key1294Key
1088 1295
1089`model_providers.<id>.request_max_retries`1296`memories.max_raw_memories_for_consolidation`
1090 1297
1091Type / Values1298Type / Values
1092 1299
1094 1301
1095Details1302Details
1096 1303
1097Retry count for HTTP requests to the provider (default: 4).1304Maximum recent raw memories retained for global consolidation. Defaults to `256` and is capped at `4096`.
1098 1305
1099Key1306Key
1100 1307
1101`model_providers.<id>.requires_openai_auth`1308`memories.max_rollout_age_days`
1309
1310Type / Values
1311
1312`number`
1313
1314Details
1315
1316Maximum age of threads considered for memory generation. Defaults to `30` and is clamped to `0`-`90`.
1317
1318Key
1319
1320`memories.max_rollouts_per_startup`
1321
1322Type / Values
1323
1324`number`
1325
1326Details
1327
1328Maximum rollout candidates processed per startup pass. Defaults to `16` and is capped at `128`.
1329
1330Key
1331
1332`memories.max_unused_days`
1333
1334Type / Values
1335
1336`number`
1337
1338Details
1339
1340Maximum days since a memory was last used before it becomes ineligible for consolidation. Defaults to `30` and is clamped to `0`-`365`.
1341
1342Key
1343
1344`memories.min_rollout_idle_hours`
1345
1346Type / Values
1347
1348`number`
1349
1350Details
1351
1352Minimum idle time before a thread is considered for memory generation. Defaults to `6` and is clamped to `1`-`48`.
1353
1354Key
1355
1356`memories.use_memories`
1102 1357
1103Type / Values1358Type / Values
1104 1359
1106 1361
1107Details1362Details
1108 1363
1109The provider uses OpenAI authentication (defaults to false).1364When `false`, Codex skips injecting existing memories into future sessions. Defaults to `true`.
1110 1365
1111Key1366Key
1112 1367
1113`model_providers.<id>.stream_idle_timeout_ms`1368`model`
1369
1370Type / Values
1371
1372`string`
1373
1374Details
1375
1376Model to use (e.g., `gpt-5.4`).
1377
1378Key
1379
1380`model_auto_compact_token_limit`
1114 1381
1115Type / Values1382Type / Values
1116 1383
1118 1385
1119Details1386Details
1120 1387
1121Idle timeout for SSE streams in milliseconds (default: 300000).1388Token threshold that triggers automatic history compaction (unset uses model defaults).
1122 1389
1123Key1390Key
1124 1391
1125`model_providers.<id>.stream_max_retries`1392`model_catalog_json`
1393
1394Type / Values
1395
1396`string (path)`
1397
1398Details
1399
1400Optional path to a JSON model catalog loaded on startup. Profile-level `profiles.<name>.model_catalog_json` can override this per profile.
1401
1402Key
1403
1404`model_context_window`
1126 1405
1127Type / Values1406Type / Values
1128 1407
1130 1409
1131Details1410Details
1132 1411
1133Retry count for SSE streaming interruptions (default: 5).1412Context window tokens available to the active model.
1134 1413
1135Key1414Key
1136 1415
1137`model_providers.<id>.wire_api`1416`model_instructions_file`
1138 1417
1139Type / Values1418Type / Values
1140 1419
1141`chat | responses`1420`string (path)`
1142 1421
1143Details1422Details
1144 1423
1145Protocol used by the provider (defaults to `chat` if omitted).1424Replacement for built-in instructions instead of `AGENTS.md`.
1146 1425
1147Key1426Key
1148 1427
1149`model_reasoning_effort`1428`model_provider`
1150 1429
1151Type / Values1430Type / Values
1152 1431
1153`minimal | low | medium | high | xhigh`1432`string`
1154 1433
1155Details1434Details
1156 1435
1157Adjust reasoning effort for supported models (Responses API only; `xhigh` is model-dependent).1436Provider id from `model_providers` (default: `openai`).
1158 1437
1159Key1438Key
1160 1439
1161`model_reasoning_summary`1440`model_providers.<id>`
1162 1441
1163Type / Values1442Type / Values
1164 1443
1165`auto | concise | detailed | none`1444`table`
1166 1445
1167Details1446Details
1168 1447
1169Select reasoning summary detail or disable summaries entirely.1448Custom provider definition. Built-in provider IDs (`openai`, `ollama`, and `lmstudio`) are reserved and cannot be overridden.
1170 1449
1171Key1450Key
1172 1451
1173`model_supports_reasoning_summaries`1452`model_providers.<id>.auth`
1174 1453
1175Type / Values1454Type / Values
1176 1455
1177`boolean`1456`table`
1178 1457
1179Details1458Details
1180 1459
1181Force Codex to send or not send reasoning metadata.1460Command-backed bearer token configuration for a custom provider. Do not combine with `env_key`, `experimental_bearer_token`, or `requires_openai_auth`.
1182 1461
1183Key1462Key
1184 1463
1185`model_verbosity`1464`model_providers.<id>.auth.args`
1186 1465
1187Type / Values1466Type / Values
1188 1467
1189`low | medium | high`1468`array<string>`
1190 1469
1191Details1470Details
1192 1471
1193Control GPT-5 Responses API verbosity (defaults to `medium`).1472Arguments passed to the token command.
1194 1473
1195Key1474Key
1196 1475
1197`notice.hide_full_access_warning`1476`model_providers.<id>.auth.command`
1198 1477
1199Type / Values1478Type / Values
1200 1479
1201`boolean`1480`string`
1202 1481
1203Details1482Details
1204 1483
1205Track acknowledgement of the full access warning prompt.1484Command to run when Codex needs a bearer token. The command must print the token to stdout.
1206 1485
1207Key1486Key
1208 1487
1209`notice.hide_gpt-5.1-codex-max_migration_prompt`1488`model_providers.<id>.auth.cwd`
1210 1489
1211Type / Values1490Type / Values
1212 1491
1213`boolean`1492`string (path)`
1214 1493
1215Details1494Details
1216 1495
1217Track acknowledgement of the gpt-5.1-codex-max migration prompt.1496Working directory for the token command.
1218 1497
1219Key1498Key
1220 1499
1221`notice.hide_gpt5_1_migration_prompt`1500`model_providers.<id>.auth.refresh_interval_ms`
1222 1501
1223Type / Values1502Type / Values
1224 1503
1225`boolean`1504`number`
1226 1505
1227Details1506Details
1228 1507
1229Track acknowledgement of the GPT-5.1 migration prompt.1508How often Codex proactively refreshes the token in milliseconds (default: 300000). Set to `0` to refresh only after an authentication retry.
1230 1509
1231Key1510Key
1232 1511
1233`notice.hide_rate_limit_model_nudge`1512`model_providers.<id>.auth.timeout_ms`
1234 1513
1235Type / Values1514Type / Values
1236 1515
1237`boolean`1516`number`
1517
1518Details
1519
1520Maximum token command runtime in milliseconds (default: 5000).
1521
1522Key
1523
1524`model_providers.<id>.base_url`
1525
1526Type / Values
1527
1528`string`
1529
1530Details
1531
1532API base URL for the model provider.
1533
1534Key
1535
1536`model_providers.<id>.env_http_headers`
1537
1538Type / Values
1539
1540`map<string,string>`
1541
1542Details
1543
1544HTTP headers populated from environment variables when present.
1545
1546Key
1547
1548`model_providers.<id>.env_key`
1549
1550Type / Values
1551
1552`string`
1553
1554Details
1555
1556Environment variable supplying the provider API key.
1557
1558Key
1559
1560`model_providers.<id>.env_key_instructions`
1561
1562Type / Values
1563
1564`string`
1565
1566Details
1567
1568Optional setup guidance for the provider API key.
1569
1570Key
1571
1572`model_providers.<id>.experimental_bearer_token`
1573
1574Type / Values
1575
1576`string`
1577
1578Details
1579
1580Direct bearer token for the provider (discouraged; use `env_key`).
1581
1582Key
1583
1584`model_providers.<id>.http_headers`
1585
1586Type / Values
1587
1588`map<string,string>`
1589
1590Details
1591
1592Static HTTP headers added to provider requests.
1593
1594Key
1595
1596`model_providers.<id>.name`
1597
1598Type / Values
1599
1600`string`
1601
1602Details
1603
1604Display name for a custom model provider.
1605
1606Key
1607
1608`model_providers.<id>.query_params`
1609
1610Type / Values
1611
1612`map<string,string>`
1613
1614Details
1615
1616Extra query parameters appended to provider requests.
1617
1618Key
1619
1620`model_providers.<id>.request_max_retries`
1621
1622Type / Values
1623
1624`number`
1625
1626Details
1627
1628Retry count for HTTP requests to the provider (default: 4).
1629
1630Key
1631
1632`model_providers.<id>.requires_openai_auth`
1633
1634Type / Values
1635
1636`boolean`
1637
1638Details
1639
1640The provider uses OpenAI authentication (defaults to false).
1641
1642Key
1643
1644`model_providers.<id>.stream_idle_timeout_ms`
1645
1646Type / Values
1647
1648`number`
1649
1650Details
1651
1652Idle timeout for SSE streams in milliseconds (default: 300000).
1653
1654Key
1655
1656`model_providers.<id>.stream_max_retries`
1657
1658Type / Values
1659
1660`number`
1661
1662Details
1663
1664Retry count for SSE streaming interruptions (default: 5).
1665
1666Key
1667
1668`model_providers.<id>.supports_websockets`
1669
1670Type / Values
1671
1672`boolean`
1673
1674Details
1675
1676Whether that provider supports the Responses API WebSocket transport.
1677
1678Key
1679
1680`model_providers.<id>.wire_api`
1681
1682Type / Values
1683
1684`responses`
1685
1686Details
1687
1688Protocol used by the provider. `responses` is the only supported value, and it is the default when omitted.
1689
1690Key
1691
1692`model_reasoning_effort`
1693
1694Type / Values
1695
1696`minimal | low | medium | high | xhigh`
1697
1698Details
1699
1700Adjust reasoning effort for supported models (Responses API only; `xhigh` is model-dependent).
1701
1702Key
1703
1704`model_reasoning_summary`
1705
1706Type / Values
1707
1708`auto | concise | detailed | none`
1709
1710Details
1711
1712Select reasoning summary detail or disable summaries entirely.
1713
1714Key
1715
1716`model_supports_reasoning_summaries`
1717
1718Type / Values
1719
1720`boolean`
1721
1722Details
1723
1724Force Codex to send or not send reasoning metadata.
1725
1726Key
1727
1728`model_verbosity`
1729
1730Type / Values
1731
1732`low | medium | high`
1733
1734Details
1735
1736Optional GPT-5 Responses API verbosity override; when unset, the selected model/preset default is used.
1737
1738Key
1739
1740`notice.hide_full_access_warning`
1741
1742Type / Values
1743
1744`boolean`
1745
1746Details
1747
1748Track acknowledgement of the full access warning prompt.
1749
1750Key
1751
1752`notice.hide_gpt-5.1-codex-max_migration_prompt`
1753
1754Type / Values
1755
1756`boolean`
1757
1758Details
1759
1760Track acknowledgement of the gpt-5.1-codex-max migration prompt.
1761
1762Key
1763
1764`notice.hide_gpt5_1_migration_prompt`
1765
1766Type / Values
1767
1768`boolean`
1769
1770Details
1771
1772Track acknowledgement of the GPT-5.1 migration prompt.
1773
1774Key
1775
1776`notice.hide_rate_limit_model_nudge`
1777
1778Type / Values
1779
1780`boolean`
1781
1782Details
1783
1784Track opt-out of the rate limit model switch reminder.
1785
1786Key
1787
1788`notice.hide_world_writable_warning`
1789
1790Type / Values
1791
1792`boolean`
1793
1794Details
1795
1796Track acknowledgement of the Windows world-writable directories warning.
1797
1798Key
1799
1800`notice.model_migrations`
1801
1802Type / Values
1803
1804`map<string,string>`
1805
1806Details
1807
1808Track acknowledged model migrations as old->new mappings.
1809
1810Key
1811
1812`notify`
1813
1814Type / Values
1815
1816`array<string>`
1817
1818Details
1819
1820Command invoked for notifications; receives a JSON payload from Codex.
1821
1822Key
1823
1824`openai_base_url`
1825
1826Type / Values
1827
1828`string`
1829
1830Details
1831
1832Base URL override for the built-in `openai` model provider.
1833
1834Key
1835
1836`oss_provider`
1837
1838Type / Values
1839
1840`lmstudio | ollama`
1841
1842Details
1843
1844Default local provider used when running with `--oss` (defaults to prompting if unset).
1845
1846Key
1847
1848`otel.environment`
1849
1850Type / Values
1851
1852`string`
1853
1854Details
1855
1856Environment tag applied to emitted OpenTelemetry events (default: `dev`).
1857
1858Key
1859
1860`otel.exporter`
1861
1862Type / Values
1863
1864`none | otlp-http | otlp-grpc`
1865
1866Details
1867
1868Select the OpenTelemetry exporter and provide any endpoint metadata.
1869
1870Key
1871
1872`otel.exporter.<id>.endpoint`
1873
1874Type / Values
1875
1876`string`
1877
1878Details
1879
1880Exporter endpoint for OTEL logs.
1881
1882Key
1883
1884`otel.exporter.<id>.headers`
1885
1886Type / Values
1887
1888`map<string,string>`
1889
1890Details
1891
1892Static headers included with OTEL exporter requests.
1893
1894Key
1895
1896`otel.exporter.<id>.protocol`
1897
1898Type / Values
1899
1900`binary | json`
1901
1902Details
1903
1904Protocol used by the OTLP/HTTP exporter.
1905
1906Key
1907
1908`otel.exporter.<id>.tls.ca-certificate`
1909
1910Type / Values
1911
1912`string`
1913
1914Details
1915
1916CA certificate path for OTEL exporter TLS.
1917
1918Key
1919
1920`otel.exporter.<id>.tls.client-certificate`
1921
1922Type / Values
1923
1924`string`
1925
1926Details
1927
1928Client certificate path for OTEL exporter TLS.
1929
1930Key
1931
1932`otel.exporter.<id>.tls.client-private-key`
1933
1934Type / Values
1935
1936`string`
1937
1938Details
1939
1940Client private key path for OTEL exporter TLS.
1941
1942Key
1943
1944`otel.log_user_prompt`
1945
1946Type / Values
1947
1948`boolean`
1949
1950Details
1951
1952Opt in to exporting raw user prompts with OpenTelemetry logs.
1953
1954Key
1955
1956`otel.metrics_exporter`
1957
1958Type / Values
1959
1960`none | statsig | otlp-http | otlp-grpc`
1961
1962Details
1963
1964Select the OpenTelemetry metrics exporter (defaults to `statsig`).
1965
1966Key
1967
1968`otel.trace_exporter`
1969
1970Type / Values
1971
1972`none | otlp-http | otlp-grpc`
1973
1974Details
1975
1976Select the OpenTelemetry trace exporter and provide any endpoint metadata.
1977
1978Key
1979
1980`otel.trace_exporter.<id>.endpoint`
1981
1982Type / Values
1983
1984`string`
1985
1986Details
1987
1988Trace exporter endpoint for OTEL logs.
1989
1990Key
1991
1992`otel.trace_exporter.<id>.headers`
1993
1994Type / Values
1995
1996`map<string,string>`
1997
1998Details
1999
2000Static headers included with OTEL trace exporter requests.
2001
2002Key
2003
2004`otel.trace_exporter.<id>.protocol`
2005
2006Type / Values
2007
2008`binary | json`
2009
2010Details
2011
2012Protocol used by the OTLP/HTTP trace exporter.
2013
2014Key
2015
2016`otel.trace_exporter.<id>.tls.ca-certificate`
2017
2018Type / Values
2019
2020`string`
2021
2022Details
2023
2024CA certificate path for OTEL trace exporter TLS.
2025
2026Key
2027
2028`otel.trace_exporter.<id>.tls.client-certificate`
2029
2030Type / Values
2031
2032`string`
2033
2034Details
2035
2036Client certificate path for OTEL trace exporter TLS.
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`
2053
2054Type / Values
2055
2056`table`
2057
2058Details
2059
2060Named filesystem permission profile. Each key is an absolute path or special token such as `:minimal` or `:project_roots`.
2061
2062Key
2063
2064`permissions.<name>.filesystem.":project_roots".<subpath-or-glob>`
2065
2066Type / Values
2067
2068`"read" | "write" | "none"`
1238 2069
1239Details2070Details
1240 2071
1241Track opt-out of the rate limit model switch reminder.2072Scoped filesystem access relative to the detected project roots. Use `"."` for the root itself; glob subpaths such as `"**/*.env"` can deny reads with `"none"`.
1242 2073
1243Key2074Key
1244 2075
1245`notice.hide_world_writable_warning`2076`permissions.<name>.filesystem.<path-or-glob>`
1246 2077
1247Type / Values2078Type / Values
1248 2079
1249`boolean`2080`"read" | "write" | "none" | table`
1250 2081
1251Details2082Details
1252 2083
1253Track acknowledgement of the Windows world-writable directories warning.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.
1254 2085
1255Key2086Key
1256 2087
1257`notice.model_migrations`2088`permissions.<name>.filesystem.glob_scan_max_depth`
1258 2089
1259Type / Values2090Type / Values
1260 2091
1261`map<string,string>`2092`number`
1262 2093
1263Details2094Details
1264 2095
1265Track acknowledged model migrations as old->new mappings.2096Maximum depth for expanding deny-read glob patterns on platforms that snapshot matches before sandbox startup. Must be at least `1` when set.
1266 2097
1267Key2098Key
1268 2099
1269`notify`2100`permissions.<name>.network.allow_local_binding`
1270 2101
1271Type / Values2102Type / Values
1272 2103
1273`array<string>`2104`boolean`
1274 2105
1275Details2106Details
1276 2107
1277Command invoked for notifications; receives a JSON payload from Codex.2108Permit local bind/listen operations through the managed proxy.
1278 2109
1279Key2110Key
1280 2111
1281`oss_provider`2112`permissions.<name>.network.allow_upstream_proxy`
1282 2113
1283Type / Values2114Type / Values
1284 2115
1285`lmstudio | ollama`2116`boolean`
1286 2117
1287Details2118Details
1288 2119
1289Default local provider used when running with `--oss` (defaults to prompting if unset).2120Allow the managed proxy to chain to another upstream proxy.
1290 2121
1291Key2122Key
1292 2123
1293`otel.environment`2124`permissions.<name>.network.dangerously_allow_all_unix_sockets`
1294 2125
1295Type / Values2126Type / Values
1296 2127
1297`string`2128`boolean`
1298 2129
1299Details2130Details
1300 2131
1301Environment tag applied to emitted OpenTelemetry events (default: `dev`).2132Allow the proxy to use arbitrary Unix sockets instead of the default restricted set.
1302 2133
1303Key2134Key
1304 2135
1305`otel.exporter`2136`permissions.<name>.network.dangerously_allow_non_loopback_proxy`
1306 2137
1307Type / Values2138Type / Values
1308 2139
1309`none | otlp-http | otlp-grpc`2140`boolean`
1310 2141
1311Details2142Details
1312 2143
1313Select the OpenTelemetry exporter and provide any endpoint metadata.2144Permit non-loopback bind addresses for the managed proxy listener.
1314 2145
1315Key2146Key
1316 2147
1317`otel.exporter.<id>.endpoint`2148`permissions.<name>.network.domains`
1318 2149
1319Type / Values2150Type / Values
1320 2151
1321`string`2152`map<string, allow | deny>`
1322 2153
1323Details2154Details
1324 2155
1325Exporter endpoint for OTEL logs.2156Domain rules for the managed proxy. Use domain names or wildcard patterns as keys, with `allow` or `deny` values.
1326 2157
1327Key2158Key
1328 2159
1329`otel.exporter.<id>.headers`2160`permissions.<name>.network.enable_socks5`
1330 2161
1331Type / Values2162Type / Values
1332 2163
1333`map<string,string>`2164`boolean`
1334 2165
1335Details2166Details
1336 2167
1337Static headers included with OTEL exporter requests.2168Expose a SOCKS5 listener when this permissions profile enables the managed network proxy.
1338 2169
1339Key2170Key
1340 2171
1341`otel.exporter.<id>.protocol`2172`permissions.<name>.network.enable_socks5_udp`
1342 2173
1343Type / Values2174Type / Values
1344 2175
1345`binary | json`2176`boolean`
1346 2177
1347Details2178Details
1348 2179
1349Protocol used by the OTLP/HTTP exporter.2180Allow UDP over the SOCKS5 listener when enabled.
1350 2181
1351Key2182Key
1352 2183
1353`otel.exporter.<id>.tls.ca-certificate`2184`permissions.<name>.network.enabled`
1354 2185
1355Type / Values2186Type / Values
1356 2187
1357`string`2188`boolean`
1358 2189
1359Details2190Details
1360 2191
1361CA certificate path for OTEL exporter TLS.2192Enable network access for this named permissions profile.
1362 2193
1363Key2194Key
1364 2195
1365`otel.exporter.<id>.tls.client-certificate`2196`permissions.<name>.network.mode`
1366 2197
1367Type / Values2198Type / Values
1368 2199
1369`string`2200`limited | full`
1370 2201
1371Details2202Details
1372 2203
1373Client certificate path for OTEL exporter TLS.2204Network proxy mode used for subprocess traffic.
1374 2205
1375Key2206Key
1376 2207
1377`otel.exporter.<id>.tls.client-private-key`2208`permissions.<name>.network.proxy_url`
1378 2209
1379Type / Values2210Type / Values
1380 2211
1382 2213
1383Details2214Details
1384 2215
1385Client private key path for OTEL exporter TLS.2216HTTP proxy endpoint used when this permissions profile enables the managed network proxy.
1386 2217
1387Key2218Key
1388 2219
1389`otel.log_user_prompt`2220`permissions.<name>.network.socks_url`
1390 2221
1391Type / Values2222Type / Values
1392 2223
1393`boolean`2224`string`
1394 2225
1395Details2226Details
1396 2227
1397Opt in to exporting raw user prompts with OpenTelemetry logs.2228SOCKS5 proxy endpoint used by this permissions profile.
1398 2229
1399Key2230Key
1400 2231
1401`otel.trace_exporter`2232`permissions.<name>.network.unix_sockets`
1402 2233
1403Type / Values2234Type / Values
1404 2235
1405`none | otlp-http | otlp-grpc`2236`map<string, allow | none>`
1406 2237
1407Details2238Details
1408 2239
1409Select the OpenTelemetry trace exporter and provide any endpoint metadata.2240Unix socket rules for the managed proxy. Use socket paths as keys, with `allow` or `none` values.
1410 2241
1411Key2242Key
1412 2243
1413`otel.trace_exporter.<id>.endpoint`2244`personality`
1414 2245
1415Type / Values2246Type / Values
1416 2247
1417`string`2248`none | friendly | pragmatic`
1418 2249
1419Details2250Details
1420 2251
1421Trace exporter endpoint for OTEL logs.2252Default communication style for models that advertise `supportsPersonality`; can be overridden per thread/turn or via `/personality`.
1422 2253
1423Key2254Key
1424 2255
1425`otel.trace_exporter.<id>.headers`2256`plan_mode_reasoning_effort`
1426 2257
1427Type / Values2258Type / Values
1428 2259
1429`map<string,string>`2260`none | minimal | low | medium | high | xhigh`
1430 2261
1431Details2262Details
1432 2263
1433Static headers included with OTEL trace exporter requests.2264Plan-mode-specific reasoning override. When unset, Plan mode uses its built-in preset default.
1434 2265
1435Key2266Key
1436 2267
1437`otel.trace_exporter.<id>.protocol`2268`profile`
1438 2269
1439Type / Values2270Type / Values
1440 2271
1441`binary | json`2272`string`
1442 2273
1443Details2274Details
1444 2275
1445Protocol used by the OTLP/HTTP trace exporter.2276Default profile applied at startup (equivalent to `--profile`).
1446 2277
1447Key2278Key
1448 2279
1449`otel.trace_exporter.<id>.tls.ca-certificate`2280`profiles.<name>.*`
1450 2281
1451Type / Values2282Type / Values
1452 2283
1453`string`2284`various`
1454 2285
1455Details2286Details
1456 2287
1457CA certificate path for OTEL trace exporter TLS.2288Profile-scoped overrides for any of the supported configuration keys.
1458 2289
1459Key2290Key
1460 2291
1461`otel.trace_exporter.<id>.tls.client-certificate`2292`profiles.<name>.analytics.enabled`
1462 2293
1463Type / Values2294Type / Values
1464 2295
1465`string`2296`boolean`
1466 2297
1467Details2298Details
1468 2299
1469Client certificate path for OTEL trace exporter TLS.2300Profile-scoped analytics enablement override.
1470 2301
1471Key2302Key
1472 2303
1473`otel.trace_exporter.<id>.tls.client-private-key`2304`profiles.<name>.experimental_use_unified_exec_tool`
1474 2305
1475Type / Values2306Type / Values
1476 2307
1477`string`2308`boolean`
1478 2309
1479Details2310Details
1480 2311
1481Client private key path for OTEL trace exporter TLS.2312Legacy name for enabling unified exec; prefer `[features].unified_exec`.
1482 2313
1483Key2314Key
1484 2315
1485`personality`2316`profiles.<name>.model_catalog_json`
1486 2317
1487Type / Values2318Type / Values
1488 2319
1489`none | friendly | pragmatic`2320`string (path)`
1490 2321
1491Details2322Details
1492 2323
1493Default communication style for models that advertise `supportsPersonality`; can be overridden per thread/turn or via `/personality`.2324Profile-scoped model catalog JSON path override (applied on startup only; overrides the top-level `model_catalog_json` for that profile).
1494 2325
1495Key2326Key
1496 2327
1497`profile`2328`profiles.<name>.model_instructions_file`
1498 2329
1499Type / Values2330Type / Values
1500 2331
1501`string`2332`string (path)`
1502 2333
1503Details2334Details
1504 2335
1505Default profile applied at startup (equivalent to `--profile`).2336Profile-scoped replacement for the built-in instruction file.
1506 2337
1507Key2338Key
1508 2339
1509`profiles.<name>.*`2340`profiles.<name>.oss_provider`
1510 2341
1511Type / Values2342Type / Values
1512 2343
1513`various`2344`lmstudio | ollama`
1514 2345
1515Details2346Details
1516 2347
1517Profile-scoped overrides for any of the supported configuration keys.2348Profile-scoped OSS provider for `--oss` sessions.
1518 2349
1519Key2350Key
1520 2351
1521`profiles.<name>.experimental_use_freeform_apply_patch`2352`profiles.<name>.personality`
1522 2353
1523Type / Values2354Type / Values
1524 2355
1525`boolean`2356`none | friendly | pragmatic`
1526 2357
1527Details2358Details
1528 2359
1529Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`.2360Profile-scoped communication style override for supported models.
1530 2361
1531Key2362Key
1532 2363
1533`profiles.<name>.experimental_use_unified_exec_tool`2364`profiles.<name>.plan_mode_reasoning_effort`
1534 2365
1535Type / Values2366Type / Values
1536 2367
1537`boolean`2368`none | minimal | low | medium | high | xhigh`
1538 2369
1539Details2370Details
1540 2371
1541Legacy name for enabling unified exec; prefer `[features].unified_exec`.2372Profile-scoped Plan-mode reasoning override.
1542 2373
1543Key2374Key
1544 2375
1545`profiles.<name>.include_apply_patch_tool`2376`profiles.<name>.service_tier`
1546 2377
1547Type / Values2378Type / Values
1548 2379
1549`boolean`2380`flex | fast`
1550 2381
1551Details2382Details
1552 2383
1553Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`.2384Profile-scoped service tier preference for new turns.
1554 2385
1555Key2386Key
1556 2387
1557`profiles.<name>.oss_provider`2388`profiles.<name>.tools_view_image`
1558 2389
1559Type / Values2390Type / Values
1560 2391
1561`lmstudio | ollama`2392`boolean`
1562 2393
1563Details2394Details
1564 2395
1565Profile-scoped OSS provider for `--oss` sessions.2396Enable or disable the `view_image` tool in that profile.
1566 2397
1567Key2398Key
1568 2399
1569`profiles.<name>.personality`2400`profiles.<name>.web_search`
1570 2401
1571Type / Values2402Type / Values
1572 2403
1573`none | friendly | pragmatic`2404`disabled | cached | live`
1574 2405
1575Details2406Details
1576 2407
1577Profile-scoped communication style override for supported models.2408Profile-scoped web search mode override (default: `"cached"`).
1578 2409
1579Key2410Key
1580 2411
1581`profiles.<name>.web_search`2412`profiles.<name>.windows.sandbox`
1582 2413
1583Type / Values2414Type / Values
1584 2415
1585`disabled | cached | live`2416`unelevated | elevated`
1586 2417
1587Details2418Details
1588 2419
1589Profile-scoped web search mode override (default: `"cached"`).2420Profile-scoped Windows sandbox mode override.
1590 2421
1591Key2422Key
1592 2423
1710 2541
1711Key2542Key
1712 2543
2544`service_tier`
2545
2546Type / Values
2547
2548`flex | fast`
2549
2550Details
2551
2552Preferred service tier for new turns.
2553
2554Key
2555
1713`shell_environment_policy.exclude`2556`shell_environment_policy.exclude`
1714 2557
1715Type / Values2558Type / Values
1830 2673
1831Key2674Key
1832 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
1833`suppress_unstable_features_warning`2688`suppress_unstable_features_warning`
1834 2689
1835Type / Values2690Type / Values
1854 2709
1855Key2710Key
1856 2711
1857`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`
1858 2725
1859Type / Values2726Type / Values
1860 2727
1862 2729
1863Details2730Details
1864 2731
1865Deprecated 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.
1866 2745
1867Key2746Key
1868 2747
1902 2781
1903Key2782Key
1904 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
1905`tui.notification_method`2808`tui.notification_method`
1906 2809
1907Type / Values2810Type / Values
1910 2813
1911Details2814Details
1912 2815
1913Notification method for unfocused terminal notifications (default: auto).2816Notification method for terminal notifications (default: auto).
1914 2817
1915Key2818Key
1916 2819
1950 2853
1951Key2854Key
1952 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
1953`web_search`2880`web_search`
1954 2881
1955Type / Values2882Type / Values
1972 2899
1973Track Windows onboarding acknowledgement (Windows only).2900Track Windows onboarding acknowledgement (Windows only).
1974 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
1975Expand to view all2926Expand to view all
1976 2927
1977You 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).
1986 2937
1987## `requirements.toml`2938## `requirements.toml`
1988 2939
1989`requirements.toml` is an admin-enforced configuration file that constrains security-sensitive settings users can’t override. For details, locations, and examples, see [Admin-enforced requirements](https://developers.openai.com/codex/security#admin-enforced-requirements-requirementstoml).2940`requirements.toml` is an admin-enforced configuration file that constrains security-sensitive settings users can't override. For details, locations, and examples, see [Admin-enforced requirements](https://developers.openai.com/codex/enterprise/managed-configuration#admin-enforced-requirements-requirementstoml).
1990 2941
1991For ChatGPT Business and Enterprise users, Codex can also apply cloud-fetched2942For ChatGPT Business and Enterprise users, Codex can also apply cloud-fetched
1992requirements. See the security page for precedence details.2943requirements. See the security page for precedence details.
1993 2944
2945Use `[features]` in `requirements.toml` to pin feature flags by the same
2946canonical keys that `config.toml` uses. Omitted keys remain unconstrained.
2947
1994| Key | Type / Values | Details |2948| Key | Type / Values | Details |
1995| --- | --- | --- |2949| --- | --- | --- |
1996| `allowed_approval_policies` | `array<string>` | Allowed values for `approval\_policy`. |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` (for example `user` and `guardian_subagent`). |
1997| `allowed_sandbox_modes` | `array<string>` | Allowed values for `sandbox_mode`. |2952| `allowed_sandbox_modes` | `array<string>` | Allowed values for `sandbox_mode`. |
1998| `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. |
1999| `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. |2956| `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. |
2000| `mcp_servers.<id>.identity` | `table` | Identity rule for a single MCP server. Set either `command` (stdio) or `url` (streamable HTTP). |2957| `mcp_servers.<id>.identity` | `table` | Identity rule for a single MCP server. Set either `command` (stdio) or `url` (streamable HTTP). |
2001| `mcp_servers.<id>.identity.command` | `string` | Allow an MCP stdio server when its `mcp_servers.<id>.command` matches this command. |2958| `mcp_servers.<id>.identity.command` | `string` | Allow an MCP stdio server when its `mcp_servers.<id>.command` matches this command. |
2002| `mcp_servers.<id>.identity.url` | `string` | Allow an MCP streamable HTTP server when its `mcp_servers.<id>.url` matches this URL. |2959| `mcp_servers.<id>.identity.url` | `string` | Allow an MCP streamable HTTP server when its `mcp_servers.<id>.url` matches this URL. |
2960| `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. |
2003| `rules` | `table` | Admin-enforced command rules merged with `.rules` files. Requirements rules must be restrictive. |2961| `rules` | `table` | Admin-enforced command rules merged with `.rules` files. Requirements rules must be restrictive. |
2004| `rules.prefix_rules` | `array<table>` | List of enforced prefix rules. Each rule must include `pattern` and `decision`. |2962| `rules.prefix_rules` | `array<table>` | List of enforced prefix rules. Each rule must include `pattern` and `decision`. |
2005| `rules.prefix_rules[].decision` | `prompt | forbidden` | Required. Requirements rules can only prompt or forbid (not allow). |2963| `rules.prefix_rules[].decision` | `prompt | forbidden` | Required. Requirements rules can only prompt or forbid (not allow). |
2018 2976
2019Details2977Details
2020 2978
2021Allowed values for `approval\_policy`.2979Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `granular`).
2980
2981Key
2982
2983`allowed_approvals_reviewers`
2984
2985Type / Values
2986
2987`array<string>`
2988
2989Details
2990
2991Allowed values for `approvals_reviewer` (for example `user` and `guardian_subagent`).
2022 2992
2023Key2993Key
2024 2994
2046 3016
2047Key3017Key
2048 3018
3019`features`
3020
3021Type / Values
3022
3023`table`
3024
3025Details
3026
3027Pinned feature values keyed by the canonical names from `config.toml`'s `[features]` table.
3028
3029Key
3030
3031`features.<name>`
3032
3033Type / Values
3034
3035`boolean`
3036
3037Details
3038
3039Require a specific canonical feature key to stay enabled or disabled.
3040
3041Key
3042
2049`mcp_servers`3043`mcp_servers`
2050 3044
2051Type / Values3045Type / Values
2094 3088
2095Key3089Key
2096 3090
3091`permissions.filesystem.deny_read`
3092
3093Type / Values
3094
3095`array<string>`
3096
3097Details
3098
3099Admin-enforced filesystem read denials. Entries can be paths or glob patterns, and users cannot weaken them with local config.
3100
3101Key
3102
2097`rules`3103`rules`
2098 3104
2099Type / Values3105Type / Values