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| `apps._default.destructive_enabled` | `boolean` | Default allow/deny for app tools with `destructive_hint = true`. |
28| `apps._default.enabled` | `boolean` | Default app enabled state for all apps unless overridden per app. |
29| `apps._default.open_world_enabled` | `boolean` | Default allow/deny for app tools with `open_world_hint = true`. |
30| `apps.<id>.default_tools_approval_mode` | `auto | prompt | approve` | Default approval behavior for tools in this app unless a per-tool override exists. |
31| `apps.<id>.default_tools_enabled` | `boolean` | Default enabled state for tools in this app unless a per-tool override exists. |
32| `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). |33| `apps.<id>.enabled` | `boolean` | Enable or disable a specific app/connector by id (default: true). |
34| `apps.<id>.open_world_enabled` | `boolean` | Allow or block tools in this app that advertise `open_world_hint = true`. |
35| `apps.<id>.tools.<tool>.approval_mode` | `auto | prompt | approve` | Per-tool approval behavior override for a single app tool. |
36| `apps.<id>.tools.<tool>.enabled` | `boolean` | Per-tool enabled override for an app tool (for example `repos/list`). |
37| `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. |38| `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). |39| `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). |40| `cli_auth_credentials_store` | `file | keyring | auto` | Control where the CLI stores cached credentials (file-based auth.json vs OS keychain). |
41| `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. |42| `compact_prompt` | `string` | Inline override for the history compaction prompt. |
43| `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). |44| `developer_instructions` | `string` | Additional developer instructions injected into the session (optional). |
22| `disable_paste_burst` | `boolean` | Disable burst-paste detection in the TUI. |45| `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). |46| `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`. |47| `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). |48| `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). |49| `features.enable_request_compression` | `boolean` | Compress streaming request bodies with zstd when supported (stable; on by default). |
29| `features.child_agents_md` | `boolean` | Append AGENTS.md scope/precedence guidance even when no AGENTS.md is present (experimental). |50| `features.fast_mode` | `boolean` | Enable Fast mode selection and the `service_tier = "fast"` path (stable; on by default). |
30| `features.collaboration_modes` | `boolean` | Enable collaboration modes such as plan mode (stable; on by default). |51| `features.multi_agent` | `boolean` | Enable multi-agent collaboration tools (`spawn_agent`, `send_input`, `resume_agent`, `wait_agent`, and `close_agent`) (stable; on by default). |
31| `features.elevated_windows_sandbox` | `boolean` | Enable the elevated Windows sandbox pipeline (experimental). |
32| `features.experimental_windows_sandbox` | `boolean` | Run the Windows restricted-token sandbox (experimental). |
33| `features.multi_agent` | `boolean` | Enable multi-agent collaboration tools (`spawn\_agent`, `send\_input`, `resume\_agent`, `wait`, and `close\_agent`) (experimental; off by default). |
34| `features.personality` | `boolean` | Enable personality selection controls (stable; on by default). |52| `features.personality` | `boolean` | Enable personality selection controls (stable; on by default). |
35| `features.powershell_utf8` | `boolean` | Force PowerShell UTF-8 output (defaults to true). |53| `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). |54| `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). |55| `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). |56| `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). |57| `features.smart_approvals` | `boolean` | Route eligible approval requests through the guardian reviewer subagent (experimental; off by default). |
58| `features.undo` | `boolean` | Enable undo support (stable; off by default). |
59| `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. |60| `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"`. |61| `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"`. |62| `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. |67| `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. |68| `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. |69| `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`. |70| `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`. |71| `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. |72| `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. |
73| `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. |74| `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. |75| `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. |76| `mcp_servers.<id>.bearer_token_env_var` | `string` | Environment variable sourcing the bearer token for an MCP HTTP server. |
67| `mcp_servers.<id>.env_http_headers` | `map<string,string>` | HTTP headers populated from environment variables for an MCP HTTP server. |83| `mcp_servers.<id>.env_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. |84| `mcp_servers.<id>.env_vars` | `array<string>` | Additional environment variables to whitelist for an MCP stdio server. |
69| `mcp_servers.<id>.http_headers` | `map<string,string>` | Static HTTP headers included with each MCP HTTP request. |85| `mcp_servers.<id>.http_headers` | `map<string,string>` | Static HTTP headers included with each MCP HTTP request. |
86| `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. |87| `mcp_servers.<id>.required` | `boolean` | When true, fail startup/resume if this enabled MCP server cannot initialize. |
88| `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. |89| `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. |90| `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. |91| `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. |92| `mcp_servers.<id>.url` | `string` | Endpoint for an MCP streamable HTTP server. |
75| `model` | `string` | Model to use (e.g., `gpt-5-codex`). |93| `model` | `string` | Model to use (e.g., `gpt-5-codex`). |
76| `model_auto_compact_token_limit` | `number` | Token threshold that triggers automatic history compaction (unset uses model defaults). |94| `model_auto_compact_token_limit` | `number` | Token threshold that triggers automatic history compaction (unset uses model defaults). |
95| `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. |96| `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`. |97| `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`). |98| `model_provider` | `string` | Provider id from `model_providers` (default: `openai`). |
89| `model_providers.<id>.requires_openai_auth` | `boolean` | The provider uses OpenAI authentication (defaults to false). |108| `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). |109| `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). |110| `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). |111| `model_providers.<id>.supports_websockets` | `boolean` | Whether that provider supports the Responses API WebSocket transport. |
112| `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). |113| `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. |114| `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. |115| `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`). |116| `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. |117| `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. |118| `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. |119| `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. |121| `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. |122| `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. |123| `notify` | `array<string>` | Command invoked for notifications; receives a JSON payload from Codex. |
124| `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). |125| `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`). |126| `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. |127| `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. |132| `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. |133| `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. |134| `otel.log_user_prompt` | `boolean` | Opt in to exporting raw user prompts with OpenTelemetry logs. |
135| `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. |136| `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. |137| `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. |138| `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. |140| `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. |141| `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. |142| `otel.trace_exporter.<id>.tls.client-private-key` | `string` | Client private key path for OTEL trace exporter TLS. |
143| `permissions.<name>.filesystem` | `table` | Named filesystem permission profile. Each key is an absolute path or special token such as `:minimal` or `:project_roots`. |
144| `permissions.<name>.filesystem.":project_roots".<subpath>` | `"read" | "write" | "none"` | Scoped filesystem access relative to the detected project roots. Use `"."` for the root itself. |
145| `permissions.<name>.filesystem.<path>` | `"read" | "write" | "none" | table` | Grant direct access for a path or special token, or scope nested entries under that root. |
146| `permissions.<name>.network.allow_local_binding` | `boolean` | Permit local bind/listen operations through the managed proxy. |
147| `permissions.<name>.network.allow_unix_sockets` | `array<string>` | Allowlist of Unix socket paths permitted through the managed proxy. |
148| `permissions.<name>.network.allow_upstream_proxy` | `boolean` | Allow the managed proxy to chain to another upstream proxy. |
149| `permissions.<name>.network.allowed_domains` | `array<string>` | Allowlist of domains permitted through the managed proxy. |
150| `permissions.<name>.network.dangerously_allow_all_unix_sockets` | `boolean` | Allow the proxy to use arbitrary Unix sockets instead of the default restricted set. |
151| `permissions.<name>.network.dangerously_allow_non_loopback_proxy` | `boolean` | Permit non-loopback bind addresses for the managed proxy listener. |
152| `permissions.<name>.network.denied_domains` | `array<string>` | Denylist of domains blocked by the managed proxy. |
153| `permissions.<name>.network.enable_socks5` | `boolean` | Expose a SOCKS5 listener when this permissions profile enables the managed network proxy. |
154| `permissions.<name>.network.enable_socks5_udp` | `boolean` | Allow UDP over the SOCKS5 listener when enabled. |
155| `permissions.<name>.network.enabled` | `boolean` | Enable network access for this named permissions profile. |
156| `permissions.<name>.network.mode` | `limited | full` | Network proxy mode used for subprocess traffic. |
157| `permissions.<name>.network.proxy_url` | `string` | HTTP proxy endpoint used when this permissions profile enables the managed network proxy. |
158| `permissions.<name>.network.socks_url` | `string` | SOCKS5 proxy endpoint used by this permissions profile. |
121| `personality` | `none | friendly | pragmatic` | Default communication style for models that advertise `supportsPersonality`; can be overridden per thread/turn or via `/personality`. |159| `personality` | `none | friendly | pragmatic` | Default communication style for models that advertise `supportsPersonality`; can be overridden per thread/turn or via `/personality`. |
160| `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`). |161| `profile` | `string` | Default profile applied at startup (equivalent to `--profile`). |
123| `profiles.<name>.*` | `various` | Profile-scoped overrides for any of the supported configuration keys. |162| `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`. |163| `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`. |164| `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`. |165| `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). |
166| `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. |167| `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. |168| `profiles.<name>.personality` | `none | friendly | pragmatic` | Profile-scoped communication style override for supported models. |
169| `profiles.<name>.plan_mode_reasoning_effort` | `none | minimal | low | medium | high | xhigh` | Profile-scoped Plan-mode reasoning override. |
170| `profiles.<name>.service_tier` | `flex | fast` | Profile-scoped service tier preference for new turns. |
171| `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"`). |172| `profiles.<name>.web_search` | `disabled | cached | live` | Profile-scoped web search mode override (default: `"cached"`). |
173| `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. |174| `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. |175| `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. |176| `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. |181| `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. |182| `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"`. |183| `sandbox_workspace_write.writable_roots` | `array<string>` | Additional writable roots when `sandbox_mode = "workspace-write"`. |
184| `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. |185| `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. |186| `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. |187| `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. |192| `skills.config` | `array<object>` | Per-skill enablement overrides stored in config.toml. |
148| `skills.config.<index>.enabled` | `boolean` | Enable or disable the referenced skill. |193| `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`. |194| `skills.config.<index>.path` | `string (path)` | Path to a skill folder containing `SKILL.md`. |
195| `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. |196| `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. |197| `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. |198| `tools.view_image` | `boolean` | Enable the local-image attachment tool `view_image`. |
199| `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. |200| `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). |201| `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). |202| `tui.animations` | `boolean` | Enable terminal animations (welcome screen, shimmer, spinner) (default: true). |
203| `tui.model_availability_nux.<model>` | `integer` | Internal startup-tooltip state keyed by model slug. |
156| `tui.notification_method` | `auto | osc9 | bel` | Notification method for unfocused terminal notifications (default: auto). |204| `tui.notification_method` | `auto | osc9 | bel` | Notification method for unfocused terminal notifications (default: auto). |
157| `tui.notifications` | `boolean | array<string>` | Enable TUI notifications; optionally restrict to specific event types. |205| `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). |206| `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. |207| `tui.status_line` | `array<string> | null` | Ordered list of TUI footer status-line item identifiers. `null` disables the status line. |
208| `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. |209| `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). |210| `windows_wsl_setup_acknowledged` | `boolean` | Track Windows onboarding acknowledgement (Windows only). |
211| `windows.sandbox` | `unelevated | elevated` | Windows-only native sandbox mode when running Codex natively on Windows. |
212| `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 213
163Key214Key
164 215
186 237
187Key238Key
188 239
189`agents.max_threads`240`agents.<name>.nickname_candidates`
241
242Type / Values
243
244`array<string>`
245
246Details
247
248Optional pool of display nicknames for spawned agents in that role.
249
250Key
251
252`agents.job_max_runtime_seconds`
190 253
191Type / Values254Type / Values
192 255
194 257
195Details258Details
196 259
197Maximum number of agent threads that can be open concurrently.260Default per-worker timeout for `spawn_agents_on_csv` jobs. When unset, the tool falls back to 1800 seconds per worker.
198 261
199Key262Key
200 263
201`approval_policy`264`agents.max_depth`
202 265
203Type / Values266Type / Values
204 267
205`untrusted | on-request | never`268`number`
206 269
207Details270Details
208 271
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.272Maximum nesting depth allowed for spawned agent threads (root sessions start at depth 0; default: 1).
210 273
211Key274Key
212 275
213`apps.<id>.disabled_reason`276`agents.max_threads`
214 277
215Type / Values278Type / Values
216 279
217`unknown | user`280`number`
218 281
219Details282Details
220 283
221Optional reason attached when an app/connector is disabled.284Maximum number of agent threads that can be open concurrently. Defaults to `6` when unset.
222 285
223Key286Key
224 287
225`apps.<id>.enabled`288`allow_login_shell`
226 289
227Type / Values290Type / Values
228 291
230 293
231Details294Details
232 295
233Enable or disable a specific app/connector by id (default: true).296Allow 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.
234 297
235Key298Key
236 299
237`chatgpt_base_url`300`analytics.enabled`
238 301
239Type / Values302Type / Values
240 303
241`string`304`boolean`
242 305
243Details306Details
244 307
245Override the base URL used during the ChatGPT login flow.308Enable or disable analytics for this machine/profile. When unset, the client default applies.
246 309
247Key310Key
248 311
249`check_for_update_on_startup`312`approval_policy`
313
314Type / Values
315
316`untrusted | on-request | never | { granular = { sandbox_approval = bool, rules = bool, mcp_elicitations = bool, request_permissions = bool, skill_approval = bool } }`
317
318Details
319
320Controls 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.
321
322Key
323
324`approval_policy.granular.mcp_elicitations`
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).332When `true`, MCP elicitation prompts are allowed to surface instead of being auto-rejected.
258 333
259Key334Key
260 335
261`cli_auth_credentials_store`336`approval_policy.granular.request_permissions`
262 337
263Type / Values338Type / Values
264 339
265`file | keyring | auto`340`boolean`
266 341
267Details342Details
268 343
269Control where the CLI stores cached credentials (file-based auth.json vs OS keychain).344When `true`, prompts from the `request_permissions` tool are allowed to surface.
270 345
271Key346Key
272 347
273`compact_prompt`348`approval_policy.granular.rules`
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`, approvals triggered by execpolicy `prompt` rules are allowed to surface.
282 357
283Key358Key
284 359
285`developer_instructions`360`approval_policy.granular.sandbox_approval`
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`, sandbox escalation approval prompts are allowed to surface.
294 369
295Key370Key
296 371
297`disable_paste_burst`372`approval_policy.granular.skill_approval`
298 373
299Type / Values374Type / Values
300 375
302 377
303Details378Details
304 379
305Disable burst-paste detection in the TUI.380When `true`, skill-script approval prompts are allowed to surface.
306 381
307Key382Key
308 383
309`experimental_compact_prompt_file`384`apps._default.destructive_enabled`
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).392Default allow/deny for app tools with `destructive_hint = true`.
318 393
319Key394Key
320 395
321`experimental_use_freeform_apply_patch`396`apps._default.enabled`
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`.404Default app enabled state for all apps unless overridden per app.
330 405
331Key406Key
332 407
333`experimental_use_unified_exec_tool`408`apps._default.open_world_enabled`
334 409
335Type / Values410Type / Values
336 411
338 413
339Details414Details
340 415
341Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`.416Default allow/deny for app tools with `open_world_hint = true`.
417
418Key
419
420`apps.<id>.default_tools_approval_mode`
421
422Type / Values
423
424`auto | prompt | approve`
425
426Details
427
428Default approval behavior for tools in this app unless a per-tool override exists.
342 429
343Key430Key
344 431
345`features.apply_patch_freeform`432`apps.<id>.default_tools_enabled`
346 433
347Type / Values434Type / Values
348 435
350 437
351Details438Details
352 439
353Expose the freeform `apply_patch` tool (experimental).440Default enabled state for tools in this app unless a per-tool override exists.
354 441
355Key442Key
356 443
357`features.apps`444`apps.<id>.destructive_enabled`
358 445
359Type / Values446Type / Values
360 447
362 449
363Details450Details
364 451
365Enable ChatGPT Apps/connectors support (experimental).452Allow or block tools in this app that advertise `destructive_hint = true`.
366 453
367Key454Key
368 455
369`features.apps_mcp_gateway`456`apps.<id>.enabled`
370 457
371Type / Values458Type / Values
372 459
374 461
375Details462Details
376 463
377Route Apps MCP calls through the OpenAI connectors MCP gateway (`https://api.openai.com/v1/connectors/mcp/`) instead of legacy routing (experimental).464Enable or disable a specific app/connector by id (default: true).
378 465
379Key466Key
380 467
381`features.child_agents_md`468`apps.<id>.open_world_enabled`
382 469
383Type / Values470Type / Values
384 471
386 473
387Details474Details
388 475
389Append AGENTS.md scope/precedence guidance even when no AGENTS.md is present (experimental).476Allow or block tools in this app that advertise `open_world_hint = true`.
477
478Key
479
480`apps.<id>.tools.<tool>.approval_mode`
481
482Type / Values
483
484`auto | prompt | approve`
485
486Details
487
488Per-tool approval behavior override for a single app tool.
390 489
391Key490Key
392 491
393`features.collaboration_modes`492`apps.<id>.tools.<tool>.enabled`
394 493
395Type / Values494Type / Values
396 495
398 497
399Details498Details
400 499
401Enable collaboration modes such as plan mode (stable; on by default).500Per-tool enabled override for an app tool (for example `repos/list`).
501
502Key
503
504`background_terminal_max_timeout`
505
506Type / Values
507
508`number`
509
510Details
511
512Maximum poll window in milliseconds for empty `write_stdin` polls (background terminal polling). Default: `300000` (5 minutes). Replaces the older `background_terminal_timeout` key.
513
514Key
515
516`chatgpt_base_url`
517
518Type / Values
519
520`string`
521
522Details
523
524Override the base URL used during the ChatGPT login flow.
402 525
403Key526Key
404 527
405`features.elevated_windows_sandbox`528`check_for_update_on_startup`
406 529
407Type / Values530Type / Values
408 531
410 533
411Details534Details
412 535
413Enable the elevated Windows sandbox pipeline (experimental).536Check for Codex updates on startup (set to false only when updates are centrally managed).
537
538Key
539
540`cli_auth_credentials_store`
541
542Type / Values
543
544`file | keyring | auto`
545
546Details
547
548Control where the CLI stores cached credentials (file-based auth.json vs OS keychain).
549
550Key
551
552`commit_attribution`
553
554Type / Values
555
556`string`
557
558Details
559
560Override the commit co-author trailer text. Set an empty string to disable automatic attribution.
561
562Key
563
564`compact_prompt`
565
566Type / Values
567
568`string`
569
570Details
571
572Inline override for the history compaction prompt.
573
574Key
575
576`default_permissions`
577
578Type / Values
579
580`string`
581
582Details
583
584Name of the default permissions profile to apply to sandboxed tool calls.
414 585
415Key586Key
416 587
417`features.experimental_windows_sandbox`588`developer_instructions`
589
590Type / Values
591
592`string`
593
594Details
595
596Additional developer instructions injected into the session (optional).
597
598Key
599
600`disable_paste_burst`
418 601
419Type / Values602Type / Values
420 603
422 605
423Details606Details
424 607
425Run the Windows restricted-token sandbox (experimental).608Disable burst-paste detection in the TUI.
426 609
427Key610Key
428 611
429`features.multi_agent`612`experimental_compact_prompt_file`
613
614Type / Values
615
616`string (path)`
617
618Details
619
620Load the compaction prompt override from a file (experimental).
621
622Key
623
624`experimental_use_unified_exec_tool`
430 625
431Type / Values626Type / Values
432 627
434 629
435Details630Details
436 631
437Enable multi-agent collaboration tools (`spawn\_agent`, `send\_input`, `resume\_agent`, `wait`, and `close\_agent`) (experimental; off by default).632Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`.
438 633
439Key634Key
440 635
441`features.personality`636`features.apps`
442 637
443Type / Values638Type / Values
444 639
446 641
447Details642Details
448 643
449Enable personality selection controls (stable; on by default).644Enable ChatGPT Apps/connectors support (experimental).
450 645
451Key646Key
452 647
453`features.powershell_utf8`648`features.enable_request_compression`
454 649
455Type / Values650Type / Values
456 651
458 653
459Details654Details
460 655
461Force PowerShell UTF-8 output (defaults to true).656Compress streaming request bodies with zstd when supported (stable; on by default).
462 657
463Key658Key
464 659
465`features.remote_models`660`features.fast_mode`
466 661
467Type / Values662Type / Values
468 663
470 665
471Details666Details
472 667
473Refresh remote model list before showing readiness (experimental).668Enable Fast mode selection and the `service_tier = "fast"` path (stable; on by default).
474 669
475Key670Key
476 671
477`features.request_rule`672`features.multi_agent`
478 673
479Type / Values674Type / Values
480 675
482 677
483Details678Details
484 679
485Enable Smart approvals (`prefix_rule` suggestions on escalation requests; stable; on by default).680Enable multi-agent collaboration tools (`spawn_agent`, `send_input`, `resume_agent`, `wait_agent`, and `close_agent`) (stable; on by default).
486 681
487Key682Key
488 683
489`features.runtime_metrics`684`features.personality`
490 685
491Type / Values686Type / Values
492 687
494 689
495Details690Details
496 691
497Show runtime metrics summary in TUI turn separators (experimental).692Enable personality selection controls (stable; on by default).
498 693
499Key694Key
500 695
501`features.search_tool`696`features.prevent_idle_sleep`
502 697
503Type / Values698Type / Values
504 699
506 701
507Details702Details
508 703
509Enable `search_tool_bm25` for Apps tool discovery before invoking app MCP tools (experimental).704Prevent the machine from sleeping while a turn is actively running (experimental; off by default).
510 705
511Key706Key
512 707
518 713
519Details714Details
520 715
521Snapshot shell environment to speed up repeated commands (beta).716Snapshot shell environment to speed up repeated commands (stable; on by default).
522 717
523Key718Key
524 719
534 729
535Key730Key
536 731
537`features.unified_exec`732`features.skill_mcp_dependency_install`
733
734Type / Values
735
736`boolean`
737
738Details
739
740Allow prompting and installing missing MCP dependencies for skills (stable; on by default).
741
742Key
743
744`features.smart_approvals`
745
746Type / Values
747
748`boolean`
749
750Details
751
752Route eligible approval requests through the guardian reviewer subagent (experimental; off by default).
753
754Key
755
756`features.undo`
538 757
539Type / Values758Type / Values
540 759
542 761
543Details762Details
544 763
545Use the unified PTY-backed exec tool (beta).764Enable undo support (stable; off by default).
546 765
547Key766Key
548 767
549`features.use_linux_sandbox_bwrap`768`features.unified_exec`
550 769
551Type / Values770Type / Values
552 771
554 773
555Details774Details
556 775
557Use the bubblewrap-based Linux sandbox pipeline (experimental; off by default).776Use the unified PTY-backed exec tool (stable; enabled by default except on Windows).
558 777
559Key778Key
560 779
678 897
679Key898Key
680 899
681`include_apply_patch_tool`
682
683Type / Values
684
685`boolean`
686
687Details
688
689Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`.
690
691Key
692
693`instructions`900`instructions`
694 901
695Type / Values902Type / Values
726 933
727Key934Key
728 935
936`mcp_oauth_callback_url`
937
938Type / Values
939
940`string`
941
942Details
943
944Optional redirect URI override for MCP OAuth login (for example, a devbox ingress URL). `mcp_oauth_callback_port` still controls the callback listener port.
945
946Key
947
729`mcp_oauth_credentials_store`948`mcp_oauth_credentials_store`
730 949
731Type / Values950Type / Values
870 1089
871Key1090Key
872 1091
1092`mcp_servers.<id>.oauth_resource`
1093
1094Type / Values
1095
1096`string`
1097
1098Details
1099
1100Optional RFC 8707 OAuth resource parameter to include during MCP login.
1101
1102Key
1103
873`mcp_servers.<id>.required`1104`mcp_servers.<id>.required`
874 1105
875Type / Values1106Type / Values
882 1113
883Key1114Key
884 1115
1116`mcp_servers.<id>.scopes`
1117
1118Type / Values
1119
1120`array<string>`
1121
1122Details
1123
1124OAuth scopes to request when authenticating to that MCP server.
1125
1126Key
1127
885`mcp_servers.<id>.startup_timeout_ms`1128`mcp_servers.<id>.startup_timeout_ms`
886 1129
887Type / Values1130Type / Values
954 1197
955Key1198Key
956 1199
1200`model_catalog_json`
1201
1202Type / Values
1203
1204`string (path)`
1205
1206Details
1207
1208Optional path to a JSON model catalog loaded on startup. Profile-level `profiles.<name>.model_catalog_json` can override this per profile.
1209
1210Key
1211
957`model_context_window`1212`model_context_window`
958 1213
959Type / Values1214Type / Values
1134 1389
1135Key1390Key
1136 1391
1137`model_providers.<id>.wire_api`1392`model_providers.<id>.supports_websockets`
1138 1393
1139Type / Values1394Type / Values
1140 1395
1141`chat | responses`1396`boolean`
1142 1397
1143Details1398Details
1144 1399
1145Protocol used by the provider (defaults to `chat` if omitted).1400Whether that provider supports the Responses API WebSocket transport.
1146 1401
1147Key1402Key
1148 1403
1149`model_reasoning_effort`1404`model_providers.<id>.wire_api`
1405
1406Type / Values
1407
1408`responses`
1409
1410Details
1411
1412Protocol used by the provider. `responses` is the only supported value, and it is the default when omitted.
1413
1414Key
1415
1416`model_reasoning_effort`
1150 1417
1151Type / Values1418Type / Values
1152 1419
1190 1457
1191Details1458Details
1192 1459
1193Control GPT-5 Responses API verbosity (defaults to `medium`).1460Optional GPT-5 Responses API verbosity override; when unset, the selected model/preset default is used.
1194 1461
1195Key1462Key
1196 1463
1278 1545
1279Key1546Key
1280 1547
1548`openai_base_url`
1549
1550Type / Values
1551
1552`string`
1553
1554Details
1555
1556Base URL override for the built-in `openai` model provider.
1557
1558Key
1559
1281`oss_provider`1560`oss_provider`
1282 1561
1283Type / Values1562Type / Values
1398 1677
1399Key1678Key
1400 1679
1680`otel.metrics_exporter`
1681
1682Type / Values
1683
1684`none | statsig | otlp-http | otlp-grpc`
1685
1686Details
1687
1688Select the OpenTelemetry metrics exporter (defaults to `statsig`).
1689
1690Key
1691
1401`otel.trace_exporter`1692`otel.trace_exporter`
1402 1693
1403Type / Values1694Type / Values
1482 1773
1483Key1774Key
1484 1775
1776`permissions.<name>.filesystem`
1777
1778Type / Values
1779
1780`table`
1781
1782Details
1783
1784Named filesystem permission profile. Each key is an absolute path or special token such as `:minimal` or `:project_roots`.
1785
1786Key
1787
1788`permissions.<name>.filesystem.":project_roots".<subpath>`
1789
1790Type / Values
1791
1792`"read" | "write" | "none"`
1793
1794Details
1795
1796Scoped filesystem access relative to the detected project roots. Use `"."` for the root itself.
1797
1798Key
1799
1800`permissions.<name>.filesystem.<path>`
1801
1802Type / Values
1803
1804`"read" | "write" | "none" | table`
1805
1806Details
1807
1808Grant direct access for a path or special token, or scope nested entries under that root.
1809
1810Key
1811
1812`permissions.<name>.network.allow_local_binding`
1813
1814Type / Values
1815
1816`boolean`
1817
1818Details
1819
1820Permit local bind/listen operations through the managed proxy.
1821
1822Key
1823
1824`permissions.<name>.network.allow_unix_sockets`
1825
1826Type / Values
1827
1828`array<string>`
1829
1830Details
1831
1832Allowlist of Unix socket paths permitted through the managed proxy.
1833
1834Key
1835
1836`permissions.<name>.network.allow_upstream_proxy`
1837
1838Type / Values
1839
1840`boolean`
1841
1842Details
1843
1844Allow the managed proxy to chain to another upstream proxy.
1845
1846Key
1847
1848`permissions.<name>.network.allowed_domains`
1849
1850Type / Values
1851
1852`array<string>`
1853
1854Details
1855
1856Allowlist of domains permitted through the managed proxy.
1857
1858Key
1859
1860`permissions.<name>.network.dangerously_allow_all_unix_sockets`
1861
1862Type / Values
1863
1864`boolean`
1865
1866Details
1867
1868Allow the proxy to use arbitrary Unix sockets instead of the default restricted set.
1869
1870Key
1871
1872`permissions.<name>.network.dangerously_allow_non_loopback_proxy`
1873
1874Type / Values
1875
1876`boolean`
1877
1878Details
1879
1880Permit non-loopback bind addresses for the managed proxy listener.
1881
1882Key
1883
1884`permissions.<name>.network.denied_domains`
1885
1886Type / Values
1887
1888`array<string>`
1889
1890Details
1891
1892Denylist of domains blocked by the managed proxy.
1893
1894Key
1895
1896`permissions.<name>.network.enable_socks5`
1897
1898Type / Values
1899
1900`boolean`
1901
1902Details
1903
1904Expose a SOCKS5 listener when this permissions profile enables the managed network proxy.
1905
1906Key
1907
1908`permissions.<name>.network.enable_socks5_udp`
1909
1910Type / Values
1911
1912`boolean`
1913
1914Details
1915
1916Allow UDP over the SOCKS5 listener when enabled.
1917
1918Key
1919
1920`permissions.<name>.network.enabled`
1921
1922Type / Values
1923
1924`boolean`
1925
1926Details
1927
1928Enable network access for this named permissions profile.
1929
1930Key
1931
1932`permissions.<name>.network.mode`
1933
1934Type / Values
1935
1936`limited | full`
1937
1938Details
1939
1940Network proxy mode used for subprocess traffic.
1941
1942Key
1943
1944`permissions.<name>.network.proxy_url`
1945
1946Type / Values
1947
1948`string`
1949
1950Details
1951
1952HTTP proxy endpoint used when this permissions profile enables the managed network proxy.
1953
1954Key
1955
1956`permissions.<name>.network.socks_url`
1957
1958Type / Values
1959
1960`string`
1961
1962Details
1963
1964SOCKS5 proxy endpoint used by this permissions profile.
1965
1966Key
1967
1485`personality`1968`personality`
1486 1969
1487Type / Values1970Type / Values
1494 1977
1495Key1978Key
1496 1979
1980`plan_mode_reasoning_effort`
1981
1982Type / Values
1983
1984`none | minimal | low | medium | high | xhigh`
1985
1986Details
1987
1988Plan-mode-specific reasoning override. When unset, Plan mode uses its built-in preset default.
1989
1990Key
1991
1497`profile`1992`profile`
1498 1993
1499Type / Values1994Type / Values
1518 2013
1519Key2014Key
1520 2015
1521`profiles.<name>.experimental_use_freeform_apply_patch`2016`profiles.<name>.analytics.enabled`
1522 2017
1523Type / Values2018Type / Values
1524 2019
1526 2021
1527Details2022Details
1528 2023
1529Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`.2024Profile-scoped analytics enablement override.
1530 2025
1531Key2026Key
1532 2027
1542 2037
1543Key2038Key
1544 2039
1545`profiles.<name>.include_apply_patch_tool`2040`profiles.<name>.model_catalog_json`
1546 2041
1547Type / Values2042Type / Values
1548 2043
1549`boolean`2044`string (path)`
1550 2045
1551Details2046Details
1552 2047
1553Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`.2048Profile-scoped model catalog JSON path override (applied on startup only; overrides the top-level `model_catalog_json` for that profile).
2049
2050Key
2051
2052`profiles.<name>.model_instructions_file`
2053
2054Type / Values
2055
2056`string (path)`
2057
2058Details
2059
2060Profile-scoped replacement for the built-in instruction file.
1554 2061
1555Key2062Key
1556 2063
1578 2085
1579Key2086Key
1580 2087
2088`profiles.<name>.plan_mode_reasoning_effort`
2089
2090Type / Values
2091
2092`none | minimal | low | medium | high | xhigh`
2093
2094Details
2095
2096Profile-scoped Plan-mode reasoning override.
2097
2098Key
2099
2100`profiles.<name>.service_tier`
2101
2102Type / Values
2103
2104`flex | fast`
2105
2106Details
2107
2108Profile-scoped service tier preference for new turns.
2109
2110Key
2111
2112`profiles.<name>.tools_view_image`
2113
2114Type / Values
2115
2116`boolean`
2117
2118Details
2119
2120Enable or disable the `view_image` tool in that profile.
2121
2122Key
2123
1581`profiles.<name>.web_search`2124`profiles.<name>.web_search`
1582 2125
1583Type / Values2126Type / Values
1590 2133
1591Key2134Key
1592 2135
2136`profiles.<name>.windows.sandbox`
2137
2138Type / Values
2139
2140`unelevated | elevated`
2141
2142Details
2143
2144Profile-scoped Windows sandbox mode override.
2145
2146Key
2147
1593`project_doc_fallback_filenames`2148`project_doc_fallback_filenames`
1594 2149
1595Type / Values2150Type / Values
1710 2265
1711Key2266Key
1712 2267
2268`service_tier`
2269
2270Type / Values
2271
2272`flex | fast`
2273
2274Details
2275
2276Preferred service tier for new turns.
2277
2278Key
2279
1713`shell_environment_policy.exclude`2280`shell_environment_policy.exclude`
1714 2281
1715Type / Values2282Type / Values
1830 2397
1831Key2398Key
1832 2399
2400`sqlite_home`
2401
2402Type / Values
2403
2404`string (path)`
2405
2406Details
2407
2408Directory where Codex stores the SQLite-backed state DB used by agent jobs and other resumable runtime state.
2409
2410Key
2411
1833`suppress_unstable_features_warning`2412`suppress_unstable_features_warning`
1834 2413
1835Type / Values2414Type / Values
1854 2433
1855Key2434Key
1856 2435
1857`tools.web_search`2436`tools.view_image`
1858 2437
1859Type / Values2438Type / Values
1860 2439
1862 2441
1863Details2442Details
1864 2443
1865Deprecated legacy toggle for web search; prefer the top-level `web_search` setting.2444Enable the local-image attachment tool `view_image`.
2445
2446Key
2447
2448`tools.web_search`
2449
2450Type / Values
2451
2452`boolean | { context_size = "low|medium|high", allowed_domains = [string], location = { country, region, city, timezone } }`
2453
2454Details
2455
2456Optional 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 2457
1867Key2458Key
1868 2459
1902 2493
1903Key2494Key
1904 2495
2496`tui.model_availability_nux.<model>`
2497
2498Type / Values
2499
2500`integer`
2501
2502Details
2503
2504Internal startup-tooltip state keyed by model slug.
2505
2506Key
2507
1905`tui.notification_method`2508`tui.notification_method`
1906 2509
1907Type / Values2510Type / Values
1950 2553
1951Key2554Key
1952 2555
2556`tui.theme`
2557
2558Type / Values
2559
2560`string`
2561
2562Details
2563
2564Syntax-highlighting theme override (kebab-case theme name).
2565
2566Key
2567
1953`web_search`2568`web_search`
1954 2569
1955Type / Values2570Type / Values
1972 2587
1973Track Windows onboarding acknowledgement (Windows only).2588Track Windows onboarding acknowledgement (Windows only).
1974 2589
2590Key
2591
2592`windows.sandbox`
2593
2594Type / Values
2595
2596`unelevated | elevated`
2597
2598Details
2599
2600Windows-only native sandbox mode when running Codex natively on Windows.
2601
2602Key
2603
2604`windows.sandbox_private_desktop`
2605
2606Type / Values
2607
2608`boolean`
2609
2610Details
2611
2612Run 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.
2613
1975Expand to view all2614Expand to view all
1976 2615
1977You can find the latest JSON schema for `config.toml` [here](https://developers.openai.com/codex/config-schema.json).2616You can find the latest JSON schema for `config.toml` [here](https://developers.openai.com/codex/config-schema.json).
1986 2625
1987## `requirements.toml`2626## `requirements.toml`
1988 2627
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).2628`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 2629
1991For ChatGPT Business and Enterprise users, Codex can also apply cloud-fetched2630For ChatGPT Business and Enterprise users, Codex can also apply cloud-fetched
1992requirements. See the security page for precedence details.2631requirements. See the security page for precedence details.
1993 2632
2633Use `[features]` in `requirements.toml` to pin feature flags by the same
2634canonical keys that `config.toml` uses. Omitted keys remain unconstrained.
2635
1994| Key | Type / Values | Details |2636| Key | Type / Values | Details |
1995| --- | --- | --- |2637| --- | --- | --- |
1996| `allowed_approval_policies` | `array<string>` | Allowed values for `approval\_policy`. |2638| `allowed_approval_policies` | `array<string>` | Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `granular`). |
1997| `allowed_sandbox_modes` | `array<string>` | Allowed values for `sandbox_mode`. |2639| `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`. |2640| `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`. |
2641| `features` | `table` | Pinned feature values keyed by the canonical names from `config.toml`'s `[features]` table. |
2642| `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. |2643| `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). |2644| `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. |2645| `mcp_servers.<id>.identity.command` | `string` | Allow an MCP stdio server when its `mcp_servers.<id>.command` matches this command. |
2018 2662
2019Details2663Details
2020 2664
2021Allowed values for `approval\_policy`.2665Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `granular`).
2022 2666
2023Key2667Key
2024 2668
2046 2690
2047Key2691Key
2048 2692
2693`features`
2694
2695Type / Values
2696
2697`table`
2698
2699Details
2700
2701Pinned feature values keyed by the canonical names from `config.toml`'s `[features]` table.
2702
2703Key
2704
2705`features.<name>`
2706
2707Type / Values
2708
2709`boolean`
2710
2711Details
2712
2713Require a specific canonical feature key to stay enabled or disabled.
2714
2715Key
2716
2049`mcp_servers`2717`mcp_servers`
2050 2718
2051Type / Values2719Type / Values