18| `agents.max_threads` | `number` | Maximum number of agent threads that can be open concurrently. Defaults to `6` when unset. |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. |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. |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 | { reject = { sandbox_approval = bool, rules = bool, mcp_elicitations = bool } }` | Controls when Codex pauses for approval before executing commands. You can also use `approval_policy = { reject = { ... } }` to auto-reject specific prompt categories while keeping other prompts interactive. `on-failure` is deprecated; use `on-request` for interactive runs or `never` for non-interactive runs. |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.reject.mcp_elicitations` | `boolean` | When `true`, MCP elicitation prompts are auto-rejected instead of shown to the user. |22| `approval_policy.granular.mcp_elicitations` | `boolean` | When `true`, MCP elicitation prompts are allowed to surface instead of being auto-rejected. |
23| `approval_policy.reject.rules` | `boolean` | When `true`, approvals triggered by execpolicy `prompt` rules are auto-rejected. |23| `approval_policy.granular.request_permissions` | `boolean` | When `true`, prompts from the `request_permissions` tool are allowed to surface. |
24| `approval_policy.reject.sandbox_approval` | `boolean` | When `true`, sandbox escalation approval prompts are auto-rejected. |24| `approval_policy.granular.rules` | `boolean` | When `true`, approvals triggered by execpolicy `prompt` rules are allowed to surface. |
25| `approval_policy.granular.sandbox_approval` | `boolean` | When `true`, sandbox escalation approval prompts are allowed to surface. |
26| `approval_policy.granular.skill_approval` | `boolean` | When `true`, skill-script approval prompts are allowed to surface. |
27| `approvals_reviewer` | `user | auto_review` | Who reviews eligible approval prompts under `on-request` or granular approval policies. Defaults to `user`; `auto_review` uses the reviewer subagent. This setting doesn't change sandboxing or review actions already allowed inside the sandbox. |
25| `apps._default.destructive_enabled` | `boolean` | Default allow/deny for app tools with `destructive_hint = true`. |28| `apps._default.destructive_enabled` | `boolean` | Default allow/deny for app tools with `destructive_hint = true`. |
26| `apps._default.enabled` | `boolean` | Default app enabled state for all apps unless overridden per app. |29| `apps._default.enabled` | `boolean` | Default app enabled state for all apps unless overridden per app. |
27| `apps._default.open_world_enabled` | `boolean` | Default allow/deny for app tools with `open_world_hint = true`. |30| `apps._default.open_world_enabled` | `boolean` | Default allow/deny for app tools with `open_world_hint = true`. |
32| `apps.<id>.open_world_enabled` | `boolean` | Allow or block tools in this app that advertise `open_world_hint = true`. |35| `apps.<id>.open_world_enabled` | `boolean` | Allow or block tools in this app that advertise `open_world_hint = true`. |
33| `apps.<id>.tools.<tool>.approval_mode` | `auto | prompt | approve` | Per-tool approval behavior override for a single app tool. |36| `apps.<id>.tools.<tool>.approval_mode` | `auto | prompt | approve` | Per-tool approval behavior override for a single app tool. |
34| `apps.<id>.tools.<tool>.enabled` | `boolean` | Per-tool enabled override for an app tool (for example `repos/list`). |37| `apps.<id>.tools.<tool>.enabled` | `boolean` | Per-tool enabled override for an app tool (for example `repos/list`). |
38| `auto_review.policy` | `string` | Local Markdown policy instructions for automatic review. Managed `guardian_policy_config` takes precedence. Blank values are ignored. |
35| `background_terminal_max_timeout` | `number` | Maximum poll window in milliseconds for empty `write_stdin` polls (background terminal polling). Default: `300000` (5 minutes). Replaces the older `background_terminal_timeout` key. |39| `background_terminal_max_timeout` | `number` | Maximum poll window in milliseconds for empty `write_stdin` polls (background terminal polling). Default: `300000` (5 minutes). Replaces the older `background_terminal_timeout` key. |
36| `chatgpt_base_url` | `string` | Override the base URL used during the ChatGPT login flow. |40| `chatgpt_base_url` | `string` | Override the base URL used during the ChatGPT login flow. |
37| `check_for_update_on_startup` | `boolean` | Check for Codex updates on startup (set to false only when updates are centrally managed). |41| `check_for_update_on_startup` | `boolean` | Check for Codex updates on startup (set to false only when updates are centrally managed). |
38| `cli_auth_credentials_store` | `file | keyring | auto` | Control where the CLI stores cached credentials (file-based auth.json vs OS keychain). |42| `cli_auth_credentials_store` | `file | keyring | auto` | Control where the CLI stores cached credentials (file-based auth.json vs OS keychain). |
39| `commit_attribution` | `string` | Override the commit co-author trailer text. Set an empty string to disable automatic attribution. |43| `commit_attribution` | `string` | Override the commit co-author trailer text. Set an empty string to disable automatic attribution. |
40| `compact_prompt` | `string` | Inline override for the history compaction prompt. |44| `compact_prompt` | `string` | Inline override for the history compaction prompt. |
45| `default_permissions` | `string` | Name of the default permissions profile to apply to sandboxed tool calls. |
41| `developer_instructions` | `string` | Additional developer instructions injected into the session (optional). |46| `developer_instructions` | `string` | Additional developer instructions injected into the session (optional). |
42| `disable_paste_burst` | `boolean` | Disable burst-paste detection in the TUI. |47| `disable_paste_burst` | `boolean` | Disable burst-paste detection in the TUI. |
43| `experimental_compact_prompt_file` | `string (path)` | Load the compaction prompt override from a file (experimental). |48| `experimental_compact_prompt_file` | `string (path)` | Load the compaction prompt override from a file (experimental). |
44| `experimental_use_unified_exec_tool` | `boolean` | Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`. |49| `experimental_use_unified_exec_tool` | `boolean` | Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`. |
45| `features.apps` | `boolean` | Enable ChatGPT Apps/connectors support (experimental). |50| `features.apps` | `boolean` | Enable ChatGPT Apps/connectors support (experimental). |
46| `features.apps_mcp_gateway` | `boolean` | Route Apps MCP calls through the OpenAI connectors MCP gateway (`https://api.openai.com/v1/connectors/mcp/`) instead of legacy routing (experimental). |51| `features.codex_hooks` | `boolean` | Enable lifecycle hooks loaded from `hooks.json` or inline `[hooks]` config. |
47| `features.artifact` | `boolean` | Enable native artifact tools such as slides and spreadsheets (under development). |
48| `features.child_agents_md` | `boolean` | Append AGENTS.md scope/precedence guidance even when no AGENTS.md is present (experimental). |
49| `features.collaboration_modes` | `boolean` | Legacy toggle for collaboration modes. Plan and default modes are available in current builds without setting this key. |
50| `features.default_mode_request_user_input` | `boolean` | Allow `request_user_input` in default collaboration mode (under development; off by default). |
51| `features.elevated_windows_sandbox` | `boolean` | Legacy toggle for an earlier elevated Windows sandbox rollout. Current builds do not use it. |
52| `features.enable_request_compression` | `boolean` | Compress streaming request bodies with zstd when supported (stable; on by default). |52| `features.enable_request_compression` | `boolean` | Compress streaming request bodies with zstd when supported (stable; on by default). |
53| `features.experimental_windows_sandbox` | `boolean` | Legacy toggle for an earlier Windows sandbox rollout. Current builds do not use it. |
54| `features.fast_mode` | `boolean` | Enable Fast mode selection and the `service_tier = "fast"` path (stable; on by default). |53| `features.fast_mode` | `boolean` | Enable Fast mode selection and the `service_tier = "fast"` path (stable; on by default). |
55| `features.image_detail_original` | `boolean` | Allow image outputs with `detail = "original"` on supported models (under development). |54| `features.memories` | `boolean` | Enable [Memories](https://developers.openai.com/codex/memories) (off by default). |
56| `features.image_generation` | `boolean` | Enable the built-in image generation tool (under development). |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). |
57| `features.personality` | `boolean` | Enable personality selection controls (stable; on by default). |56| `features.personality` | `boolean` | Enable personality selection controls (stable; on by default). |
58| `features.powershell_utf8` | `boolean` | Force PowerShell UTF-8 output. Enabled by default on Windows and off elsewhere. |
59| `features.prevent_idle_sleep` | `boolean` | Prevent the machine from sleeping while a turn is actively running (experimental; off by default). |57| `features.prevent_idle_sleep` | `boolean` | Prevent the machine from sleeping while a turn is actively running (experimental; off by default). |
60| `features.remote_models` | `boolean` | Legacy toggle for an older remote-model readiness flow. Current builds do not use it. |
61| `features.request_rule` | `boolean` | Legacy toggle for Smart approvals. Current builds include this behavior by default, so most users can leave this unset. |
62| `features.responses_websockets` | `boolean` | Prefer the Responses API WebSocket transport for supported providers (under development). |
63| `features.responses_websockets_v2` | `boolean` | Enable Responses API WebSocket v2 mode (under development). |
64| `features.runtime_metrics` | `boolean` | Show runtime metrics summary in TUI turn separators (experimental). |
65| `features.search_tool` | `boolean` | Legacy toggle for an older Apps discovery flow. Current builds do not use it. |
66| `features.shell_snapshot` | `boolean` | Snapshot shell environment to speed up repeated commands (stable; on by default). |58| `features.shell_snapshot` | `boolean` | Snapshot shell environment to speed up repeated commands (stable; on by default). |
67| `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). |
68| `features.skill_env_var_dependency_prompt` | `boolean` | Prompt for missing skill environment-variable dependencies (under development). |
69| `features.skill_mcp_dependency_install` | `boolean` | Allow prompting and installing missing MCP dependencies for skills (stable; on by default). |60| `features.skill_mcp_dependency_install` | `boolean` | Allow prompting and installing missing MCP dependencies for skills (stable; on by default). |
70| `features.sqlite` | `boolean` | Enable SQLite-backed state persistence (stable; on by default). |
71| `features.steer` | `boolean` | Legacy toggle from an earlier Enter/Tab steering rollout. Current builds always use the current steering behavior. |
72| `features.undo` | `boolean` | Enable undo support (stable; off by default). |61| `features.undo` | `boolean` | Enable undo support (stable; off by default). |
73| `features.unified_exec` | `boolean` | Use the unified PTY-backed exec tool (stable; enabled by default except on Windows). |62| `features.unified_exec` | `boolean` | Use the unified PTY-backed exec tool (stable; enabled by default except on Windows). |
74| `features.use_linux_sandbox_bwrap` | `boolean` | Use the bubblewrap-based Linux sandbox pipeline (experimental; off by default). |
75| `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. |
76| `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"`. |
77| `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"`. |
82| `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. |
83| `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. |
84| `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. |
73| `hooks` | `table` | Lifecycle hooks configured inline in `config.toml`. Uses the same event schema as `hooks.json`; see the Hooks guide for examples and supported events. |
85| `instructions` | `string` | Reserved for future use; prefer `model_instructions_file` or `AGENTS.md`. |74| `instructions` | `string` | Reserved for future use; prefer `model_instructions_file` or `AGENTS.md`. |
86| `log_dir` | `string (path)` | Directory where Codex writes log files (for example `codex-tui.log`); defaults to `$CODEX_HOME/log`. |75| `log_dir` | `string (path)` | Directory where Codex writes log files (for example `codex-tui.log`); defaults to `$CODEX_HOME/log`. |
87| `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_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. |
96| `mcp_servers.<id>.enabled_tools` | `array<string>` | Allow list of tool names exposed by the MCP server. |85| `mcp_servers.<id>.enabled_tools` | `array<string>` | Allow list of tool names exposed by the MCP server. |
97| `mcp_servers.<id>.env` | `map<string,string>` | Environment variables forwarded to the MCP stdio server. |86| `mcp_servers.<id>.env` | `map<string,string>` | Environment variables forwarded to the MCP stdio server. |
98| `mcp_servers.<id>.env_http_headers` | `map<string,string>` | HTTP headers populated from environment variables for an MCP HTTP server. |87| `mcp_servers.<id>.env_http_headers` | `map<string,string>` | HTTP headers populated from environment variables for an MCP HTTP server. |
99| `mcp_servers.<id>.env_vars` | `array<string>` | Additional environment variables to whitelist for an MCP stdio server. |88| `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. |
89| `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. |
100| `mcp_servers.<id>.http_headers` | `map<string,string>` | Static HTTP headers included with each MCP HTTP request. |90| `mcp_servers.<id>.http_headers` | `map<string,string>` | Static HTTP headers included with each MCP HTTP request. |
101| `mcp_servers.<id>.oauth_resource` | `string` | Optional RFC 8707 OAuth resource parameter to include during MCP login. |91| `mcp_servers.<id>.oauth_resource` | `string` | Optional RFC 8707 OAuth resource parameter to include during MCP login. |
102| `mcp_servers.<id>.required` | `boolean` | When true, fail startup/resume if this enabled MCP server cannot initialize. |92| `mcp_servers.<id>.required` | `boolean` | When true, fail startup/resume if this enabled MCP server cannot initialize. |
105| `mcp_servers.<id>.startup_timeout_sec` | `number` | Override the default 10s startup timeout for an MCP server. |95| `mcp_servers.<id>.startup_timeout_sec` | `number` | Override the default 10s startup timeout for an MCP server. |
106| `mcp_servers.<id>.tool_timeout_sec` | `number` | Override the default 60s per-tool timeout for an MCP server. |96| `mcp_servers.<id>.tool_timeout_sec` | `number` | Override the default 60s per-tool timeout for an MCP server. |
107| `mcp_servers.<id>.url` | `string` | Endpoint for an MCP streamable HTTP server. |97| `mcp_servers.<id>.url` | `string` | Endpoint for an MCP streamable HTTP server. |
108| `model` | `string` | Model to use (e.g., `gpt-5-codex`). |98| `memories.consolidation_model` | `string` | Optional model override for global memory consolidation. |
99| `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`. |
100| `memories.extract_model` | `string` | Optional model override for per-thread memory extraction. |
101| `memories.generate_memories` | `boolean` | When `false`, newly created threads are not stored as memory-generation inputs. Defaults to `true`. |
102| `memories.max_raw_memories_for_consolidation` | `number` | Maximum recent raw memories retained for global consolidation. Defaults to `256` and is capped at `4096`. |
103| `memories.max_rollout_age_days` | `number` | Maximum age of threads considered for memory generation. Defaults to `30` and is clamped to `0`-`90`. |
104| `memories.max_rollouts_per_startup` | `number` | Maximum rollout candidates processed per startup pass. Defaults to `16` and is capped at `128`. |
105| `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`. |
106| `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`. |
107| `memories.use_memories` | `boolean` | When `false`, Codex skips injecting existing memories into future sessions. Defaults to `true`. |
108| `model` | `string` | Model to use (e.g., `gpt-5.5`). |
109| `model_auto_compact_token_limit` | `number` | Token threshold that triggers automatic history compaction (unset uses model defaults). |109| `model_auto_compact_token_limit` | `number` | Token threshold that triggers automatic history compaction (unset uses model defaults). |
110| `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. |110| `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. |
111| `model_context_window` | `number` | Context window tokens available to the active model. |111| `model_context_window` | `number` | Context window tokens available to the active model. |
112| `model_instructions_file` | `string (path)` | Replacement for built-in instructions instead of `AGENTS.md`. |112| `model_instructions_file` | `string (path)` | Replacement for built-in instructions instead of `AGENTS.md`. |
113| `model_provider` | `string` | Provider id from `model_providers` (default: `openai`). |113| `model_provider` | `string` | Provider id from `model_providers` (default: `openai`). |
114| `model_providers.<id>` | `table` | Custom provider definition. Built-in provider IDs (`openai`, `ollama`, and `lmstudio`) are reserved and cannot be overridden. |
115| `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`. |
116| `model_providers.<id>.auth.args` | `array<string>` | Arguments passed to the token command. |
117| `model_providers.<id>.auth.command` | `string` | Command to run when Codex needs a bearer token. The command must print the token to stdout. |
118| `model_providers.<id>.auth.cwd` | `string (path)` | Working directory for the token command. |
119| `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. |
120| `model_providers.<id>.auth.timeout_ms` | `number` | Maximum token command runtime in milliseconds (default: 5000). |
114| `model_providers.<id>.base_url` | `string` | API base URL for the model provider. |121| `model_providers.<id>.base_url` | `string` | API base URL for the model provider. |
115| `model_providers.<id>.env_http_headers` | `map<string,string>` | HTTP headers populated from environment variables when present. |122| `model_providers.<id>.env_http_headers` | `map<string,string>` | HTTP headers populated from environment variables when present. |
116| `model_providers.<id>.env_key` | `string` | Environment variable supplying the provider API key. |123| `model_providers.<id>.env_key` | `string` | Environment variable supplying the provider API key. |
136| `notice.hide_world_writable_warning` | `boolean` | Track acknowledgement of the Windows world-writable directories warning. |143| `notice.hide_world_writable_warning` | `boolean` | Track acknowledgement of the Windows world-writable directories warning. |
137| `notice.model_migrations` | `map<string,string>` | Track acknowledged model migrations as old->new mappings. |144| `notice.model_migrations` | `map<string,string>` | Track acknowledged model migrations as old->new mappings. |
138| `notify` | `array<string>` | Command invoked for notifications; receives a JSON payload from Codex. |145| `notify` | `array<string>` | Command invoked for notifications; receives a JSON payload from Codex. |
146| `openai_base_url` | `string` | Base URL override for the built-in `openai` model provider. |
139| `oss_provider` | `lmstudio | ollama` | Default local provider used when running with `--oss` (defaults to prompting if unset). |147| `oss_provider` | `lmstudio | ollama` | Default local provider used when running with `--oss` (defaults to prompting if unset). |
140| `otel.environment` | `string` | Environment tag applied to emitted OpenTelemetry events (default: `dev`). |148| `otel.environment` | `string` | Environment tag applied to emitted OpenTelemetry events (default: `dev`). |
141| `otel.exporter` | `none | otlp-http | otlp-grpc` | Select the OpenTelemetry exporter and provide any endpoint metadata. |149| `otel.exporter` | `none | otlp-http | otlp-grpc` | Select the OpenTelemetry exporter and provide any endpoint metadata. |
154| `otel.trace_exporter.<id>.tls.ca-certificate` | `string` | CA certificate path for OTEL trace exporter TLS. |162| `otel.trace_exporter.<id>.tls.ca-certificate` | `string` | CA certificate path for OTEL trace exporter TLS. |
155| `otel.trace_exporter.<id>.tls.client-certificate` | `string` | Client certificate path for OTEL trace exporter TLS. |163| `otel.trace_exporter.<id>.tls.client-certificate` | `string` | Client certificate path for OTEL trace exporter TLS. |
156| `otel.trace_exporter.<id>.tls.client-private-key` | `string` | Client private key path for OTEL trace exporter TLS. |164| `otel.trace_exporter.<id>.tls.client-private-key` | `string` | Client private key path for OTEL trace exporter TLS. |
157| `permissions.network.admin_url` | `string` | Admin endpoint for the managed network proxy. |165| `permissions.<name>.filesystem` | `table` | Named filesystem permission profile. Each key is an absolute path or special token such as `:minimal` or `:project_roots`. |
158| `permissions.network.allow_local_binding` | `boolean` | Permit local bind/listen operations through the managed proxy. |166| `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"`. |
159| `permissions.network.allow_unix_sockets` | `array<string>` | Allowlist of Unix socket paths permitted through the managed proxy. |167| `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. |
160| `permissions.network.allow_upstream_proxy` | `boolean` | Allow the managed proxy to chain to another upstream proxy. |168| `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. |
161| `permissions.network.allowed_domains` | `array<string>` | Allowlist of domains permitted through the managed proxy. |169| `permissions.<name>.network.allow_local_binding` | `boolean` | Permit local bind/listen operations through the managed proxy. |
162| `permissions.network.dangerously_allow_all_unix_sockets` | `boolean` | Allow the proxy to use arbitrary Unix sockets instead of the default restricted set. |170| `permissions.<name>.network.allow_upstream_proxy` | `boolean` | Allow the managed proxy to chain to another upstream proxy. |
163| `permissions.network.dangerously_allow_non_loopback_admin` | `boolean` | Permit non-loopback bind addresses for the managed proxy admin listener. |171| `permissions.<name>.network.dangerously_allow_all_unix_sockets` | `boolean` | Allow the proxy to use arbitrary Unix sockets instead of the default restricted set. |
164| `permissions.network.dangerously_allow_non_loopback_proxy` | `boolean` | Permit non-loopback bind addresses for the managed proxy listener. |172| `permissions.<name>.network.dangerously_allow_non_loopback_proxy` | `boolean` | Permit non-loopback bind addresses for the managed proxy listener. |
165| `permissions.network.denied_domains` | `array<string>` | Denylist of domains blocked by the managed proxy. |173| `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. |
166| `permissions.network.enable_socks5` | `boolean` | Expose a SOCKS5 listener from the managed network proxy. |174| `permissions.<name>.network.enable_socks5` | `boolean` | Expose a SOCKS5 listener when this permissions profile enables the managed network proxy. |
167| `permissions.network.enable_socks5_udp` | `boolean` | Allow UDP over the SOCKS5 listener when enabled. |175| `permissions.<name>.network.enable_socks5_udp` | `boolean` | Allow UDP over the SOCKS5 listener when enabled. |
168| `permissions.network.enabled` | `boolean` | Enable the managed network proxy configuration for subprocesses. |176| `permissions.<name>.network.enabled` | `boolean` | Enable network access for this named permissions profile. |
169| `permissions.network.mode` | `limited | full` | Network proxy mode used for subprocess traffic. |177| `permissions.<name>.network.mode` | `limited | full` | Network proxy mode used for subprocess traffic. |
170| `permissions.network.proxy_url` | `string` | HTTP proxy endpoint used by the managed network proxy. |178| `permissions.<name>.network.proxy_url` | `string` | HTTP proxy endpoint used when this permissions profile enables the managed network proxy. |
171| `permissions.network.socks_url` | `string` | SOCKS5 proxy endpoint used by the managed network proxy. |179| `permissions.<name>.network.socks_url` | `string` | SOCKS5 proxy endpoint used by this permissions profile. |
180| `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. |
172| `personality` | `none | friendly | pragmatic` | Default communication style for models that advertise `supportsPersonality`; can be overridden per thread/turn or via `/personality`. |181| `personality` | `none | friendly | pragmatic` | Default communication style for models that advertise `supportsPersonality`; can be overridden per thread/turn or via `/personality`. |
173| `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. |182| `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. |
174| `profile` | `string` | Default profile applied at startup (equivalent to `--profile`). |183| `profile` | `string` | Default profile applied at startup (equivalent to `--profile`). |
187| `project_doc_fallback_filenames` | `array<string>` | Additional filenames to try when `AGENTS.md` is missing. |196| `project_doc_fallback_filenames` | `array<string>` | Additional filenames to try when `AGENTS.md` is missing. |
188| `project_doc_max_bytes` | `number` | Maximum bytes read from `AGENTS.md` when building project instructions. |197| `project_doc_max_bytes` | `number` | Maximum bytes read from `AGENTS.md` when building project instructions. |
189| `project_root_markers` | `array<string>` | List of project root marker filenames; used when searching parent directories for the project root. |198| `project_root_markers` | `array<string>` | List of project root marker filenames; used when searching parent directories for the project root. |
190| `projects.<path>.trust_level` | `string` | Mark a project or worktree as trusted or untrusted (`"trusted"` | `"untrusted"`). Untrusted projects skip project-scoped `.codex/` layers. |199| `projects.<path>.trust_level` | `string` | Mark a project or worktree as trusted or untrusted (`"trusted"` | `"untrusted"`). Untrusted projects skip project-scoped `.codex/` layers, including project-local config, hooks, and rules. |
191| `review_model` | `string` | Optional model override used by `/review` (defaults to the current session model). |200| `review_model` | `string` | Optional model override used by `/review` (defaults to the current session model). |
192| `sandbox_mode` | `read-only | workspace-write | danger-full-access` | Sandbox policy for filesystem and network access during command execution. |201| `sandbox_mode` | `read-only | workspace-write | danger-full-access` | Sandbox policy for filesystem and network access during command execution. |
193| `sandbox_workspace_write.exclude_slash_tmp` | `boolean` | Exclude `/tmp` from writable roots in workspace-write mode. |202| `sandbox_workspace_write.exclude_slash_tmp` | `boolean` | Exclude `/tmp` from writable roots in workspace-write mode. |
194| `sandbox_workspace_write.exclude_tmpdir_env_var` | `boolean` | Exclude `$TMPDIR` from writable roots in workspace-write mode. |203| `sandbox_workspace_write.exclude_tmpdir_env_var` | `boolean` | Exclude `$TMPDIR` from writable roots in workspace-write mode. |
195| `sandbox_workspace_write.network_access` | `boolean` | Allow outbound network access inside the workspace-write sandbox. |204| `sandbox_workspace_write.network_access` | `boolean` | Allow outbound network access inside the workspace-write sandbox. |
196| `sandbox_workspace_write.writable_roots` | `array<string>` | Additional writable roots when `sandbox_mode = "workspace-write"`. |205| `sandbox_workspace_write.writable_roots` | `array<string>` | Additional writable roots when `sandbox_mode = "workspace-write"`. |
197| `service_tier` | `flex | fast` | Preferred service tier for new turns. `fast` is honored only when the `features.fast_mode` gate is enabled. |206| `service_tier` | `flex | fast` | Preferred service tier for new turns. |
198| `shell_environment_policy.exclude` | `array<string>` | Glob patterns for removing environment variables after the defaults. |207| `shell_environment_policy.exclude` | `array<string>` | Glob patterns for removing environment variables after the defaults. |
199| `shell_environment_policy.experimental_use_profile` | `boolean` | Use the user shell profile when spawning subprocesses. |208| `shell_environment_policy.experimental_use_profile` | `boolean` | Use the user shell profile when spawning subprocesses. |
200| `shell_environment_policy.ignore_default_excludes` | `boolean` | Keep variables containing KEY/SECRET/TOKEN before other filters run. |209| `shell_environment_policy.ignore_default_excludes` | `boolean` | Keep variables containing KEY/SECRET/TOKEN before other filters run. |
208| `sqlite_home` | `string (path)` | Directory where Codex stores the SQLite-backed state DB used by agent jobs and other resumable runtime state. |217| `sqlite_home` | `string (path)` | Directory where Codex stores the SQLite-backed state DB used by agent jobs and other resumable runtime state. |
209| `suppress_unstable_features_warning` | `boolean` | Suppress the warning that appears when under-development feature flags are enabled. |218| `suppress_unstable_features_warning` | `boolean` | Suppress the warning that appears when under-development feature flags are enabled. |
210| `tool_output_token_limit` | `number` | Token budget for storing individual tool/function outputs in history. |219| `tool_output_token_limit` | `number` | Token budget for storing individual tool/function outputs in history. |
220| `tool_suggest.discoverables` | `array<table>` | Allow tool suggestions for additional discoverable connectors or plugins. Each entry uses `type = "connector"` or `"plugin"` and an `id`. |
211| `tools.view_image` | `boolean` | Enable the local-image attachment tool `view_image`. |221| `tools.view_image` | `boolean` | Enable the local-image attachment tool `view_image`. |
212| `tools.web_search` | `boolean` | Deprecated legacy toggle for web search; prefer the top-level `web_search` setting. |222| `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. |
213| `tui` | `table` | TUI-specific options such as enabling inline desktop notifications. |223| `tui` | `table` | TUI-specific options such as enabling inline desktop notifications. |
214| `tui.alternate_screen` | `auto | always | never` | Control alternate screen usage for the TUI (default: auto; auto skips it in Zellij to preserve scrollback). |224| `tui.alternate_screen` | `auto | always | never` | Control alternate screen usage for the TUI (default: auto; auto skips it in Zellij to preserve scrollback). |
215| `tui.animations` | `boolean` | Enable terminal animations (welcome screen, shimmer, spinner) (default: true). |225| `tui.animations` | `boolean` | Enable terminal animations (welcome screen, shimmer, spinner) (default: true). |
216| `tui.model_availability_nux.<model>` | `integer` | Internal startup-tooltip state keyed by model slug. |226| `tui.model_availability_nux.<model>` | `integer` | Internal startup-tooltip state keyed by model slug. |
217| `tui.notification_method` | `auto | osc9 | bel` | Notification method for unfocused terminal notifications (default: auto). |227| `tui.notification_condition` | `unfocused | always` | Control whether TUI notifications fire only when the terminal is unfocused or regardless of focus. Defaults to `unfocused`. |
228| `tui.notification_method` | `auto | osc9 | bel` | Notification method for terminal notifications (default: auto). |
218| `tui.notifications` | `boolean | array<string>` | Enable TUI notifications; optionally restrict to specific event types. |229| `tui.notifications` | `boolean | array<string>` | Enable TUI notifications; optionally restrict to specific event types. |
219| `tui.show_tooltips` | `boolean` | Show onboarding tooltips in the TUI welcome screen (default: true). |230| `tui.show_tooltips` | `boolean` | Show onboarding tooltips in the TUI welcome screen (default: true). |
220| `tui.status_line` | `array<string> | null` | Ordered list of TUI footer status-line item identifiers. `null` disables the status line. |231| `tui.status_line` | `array<string> | null` | Ordered list of TUI footer status-line item identifiers. `null` disables the status line. |
232| `tui.terminal_title` | `array<string> | null` | Ordered list of terminal window/tab title item identifiers. Defaults to `["spinner", "project"]`; `null` disables title updates. |
221| `tui.theme` | `string` | Syntax-highlighting theme override (kebab-case theme name). |233| `tui.theme` | `string` | Syntax-highlighting theme override (kebab-case theme name). |
222| `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. |234| `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. |
223| `windows_wsl_setup_acknowledged` | `boolean` | Track Windows onboarding acknowledgement (Windows only). |235| `windows_wsl_setup_acknowledged` | `boolean` | Track Windows onboarding acknowledgement (Windows only). |
224| `windows.sandbox` | `unelevated | elevated` | Windows-only native sandbox mode when running Codex natively on Windows. |236| `windows.sandbox` | `unelevated | elevated` | Windows-only native sandbox mode when running Codex natively on Windows. |
237| `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. |
225 238
226Key239Key
227 240
325 338
326Type / Values339Type / Values
327 340
328`untrusted | on-request | never | { reject = { sandbox_approval = bool, rules = bool, mcp_elicitations = bool } }`341`untrusted | on-request | never | { granular = { sandbox_approval = bool, rules = bool, mcp_elicitations = bool, request_permissions = bool, skill_approval = bool } }`
329 342
330Details343Details
331 344
332Controls when Codex pauses for approval before executing commands. You can also use `approval_policy = { reject = { ... } }` to auto-reject specific prompt categories while keeping other prompts interactive. `on-failure` is deprecated; use `on-request` for interactive runs or `never` for non-interactive runs.345Controls 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.
333 346
334Key347Key
335 348
336`approval_policy.reject.mcp_elicitations`349`approval_policy.granular.mcp_elicitations`
337 350
338Type / Values351Type / Values
339 352
341 354
342Details355Details
343 356
344When `true`, MCP elicitation prompts are auto-rejected instead of shown to the user.357When `true`, MCP elicitation prompts are allowed to surface instead of being auto-rejected.
345 358
346Key359Key
347 360
348`approval_policy.reject.rules`361`approval_policy.granular.request_permissions`
349 362
350Type / Values363Type / Values
351 364
353 366
354Details367Details
355 368
356When `true`, approvals triggered by execpolicy `prompt` rules are auto-rejected.369When `true`, prompts from the `request_permissions` tool are allowed to surface.
357 370
358Key371Key
359 372
360`approval_policy.reject.sandbox_approval`373`approval_policy.granular.rules`
361 374
362Type / Values375Type / Values
363 376
365 378
366Details379Details
367 380
368When `true`, sandbox escalation approval prompts are auto-rejected.381When `true`, approvals triggered by execpolicy `prompt` rules are allowed to surface.
382
383Key
384
385`approval_policy.granular.sandbox_approval`
386
387Type / Values
388
389`boolean`
390
391Details
392
393When `true`, sandbox escalation approval prompts are allowed to surface.
394
395Key
396
397`approval_policy.granular.skill_approval`
398
399Type / Values
400
401`boolean`
402
403Details
404
405When `true`, skill-script approval prompts are allowed to surface.
406
407Key
408
409`approvals_reviewer`
410
411Type / Values
412
413`user | auto_review`
414
415Details
416
417Who reviews eligible approval prompts under `on-request` or granular approval policies. Defaults to `user`; `auto_review` uses the reviewer subagent. This setting doesn't change sandboxing or review actions already allowed inside the sandbox.
369 418
370Key419Key
371 420
489 538
490Key539Key
491 540
541`auto_review.policy`
542
543Type / Values
544
545`string`
546
547Details
548
549Local Markdown policy instructions for automatic review. Managed `guardian_policy_config` takes precedence. Blank values are ignored.
550
551Key
552
492`background_terminal_max_timeout`553`background_terminal_max_timeout`
493 554
494Type / Values555Type / Values
561 622
562Key623Key
563 624
625`default_permissions`
626
627Type / Values
628
629`string`
630
631Details
632
633Name of the default permissions profile to apply to sandboxed tool calls.
634
635Key
636
564`developer_instructions`637`developer_instructions`
565 638
566Type / Values639Type / Values
621 694
622Key695Key
623 696
624`features.apps_mcp_gateway`697`features.codex_hooks`
625 698
626Type / Values699Type / Values
627 700
629 702
630Details703Details
631 704
632Route Apps MCP calls through the OpenAI connectors MCP gateway (`https://api.openai.com/v1/connectors/mcp/`) instead of legacy routing (experimental).705Enable lifecycle hooks loaded from `hooks.json` or inline `[hooks]` config.
633 706
634Key707Key
635 708
636`features.artifact`709`features.enable_request_compression`
637 710
638Type / Values711Type / Values
639 712
641 714
642Details715Details
643 716
644Enable native artifact tools such as slides and spreadsheets (under development).717Compress streaming request bodies with zstd when supported (stable; on by default).
645 718
646Key719Key
647 720
648`features.child_agents_md`721`features.fast_mode`
649 722
650Type / Values723Type / Values
651 724
653 726
654Details727Details
655 728
656Append AGENTS.md scope/precedence guidance even when no AGENTS.md is present (experimental).729Enable Fast mode selection and the `service_tier = "fast"` path (stable; on by default).
657 730
658Key731Key
659 732
660`features.collaboration_modes`733`features.memories`
661 734
662Type / Values735Type / Values
663 736
665 738
666Details739Details
667 740
668Legacy toggle for collaboration modes. Plan and default modes are available in current builds without setting this key.741Enable [Memories](https://developers.openai.com/codex/memories) (off by default).
669 742
670Key743Key
671 744
672`features.default_mode_request_user_input`745`features.multi_agent`
673 746
674Type / Values747Type / Values
675 748
677 750
678Details751Details
679 752
680Allow `request_user_input` in default collaboration mode (under development; off by default).753Enable multi-agent collaboration tools (`spawn_agent`, `send_input`, `resume_agent`, `wait_agent`, and `close_agent`) (stable; on by default).
681 754
682Key755Key
683 756
684`features.elevated_windows_sandbox`757`features.personality`
685 758
686Type / Values759Type / Values
687 760
689 762
690Details763Details
691 764
692Legacy toggle for an earlier elevated Windows sandbox rollout. Current builds do not use it.765Enable personality selection controls (stable; on by default).
693 766
694Key767Key
695 768
696`features.enable_request_compression`769`features.prevent_idle_sleep`
697 770
698Type / Values771Type / Values
699 772
701 774
702Details775Details
703 776
704Compress streaming request bodies with zstd when supported (stable; on by default).777Prevent the machine from sleeping while a turn is actively running (experimental; off by default).
705 778
706Key779Key
707 780
708`features.experimental_windows_sandbox`781`features.shell_snapshot`
709 782
710Type / Values783Type / Values
711 784
713 786
714Details787Details
715 788
716Legacy toggle for an earlier Windows sandbox rollout. Current builds do not use it.789Snapshot shell environment to speed up repeated commands (stable; on by default).
717 790
718Key791Key
719 792
720`features.fast_mode`793`features.shell_tool`
721 794
722Type / Values795Type / Values
723 796
725 798
726Details799Details
727 800
728Enable Fast mode selection and the `service_tier = "fast"` path (stable; on by default).801Enable the default `shell` tool for running commands (stable; on by default).
729 802
730Key803Key
731 804
732`features.image_detail_original`805`features.skill_mcp_dependency_install`
733 806
734Type / Values807Type / Values
735 808
737 810
738Details811Details
739 812
740Allow image outputs with `detail = "original"` on supported models (under development).813Allow prompting and installing missing MCP dependencies for skills (stable; on by default).
741 814
742Key815Key
743 816
744`features.image_generation`817`features.undo`
745 818
746Type / Values819Type / Values
747 820
749 822
750Details823Details
751 824
752Enable the built-in image generation tool (under development).825Enable undo support (stable; off by default).
753 826
754Key827Key
755 828
756`features.personality`829`features.unified_exec`
757 830
758Type / Values831Type / Values
759 832
761 834
762Details835Details
763 836
764Enable personality selection controls (stable; on by default).837Use the unified PTY-backed exec tool (stable; enabled by default except on Windows).
765 838
766Key839Key
767 840
768`features.powershell_utf8`841`features.web_search`
769 842
770Type / Values843Type / Values
771 844
773 846
774Details847Details
775 848
776Force PowerShell UTF-8 output. Enabled by default on Windows and off elsewhere.849Deprecated legacy toggle; prefer the top-level `web_search` setting.
777 850
778Key851Key
779 852
780`features.prevent_idle_sleep`853`features.web_search_cached`
781 854
782Type / Values855Type / Values
783 856
785 858
786Details859Details
787 860
788Prevent the machine from sleeping while a turn is actively running (experimental; off by default).861Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "cached"`.
789 862
790Key863Key
791 864
792`features.remote_models`865`features.web_search_request`
793 866
794Type / Values867Type / Values
795 868
797 870
798Details871Details
799 872
800Legacy toggle for an older remote-model readiness flow. Current builds do not use it.873Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "live"`.
801 874
802Key875Key
803 876
804`features.request_rule`877`feedback.enabled`
805 878
806Type / Values879Type / Values
807 880
809 882
810Details883Details
811 884
812Legacy toggle for Smart approvals. Current builds include this behavior by default, so most users can leave this unset.885Enable feedback submission via `/feedback` across Codex surfaces (default: true).
813 886
814Key887Key
815 888
816`features.responses_websockets`889`file_opener`
817 890
818Type / Values891Type / Values
819 892
820`boolean`893`vscode | vscode-insiders | windsurf | cursor | none`
821 894
822Details895Details
823 896
824Prefer the Responses API WebSocket transport for supported providers (under development).897URI scheme used to open citations from Codex output (default: `vscode`).
825 898
826Key899Key
827 900
828`features.responses_websockets_v2`901`forced_chatgpt_workspace_id`
829 902
830Type / Values903Type / Values
831 904
832`boolean`905`string (uuid)`
833 906
834Details907Details
835 908
836Enable Responses API WebSocket v2 mode (under development).909Limit ChatGPT logins to a specific workspace identifier.
837 910
838Key911Key
839 912
840`features.runtime_metrics`913`forced_login_method`
841 914
842Type / Values915Type / Values
843 916
844`boolean`917`chatgpt | api`
845 918
846Details919Details
847 920
848Show runtime metrics summary in TUI turn separators (experimental).921Restrict Codex to a specific authentication method.
849 922
850Key923Key
851 924
852`features.search_tool`925`hide_agent_reasoning`
853 926
854Type / Values927Type / Values
855 928
857 930
858Details931Details
859 932
860Legacy toggle for an older Apps discovery flow. Current builds do not use it.933Suppress reasoning events in both the TUI and `codex exec` output.
861 934
862Key935Key
863 936
864`features.shell_snapshot`937`history.max_bytes`
865 938
866Type / Values939Type / Values
867 940
868`boolean`941`number`
869 942
870Details943Details
871 944
872Snapshot shell environment to speed up repeated commands (stable; on by default).945If set, caps the history file size in bytes by dropping oldest entries.
873 946
874Key947Key
875 948
876`features.shell_tool`949`history.persistence`
877 950
878Type / Values951Type / Values
879 952
880`boolean`953`save-all | none`
881 954
882Details955Details
883 956
884Enable the default `shell` tool for running commands (stable; on by default).957Control whether Codex saves session transcripts to history.jsonl.
885 958
886Key959Key
887 960
888`features.skill_env_var_dependency_prompt`961`hooks`
889 962
890Type / Values963Type / Values
891 964
892`boolean`965`table`
893 966
894Details967Details
895 968
896Prompt for missing skill environment-variable dependencies (under development).969Lifecycle hooks configured inline in `config.toml`. Uses the same event schema as `hooks.json`; see the Hooks guide for examples and supported events.
897 970
898Key971Key
899 972
900`features.skill_mcp_dependency_install`973`instructions`
901 974
902Type / Values975Type / Values
903 976
904`boolean`977`string`
905 978
906Details979Details
907 980
908Allow prompting and installing missing MCP dependencies for skills (stable; on by default).981Reserved for future use; prefer `model_instructions_file` or `AGENTS.md`.
909 982
910Key983Key
911 984
912`features.sqlite`985`log_dir`
913 986
914Type / Values987Type / Values
915 988
916`boolean`989`string (path)`
917 990
918Details991Details
919 992
920Enable SQLite-backed state persistence (stable; on by default).993Directory where Codex writes log files (for example `codex-tui.log`); defaults to `$CODEX_HOME/log`.
921 994
922Key995Key
923 996
924`features.steer`997`mcp_oauth_callback_port`
925 998
926Type / Values999Type / Values
927 1000
928`boolean`1001`integer`
929 1002
930Details1003Details
931 1004
932Legacy toggle from an earlier Enter/Tab steering rollout. Current builds always use the current steering behavior.1005Optional 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.
933 1006
934Key1007Key
935 1008
936`features.undo`1009`mcp_oauth_callback_url`
937 1010
938Type / Values1011Type / Values
939 1012
940`boolean`1013`string`
941 1014
942Details1015Details
943 1016
944Enable undo support (stable; off by default).1017Optional redirect URI override for MCP OAuth login (for example, a devbox ingress URL). `mcp_oauth_callback_port` still controls the callback listener port.
945 1018
946Key1019Key
947 1020
948`features.unified_exec`1021`mcp_oauth_credentials_store`
949 1022
950Type / Values1023Type / Values
951 1024
952`boolean`1025`auto | file | keyring`
953 1026
954Details1027Details
955 1028
956Use the unified PTY-backed exec tool (stable; enabled by default except on Windows).1029Preferred store for MCP OAuth credentials.
957 1030
958Key1031Key
959 1032
960`features.use_linux_sandbox_bwrap`1033`mcp_servers.<id>.args`
961 1034
962Type / Values1035Type / Values
963 1036
964`boolean`1037`array<string>`
965 1038
966Details1039Details
967 1040
968Use the bubblewrap-based Linux sandbox pipeline (experimental; off by default).1041Arguments passed to the MCP stdio server command.
969 1042
970Key1043Key
971 1044
972`features.web_search`1045`mcp_servers.<id>.bearer_token_env_var`
973 1046
974Type / Values1047Type / Values
975 1048
976`boolean`1049`string`
977 1050
978Details1051Details
979 1052
980Deprecated legacy toggle; prefer the top-level `web_search` setting.1053Environment variable sourcing the bearer token for an MCP HTTP server.
981 1054
982Key1055Key
983 1056
984`features.web_search_cached`1057`mcp_servers.<id>.command`
985 1058
986Type / Values1059Type / Values
987 1060
988`boolean`1061`string`
989 1062
990Details1063Details
991 1064
992Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "cached"`.1065Launcher command for an MCP stdio server.
993 1066
994Key1067Key
995 1068
996`features.web_search_request`1069`mcp_servers.<id>.cwd`
997 1070
998Type / Values1071Type / Values
999 1072
1000`boolean`1073`string`
1001 1074
1002Details1075Details
1003 1076
1004Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "live"`.1077Working directory for the MCP stdio server process.
1005 1078
1006Key1079Key
1007 1080
1008`feedback.enabled`1081`mcp_servers.<id>.disabled_tools`
1082
1083Type / Values
1084
1085`array<string>`
1086
1087Details
1088
1089Deny list applied after `enabled_tools` for the MCP server.
1090
1091Key
1092
1093`mcp_servers.<id>.enabled`
1009 1094
1010Type / Values1095Type / Values
1011 1096
1013 1098
1014Details1099Details
1015 1100
1016Enable feedback submission via `/feedback` across Codex surfaces (default: true).1101Disable an MCP server without removing its configuration.
1017 1102
1018Key1103Key
1019 1104
1020`file_opener`1105`mcp_servers.<id>.enabled_tools`
1021 1106
1022Type / Values1107Type / Values
1023 1108
1024`vscode | vscode-insiders | windsurf | cursor | none`1109`array<string>`
1025 1110
1026Details1111Details
1027 1112
1028URI scheme used to open citations from Codex output (default: `vscode`).1113Allow list of tool names exposed by the MCP server.
1029 1114
1030Key1115Key
1031 1116
1032`forced_chatgpt_workspace_id`1117`mcp_servers.<id>.env`
1033 1118
1034Type / Values1119Type / Values
1035 1120
1036`string (uuid)`1121`map<string,string>`
1037 1122
1038Details1123Details
1039 1124
1040Limit ChatGPT logins to a specific workspace identifier.1125Environment variables forwarded to the MCP stdio server.
1041 1126
1042Key1127Key
1043 1128
1044`forced_login_method`1129`mcp_servers.<id>.env_http_headers`
1045 1130
1046Type / Values1131Type / Values
1047 1132
1048`chatgpt | api`1133`map<string,string>`
1049 1134
1050Details1135Details
1051 1136
1052Restrict Codex to a specific authentication method.1137HTTP headers populated from environment variables for an MCP HTTP server.
1053 1138
1054Key1139Key
1055 1140
1056`hide_agent_reasoning`1141`mcp_servers.<id>.env_vars`
1057 1142
1058Type / Values1143Type / Values
1059 1144
1060`boolean`1145`array<string | { name = string, source = "local" | "remote" }>`
1061 1146
1062Details1147Details
1063 1148
1064Suppress reasoning events in both the TUI and `codex exec` output.1149Additional environment variables to whitelist for an MCP stdio server. String entries default to `source = "local"`; use `source = "remote"` only with executor-backed remote stdio.
1065 1150
1066Key1151Key
1067 1152
1068`history.max_bytes`1153`mcp_servers.<id>.experimental_environment`
1069 1154
1070Type / Values1155Type / Values
1071 1156
1072`number`1157`local | remote`
1073 1158
1074Details1159Details
1075 1160
1076If set, caps the history file size in bytes by dropping oldest entries.1161Experimental placement for an MCP server. `remote` starts stdio servers through a remote executor environment; streamable HTTP remote placement is not implemented.
1077 1162
1078Key1163Key
1079 1164
1080`history.persistence`1165`mcp_servers.<id>.http_headers`
1081 1166
1082Type / Values1167Type / Values
1083 1168
1084`save-all | none`1169`map<string,string>`
1085 1170
1086Details1171Details
1087 1172
1088Control whether Codex saves session transcripts to history.jsonl.1173Static HTTP headers included with each MCP HTTP request.
1089 1174
1090Key1175Key
1091 1176
1092`instructions`1177`mcp_servers.<id>.oauth_resource`
1093 1178
1094Type / Values1179Type / Values
1095 1180
1097 1182
1098Details1183Details
1099 1184
1100Reserved for future use; prefer `model_instructions_file` or `AGENTS.md`.1185Optional RFC 8707 OAuth resource parameter to include during MCP login.
1101 1186
1102Key1187Key
1103 1188
1104`log_dir`1189`mcp_servers.<id>.required`
1105 1190
1106Type / Values1191Type / Values
1107 1192
1108`string (path)`1193`boolean`
1109 1194
1110Details1195Details
1111 1196
1112Directory where Codex writes log files (for example `codex-tui.log`); defaults to `$CODEX_HOME/log`.1197When true, fail startup/resume if this enabled MCP server cannot initialize.
1113 1198
1114Key1199Key
1115 1200
1116`mcp_oauth_callback_port`1201`mcp_servers.<id>.scopes`
1117 1202
1118Type / Values1203Type / Values
1119 1204
1120`integer`1205`array<string>`
1121 1206
1122Details1207Details
1123 1208
1124Optional 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.1209OAuth scopes to request when authenticating to that MCP server.
1125 1210
1126Key1211Key
1127 1212
1128`mcp_oauth_callback_url`1213`mcp_servers.<id>.startup_timeout_ms`
1129 1214
1130Type / Values1215Type / Values
1131 1216
1132`string`1217`number`
1133 1218
1134Details1219Details
1135 1220
1136Optional redirect URI override for MCP OAuth login (for example, a devbox ingress URL). `mcp_oauth_callback_port` still controls the callback listener port.1221Alias for `startup_timeout_sec` in milliseconds.
1137 1222
1138Key1223Key
1139 1224
1140`mcp_oauth_credentials_store`1225`mcp_servers.<id>.startup_timeout_sec`
1141 1226
1142Type / Values1227Type / Values
1143 1228
1144`auto | file | keyring`1229`number`
1145 1230
1146Details1231Details
1147 1232
1148Preferred store for MCP OAuth credentials.1233Override the default 10s startup timeout for an MCP server.
1149 1234
1150Key1235Key
1151 1236
1152`mcp_servers.<id>.args`1237`mcp_servers.<id>.tool_timeout_sec`
1153 1238
1154Type / Values1239Type / Values
1155 1240
1156`array<string>`1241`number`
1157 1242
1158Details1243Details
1159 1244
1160Arguments passed to the MCP stdio server command.1245Override the default 60s per-tool timeout for an MCP server.
1161 1246
1162Key1247Key
1163 1248
1164`mcp_servers.<id>.bearer_token_env_var`1249`mcp_servers.<id>.url`
1165 1250
1166Type / Values1251Type / Values
1167 1252
1169 1254
1170Details1255Details
1171 1256
1172Environment variable sourcing the bearer token for an MCP HTTP server.1257Endpoint for an MCP streamable HTTP server.
1173 1258
1174Key1259Key
1175 1260
1176`mcp_servers.<id>.command`1261`memories.consolidation_model`
1177 1262
1178Type / Values1263Type / Values
1179 1264
1181 1266
1182Details1267Details
1183 1268
1184Launcher command for an MCP stdio server.1269Optional model override for global memory consolidation.
1185 1270
1186Key1271Key
1187 1272
1188`mcp_servers.<id>.cwd`1273`memories.disable_on_external_context`
1189 1274
1190Type / Values1275Type / Values
1191 1276
1192`string`1277`boolean`
1193 1278
1194Details1279Details
1195 1280
1196Working directory for the MCP stdio server process.1281When `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`.
1197 1282
1198Key1283Key
1199 1284
1200`mcp_servers.<id>.disabled_tools`1285`memories.extract_model`
1201 1286
1202Type / Values1287Type / Values
1203 1288
1204`array<string>`1289`string`
1205 1290
1206Details1291Details
1207 1292
1208Deny list applied after `enabled_tools` for the MCP server.1293Optional model override for per-thread memory extraction.
1209 1294
1210Key1295Key
1211 1296
1212`mcp_servers.<id>.enabled`1297`memories.generate_memories`
1213 1298
1214Type / Values1299Type / Values
1215 1300
1217 1302
1218Details1303Details
1219 1304
1220Disable an MCP server without removing its configuration.1305When `false`, newly created threads are not stored as memory-generation inputs. Defaults to `true`.
1221 1306
1222Key1307Key
1223 1308
1224`mcp_servers.<id>.enabled_tools`1309`memories.max_raw_memories_for_consolidation`
1225 1310
1226Type / Values1311Type / Values
1227 1312
1228`array<string>`1313`number`
1229 1314
1230Details1315Details
1231 1316
1232Allow list of tool names exposed by the MCP server.1317Maximum recent raw memories retained for global consolidation. Defaults to `256` and is capped at `4096`.
1233 1318
1234Key1319Key
1235 1320
1236`mcp_servers.<id>.env`1321`memories.max_rollout_age_days`
1237 1322
1238Type / Values1323Type / Values
1239 1324
1240`map<string,string>`1325`number`
1241 1326
1242Details1327Details
1243 1328
1244Environment variables forwarded to the MCP stdio server.1329Maximum age of threads considered for memory generation. Defaults to `30` and is clamped to `0`-`90`.
1245 1330
1246Key1331Key
1247 1332
1248`mcp_servers.<id>.env_http_headers`1333`memories.max_rollouts_per_startup`
1249 1334
1250Type / Values1335Type / Values
1251 1336
1252`map<string,string>`1337`number`
1253 1338
1254Details1339Details
1255 1340
1256HTTP headers populated from environment variables for an MCP HTTP server.1341Maximum rollout candidates processed per startup pass. Defaults to `16` and is capped at `128`.
1257 1342
1258Key1343Key
1259 1344
1260`mcp_servers.<id>.env_vars`1345`memories.max_unused_days`
1261 1346
1262Type / Values1347Type / Values
1263 1348
1264`array<string>`1349`number`
1265 1350
1266Details1351Details
1267 1352
1268Additional environment variables to whitelist for an MCP stdio server.1353Maximum days since a memory was last used before it becomes ineligible for consolidation. Defaults to `30` and is clamped to `0`-`365`.
1269 1354
1270Key1355Key
1271 1356
1272`mcp_servers.<id>.http_headers`1357`memories.min_rollout_idle_hours`
1273 1358
1274Type / Values1359Type / Values
1275 1360
1276`map<string,string>`1361`number`
1277 1362
1278Details1363Details
1279 1364
1280Static HTTP headers included with each MCP HTTP request.1365Minimum idle time before a thread is considered for memory generation. Defaults to `6` and is clamped to `1`-`48`.
1281 1366
1282Key1367Key
1283 1368
1284`mcp_servers.<id>.oauth_resource`1369`memories.use_memories`
1370
1371Type / Values
1372
1373`boolean`
1374
1375Details
1376
1377When `false`, Codex skips injecting existing memories into future sessions. Defaults to `true`.
1378
1379Key
1380
1381`model`
1285 1382
1286Type / Values1383Type / Values
1287 1384
1289 1386
1290Details1387Details
1291 1388
1292Optional RFC 8707 OAuth resource parameter to include during MCP login.1389Model to use (e.g., `gpt-5.5`).
1293 1390
1294Key1391Key
1295 1392
1296`mcp_servers.<id>.required`1393`model_auto_compact_token_limit`
1297 1394
1298Type / Values1395Type / Values
1299 1396
1300`boolean`1397`number`
1301 1398
1302Details1399Details
1303 1400
1304When true, fail startup/resume if this enabled MCP server cannot initialize.1401Token threshold that triggers automatic history compaction (unset uses model defaults).
1305 1402
1306Key1403Key
1307 1404
1308`mcp_servers.<id>.scopes`1405`model_catalog_json`
1309 1406
1310Type / Values1407Type / Values
1311 1408
1312`array<string>`1409`string (path)`
1313 1410
1314Details1411Details
1315 1412
1316OAuth scopes to request when authenticating to that MCP server.1413Optional path to a JSON model catalog loaded on startup. Profile-level `profiles.<name>.model_catalog_json` can override this per profile.
1317 1414
1318Key1415Key
1319 1416
1320`mcp_servers.<id>.startup_timeout_ms`1417`model_context_window`
1321 1418
1322Type / Values1419Type / Values
1323 1420
1325 1422
1326Details1423Details
1327 1424
1328Alias for `startup_timeout_sec` in milliseconds.1425Context window tokens available to the active model.
1329 1426
1330Key1427Key
1331 1428
1332`mcp_servers.<id>.startup_timeout_sec`1429`model_instructions_file`
1333 1430
1334Type / Values1431Type / Values
1335 1432
1336`number`1433`string (path)`
1337 1434
1338Details1435Details
1339 1436
1340Override the default 10s startup timeout for an MCP server.1437Replacement for built-in instructions instead of `AGENTS.md`.
1341 1438
1342Key1439Key
1343 1440
1344`mcp_servers.<id>.tool_timeout_sec`1441`model_provider`
1345 1442
1346Type / Values1443Type / Values
1347 1444
1348`number`1445`string`
1349 1446
1350Details1447Details
1351 1448
1352Override the default 60s per-tool timeout for an MCP server.1449Provider id from `model_providers` (default: `openai`).
1353 1450
1354Key1451Key
1355 1452
1356`mcp_servers.<id>.url`1453`model_providers.<id>`
1357 1454
1358Type / Values1455Type / Values
1359 1456
1360`string`1457`table`
1361 1458
1362Details1459Details
1363 1460
1364Endpoint for an MCP streamable HTTP server.1461Custom provider definition. Built-in provider IDs (`openai`, `ollama`, and `lmstudio`) are reserved and cannot be overridden.
1365 1462
1366Key1463Key
1367 1464
1368`model`1465`model_providers.<id>.auth`
1369 1466
1370Type / Values1467Type / Values
1371 1468
1372`string`1469`table`
1373 1470
1374Details1471Details
1375 1472
1376Model to use (e.g., `gpt-5-codex`).1473Command-backed bearer token configuration for a custom provider. Do not combine with `env_key`, `experimental_bearer_token`, or `requires_openai_auth`.
1377 1474
1378Key1475Key
1379 1476
1380`model_auto_compact_token_limit`1477`model_providers.<id>.auth.args`
1381 1478
1382Type / Values1479Type / Values
1383 1480
1384`number`1481`array<string>`
1385 1482
1386Details1483Details
1387 1484
1388Token threshold that triggers automatic history compaction (unset uses model defaults).1485Arguments passed to the token command.
1389 1486
1390Key1487Key
1391 1488
1392`model_catalog_json`1489`model_providers.<id>.auth.command`
1393 1490
1394Type / Values1491Type / Values
1395 1492
1396`string (path)`1493`string`
1397 1494
1398Details1495Details
1399 1496
1400Optional path to a JSON model catalog loaded on startup. Profile-level `profiles.<name>.model_catalog_json` can override this per profile.1497Command to run when Codex needs a bearer token. The command must print the token to stdout.
1401 1498
1402Key1499Key
1403 1500
1404`model_context_window`1501`model_providers.<id>.auth.cwd`
1405 1502
1406Type / Values1503Type / Values
1407 1504
1408`number`1505`string (path)`
1409 1506
1410Details1507Details
1411 1508
1412Context window tokens available to the active model.1509Working directory for the token command.
1413 1510
1414Key1511Key
1415 1512
1416`model_instructions_file`1513`model_providers.<id>.auth.refresh_interval_ms`
1417 1514
1418Type / Values1515Type / Values
1419 1516
1420`string (path)`1517`number`
1421 1518
1422Details1519Details
1423 1520
1424Replacement for built-in instructions instead of `AGENTS.md`.1521How often Codex proactively refreshes the token in milliseconds (default: 300000). Set to `0` to refresh only after an authentication retry.
1425 1522
1426Key1523Key
1427 1524
1428`model_provider`1525`model_providers.<id>.auth.timeout_ms`
1429 1526
1430Type / Values1527Type / Values
1431 1528
1432`string`1529`number`
1433 1530
1434Details1531Details
1435 1532
1436Provider id from `model_providers` (default: `openai`).1533Maximum token command runtime in milliseconds (default: 5000).
1437 1534
1438Key1535Key
1439 1536
1737 1834
1738Key1835Key
1739 1836
1837`openai_base_url`
1838
1839Type / Values
1840
1841`string`
1842
1843Details
1844
1845Base URL override for the built-in `openai` model provider.
1846
1847Key
1848
1740`oss_provider`1849`oss_provider`
1741 1850
1742Type / Values1851Type / Values
1953 2062
1954Key2063Key
1955 2064
1956`permissions.network.admin_url`2065`permissions.<name>.filesystem`
1957 2066
1958Type / Values2067Type / Values
1959 2068
1960`string`2069`table`
1961 2070
1962Details2071Details
1963 2072
1964Admin endpoint for the managed network proxy.2073Named filesystem permission profile. Each key is an absolute path or special token such as `:minimal` or `:project_roots`.
1965 2074
1966Key2075Key
1967 2076
1968`permissions.network.allow_local_binding`2077`permissions.<name>.filesystem.":project_roots".<subpath-or-glob>`
1969 2078
1970Type / Values2079Type / Values
1971 2080
1972`boolean`2081`"read" | "write" | "none"`
1973 2082
1974Details2083Details
1975 2084
1976Permit local bind/listen operations through the managed proxy.2085Scoped filesystem access relative to the detected project roots. Use `"."` for the root itself; glob subpaths such as `"**/*.env"` can deny reads with `"none"`.
1977 2086
1978Key2087Key
1979 2088
1980`permissions.network.allow_unix_sockets`2089`permissions.<name>.filesystem.<path-or-glob>`
1981 2090
1982Type / Values2091Type / Values
1983 2092
1984`array<string>`2093`"read" | "write" | "none" | table`
1985 2094
1986Details2095Details
1987 2096
1988Allowlist of Unix socket paths permitted through the managed proxy.2097Grant 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.
1989 2098
1990Key2099Key
1991 2100
1992`permissions.network.allow_upstream_proxy`2101`permissions.<name>.filesystem.glob_scan_max_depth`
1993 2102
1994Type / Values2103Type / Values
1995 2104
1996`boolean`2105`number`
1997 2106
1998Details2107Details
1999 2108
2000Allow the managed proxy to chain to another upstream proxy.2109Maximum depth for expanding deny-read glob patterns on platforms that snapshot matches before sandbox startup. Must be at least `1` when set.
2001 2110
2002Key2111Key
2003 2112
2004`permissions.network.allowed_domains`2113`permissions.<name>.network.allow_local_binding`
2005 2114
2006Type / Values2115Type / Values
2007 2116
2008`array<string>`2117`boolean`
2009 2118
2010Details2119Details
2011 2120
2012Allowlist of domains permitted through the managed proxy.2121Permit local bind/listen operations through the managed proxy.
2013 2122
2014Key2123Key
2015 2124
2016`permissions.network.dangerously_allow_all_unix_sockets`2125`permissions.<name>.network.allow_upstream_proxy`
2017 2126
2018Type / Values2127Type / Values
2019 2128
2021 2130
2022Details2131Details
2023 2132
2024Allow the proxy to use arbitrary Unix sockets instead of the default restricted set.2133Allow the managed proxy to chain to another upstream proxy.
2025 2134
2026Key2135Key
2027 2136
2028`permissions.network.dangerously_allow_non_loopback_admin`2137`permissions.<name>.network.dangerously_allow_all_unix_sockets`
2029 2138
2030Type / Values2139Type / Values
2031 2140
2033 2142
2034Details2143Details
2035 2144
2036Permit non-loopback bind addresses for the managed proxy admin listener.2145Allow the proxy to use arbitrary Unix sockets instead of the default restricted set.
2037 2146
2038Key2147Key
2039 2148
2040`permissions.network.dangerously_allow_non_loopback_proxy`2149`permissions.<name>.network.dangerously_allow_non_loopback_proxy`
2041 2150
2042Type / Values2151Type / Values
2043 2152
2049 2158
2050Key2159Key
2051 2160
2052`permissions.network.denied_domains`2161`permissions.<name>.network.domains`
2053 2162
2054Type / Values2163Type / Values
2055 2164
2056`array<string>`2165`map<string, allow | deny>`
2057 2166
2058Details2167Details
2059 2168
2060Denylist of domains blocked by the managed proxy.2169Domain rules for the managed proxy. Use domain names or wildcard patterns as keys, with `allow` or `deny` values.
2061 2170
2062Key2171Key
2063 2172
2064`permissions.network.enable_socks5`2173`permissions.<name>.network.enable_socks5`
2065 2174
2066Type / Values2175Type / Values
2067 2176
2069 2178
2070Details2179Details
2071 2180
2072Expose a SOCKS5 listener from the managed network proxy.2181Expose a SOCKS5 listener when this permissions profile enables the managed network proxy.
2073 2182
2074Key2183Key
2075 2184
2076`permissions.network.enable_socks5_udp`2185`permissions.<name>.network.enable_socks5_udp`
2077 2186
2078Type / Values2187Type / Values
2079 2188
2085 2194
2086Key2195Key
2087 2196
2088`permissions.network.enabled`2197`permissions.<name>.network.enabled`
2089 2198
2090Type / Values2199Type / Values
2091 2200
2093 2202
2094Details2203Details
2095 2204
2096Enable the managed network proxy configuration for subprocesses.2205Enable network access for this named permissions profile.
2097 2206
2098Key2207Key
2099 2208
2100`permissions.network.mode`2209`permissions.<name>.network.mode`
2101 2210
2102Type / Values2211Type / Values
2103 2212
2109 2218
2110Key2219Key
2111 2220
2112`permissions.network.proxy_url`2221`permissions.<name>.network.proxy_url`
2113 2222
2114Type / Values2223Type / Values
2115 2224
2117 2226
2118Details2227Details
2119 2228
2120HTTP proxy endpoint used by the managed network proxy.2229HTTP proxy endpoint used when this permissions profile enables the managed network proxy.
2121 2230
2122Key2231Key
2123 2232
2124`permissions.network.socks_url`2233`permissions.<name>.network.socks_url`
2125 2234
2126Type / Values2235Type / Values
2127 2236
2129 2238
2130Details2239Details
2131 2240
2132SOCKS5 proxy endpoint used by the managed network proxy.2241SOCKS5 proxy endpoint used by this permissions profile.
2242
2243Key
2244
2245`permissions.<name>.network.unix_sockets`
2246
2247Type / Values
2248
2249`map<string, allow | none>`
2250
2251Details
2252
2253Unix socket rules for the managed proxy. Use socket paths as keys, with `allow` or `none` values.
2133 2254
2134Key2255Key
2135 2256
2357 2478
2358Details2479Details
2359 2480
2360Mark a project or worktree as trusted or untrusted (`"trusted"` | `"untrusted"`). Untrusted projects skip project-scoped `.codex/` layers.2481Mark a project or worktree as trusted or untrusted (`"trusted"` | `"untrusted"`). Untrusted projects skip project-scoped `.codex/` layers, including project-local config, hooks, and rules.
2361 2482
2362Key2483Key
2363 2484
2441 2562
2442Details2563Details
2443 2564
2444Preferred service tier for new turns. `fast` is honored only when the `features.fast_mode` gate is enabled.2565Preferred service tier for new turns.
2445 2566
2446Key2567Key
2447 2568
2601 2722
2602Key2723Key
2603 2724
2725`tool_suggest.discoverables`
2726
2727Type / Values
2728
2729`array<table>`
2730
2731Details
2732
2733Allow tool suggestions for additional discoverable connectors or plugins. Each entry uses `type = "connector"` or `"plugin"` and an `id`.
2734
2735Key
2736
2604`tools.view_image`2737`tools.view_image`
2605 2738
2606Type / Values2739Type / Values
2617 2750
2618Type / Values2751Type / Values
2619 2752
2620`boolean`2753`boolean | { context_size = "low|medium|high", allowed_domains = [string], location = { country, region, city, timezone } }`
2621 2754
2622Details2755Details
2623 2756
2624Deprecated legacy toggle for web search; prefer the top-level `web_search` setting.2757Optional 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.
2625 2758
2626Key2759Key
2627 2760
2673 2806
2674Key2807Key
2675 2808
2809`tui.notification_condition`
2810
2811Type / Values
2812
2813`unfocused | always`
2814
2815Details
2816
2817Control whether TUI notifications fire only when the terminal is unfocused or regardless of focus. Defaults to `unfocused`.
2818
2819Key
2820
2676`tui.notification_method`2821`tui.notification_method`
2677 2822
2678Type / Values2823Type / Values
2681 2826
2682Details2827Details
2683 2828
2684Notification method for unfocused terminal notifications (default: auto).2829Notification method for terminal notifications (default: auto).
2685 2830
2686Key2831Key
2687 2832
2721 2866
2722Key2867Key
2723 2868
2869`tui.terminal_title`
2870
2871Type / Values
2872
2873`array<string> | null`
2874
2875Details
2876
2877Ordered list of terminal window/tab title item identifiers. Defaults to `["spinner", "project"]`; `null` disables title updates.
2878
2879Key
2880
2724`tui.theme`2881`tui.theme`
2725 2882
2726Type / Values2883Type / Values
2767 2924
2768Windows-only native sandbox mode when running Codex natively on Windows.2925Windows-only native sandbox mode when running Codex natively on Windows.
2769 2926
2927Key
2928
2929`windows.sandbox_private_desktop`
2930
2931Type / Values
2932
2933`boolean`
2934
2935Details
2936
2937Run 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.
2938
2770Expand to view all2939Expand to view all
2771 2940
2772You can find the latest JSON schema for `config.toml` [here](https://developers.openai.com/codex/config-schema.json).2941You can find the latest JSON schema for `config.toml` [here](https://developers.openai.com/codex/config-schema.json).
2791 2960
2792| Key | Type / Values | Details |2961| Key | Type / Values | Details |
2793| --- | --- | --- |2962| --- | --- | --- |
2794| `allowed_approval_policies` | `array<string>` | Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `reject`). |2963| `allowed_approval_policies` | `array<string>` | Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `granular`). |
2964| `allowed_approvals_reviewers` | `array<string>` | Allowed values for `approvals_reviewer`, such as `user` and `auto_review`. |
2795| `allowed_sandbox_modes` | `array<string>` | Allowed values for `sandbox_mode`. |2965| `allowed_sandbox_modes` | `array<string>` | Allowed values for `sandbox_mode`. |
2796| `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`. |2966| `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`. |
2967| `feature_requirements` | `table` | Alias for `features` in `requirements.toml`. Use it to pin feature values by canonical feature key. |
2968| `feature_requirements.browser_use` | `boolean` | Set to `false` in `requirements.toml` to disable Browser Use and Browser Agent availability. You can also set `features.browser_use`. |
2969| `feature_requirements.computer_use` | `boolean` | Set to `false` in `requirements.toml` to disable Computer Use availability and related install or enablement flows. You can also set `features.computer_use`. |
2970| `feature_requirements.in_app_browser` | `boolean` | Set to `false` in `requirements.toml` to disable the in-app browser pane. You can also set `features.in_app_browser`. |
2797| `features` | `table` | Pinned feature values keyed by the canonical names from `config.toml`'s `[features]` table. |2971| `features` | `table` | Pinned feature values keyed by the canonical names from `config.toml`'s `[features]` table. |
2798| `features.<name>` | `boolean` | Require a specific canonical feature key to stay enabled or disabled. |2972| `features.<name>` | `boolean` | Require a specific canonical feature key to stay enabled or disabled. |
2973| `guardian_policy_config` | `string` | Managed Markdown policy instructions for automatic review. This takes precedence over local `[auto_review].policy`. Blank values are ignored. |
2974| `hooks` | `table` | Admin-enforced managed lifecycle hooks. Requires a managed hook directory and uses the same event schema as inline `[hooks]` in `config.toml`. |
2975| `hooks.<Event>` | `array<table>` | Matcher groups for a hook event such as `PreToolUse`, `PostToolUse`, `PermissionRequest`, `SessionStart`, `UserPromptSubmit`, or `Stop`. |
2976| `hooks.<Event>[].hooks` | `array<table>` | Hook handlers for a matcher group. Command hooks are currently supported; prompt and agent hook handlers are parsed but skipped. |
2977| `hooks.managed_dir` | `string (absolute path)` | Directory containing managed hook scripts on macOS and Linux. Codex validates that it is absolute and exists before loading managed hooks. |
2978| `hooks.windows_managed_dir` | `string (absolute path)` | Directory containing managed hook scripts on Windows. Codex validates that it is absolute and exists before loading managed hooks. |
2799| `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. |2979| `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. |
2800| `mcp_servers.<id>.identity` | `table` | Identity rule for a single MCP server. Set either `command` (stdio) or `url` (streamable HTTP). |2980| `mcp_servers.<id>.identity` | `table` | Identity rule for a single MCP server. Set either `command` (stdio) or `url` (streamable HTTP). |
2801| `mcp_servers.<id>.identity.command` | `string` | Allow an MCP stdio server when its `mcp_servers.<id>.command` matches this command. |2981| `mcp_servers.<id>.identity.command` | `string` | Allow an MCP stdio server when its `mcp_servers.<id>.command` matches this command. |
2802| `mcp_servers.<id>.identity.url` | `string` | Allow an MCP streamable HTTP server when its `mcp_servers.<id>.url` matches this URL. |2982| `mcp_servers.<id>.identity.url` | `string` | Allow an MCP streamable HTTP server when its `mcp_servers.<id>.url` matches this URL. |
2983| `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. |
2984| `remote_sandbox_config` | `array<table>` | Host-specific sandbox requirements. The first entry whose `hostname_patterns` match the resolved host name overrides top-level `allowed_sandbox_modes` for that requirements source. Host-specific entries currently override sandbox modes only. |
2985| `remote_sandbox_config[].allowed_sandbox_modes` | `array<string>` | Allowed sandbox modes to apply when this host-specific entry matches. |
2986| `remote_sandbox_config[].hostname_patterns` | `array<string>` | Case-insensitive host name patterns. Supports `*` for any sequence of characters and `?` for one character. |
2803| `rules` | `table` | Admin-enforced command rules merged with `.rules` files. Requirements rules must be restrictive. |2987| `rules` | `table` | Admin-enforced command rules merged with `.rules` files. Requirements rules must be restrictive. |
2804| `rules.prefix_rules` | `array<table>` | List of enforced prefix rules. Each rule must include `pattern` and `decision`. |2988| `rules.prefix_rules` | `array<table>` | List of enforced prefix rules. Each rule must include `pattern` and `decision`. |
2805| `rules.prefix_rules[].decision` | `prompt | forbidden` | Required. Requirements rules can only prompt or forbid (not allow). |2989| `rules.prefix_rules[].decision` | `prompt | forbidden` | Required. Requirements rules can only prompt or forbid (not allow). |
2818 3002
2819Details3003Details
2820 3004
2821Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `reject`).3005Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `granular`).
3006
3007Key
3008
3009`allowed_approvals_reviewers`
3010
3011Type / Values
3012
3013`array<string>`
3014
3015Details
3016
3017Allowed values for `approvals_reviewer`, such as `user` and `auto_review`.
2822 3018
2823Key3019Key
2824 3020
2846 3042
2847Key3043Key
2848 3044
3045`feature_requirements`
3046
3047Type / Values
3048
3049`table`
3050
3051Details
3052
3053Alias for `features` in `requirements.toml`. Use it to pin feature values by canonical feature key.
3054
3055Key
3056
3057`feature_requirements.browser_use`
3058
3059Type / Values
3060
3061`boolean`
3062
3063Details
3064
3065Set to `false` in `requirements.toml` to disable Browser Use and Browser Agent availability. You can also set `features.browser_use`.
3066
3067Key
3068
3069`feature_requirements.computer_use`
3070
3071Type / Values
3072
3073`boolean`
3074
3075Details
3076
3077Set to `false` in `requirements.toml` to disable Computer Use availability and related install or enablement flows. You can also set `features.computer_use`.
3078
3079Key
3080
3081`feature_requirements.in_app_browser`
3082
3083Type / Values
3084
3085`boolean`
3086
3087Details
3088
3089Set to `false` in `requirements.toml` to disable the in-app browser pane. You can also set `features.in_app_browser`.
3090
3091Key
3092
2849`features`3093`features`
2850 3094
2851Type / Values3095Type / Values
2870 3114
2871Key3115Key
2872 3116
3117`guardian_policy_config`
3118
3119Type / Values
3120
3121`string`
3122
3123Details
3124
3125Managed Markdown policy instructions for automatic review. This takes precedence over local `[auto_review].policy`. Blank values are ignored.
3126
3127Key
3128
3129`hooks`
3130
3131Type / Values
3132
3133`table`
3134
3135Details
3136
3137Admin-enforced managed lifecycle hooks. Requires a managed hook directory and uses the same event schema as inline `[hooks]` in `config.toml`.
3138
3139Key
3140
3141`hooks.<Event>`
3142
3143Type / Values
3144
3145`array<table>`
3146
3147Details
3148
3149Matcher groups for a hook event such as `PreToolUse`, `PostToolUse`, `PermissionRequest`, `SessionStart`, `UserPromptSubmit`, or `Stop`.
3150
3151Key
3152
3153`hooks.<Event>[].hooks`
3154
3155Type / Values
3156
3157`array<table>`
3158
3159Details
3160
3161Hook handlers for a matcher group. Command hooks are currently supported; prompt and agent hook handlers are parsed but skipped.
3162
3163Key
3164
3165`hooks.managed_dir`
3166
3167Type / Values
3168
3169`string (absolute path)`
3170
3171Details
3172
3173Directory containing managed hook scripts on macOS and Linux. Codex validates that it is absolute and exists before loading managed hooks.
3174
3175Key
3176
3177`hooks.windows_managed_dir`
3178
3179Type / Values
3180
3181`string (absolute path)`
3182
3183Details
3184
3185Directory containing managed hook scripts on Windows. Codex validates that it is absolute and exists before loading managed hooks.
3186
3187Key
3188
2873`mcp_servers`3189`mcp_servers`
2874 3190
2875Type / Values3191Type / Values
2918 3234
2919Key3235Key
2920 3236
3237`permissions.filesystem.deny_read`
3238
3239Type / Values
3240
3241`array<string>`
3242
3243Details
3244
3245Admin-enforced filesystem read denials. Entries can be paths or glob patterns, and users cannot weaken them with local config.
3246
3247Key
3248
3249`remote_sandbox_config`
3250
3251Type / Values
3252
3253`array<table>`
3254
3255Details
3256
3257Host-specific sandbox requirements. The first entry whose `hostname_patterns` match the resolved host name overrides top-level `allowed_sandbox_modes` for that requirements source. Host-specific entries currently override sandbox modes only.
3258
3259Key
3260
3261`remote_sandbox_config[].allowed_sandbox_modes`
3262
3263Type / Values
3264
3265`array<string>`
3266
3267Details
3268
3269Allowed sandbox modes to apply when this host-specific entry matches.
3270
3271Key
3272
3273`remote_sandbox_config[].hostname_patterns`
3274
3275Type / Values
3276
3277`array<string>`
3278
3279Details
3280
3281Case-insensitive host name patterns. Supports `*` for any sequence of characters and `?` for one character.
3282
3283Key
3284
2921`rules`3285`rules`
2922 3286
2923Type / Values3287Type / Values