SpyBara
Go Premium Account
2026
3 Mar 2026, 00:35
14 May 2026, 21:00 14 May 2026, 07:00 13 May 2026, 00:57 12 May 2026, 01:59 11 May 2026, 18:00 7 May 2026, 20:02 7 May 2026, 17:08 5 May 2026, 23:00 2 May 2026, 06:45 2 May 2026, 00:48 1 May 2026, 18:29 30 Apr 2026, 18:36 29 Apr 2026, 12:40 29 Apr 2026, 00:50 25 Apr 2026, 06:37 25 Apr 2026, 00:42 24 Apr 2026, 18:20 24 Apr 2026, 12:28 23 Apr 2026, 18:31 23 Apr 2026, 12:28 23 Apr 2026, 00:46 22 Apr 2026, 18:29 22 Apr 2026, 00:42 21 Apr 2026, 18:29 21 Apr 2026, 12:30 21 Apr 2026, 06:45 20 Apr 2026, 18:26 20 Apr 2026, 06:53 18 Apr 2026, 18:18 17 Apr 2026, 00:44 16 Apr 2026, 18:31 16 Apr 2026, 00:46 15 Apr 2026, 18:31 15 Apr 2026, 06:44 14 Apr 2026, 18:31 14 Apr 2026, 12:29 13 Apr 2026, 18:37 13 Apr 2026, 00:44 12 Apr 2026, 06:38 10 Apr 2026, 18:23 9 Apr 2026, 00:33 8 Apr 2026, 18:32 8 Apr 2026, 00:40 7 Apr 2026, 00:40 2 Apr 2026, 18:23 31 Mar 2026, 06:35 31 Mar 2026, 00:39 28 Mar 2026, 06:26 28 Mar 2026, 00:36 27 Mar 2026, 18:23 27 Mar 2026, 00:39 26 Mar 2026, 18:27 25 Mar 2026, 18:24 23 Mar 2026, 18:22 20 Mar 2026, 00:35 18 Mar 2026, 12:23 18 Mar 2026, 00:36 17 Mar 2026, 18:24 17 Mar 2026, 00:33 16 Mar 2026, 18:25 16 Mar 2026, 12:23 14 Mar 2026, 00:32 13 Mar 2026, 18:15 13 Mar 2026, 00:34 11 Mar 2026, 00:31 9 Mar 2026, 00:34 8 Mar 2026, 18:10 8 Mar 2026, 00:35 7 Mar 2026, 18:10 7 Mar 2026, 06:14 7 Mar 2026, 00:33 6 Mar 2026, 00:38 5 Mar 2026, 18:41 5 Mar 2026, 06:22 5 Mar 2026, 00:34 4 Mar 2026, 18:18 4 Mar 2026, 06:20 3 Mar 2026, 18:20 3 Mar 2026, 00:35 27 Feb 2026, 18:15 24 Feb 2026, 06:27 24 Feb 2026, 00:33 23 Feb 2026, 18:27 21 Feb 2026, 00:33 20 Feb 2026, 12:16 19 Feb 2026, 20:53 19 Feb 2026, 20:37
20 Apr 2026, 18:26
14 May 2026, 21:00 14 May 2026, 07:00 13 May 2026, 00:57 12 May 2026, 01:59 11 May 2026, 18:00 7 May 2026, 20:02 7 May 2026, 17:08 5 May 2026, 23:00 2 May 2026, 06:45 2 May 2026, 00:48 1 May 2026, 18:29 30 Apr 2026, 18:36 29 Apr 2026, 12:40 29 Apr 2026, 00:50 25 Apr 2026, 06:37 25 Apr 2026, 00:42 24 Apr 2026, 18:20 24 Apr 2026, 12:28 23 Apr 2026, 18:31 23 Apr 2026, 12:28 23 Apr 2026, 00:46 22 Apr 2026, 18:29 22 Apr 2026, 00:42 21 Apr 2026, 18:29 21 Apr 2026, 12:30 21 Apr 2026, 06:45 20 Apr 2026, 18:26 20 Apr 2026, 06:53 18 Apr 2026, 18:18 17 Apr 2026, 00:44 16 Apr 2026, 18:31 16 Apr 2026, 00:46 15 Apr 2026, 18:31 15 Apr 2026, 06:44 14 Apr 2026, 18:31 14 Apr 2026, 12:29 13 Apr 2026, 18:37 13 Apr 2026, 00:44 12 Apr 2026, 06:38 10 Apr 2026, 18:23 9 Apr 2026, 00:33 8 Apr 2026, 18:32 8 Apr 2026, 00:40 7 Apr 2026, 00:40 2 Apr 2026, 18:23 31 Mar 2026, 06:35 31 Mar 2026, 00:39 28 Mar 2026, 06:26 28 Mar 2026, 00:36 27 Mar 2026, 18:23 27 Mar 2026, 00:39 26 Mar 2026, 18:27 25 Mar 2026, 18:24 23 Mar 2026, 18:22 20 Mar 2026, 00:35 18 Mar 2026, 12:23 18 Mar 2026, 00:36 17 Mar 2026, 18:24 17 Mar 2026, 00:33 16 Mar 2026, 18:25 16 Mar 2026, 12:23 14 Mar 2026, 00:32 13 Mar 2026, 18:15 13 Mar 2026, 00:34 11 Mar 2026, 00:31 9 Mar 2026, 00:34 8 Mar 2026, 18:10 8 Mar 2026, 00:35 7 Mar 2026, 18:10 7 Mar 2026, 06:14 7 Mar 2026, 00:33 6 Mar 2026, 00:38 5 Mar 2026, 18:41 5 Mar 2026, 06:22 5 Mar 2026, 00:34 4 Mar 2026, 18:18 4 Mar 2026, 06:20 3 Mar 2026, 18:20 3 Mar 2026, 00:35 27 Feb 2026, 18:15 24 Feb 2026, 06:27 24 Feb 2026, 00:33 23 Feb 2026, 18:27 21 Feb 2026, 00:33 20 Feb 2026, 12:16 19 Feb 2026, 20:53 19 Feb 2026, 20:37
Thu 2 18:23 Tue 7 00:40 Wed 8 00:40 Wed 8 18:32 Thu 9 00:33 Fri 10 18:23 Sun 12 06:38 Mon 13 00:44 Mon 13 18:37 Tue 14 12:29 Tue 14 18:31 Wed 15 06:44 Wed 15 18:31 Thu 16 00:46 Thu 16 18:31 Fri 17 00:44 Sat 18 18:18 Mon 20 06:53 Mon 20 18:26 Tue 21 06:45 Tue 21 12:30 Tue 21 18:29 Wed 22 00:42 Wed 22 18:29 Thu 23 00:46 Thu 23 12:28 Thu 23 18:31 Fri 24 12:28 Fri 24 18:20 Sat 25 00:42 Sat 25 06:37 Wed 29 00:50 Wed 29 12:40 Thu 30 18:36

config-reference.md +989 −245

Details

6 6 

7User-level configuration lives in `~/.codex/config.toml`. You can also add project-scoped overrides in `.codex/config.toml` files. Codex loads project-scoped config files only when you trust the project.7User-level configuration lives in `~/.codex/config.toml`. You can also add project-scoped overrides in `.codex/config.toml` files. Codex loads project-scoped config files only when you trust the project.

8 8 

9For sandbox and approval keys (`approval_policy`, `sandbox_mode`, and `sandbox_workspace_write.*`), pair this reference with [Sandbox and approvals](https://developers.openai.com/codex/security#sandbox-and-approvals), [Protected paths in writable roots](https://developers.openai.com/codex/security#protected-paths-in-writable-roots), and [Network access](https://developers.openai.com/codex/security#network-access).9For sandbox and approval keys (`approval_policy`, `sandbox_mode`, and `sandbox_workspace_write.*`), pair this reference with [Sandbox and approvals](https://developers.openai.com/codex/agent-approvals-security#sandbox-and-approvals), [Protected paths in writable roots](https://developers.openai.com/codex/agent-approvals-security#protected-paths-in-writable-roots), and [Network access](https://developers.openai.com/codex/agent-approvals-security#network-access).

10 10 

11| Key | Type / Values | Details |11| Key | Type / Values | Details |

12| --- | --- | --- |12| --- | --- | --- |

13| `agents.<name>.config_file` | `string (path)` | Path to a TOML config layer for that role; relative paths resolve from the config file that declares the role. |13| `agents.<name>.config_file` | `string (path)` | Path to a TOML config layer for that role; relative paths resolve from the config file that declares the role. |

14| `agents.<name>.description` | `string` | Role guidance shown to Codex when choosing and spawning that agent type. |14| `agents.<name>.description` | `string` | Role guidance shown to Codex when choosing and spawning that agent type. |

15| `agents.<name>.nickname_candidates` | `array<string>` | Optional pool of display nicknames for spawned agents in that role. |

16| `agents.job_max_runtime_seconds` | `number` | Default per-worker timeout for `spawn_agents_on_csv` jobs. When unset, the tool falls back to 1800 seconds per worker. |

15| `agents.max_depth` | `number` | Maximum nesting depth allowed for spawned agent threads (root sessions start at depth 0; default: 1). |17| `agents.max_depth` | `number` | Maximum nesting depth allowed for spawned agent threads (root sessions start at depth 0; default: 1). |

16| `agents.max_threads` | `number` | Maximum number of agent threads that can be open concurrently. |18| `agents.max_threads` | `number` | Maximum number of agent threads that can be open concurrently. Defaults to `6` when unset. |

17| `allow_login_shell` | `boolean` | Allow shell-based tools to use login-shell semantics. Defaults to `true`; when `false`, `login = true` requests are rejected and omitted `login` defaults to non-login shells. |19| `allow_login_shell` | `boolean` | Allow shell-based tools to use login-shell semantics. Defaults to `true`; when `false`, `login = true` requests are rejected and omitted `login` defaults to non-login shells. |

18| `approval_policy` | `untrusted | on-request | never | { reject = { sandbox_approval = bool, rules = bool, mcp_elicitations = bool } }` | Controls when Codex pauses for approval before executing commands. You can also use `approval_policy = { reject = { ... } }` to auto-reject specific prompt categories while keeping other prompts interactive. `on-failure` is deprecated; use `on-request` for interactive runs or `never` for non-interactive runs. |20| `analytics.enabled` | `boolean` | Enable or disable analytics for this machine/profile. When unset, the client default applies. |

19| `approval_policy.reject.mcp_elicitations` | `boolean` | When `true`, MCP elicitation prompts are auto-rejected instead of shown to the user. |21| `approval_policy` | `untrusted | on-request | never | { granular = { sandbox_approval = bool, rules = bool, mcp_elicitations = bool, request_permissions = bool, skill_approval = bool } }` | Controls when Codex pauses for approval before executing commands. You can also use `approval_policy = { granular = { ... } }` to allow or auto-reject specific prompt categories while keeping other prompts interactive. `on-failure` is deprecated; use `on-request` for interactive runs or `never` for non-interactive runs. |

20| `approval_policy.reject.rules` | `boolean` | When `true`, approvals triggered by execpolicy `prompt` rules are auto-rejected. |22| `approval_policy.granular.mcp_elicitations` | `boolean` | When `true`, MCP elicitation prompts are allowed to surface instead of being auto-rejected. |

21| `approval_policy.reject.sandbox_approval` | `boolean` | When `true`, sandbox escalation approval prompts are auto-rejected. |23| `approval_policy.granular.request_permissions` | `boolean` | When `true`, prompts from the `request_permissions` tool are allowed to surface. |

24| `approval_policy.granular.rules` | `boolean` | When `true`, approvals triggered by execpolicy `prompt` rules are allowed to surface. |

25| `approval_policy.granular.sandbox_approval` | `boolean` | When `true`, sandbox escalation approval prompts are allowed to surface. |

26| `approval_policy.granular.skill_approval` | `boolean` | When `true`, skill-script approval prompts are allowed to surface. |

27| `approvals_reviewer` | `user | guardian_subagent` | Select who reviews eligible approval prompts. Defaults to `user`; `guardian_subagent` routes supported reviews through the Guardian reviewer subagent. |

22| `apps._default.destructive_enabled` | `boolean` | Default allow/deny for app tools with `destructive_hint = true`. |28| `apps._default.destructive_enabled` | `boolean` | Default allow/deny for app tools with `destructive_hint = true`. |

23| `apps._default.enabled` | `boolean` | Default app enabled state for all apps unless overridden per app. |29| `apps._default.enabled` | `boolean` | Default app enabled state for all apps unless overridden per app. |

24| `apps._default.open_world_enabled` | `boolean` | Default allow/deny for app tools with `open_world_hint = true`. |30| `apps._default.open_world_enabled` | `boolean` | Default allow/deny for app tools with `open_world_hint = true`. |


33| `chatgpt_base_url` | `string` | Override the base URL used during the ChatGPT login flow. |39| `chatgpt_base_url` | `string` | Override the base URL used during the ChatGPT login flow. |

34| `check_for_update_on_startup` | `boolean` | Check for Codex updates on startup (set to false only when updates are centrally managed). |40| `check_for_update_on_startup` | `boolean` | Check for Codex updates on startup (set to false only when updates are centrally managed). |

35| `cli_auth_credentials_store` | `file | keyring | auto` | Control where the CLI stores cached credentials (file-based auth.json vs OS keychain). |41| `cli_auth_credentials_store` | `file | keyring | auto` | Control where the CLI stores cached credentials (file-based auth.json vs OS keychain). |

42| `commit_attribution` | `string` | Override the commit co-author trailer text. Set an empty string to disable automatic attribution. |

36| `compact_prompt` | `string` | Inline override for the history compaction prompt. |43| `compact_prompt` | `string` | Inline override for the history compaction prompt. |

44| `default_permissions` | `string` | Name of the default permissions profile to apply to sandboxed tool calls. |

37| `developer_instructions` | `string` | Additional developer instructions injected into the session (optional). |45| `developer_instructions` | `string` | Additional developer instructions injected into the session (optional). |

38| `disable_paste_burst` | `boolean` | Disable burst-paste detection in the TUI. |46| `disable_paste_burst` | `boolean` | Disable burst-paste detection in the TUI. |

39| `experimental_compact_prompt_file` | `string (path)` | Load the compaction prompt override from a file (experimental). |47| `experimental_compact_prompt_file` | `string (path)` | Load the compaction prompt override from a file (experimental). |

40| `experimental_use_freeform_apply_patch` | `boolean` | Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform` or `codex --enable apply_patch_freeform`. |

41| `experimental_use_unified_exec_tool` | `boolean` | Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`. |48| `experimental_use_unified_exec_tool` | `boolean` | Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`. |

42| `features.apply_patch_freeform` | `boolean` | Expose the freeform `apply_patch` tool (experimental). |

43| `features.apps` | `boolean` | Enable ChatGPT Apps/connectors support (experimental). |49| `features.apps` | `boolean` | Enable ChatGPT Apps/connectors support (experimental). |

44| `features.apps_mcp_gateway` | `boolean` | Route Apps MCP calls through the OpenAI connectors MCP gateway (`https://api.openai.com/v1/connectors/mcp/`) instead of legacy routing (experimental). |50| `features.codex_hooks` | `boolean` | Enable lifecycle hooks loaded from `hooks.json` (under development; off by default). |

45| `features.child_agents_md` | `boolean` | Append AGENTS.md scope/precedence guidance even when no AGENTS.md is present (experimental). |51| `features.enable_request_compression` | `boolean` | Compress streaming request bodies with zstd when supported (stable; on by default). |

46| `features.collaboration_modes` | `boolean` | Enable collaboration modes such as plan mode (stable; on by default). |52| `features.fast_mode` | `boolean` | Enable Fast mode selection and the `service_tier = "fast"` path (stable; on by default). |

47| `features.multi_agent` | `boolean` | Enable multi-agent collaboration tools (`spawn\_agent`, `send\_input`, `resume\_agent`, `wait`, and `close\_agent`) (experimental; off by default). |53| `features.guardian_approval` | `boolean` | Route eligible approval requests through the guardian reviewer subagent (experimental; off by default). Use with `approvals_reviewer = "guardian_subagent"`. |

54| `features.memories` | `boolean` | Enable [Memories](https://developers.openai.com/codex/memories) (off by default). |

55| `features.multi_agent` | `boolean` | Enable multi-agent collaboration tools (`spawn_agent`, `send_input`, `resume_agent`, `wait_agent`, and `close_agent`) (stable; on by default). |

48| `features.personality` | `boolean` | Enable personality selection controls (stable; on by default). |56| `features.personality` | `boolean` | Enable personality selection controls (stable; on by default). |

49| `features.powershell_utf8` | `boolean` | Force PowerShell UTF-8 output (defaults to true). |57| `features.prevent_idle_sleep` | `boolean` | Prevent the machine from sleeping while a turn is actively running (experimental; off by default). |

50| `features.remote_models` | `boolean` | Refresh remote model list before showing readiness (experimental). |58| `features.shell_snapshot` | `boolean` | Snapshot shell environment to speed up repeated commands (stable; on by default). |

51| `features.request_rule` | `boolean` | Enable Smart approvals (`prefix_rule` suggestions on escalation requests; stable; on by default). |

52| `features.runtime_metrics` | `boolean` | Show runtime metrics summary in TUI turn separators (experimental). |

53| `features.search_tool` | `boolean` | Enable `search_tool_bm25` for Apps tool discovery before invoking app MCP tools (experimental). |

54| `features.shell_snapshot` | `boolean` | Snapshot shell environment to speed up repeated commands (beta). |

55| `features.shell_tool` | `boolean` | Enable the default `shell` tool for running commands (stable; on by default). |59| `features.shell_tool` | `boolean` | Enable the default `shell` tool for running commands (stable; on by default). |

56| `features.unified_exec` | `boolean` | Use the unified PTY-backed exec tool (beta). |60| `features.skill_mcp_dependency_install` | `boolean` | Allow prompting and installing missing MCP dependencies for skills (stable; on by default). |

57| `features.use_linux_sandbox_bwrap` | `boolean` | Use the bubblewrap-based Linux sandbox pipeline (experimental; off by default). |61| `features.undo` | `boolean` | Enable undo support (stable; off by default). |

62| `features.unified_exec` | `boolean` | Use the unified PTY-backed exec tool (stable; enabled by default except on Windows). |

58| `features.web_search` | `boolean` | Deprecated legacy toggle; prefer the top-level `web_search` setting. |63| `features.web_search` | `boolean` | Deprecated legacy toggle; prefer the top-level `web_search` setting. |

59| `features.web_search_cached` | `boolean` | Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "cached"`. |64| `features.web_search_cached` | `boolean` | Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "cached"`. |

60| `features.web_search_request` | `boolean` | Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "live"`. |65| `features.web_search_request` | `boolean` | Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "live"`. |


65| `hide_agent_reasoning` | `boolean` | Suppress reasoning events in both the TUI and `codex exec` output. |70| `hide_agent_reasoning` | `boolean` | Suppress reasoning events in both the TUI and `codex exec` output. |

66| `history.max_bytes` | `number` | If set, caps the history file size in bytes by dropping oldest entries. |71| `history.max_bytes` | `number` | If set, caps the history file size in bytes by dropping oldest entries. |

67| `history.persistence` | `save-all | none` | Control whether Codex saves session transcripts to history.jsonl. |72| `history.persistence` | `save-all | none` | Control whether Codex saves session transcripts to history.jsonl. |

68| `include_apply_patch_tool` | `boolean` | Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`. |

69| `instructions` | `string` | Reserved for future use; prefer `model_instructions_file` or `AGENTS.md`. |73| `instructions` | `string` | Reserved for future use; prefer `model_instructions_file` or `AGENTS.md`. |

70| `log_dir` | `string (path)` | Directory where Codex writes log files (for example `codex-tui.log`); defaults to `$CODEX_HOME/log`. |74| `log_dir` | `string (path)` | Directory where Codex writes log files (for example `codex-tui.log`); defaults to `$CODEX_HOME/log`. |

71| `mcp_oauth_callback_port` | `integer` | Optional fixed port for the local HTTP callback server used during MCP OAuth login. When unset, Codex binds to an ephemeral port chosen by the OS. |75| `mcp_oauth_callback_port` | `integer` | Optional fixed port for the local HTTP callback server used during MCP OAuth login. When unset, Codex binds to an ephemeral port chosen by the OS. |


82| `mcp_servers.<id>.env_http_headers` | `map<string,string>` | HTTP headers populated from environment variables for an MCP HTTP server. |86| `mcp_servers.<id>.env_http_headers` | `map<string,string>` | HTTP headers populated from environment variables for an MCP HTTP server. |

83| `mcp_servers.<id>.env_vars` | `array<string>` | Additional environment variables to whitelist for an MCP stdio server. |87| `mcp_servers.<id>.env_vars` | `array<string>` | Additional environment variables to whitelist for an MCP stdio server. |

84| `mcp_servers.<id>.http_headers` | `map<string,string>` | Static HTTP headers included with each MCP HTTP request. |88| `mcp_servers.<id>.http_headers` | `map<string,string>` | Static HTTP headers included with each MCP HTTP request. |

89| `mcp_servers.<id>.oauth_resource` | `string` | Optional RFC 8707 OAuth resource parameter to include during MCP login. |

85| `mcp_servers.<id>.required` | `boolean` | When true, fail startup/resume if this enabled MCP server cannot initialize. |90| `mcp_servers.<id>.required` | `boolean` | When true, fail startup/resume if this enabled MCP server cannot initialize. |

91| `mcp_servers.<id>.scopes` | `array<string>` | OAuth scopes to request when authenticating to that MCP server. |

86| `mcp_servers.<id>.startup_timeout_ms` | `number` | Alias for `startup_timeout_sec` in milliseconds. |92| `mcp_servers.<id>.startup_timeout_ms` | `number` | Alias for `startup_timeout_sec` in milliseconds. |

87| `mcp_servers.<id>.startup_timeout_sec` | `number` | Override the default 10s startup timeout for an MCP server. |93| `mcp_servers.<id>.startup_timeout_sec` | `number` | Override the default 10s startup timeout for an MCP server. |

88| `mcp_servers.<id>.tool_timeout_sec` | `number` | Override the default 60s per-tool timeout for an MCP server. |94| `mcp_servers.<id>.tool_timeout_sec` | `number` | Override the default 60s per-tool timeout for an MCP server. |

89| `mcp_servers.<id>.url` | `string` | Endpoint for an MCP streamable HTTP server. |95| `mcp_servers.<id>.url` | `string` | Endpoint for an MCP streamable HTTP server. |

90| `model` | `string` | Model to use (e.g., `gpt-5-codex`). |96| `memories.consolidation_model` | `string` | Optional model override for global memory consolidation. |

97| `memories.extract_model` | `string` | Optional model override for per-thread memory extraction. |

98| `memories.generate_memories` | `boolean` | When `false`, newly created threads are not stored as memory-generation inputs. Defaults to `true`. |

99| `memories.max_raw_memories_for_consolidation` | `number` | Maximum recent raw memories retained for global consolidation. Defaults to `256` and is capped at `4096`. |

100| `memories.max_rollout_age_days` | `number` | Maximum age of threads considered for memory generation. Defaults to `30` and is clamped to `0`-`90`. |

101| `memories.max_rollouts_per_startup` | `number` | Maximum rollout candidates processed per startup pass. Defaults to `16` and is capped at `128`. |

102| `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`. |

103| `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`. |

104| `memories.no_memories_if_mcp_or_web_search` | `boolean` | When `true`, threads that use MCP tool calls or web search are kept out of memory generation. Defaults to `false`. |

105| `memories.use_memories` | `boolean` | When `false`, Codex skips injecting existing memories into future sessions. Defaults to `true`. |

106| `model` | `string` | Model to use (e.g., `gpt-5.4`). |

91| `model_auto_compact_token_limit` | `number` | Token threshold that triggers automatic history compaction (unset uses model defaults). |107| `model_auto_compact_token_limit` | `number` | Token threshold that triggers automatic history compaction (unset uses model defaults). |

92| `model_catalog_json` | `string (path)` | Optional path to a JSON model catalog loaded on startup. Profile-level `profiles.<name>.model_catalog_json` can override this per profile. |108| `model_catalog_json` | `string (path)` | Optional path to a JSON model catalog loaded on startup. Profile-level `profiles.<name>.model_catalog_json` can override this per profile. |

93| `model_context_window` | `number` | Context window tokens available to the active model. |109| `model_context_window` | `number` | Context window tokens available to the active model. |

94| `model_instructions_file` | `string (path)` | Replacement for built-in instructions instead of `AGENTS.md`. |110| `model_instructions_file` | `string (path)` | Replacement for built-in instructions instead of `AGENTS.md`. |

95| `model_provider` | `string` | Provider id from `model_providers` (default: `openai`). |111| `model_provider` | `string` | Provider id from `model_providers` (default: `openai`). |

112| `model_providers.<id>` | `table` | Custom provider definition. Built-in provider IDs (`openai`, `ollama`, and `lmstudio`) are reserved and cannot be overridden. |

113| `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`. |

114| `model_providers.<id>.auth.args` | `array<string>` | Arguments passed to the token command. |

115| `model_providers.<id>.auth.command` | `string` | Command to run when Codex needs a bearer token. The command must print the token to stdout. |

116| `model_providers.<id>.auth.cwd` | `string (path)` | Working directory for the token command. |

117| `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. |

118| `model_providers.<id>.auth.timeout_ms` | `number` | Maximum token command runtime in milliseconds (default: 5000). |

96| `model_providers.<id>.base_url` | `string` | API base URL for the model provider. |119| `model_providers.<id>.base_url` | `string` | API base URL for the model provider. |

97| `model_providers.<id>.env_http_headers` | `map<string,string>` | HTTP headers populated from environment variables when present. |120| `model_providers.<id>.env_http_headers` | `map<string,string>` | HTTP headers populated from environment variables when present. |

98| `model_providers.<id>.env_key` | `string` | Environment variable supplying the provider API key. |121| `model_providers.<id>.env_key` | `string` | Environment variable supplying the provider API key. |


105| `model_providers.<id>.requires_openai_auth` | `boolean` | The provider uses OpenAI authentication (defaults to false). |128| `model_providers.<id>.requires_openai_auth` | `boolean` | The provider uses OpenAI authentication (defaults to false). |

106| `model_providers.<id>.stream_idle_timeout_ms` | `number` | Idle timeout for SSE streams in milliseconds (default: 300000). |129| `model_providers.<id>.stream_idle_timeout_ms` | `number` | Idle timeout for SSE streams in milliseconds (default: 300000). |

107| `model_providers.<id>.stream_max_retries` | `number` | Retry count for SSE streaming interruptions (default: 5). |130| `model_providers.<id>.stream_max_retries` | `number` | Retry count for SSE streaming interruptions (default: 5). |

108| `model_providers.<id>.wire_api` | `chat | responses` | Protocol used by the provider (defaults to `chat` if omitted). |131| `model_providers.<id>.supports_websockets` | `boolean` | Whether that provider supports the Responses API WebSocket transport. |

132| `model_providers.<id>.wire_api` | `responses` | Protocol used by the provider. `responses` is the only supported value, and it is the default when omitted. |

109| `model_reasoning_effort` | `minimal | low | medium | high | xhigh` | Adjust reasoning effort for supported models (Responses API only; `xhigh` is model-dependent). |133| `model_reasoning_effort` | `minimal | low | medium | high | xhigh` | Adjust reasoning effort for supported models (Responses API only; `xhigh` is model-dependent). |

110| `model_reasoning_summary` | `auto | concise | detailed | none` | Select reasoning summary detail or disable summaries entirely. |134| `model_reasoning_summary` | `auto | concise | detailed | none` | Select reasoning summary detail or disable summaries entirely. |

111| `model_supports_reasoning_summaries` | `boolean` | Force Codex to send or not send reasoning metadata. |135| `model_supports_reasoning_summaries` | `boolean` | Force Codex to send or not send reasoning metadata. |

112| `model_verbosity` | `low | medium | high` | Control GPT-5 Responses API verbosity (defaults to `medium`). |136| `model_verbosity` | `low | medium | high` | Optional GPT-5 Responses API verbosity override; when unset, the selected model/preset default is used. |

113| `notice.hide_full_access_warning` | `boolean` | Track acknowledgement of the full access warning prompt. |137| `notice.hide_full_access_warning` | `boolean` | Track acknowledgement of the full access warning prompt. |

114| `notice.hide_gpt-5.1-codex-max_migration_prompt` | `boolean` | Track acknowledgement of the gpt-5.1-codex-max migration prompt. |138| `notice.hide_gpt-5.1-codex-max_migration_prompt` | `boolean` | Track acknowledgement of the gpt-5.1-codex-max migration prompt. |

115| `notice.hide_gpt5_1_migration_prompt` | `boolean` | Track acknowledgement of the GPT-5.1 migration prompt. |139| `notice.hide_gpt5_1_migration_prompt` | `boolean` | Track acknowledgement of the GPT-5.1 migration prompt. |


117| `notice.hide_world_writable_warning` | `boolean` | Track acknowledgement of the Windows world-writable directories warning. |141| `notice.hide_world_writable_warning` | `boolean` | Track acknowledgement of the Windows world-writable directories warning. |

118| `notice.model_migrations` | `map<string,string>` | Track acknowledged model migrations as old->new mappings. |142| `notice.model_migrations` | `map<string,string>` | Track acknowledged model migrations as old->new mappings. |

119| `notify` | `array<string>` | Command invoked for notifications; receives a JSON payload from Codex. |143| `notify` | `array<string>` | Command invoked for notifications; receives a JSON payload from Codex. |

144| `openai_base_url` | `string` | Base URL override for the built-in `openai` model provider. |

120| `oss_provider` | `lmstudio | ollama` | Default local provider used when running with `--oss` (defaults to prompting if unset). |145| `oss_provider` | `lmstudio | ollama` | Default local provider used when running with `--oss` (defaults to prompting if unset). |

121| `otel.environment` | `string` | Environment tag applied to emitted OpenTelemetry events (default: `dev`). |146| `otel.environment` | `string` | Environment tag applied to emitted OpenTelemetry events (default: `dev`). |

122| `otel.exporter` | `none | otlp-http | otlp-grpc` | Select the OpenTelemetry exporter and provide any endpoint metadata. |147| `otel.exporter` | `none | otlp-http | otlp-grpc` | Select the OpenTelemetry exporter and provide any endpoint metadata. |


127| `otel.exporter.<id>.tls.client-certificate` | `string` | Client certificate path for OTEL exporter TLS. |152| `otel.exporter.<id>.tls.client-certificate` | `string` | Client certificate path for OTEL exporter TLS. |

128| `otel.exporter.<id>.tls.client-private-key` | `string` | Client private key path for OTEL exporter TLS. |153| `otel.exporter.<id>.tls.client-private-key` | `string` | Client private key path for OTEL exporter TLS. |

129| `otel.log_user_prompt` | `boolean` | Opt in to exporting raw user prompts with OpenTelemetry logs. |154| `otel.log_user_prompt` | `boolean` | Opt in to exporting raw user prompts with OpenTelemetry logs. |

155| `otel.metrics_exporter` | `none | statsig | otlp-http | otlp-grpc` | Select the OpenTelemetry metrics exporter (defaults to `statsig`). |

130| `otel.trace_exporter` | `none | otlp-http | otlp-grpc` | Select the OpenTelemetry trace exporter and provide any endpoint metadata. |156| `otel.trace_exporter` | `none | otlp-http | otlp-grpc` | Select the OpenTelemetry trace exporter and provide any endpoint metadata. |

131| `otel.trace_exporter.<id>.endpoint` | `string` | Trace exporter endpoint for OTEL logs. |157| `otel.trace_exporter.<id>.endpoint` | `string` | Trace exporter endpoint for OTEL logs. |

132| `otel.trace_exporter.<id>.headers` | `map<string,string>` | Static headers included with OTEL trace exporter requests. |158| `otel.trace_exporter.<id>.headers` | `map<string,string>` | Static headers included with OTEL trace exporter requests. |


134| `otel.trace_exporter.<id>.tls.ca-certificate` | `string` | CA certificate path for OTEL trace exporter TLS. |160| `otel.trace_exporter.<id>.tls.ca-certificate` | `string` | CA certificate path for OTEL trace exporter TLS. |

135| `otel.trace_exporter.<id>.tls.client-certificate` | `string` | Client certificate path for OTEL trace exporter TLS. |161| `otel.trace_exporter.<id>.tls.client-certificate` | `string` | Client certificate path for OTEL trace exporter TLS. |

136| `otel.trace_exporter.<id>.tls.client-private-key` | `string` | Client private key path for OTEL trace exporter TLS. |162| `otel.trace_exporter.<id>.tls.client-private-key` | `string` | Client private key path for OTEL trace exporter TLS. |

163| `permissions.<name>.filesystem` | `table` | Named filesystem permission profile. Each key is an absolute path or special token such as `:minimal` or `:project_roots`. |

164| `permissions.<name>.filesystem.":project_roots".<subpath>` | `"read" | "write" | "none"` | Scoped filesystem access relative to the detected project roots. Use `"."` for the root itself. |

165| `permissions.<name>.filesystem.<path>` | `"read" | "write" | "none" | table` | Grant direct access for a path or special token, or scope nested entries under that root. |

166| `permissions.<name>.network.allow_local_binding` | `boolean` | Permit local bind/listen operations through the managed proxy. |

167| `permissions.<name>.network.allow_upstream_proxy` | `boolean` | Allow the managed proxy to chain to another upstream proxy. |

168| `permissions.<name>.network.dangerously_allow_all_unix_sockets` | `boolean` | Allow the proxy to use arbitrary Unix sockets instead of the default restricted set. |

169| `permissions.<name>.network.dangerously_allow_non_loopback_proxy` | `boolean` | Permit non-loopback bind addresses for the managed proxy listener. |

170| `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. |

171| `permissions.<name>.network.enable_socks5` | `boolean` | Expose a SOCKS5 listener when this permissions profile enables the managed network proxy. |

172| `permissions.<name>.network.enable_socks5_udp` | `boolean` | Allow UDP over the SOCKS5 listener when enabled. |

173| `permissions.<name>.network.enabled` | `boolean` | Enable network access for this named permissions profile. |

174| `permissions.<name>.network.mode` | `limited | full` | Network proxy mode used for subprocess traffic. |

175| `permissions.<name>.network.proxy_url` | `string` | HTTP proxy endpoint used when this permissions profile enables the managed network proxy. |

176| `permissions.<name>.network.socks_url` | `string` | SOCKS5 proxy endpoint used by this permissions profile. |

177| `permissions.<name>.network.unix_sockets` | `map<string, allow | none>` | Unix socket rules for the managed proxy. Use socket paths as keys, with `allow` or `none` values. |

137| `personality` | `none | friendly | pragmatic` | Default communication style for models that advertise `supportsPersonality`; can be overridden per thread/turn or via `/personality`. |178| `personality` | `none | friendly | pragmatic` | Default communication style for models that advertise `supportsPersonality`; can be overridden per thread/turn or via `/personality`. |

179| `plan_mode_reasoning_effort` | `none | minimal | low | medium | high | xhigh` | Plan-mode-specific reasoning override. When unset, Plan mode uses its built-in preset default. |

138| `profile` | `string` | Default profile applied at startup (equivalent to `--profile`). |180| `profile` | `string` | Default profile applied at startup (equivalent to `--profile`). |

139| `profiles.<name>.*` | `various` | Profile-scoped overrides for any of the supported configuration keys. |181| `profiles.<name>.*` | `various` | Profile-scoped overrides for any of the supported configuration keys. |

140| `profiles.<name>.experimental_use_freeform_apply_patch` | `boolean` | Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`. |182| `profiles.<name>.analytics.enabled` | `boolean` | Profile-scoped analytics enablement override. |

141| `profiles.<name>.experimental_use_unified_exec_tool` | `boolean` | Legacy name for enabling unified exec; prefer `[features].unified_exec`. |183| `profiles.<name>.experimental_use_unified_exec_tool` | `boolean` | Legacy name for enabling unified exec; prefer `[features].unified_exec`. |

142| `profiles.<name>.include_apply_patch_tool` | `boolean` | Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`. |

143| `profiles.<name>.model_catalog_json` | `string (path)` | Profile-scoped model catalog JSON path override (applied on startup only; overrides the top-level `model_catalog_json` for that profile). |184| `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). |

185| `profiles.<name>.model_instructions_file` | `string (path)` | Profile-scoped replacement for the built-in instruction file. |

144| `profiles.<name>.oss_provider` | `lmstudio | ollama` | Profile-scoped OSS provider for `--oss` sessions. |186| `profiles.<name>.oss_provider` | `lmstudio | ollama` | Profile-scoped OSS provider for `--oss` sessions. |

145| `profiles.<name>.personality` | `none | friendly | pragmatic` | Profile-scoped communication style override for supported models. |187| `profiles.<name>.personality` | `none | friendly | pragmatic` | Profile-scoped communication style override for supported models. |

188| `profiles.<name>.plan_mode_reasoning_effort` | `none | minimal | low | medium | high | xhigh` | Profile-scoped Plan-mode reasoning override. |

189| `profiles.<name>.service_tier` | `flex | fast` | Profile-scoped service tier preference for new turns. |

190| `profiles.<name>.tools_view_image` | `boolean` | Enable or disable the `view_image` tool in that profile. |

146| `profiles.<name>.web_search` | `disabled | cached | live` | Profile-scoped web search mode override (default: `"cached"`). |191| `profiles.<name>.web_search` | `disabled | cached | live` | Profile-scoped web search mode override (default: `"cached"`). |

192| `profiles.<name>.windows.sandbox` | `unelevated | elevated` | Profile-scoped Windows sandbox mode override. |

147| `project_doc_fallback_filenames` | `array<string>` | Additional filenames to try when `AGENTS.md` is missing. |193| `project_doc_fallback_filenames` | `array<string>` | Additional filenames to try when `AGENTS.md` is missing. |

148| `project_doc_max_bytes` | `number` | Maximum bytes read from `AGENTS.md` when building project instructions. |194| `project_doc_max_bytes` | `number` | Maximum bytes read from `AGENTS.md` when building project instructions. |

149| `project_root_markers` | `array<string>` | List of project root marker filenames; used when searching parent directories for the project root. |195| `project_root_markers` | `array<string>` | List of project root marker filenames; used when searching parent directories for the project root. |


154| `sandbox_workspace_write.exclude_tmpdir_env_var` | `boolean` | Exclude `$TMPDIR` from writable roots in workspace-write mode. |200| `sandbox_workspace_write.exclude_tmpdir_env_var` | `boolean` | Exclude `$TMPDIR` from writable roots in workspace-write mode. |

155| `sandbox_workspace_write.network_access` | `boolean` | Allow outbound network access inside the workspace-write sandbox. |201| `sandbox_workspace_write.network_access` | `boolean` | Allow outbound network access inside the workspace-write sandbox. |

156| `sandbox_workspace_write.writable_roots` | `array<string>` | Additional writable roots when `sandbox_mode = "workspace-write"`. |202| `sandbox_workspace_write.writable_roots` | `array<string>` | Additional writable roots when `sandbox_mode = "workspace-write"`. |

203| `service_tier` | `flex | fast` | Preferred service tier for new turns. |

157| `shell_environment_policy.exclude` | `array<string>` | Glob patterns for removing environment variables after the defaults. |204| `shell_environment_policy.exclude` | `array<string>` | Glob patterns for removing environment variables after the defaults. |

158| `shell_environment_policy.experimental_use_profile` | `boolean` | Use the user shell profile when spawning subprocesses. |205| `shell_environment_policy.experimental_use_profile` | `boolean` | Use the user shell profile when spawning subprocesses. |

159| `shell_environment_policy.ignore_default_excludes` | `boolean` | Keep variables containing KEY/SECRET/TOKEN before other filters run. |206| `shell_environment_policy.ignore_default_excludes` | `boolean` | Keep variables containing KEY/SECRET/TOKEN before other filters run. |


164| `skills.config` | `array<object>` | Per-skill enablement overrides stored in config.toml. |211| `skills.config` | `array<object>` | Per-skill enablement overrides stored in config.toml. |

165| `skills.config.<index>.enabled` | `boolean` | Enable or disable the referenced skill. |212| `skills.config.<index>.enabled` | `boolean` | Enable or disable the referenced skill. |

166| `skills.config.<index>.path` | `string (path)` | Path to a skill folder containing `SKILL.md`. |213| `skills.config.<index>.path` | `string (path)` | Path to a skill folder containing `SKILL.md`. |

214| `sqlite_home` | `string (path)` | Directory where Codex stores the SQLite-backed state DB used by agent jobs and other resumable runtime state. |

167| `suppress_unstable_features_warning` | `boolean` | Suppress the warning that appears when under-development feature flags are enabled. |215| `suppress_unstable_features_warning` | `boolean` | Suppress the warning that appears when under-development feature flags are enabled. |

168| `tool_output_token_limit` | `number` | Token budget for storing individual tool/function outputs in history. |216| `tool_output_token_limit` | `number` | Token budget for storing individual tool/function outputs in history. |

169| `tools.web_search` | `boolean` | Deprecated legacy toggle for web search; prefer the top-level `web_search` setting. |217| `tool_suggest.discoverables` | `array<table>` | Allow tool suggestions for additional discoverable connectors or plugins. Each entry uses `type = "connector"` or `"plugin"` and an `id`. |

218| `tools.view_image` | `boolean` | Enable the local-image attachment tool `view_image`. |

219| `tools.web_search` | `boolean | { context_size = "low|medium|high", allowed_domains = [string], location = { country, region, city, timezone } }` | Optional web search tool configuration. The legacy boolean form is still accepted, but the object form lets you set search context size, allowed domains, and approximate user location. |

170| `tui` | `table` | TUI-specific options such as enabling inline desktop notifications. |220| `tui` | `table` | TUI-specific options such as enabling inline desktop notifications. |

171| `tui.alternate_screen` | `auto | always | never` | Control alternate screen usage for the TUI (default: auto; auto skips it in Zellij to preserve scrollback). |221| `tui.alternate_screen` | `auto | always | never` | Control alternate screen usage for the TUI (default: auto; auto skips it in Zellij to preserve scrollback). |

172| `tui.animations` | `boolean` | Enable terminal animations (welcome screen, shimmer, spinner) (default: true). |222| `tui.animations` | `boolean` | Enable terminal animations (welcome screen, shimmer, spinner) (default: true). |

223| `tui.model_availability_nux.<model>` | `integer` | Internal startup-tooltip state keyed by model slug. |

173| `tui.notification_method` | `auto | osc9 | bel` | Notification method for unfocused terminal notifications (default: auto). |224| `tui.notification_method` | `auto | osc9 | bel` | Notification method for unfocused terminal notifications (default: auto). |

174| `tui.notifications` | `boolean | array<string>` | Enable TUI notifications; optionally restrict to specific event types. |225| `tui.notifications` | `boolean | array<string>` | Enable TUI notifications; optionally restrict to specific event types. |

175| `tui.show_tooltips` | `boolean` | Show onboarding tooltips in the TUI welcome screen (default: true). |226| `tui.show_tooltips` | `boolean` | Show onboarding tooltips in the TUI welcome screen (default: true). |

176| `tui.status_line` | `array<string> | null` | Ordered list of TUI footer status-line item identifiers. `null` disables the status line. |227| `tui.status_line` | `array<string> | null` | Ordered list of TUI footer status-line item identifiers. `null` disables the status line. |

228| `tui.terminal_title` | `array<string> | null` | Ordered list of terminal window/tab title item identifiers. Defaults to `["spinner", "project"]`; `null` disables title updates. |

229| `tui.theme` | `string` | Syntax-highlighting theme override (kebab-case theme name). |

177| `web_search` | `disabled | cached | live` | Web search mode (default: `"cached"`; cached uses an OpenAI-maintained index and does not fetch live pages; if you use `--yolo` or another full access sandbox setting, it defaults to `"live"`). Use `"live"` to fetch the most recent data from the web, or `"disabled"` to remove the tool. |230| `web_search` | `disabled | cached | live` | Web search mode (default: `"cached"`; cached uses an OpenAI-maintained index and does not fetch live pages; if you use `--yolo` or another full access sandbox setting, it defaults to `"live"`). Use `"live"` to fetch the most recent data from the web, or `"disabled"` to remove the tool. |

178| `windows_wsl_setup_acknowledged` | `boolean` | Track Windows onboarding acknowledgement (Windows only). |231| `windows_wsl_setup_acknowledged` | `boolean` | Track Windows onboarding acknowledgement (Windows only). |

179| `windows.sandbox` | `unelevated | elevated` | Windows-only native sandbox mode when running Codex natively on Windows. |232| `windows.sandbox` | `unelevated | elevated` | Windows-only native sandbox mode when running Codex natively on Windows. |

233| `windows.sandbox_private_desktop` | `boolean` | Run the final sandboxed child process on a private desktop by default on native Windows. Set `false` only for compatibility with the older `Winsta0\\Default` behavior. |

180 234 

181Key235Key

182 236 


204 258 

205Key259Key

206 260 

261`agents.<name>.nickname_candidates`

262 

263Type / Values

264 

265`array<string>`

266 

267Details

268 

269Optional pool of display nicknames for spawned agents in that role.

270 

271Key

272 

273`agents.job_max_runtime_seconds`

274 

275Type / Values

276 

277`number`

278 

279Details

280 

281Default per-worker timeout for `spawn_agents_on_csv` jobs. When unset, the tool falls back to 1800 seconds per worker.

282 

283Key

284 

207`agents.max_depth`285`agents.max_depth`

208 286 

209Type / Values287Type / Values


224 302 

225Details303Details

226 304 

227Maximum number of agent threads that can be open concurrently.305Maximum number of agent threads that can be open concurrently. Defaults to `6` when unset.

228 306 

229Key307Key

230 308 


240 318 

241Key319Key

242 320 

321`analytics.enabled`

322 

323Type / Values

324 

325`boolean`

326 

327Details

328 

329Enable or disable analytics for this machine/profile. When unset, the client default applies.

330 

331Key

332 

243`approval_policy`333`approval_policy`

244 334 

245Type / Values335Type / Values

246 336 

247`untrusted | on-request | never | { reject = { sandbox_approval = bool, rules = bool, mcp_elicitations = bool } }`337`untrusted | on-request | never | { granular = { sandbox_approval = bool, rules = bool, mcp_elicitations = bool, request_permissions = bool, skill_approval = bool } }`

338 

339Details

340 

341Controls 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.

342 

343Key

344 

345`approval_policy.granular.mcp_elicitations`

346 

347Type / Values

348 

349`boolean`

350 

351Details

352 

353When `true`, MCP elicitation prompts are allowed to surface instead of being auto-rejected.

354 

355Key

356 

357`approval_policy.granular.request_permissions`

358 

359Type / Values

360 

361`boolean`

248 362 

249Details363Details

250 364 

251Controls when Codex pauses for approval before executing commands. You can also use `approval_policy = { reject = { ... } }` to auto-reject specific prompt categories while keeping other prompts interactive. `on-failure` is deprecated; use `on-request` for interactive runs or `never` for non-interactive runs.365When `true`, prompts from the `request_permissions` tool are allowed to surface.

252 366 

253Key367Key

254 368 

255`approval_policy.reject.mcp_elicitations`369`approval_policy.granular.rules`

256 370 

257Type / Values371Type / Values

258 372 


260 374 

261Details375Details

262 376 

263When `true`, MCP elicitation prompts are auto-rejected instead of shown to the user.377When `true`, approvals triggered by execpolicy `prompt` rules are allowed to surface.

264 378 

265Key379Key

266 380 

267`approval_policy.reject.rules`381`approval_policy.granular.sandbox_approval`

268 382 

269Type / Values383Type / Values

270 384 


272 386 

273Details387Details

274 388 

275When `true`, approvals triggered by execpolicy `prompt` rules are auto-rejected.389When `true`, sandbox escalation approval prompts are allowed to surface.

276 390 

277Key391Key

278 392 

279`approval_policy.reject.sandbox_approval`393`approval_policy.granular.skill_approval`

280 394 

281Type / Values395Type / Values

282 396 


284 398 

285Details399Details

286 400 

287When `true`, sandbox escalation approval prompts are auto-rejected.401When `true`, skill-script approval prompts are allowed to surface.

402 

403Key

404 

405`approvals_reviewer`

406 

407Type / Values

408 

409`user | guardian_subagent`

410 

411Details

412 

413Select who reviews eligible approval prompts. Defaults to `user`; `guardian_subagent` routes supported reviews through the Guardian reviewer subagent.

288 414 

289Key415Key

290 416 


456 582 

457Key583Key

458 584 

459`compact_prompt`585`commit_attribution`

460 586 

461Type / Values587Type / Values

462 588 


464 590 

465Details591Details

466 592 

467Inline override for the history compaction prompt.593Override the commit co-author trailer text. Set an empty string to disable automatic attribution.

468 594 

469Key595Key

470 596 

471`developer_instructions`597`compact_prompt`

472 598 

473Type / Values599Type / Values

474 600 


476 602 

477Details603Details

478 604 

479Additional developer instructions injected into the session (optional).605Inline override for the history compaction prompt.

480 606 

481Key607Key

482 608 

483`disable_paste_burst`609`default_permissions`

484 610 

485Type / Values611Type / Values

486 612 

487`boolean`613`string`

488 614 

489Details615Details

490 616 

491Disable burst-paste detection in the TUI.617Name of the default permissions profile to apply to sandboxed tool calls.

492 618 

493Key619Key

494 620 

495`experimental_compact_prompt_file`621`developer_instructions`

496 622 

497Type / Values623Type / Values

498 624 

499`string (path)`625`string`

500 626 

501Details627Details

502 628 

503Load the compaction prompt override from a file (experimental).629Additional developer instructions injected into the session (optional).

504 630 

505Key631Key

506 632 

507`experimental_use_freeform_apply_patch`633`disable_paste_burst`

508 634 

509Type / Values635Type / Values

510 636 


512 638 

513Details639Details

514 640 

515Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform` or `codex --enable apply_patch_freeform`.641Disable burst-paste detection in the TUI.

516 642 

517Key643Key

518 644 

519`experimental_use_unified_exec_tool`645`experimental_compact_prompt_file`

520 646 

521Type / Values647Type / Values

522 648 

523`boolean`649`string (path)`

524 650 

525Details651Details

526 652 

527Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`.653Load the compaction prompt override from a file (experimental).

528 654 

529Key655Key

530 656 

531`features.apply_patch_freeform`657`experimental_use_unified_exec_tool`

532 658 

533Type / Values659Type / Values

534 660 


536 662 

537Details663Details

538 664 

539Expose the freeform `apply_patch` tool (experimental).665Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`.

540 666 

541Key667Key

542 668 


552 678 

553Key679Key

554 680 

555`features.apps_mcp_gateway`681`features.codex_hooks`

556 682 

557Type / Values683Type / Values

558 684 


560 686 

561Details687Details

562 688 

563Route Apps MCP calls through the OpenAI connectors MCP gateway (`https://api.openai.com/v1/connectors/mcp/`) instead of legacy routing (experimental).689Enable lifecycle hooks loaded from `hooks.json` (under development; off by default).

564 690 

565Key691Key

566 692 

567`features.child_agents_md`693`features.enable_request_compression`

568 694 

569Type / Values695Type / Values

570 696 


572 698 

573Details699Details

574 700 

575Append AGENTS.md scope/precedence guidance even when no AGENTS.md is present (experimental).701Compress streaming request bodies with zstd when supported (stable; on by default).

576 702 

577Key703Key

578 704 

579`features.collaboration_modes`705`features.fast_mode`

580 706 

581Type / Values707Type / Values

582 708 


584 710 

585Details711Details

586 712 

587Enable collaboration modes such as plan mode (stable; on by default).713Enable Fast mode selection and the `service_tier = "fast"` path (stable; on by default).

588 714 

589Key715Key

590 716 

591`features.multi_agent`717`features.guardian_approval`

592 718 

593Type / Values719Type / Values

594 720 


596 722 

597Details723Details

598 724 

599Enable multi-agent collaboration tools (`spawn\_agent`, `send\_input`, `resume\_agent`, `wait`, and `close\_agent`) (experimental; off by default).725Route eligible approval requests through the guardian reviewer subagent (experimental; off by default). Use with `approvals_reviewer = "guardian_subagent"`.

600 726 

601Key727Key

602 728 

603`features.personality`729`features.memories`

604 730 

605Type / Values731Type / Values

606 732 


608 734 

609Details735Details

610 736 

611Enable personality selection controls (stable; on by default).737Enable [Memories](https://developers.openai.com/codex/memories) (off by default).

612 738 

613Key739Key

614 740 

615`features.powershell_utf8`741`features.multi_agent`

616 742 

617Type / Values743Type / Values

618 744 


620 746 

621Details747Details

622 748 

623Force PowerShell UTF-8 output (defaults to true).749Enable multi-agent collaboration tools (`spawn_agent`, `send_input`, `resume_agent`, `wait_agent`, and `close_agent`) (stable; on by default).

624 750 

625Key751Key

626 752 

627`features.remote_models`753`features.personality`

628 754 

629Type / Values755Type / Values

630 756 


632 758 

633Details759Details

634 760 

635Refresh remote model list before showing readiness (experimental).761Enable personality selection controls (stable; on by default).

636 762 

637Key763Key

638 764 

639`features.request_rule`765`features.prevent_idle_sleep`

640 766 

641Type / Values767Type / Values

642 768 


644 770 

645Details771Details

646 772 

647Enable Smart approvals (`prefix_rule` suggestions on escalation requests; stable; on by default).773Prevent the machine from sleeping while a turn is actively running (experimental; off by default).

648 774 

649Key775Key

650 776 

651`features.runtime_metrics`777`features.shell_snapshot`

652 778 

653Type / Values779Type / Values

654 780 


656 782 

657Details783Details

658 784 

659Show runtime metrics summary in TUI turn separators (experimental).785Snapshot shell environment to speed up repeated commands (stable; on by default).

660 786 

661Key787Key

662 788 

663`features.search_tool`789`features.shell_tool`

664 790 

665Type / Values791Type / Values

666 792 


668 794 

669Details795Details

670 796 

671Enable `search_tool_bm25` for Apps tool discovery before invoking app MCP tools (experimental).797Enable the default `shell` tool for running commands (stable; on by default).

672 798 

673Key799Key

674 800 

675`features.shell_snapshot`801`features.skill_mcp_dependency_install`

676 802 

677Type / Values803Type / Values

678 804 


680 806 

681Details807Details

682 808 

683Snapshot shell environment to speed up repeated commands (beta).809Allow prompting and installing missing MCP dependencies for skills (stable; on by default).

684 810 

685Key811Key

686 812 

687`features.shell_tool`813`features.undo`

688 814 

689Type / Values815Type / Values

690 816 


692 818 

693Details819Details

694 820 

695Enable the default `shell` tool for running commands (stable; on by default).821Enable undo support (stable; off by default).

696 822 

697Key823Key

698 824 


704 830 

705Details831Details

706 832 

707Use the unified PTY-backed exec tool (beta).833Use the unified PTY-backed exec tool (stable; enabled by default except on Windows).

708 

709Key

710 

711`features.use_linux_sandbox_bwrap`

712 

713Type / Values

714 

715`boolean`

716 

717Details

718 

719Use the bubblewrap-based Linux sandbox pipeline (experimental; off by default).

720 834 

721Key835Key

722 836 


840 954 

841Key955Key

842 956 

843`include_apply_patch_tool`

844 

845Type / Values

846 

847`boolean`

848 

849Details

850 

851Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`.

852 

853Key

854 

855`instructions`957`instructions`

856 958 

857Type / Values959Type / Values


1044 1146 

1045Key1147Key

1046 1148 

1149`mcp_servers.<id>.oauth_resource`

1150 

1151Type / Values

1152 

1153`string`

1154 

1155Details

1156 

1157Optional RFC 8707 OAuth resource parameter to include during MCP login.

1158 

1159Key

1160 

1047`mcp_servers.<id>.required`1161`mcp_servers.<id>.required`

1048 1162 

1049Type / Values1163Type / Values


1056 1170 

1057Key1171Key

1058 1172 

1173`mcp_servers.<id>.scopes`

1174 

1175Type / Values

1176 

1177`array<string>`

1178 

1179Details

1180 

1181OAuth scopes to request when authenticating to that MCP server.

1182 

1183Key

1184 

1059`mcp_servers.<id>.startup_timeout_ms`1185`mcp_servers.<id>.startup_timeout_ms`

1060 1186 

1061Type / Values1187Type / Values


1104 1230 

1105Key1231Key

1106 1232 

1107`model`1233`memories.consolidation_model`

1108 1234 

1109Type / Values1235Type / Values

1110 1236 


1112 1238 

1113Details1239Details

1114 1240 

1115Model to use (e.g., `gpt-5-codex`).1241Optional model override for global memory consolidation.

1116 1242 

1117Key1243Key

1118 1244 

1119`model_auto_compact_token_limit`1245`memories.extract_model`

1120 1246 

1121Type / Values1247Type / Values

1122 1248 

1123`number`1249`string`

1124 1250 

1125Details1251Details

1126 1252 

1127Token threshold that triggers automatic history compaction (unset uses model defaults).1253Optional model override for per-thread memory extraction.

1128 1254 

1129Key1255Key

1130 1256 

1131`model_catalog_json`1257`memories.generate_memories`

1132 1258 

1133Type / Values1259Type / Values

1134 1260 

1135`string (path)`1261`boolean`

1136 1262 

1137Details1263Details

1138 1264 

1139Optional path to a JSON model catalog loaded on startup. Profile-level `profiles.<name>.model_catalog_json` can override this per profile.1265When `false`, newly created threads are not stored as memory-generation inputs. Defaults to `true`.

1140 1266 

1141Key1267Key

1142 1268 

1143`model_context_window`1269`memories.max_raw_memories_for_consolidation`

1144 1270 

1145Type / Values1271Type / Values

1146 1272 


1148 1274 

1149Details1275Details

1150 1276 

1151Context window tokens available to the active model.1277Maximum recent raw memories retained for global consolidation. Defaults to `256` and is capped at `4096`.

1152 1278 

1153Key1279Key

1154 1280 

1155`model_instructions_file`1281`memories.max_rollout_age_days`

1156 1282 

1157Type / Values1283Type / Values

1158 1284 

1159`string (path)`1285`number`

1160 1286 

1161Details1287Details

1162 1288 

1163Replacement for built-in instructions instead of `AGENTS.md`.1289Maximum age of threads considered for memory generation. Defaults to `30` and is clamped to `0`-`90`.

1164 1290 

1165Key1291Key

1166 1292 

1167`model_provider`1293`memories.max_rollouts_per_startup`

1168 1294 

1169Type / Values1295Type / Values

1170 1296 

1171`string`1297`number`

1172 1298 

1173Details1299Details

1174 1300 

1175Provider id from `model_providers` (default: `openai`).1301Maximum rollout candidates processed per startup pass. Defaults to `16` and is capped at `128`.

1176 1302 

1177Key1303Key

1178 1304 

1179`model_providers.<id>.base_url`1305`memories.max_unused_days`

1180 1306 

1181Type / Values1307Type / Values

1182 1308 

1183`string`1309`number`

1184 1310 

1185Details1311Details

1186 1312 

1187API base URL for the model provider.1313Maximum days since a memory was last used before it becomes ineligible for consolidation. Defaults to `30` and is clamped to `0`-`365`.

1188 1314 

1189Key1315Key

1190 1316 

1191`model_providers.<id>.env_http_headers`1317`memories.min_rollout_idle_hours`

1192 1318 

1193Type / Values1319Type / Values

1194 1320 

1195`map<string,string>`1321`number`

1196 1322 

1197Details1323Details

1198 1324 

1199HTTP headers populated from environment variables when present.1325Minimum idle time before a thread is considered for memory generation. Defaults to `6` and is clamped to `1`-`48`.

1200 1326 

1201Key1327Key

1202 1328 

1203`model_providers.<id>.env_key`1329`memories.no_memories_if_mcp_or_web_search`

1204 1330 

1205Type / Values1331Type / Values

1206 1332 

1207`string`1333`boolean`

1208 1334 

1209Details1335Details

1210 1336 

1211Environment variable supplying the provider API key.1337When `true`, threads that use MCP tool calls or web search are kept out of memory generation. Defaults to `false`.

1212 1338 

1213Key1339Key

1214 1340 

1215`model_providers.<id>.env_key_instructions`1341`memories.use_memories`

1216 1342 

1217Type / Values1343Type / Values

1218 1344 

1219`string`1345`boolean`

1220 1346 

1221Details1347Details

1222 1348 

1223Optional setup guidance for the provider API key.1349When `false`, Codex skips injecting existing memories into future sessions. Defaults to `true`.

1224 1350 

1225Key1351Key

1226 1352 

1227`model_providers.<id>.experimental_bearer_token`1353`model`

1228 1354 

1229Type / Values1355Type / Values

1230 1356 


1232 1358 

1233Details1359Details

1234 1360 

1235Direct bearer token for the provider (discouraged; use `env_key`).1361Model to use (e.g., `gpt-5.4`).

1236 1362 

1237Key1363Key

1238 1364 

1239`model_providers.<id>.http_headers`1365`model_auto_compact_token_limit`

1240 1366 

1241Type / Values1367Type / Values

1242 1368 

1243`map<string,string>`1369`number`

1244 1370 

1245Details1371Details

1246 1372 

1247Static HTTP headers added to provider requests.1373Token threshold that triggers automatic history compaction (unset uses model defaults).

1248 1374 

1249Key1375Key

1250 1376 

1251`model_providers.<id>.name`1377`model_catalog_json`

1252 1378 

1253Type / Values1379Type / Values

1254 1380 

1255`string`1381`string (path)`

1256 1382 

1257Details1383Details

1258 1384 

1259Display name for a custom model provider.1385Optional path to a JSON model catalog loaded on startup. Profile-level `profiles.<name>.model_catalog_json` can override this per profile.

1260 1386 

1261Key1387Key

1262 1388 

1263`model_providers.<id>.query_params`1389`model_context_window`

1264 1390 

1265Type / Values1391Type / Values

1266 1392 

1267`map<string,string>`1393`number`

1268 1394 

1269Details1395Details

1270 1396 

1271Extra query parameters appended to provider requests.1397Context window tokens available to the active model.

1272 1398 

1273Key1399Key

1274 1400 

1275`model_providers.<id>.request_max_retries`1401`model_instructions_file`

1276 1402 

1277Type / Values1403Type / Values

1278 1404 

1279`number`1405`string (path)`

1280 1406 

1281Details1407Details

1282 1408 

1283Retry count for HTTP requests to the provider (default: 4).1409Replacement for built-in instructions instead of `AGENTS.md`.

1284 1410 

1285Key1411Key

1286 1412 

1287`model_providers.<id>.requires_openai_auth`1413`model_provider`

1288 1414 

1289Type / Values1415Type / Values

1290 1416 

1291`boolean`1417`string`

1292 1418 

1293Details1419Details

1294 1420 

1295The provider uses OpenAI authentication (defaults to false).1421Provider id from `model_providers` (default: `openai`).

1296 1422 

1297Key1423Key

1298 1424 

1299`model_providers.<id>.stream_idle_timeout_ms`1425`model_providers.<id>`

1300 1426 

1301Type / Values1427Type / Values

1302 1428 

1303`number`1429`table`

1304 1430 

1305Details1431Details

1306 1432 

1307Idle timeout for SSE streams in milliseconds (default: 300000).1433Custom provider definition. Built-in provider IDs (`openai`, `ollama`, and `lmstudio`) are reserved and cannot be overridden.

1308 1434 

1309Key1435Key

1310 1436 

1311`model_providers.<id>.stream_max_retries`1437`model_providers.<id>.auth`

1312 1438 

1313Type / Values1439Type / Values

1314 1440 

1315`number`1441`table`

1316 1442 

1317Details1443Details

1318 1444 

1319Retry count for SSE streaming interruptions (default: 5).1445Command-backed bearer token configuration for a custom provider. Do not combine with `env_key`, `experimental_bearer_token`, or `requires_openai_auth`.

1320 1446 

1321Key1447Key

1322 1448 

1323`model_providers.<id>.wire_api`1449`model_providers.<id>.auth.args`

1324 1450 

1325Type / Values1451Type / Values

1326 1452 

1327`chat | responses`1453`array<string>`

1328 1454 

1329Details1455Details

1330 1456 

1331Protocol used by the provider (defaults to `chat` if omitted).1457Arguments passed to the token command.

1332 1458 

1333Key1459Key

1334 1460 

1335`model_reasoning_effort`1461`model_providers.<id>.auth.command`

1336 1462 

1337Type / Values1463Type / Values

1338 1464 

1339`minimal | low | medium | high | xhigh`1465`string`

1340 1466 

1341Details1467Details

1342 1468 

1343Adjust reasoning effort for supported models (Responses API only; `xhigh` is model-dependent).1469Command to run when Codex needs a bearer token. The command must print the token to stdout.

1344 1470 

1345Key1471Key

1346 1472 

1347`model_reasoning_summary`1473`model_providers.<id>.auth.cwd`

1348 1474 

1349Type / Values1475Type / Values

1350 1476 

1351`auto | concise | detailed | none`1477`string (path)`

1352 1478 

1353Details1479Details

1354 1480 

1355Select reasoning summary detail or disable summaries entirely.1481Working directory for the token command.

1356 1482 

1357Key1483Key

1358 1484 

1359`model_supports_reasoning_summaries`1485`model_providers.<id>.auth.refresh_interval_ms`

1360 1486 

1361Type / Values1487Type / Values

1362 1488 

1363`boolean`1489`number`

1364 1490 

1365Details1491Details

1366 1492 

1367Force Codex to send or not send reasoning metadata.1493How often Codex proactively refreshes the token in milliseconds (default: 300000). Set to `0` to refresh only after an authentication retry.

1368 1494 

1369Key1495Key

1370 1496 

1371`model_verbosity`1497`model_providers.<id>.auth.timeout_ms`

1372 1498 

1373Type / Values1499Type / Values

1374 1500 

1375`low | medium | high`1501`number`

1376 1502 

1377Details1503Details

1378 1504 

1379Control GPT-5 Responses API verbosity (defaults to `medium`).1505Maximum token command runtime in milliseconds (default: 5000).

1380 1506 

1381Key1507Key

1382 1508 

1383`notice.hide_full_access_warning`1509`model_providers.<id>.base_url`

1384 1510 

1385Type / Values1511Type / Values

1386 1512 

1387`boolean`1513`string`

1388 1514 

1389Details1515Details

1390 1516 

1391Track acknowledgement of the full access warning prompt.1517API base URL for the model provider.

1392 1518 

1393Key1519Key

1394 1520 

1395`notice.hide_gpt-5.1-codex-max_migration_prompt`1521`model_providers.<id>.env_http_headers`

1396 1522 

1397Type / Values1523Type / Values

1398 1524 

1399`boolean`1525`map<string,string>`

1400 1526 

1401Details1527Details

1402 1528 

1403Track acknowledgement of the gpt-5.1-codex-max migration prompt.1529HTTP headers populated from environment variables when present.

1404 1530 

1405Key1531Key

1406 1532 

1407`notice.hide_gpt5_1_migration_prompt`1533`model_providers.<id>.env_key`

1408 1534 

1409Type / Values1535Type / Values

1410 1536 

1411`boolean`1537`string`

1412 1538 

1413Details1539Details

1414 1540 

1415Track acknowledgement of the GPT-5.1 migration prompt.1541Environment variable supplying the provider API key.

1416 1542 

1417Key1543Key

1418 1544 

1419`notice.hide_rate_limit_model_nudge`1545`model_providers.<id>.env_key_instructions`

1420 1546 

1421Type / Values1547Type / Values

1422 1548 

1423`boolean`1549`string`

1424 1550 

1425Details1551Details

1426 1552 

1427Track opt-out of the rate limit model switch reminder.1553Optional setup guidance for the provider API key.

1428 1554 

1429Key1555Key

1430 1556 

1431`notice.hide_world_writable_warning`1557`model_providers.<id>.experimental_bearer_token`

1558 

1559Type / Values

1560 

1561`string`

1562 

1563Details

1564 

1565Direct bearer token for the provider (discouraged; use `env_key`).

1566 

1567Key

1568 

1569`model_providers.<id>.http_headers`

1570 

1571Type / Values

1572 

1573`map<string,string>`

1574 

1575Details

1576 

1577Static HTTP headers added to provider requests.

1578 

1579Key

1580 

1581`model_providers.<id>.name`

1582 

1583Type / Values

1584 

1585`string`

1586 

1587Details

1588 

1589Display name for a custom model provider.

1590 

1591Key

1592 

1593`model_providers.<id>.query_params`

1594 

1595Type / Values

1596 

1597`map<string,string>`

1598 

1599Details

1600 

1601Extra query parameters appended to provider requests.

1602 

1603Key

1604 

1605`model_providers.<id>.request_max_retries`

1606 

1607Type / Values

1608 

1609`number`

1610 

1611Details

1612 

1613Retry count for HTTP requests to the provider (default: 4).

1614 

1615Key

1616 

1617`model_providers.<id>.requires_openai_auth`

1432 1618 

1433Type / Values1619Type / Values

1434 1620 


1436 1622 

1437Details1623Details

1438 1624 

1439Track acknowledgement of the Windows world-writable directories warning.1625The provider uses OpenAI authentication (defaults to false).

1626 

1627Key

1628 

1629`model_providers.<id>.stream_idle_timeout_ms`

1630 

1631Type / Values

1632 

1633`number`

1634 

1635Details

1636 

1637Idle timeout for SSE streams in milliseconds (default: 300000).

1638 

1639Key

1640 

1641`model_providers.<id>.stream_max_retries`

1642 

1643Type / Values

1644 

1645`number`

1646 

1647Details

1648 

1649Retry count for SSE streaming interruptions (default: 5).

1650 

1651Key

1652 

1653`model_providers.<id>.supports_websockets`

1654 

1655Type / Values

1656 

1657`boolean`

1658 

1659Details

1660 

1661Whether that provider supports the Responses API WebSocket transport.

1662 

1663Key

1664 

1665`model_providers.<id>.wire_api`

1666 

1667Type / Values

1668 

1669`responses`

1670 

1671Details

1672 

1673Protocol used by the provider. `responses` is the only supported value, and it is the default when omitted.

1674 

1675Key

1676 

1677`model_reasoning_effort`

1678 

1679Type / Values

1680 

1681`minimal | low | medium | high | xhigh`

1682 

1683Details

1684 

1685Adjust reasoning effort for supported models (Responses API only; `xhigh` is model-dependent).

1686 

1687Key

1688 

1689`model_reasoning_summary`

1690 

1691Type / Values

1692 

1693`auto | concise | detailed | none`

1694 

1695Details

1696 

1697Select reasoning summary detail or disable summaries entirely.

1698 

1699Key

1700 

1701`model_supports_reasoning_summaries`

1702 

1703Type / Values

1704 

1705`boolean`

1706 

1707Details

1708 

1709Force Codex to send or not send reasoning metadata.

1710 

1711Key

1712 

1713`model_verbosity`

1714 

1715Type / Values

1716 

1717`low | medium | high`

1718 

1719Details

1720 

1721Optional GPT-5 Responses API verbosity override; when unset, the selected model/preset default is used.

1722 

1723Key

1724 

1725`notice.hide_full_access_warning`

1726 

1727Type / Values

1728 

1729`boolean`

1730 

1731Details

1732 

1733Track acknowledgement of the full access warning prompt.

1734 

1735Key

1736 

1737`notice.hide_gpt-5.1-codex-max_migration_prompt`

1738 

1739Type / Values

1740 

1741`boolean`

1742 

1743Details

1744 

1745Track acknowledgement of the gpt-5.1-codex-max migration prompt.

1746 

1747Key

1748 

1749`notice.hide_gpt5_1_migration_prompt`

1750 

1751Type / Values

1752 

1753`boolean`

1754 

1755Details

1756 

1757Track acknowledgement of the GPT-5.1 migration prompt.

1758 

1759Key

1760 

1761`notice.hide_rate_limit_model_nudge`

1762 

1763Type / Values

1764 

1765`boolean`

1766 

1767Details

1768 

1769Track opt-out of the rate limit model switch reminder.

1770 

1771Key

1772 

1773`notice.hide_world_writable_warning`

1774 

1775Type / Values

1776 

1777`boolean`

1778 

1779Details

1780 

1781Track acknowledgement of the Windows world-writable directories warning.

1782 

1783Key

1784 

1785`notice.model_migrations`

1786 

1787Type / Values

1788 

1789`map<string,string>`

1790 

1791Details

1792 

1793Track acknowledged model migrations as old->new mappings.

1794 

1795Key

1796 

1797`notify`

1798 

1799Type / Values

1800 

1801`array<string>`

1802 

1803Details

1804 

1805Command invoked for notifications; receives a JSON payload from Codex.

1806 

1807Key

1808 

1809`openai_base_url`

1810 

1811Type / Values

1812 

1813`string`

1814 

1815Details

1816 

1817Base URL override for the built-in `openai` model provider.

1818 

1819Key

1820 

1821`oss_provider`

1822 

1823Type / Values

1824 

1825`lmstudio | ollama`

1826 

1827Details

1828 

1829Default local provider used when running with `--oss` (defaults to prompting if unset).

1830 

1831Key

1832 

1833`otel.environment`

1834 

1835Type / Values

1836 

1837`string`

1838 

1839Details

1840 

1841Environment tag applied to emitted OpenTelemetry events (default: `dev`).

1842 

1843Key

1844 

1845`otel.exporter`

1846 

1847Type / Values

1848 

1849`none | otlp-http | otlp-grpc`

1850 

1851Details

1852 

1853Select the OpenTelemetry exporter and provide any endpoint metadata.

1854 

1855Key

1856 

1857`otel.exporter.<id>.endpoint`

1858 

1859Type / Values

1860 

1861`string`

1862 

1863Details

1864 

1865Exporter endpoint for OTEL logs.

1866 

1867Key

1868 

1869`otel.exporter.<id>.headers`

1870 

1871Type / Values

1872 

1873`map<string,string>`

1874 

1875Details

1876 

1877Static headers included with OTEL exporter requests.

1878 

1879Key

1880 

1881`otel.exporter.<id>.protocol`

1882 

1883Type / Values

1884 

1885`binary | json`

1886 

1887Details

1888 

1889Protocol used by the OTLP/HTTP exporter.

1890 

1891Key

1892 

1893`otel.exporter.<id>.tls.ca-certificate`

1894 

1895Type / Values

1896 

1897`string`

1898 

1899Details

1900 

1901CA certificate path for OTEL exporter TLS.

1902 

1903Key

1904 

1905`otel.exporter.<id>.tls.client-certificate`

1906 

1907Type / Values

1908 

1909`string`

1910 

1911Details

1912 

1913Client certificate path for OTEL exporter TLS.

1914 

1915Key

1916 

1917`otel.exporter.<id>.tls.client-private-key`

1918 

1919Type / Values

1920 

1921`string`

1922 

1923Details

1924 

1925Client private key path for OTEL exporter TLS.

1926 

1927Key

1928 

1929`otel.log_user_prompt`

1930 

1931Type / Values

1932 

1933`boolean`

1934 

1935Details

1936 

1937Opt in to exporting raw user prompts with OpenTelemetry logs.

1938 

1939Key

1940 

1941`otel.metrics_exporter`

1942 

1943Type / Values

1944 

1945`none | statsig | otlp-http | otlp-grpc`

1946 

1947Details

1948 

1949Select the OpenTelemetry metrics exporter (defaults to `statsig`).

1950 

1951Key

1952 

1953`otel.trace_exporter`

1954 

1955Type / Values

1956 

1957`none | otlp-http | otlp-grpc`

1958 

1959Details

1960 

1961Select the OpenTelemetry trace exporter and provide any endpoint metadata.

1962 

1963Key

1964 

1965`otel.trace_exporter.<id>.endpoint`

1966 

1967Type / Values

1968 

1969`string`

1970 

1971Details

1972 

1973Trace exporter endpoint for OTEL logs.

1440 1974 

1441Key1975Key

1442 1976 

1443`notice.model_migrations`1977`otel.trace_exporter.<id>.headers`

1444 1978 

1445Type / Values1979Type / Values

1446 1980 


1448 1982 

1449Details1983Details

1450 1984 

1451Track acknowledged model migrations as old->new mappings.1985Static headers included with OTEL trace exporter requests.

1452 1986 

1453Key1987Key

1454 1988 

1455`notify`1989`otel.trace_exporter.<id>.protocol`

1456 1990 

1457Type / Values1991Type / Values

1458 1992 

1459`array<string>`1993`binary | json`

1460 1994 

1461Details1995Details

1462 1996 

1463Command invoked for notifications; receives a JSON payload from Codex.1997Protocol used by the OTLP/HTTP trace exporter.

1464 1998 

1465Key1999Key

1466 2000 

1467`oss_provider`2001`otel.trace_exporter.<id>.tls.ca-certificate`

1468 2002 

1469Type / Values2003Type / Values

1470 2004 

1471`lmstudio | ollama`2005`string`

1472 2006 

1473Details2007Details

1474 2008 

1475Default local provider used when running with `--oss` (defaults to prompting if unset).2009CA certificate path for OTEL trace exporter TLS.

1476 2010 

1477Key2011Key

1478 2012 

1479`otel.environment`2013`otel.trace_exporter.<id>.tls.client-certificate`

1480 2014 

1481Type / Values2015Type / Values

1482 2016 


1484 2018 

1485Details2019Details

1486 2020 

1487Environment tag applied to emitted OpenTelemetry events (default: `dev`).2021Client certificate path for OTEL trace exporter TLS.

1488 2022 

1489Key2023Key

1490 2024 

1491`otel.exporter`2025`otel.trace_exporter.<id>.tls.client-private-key`

1492 2026 

1493Type / Values2027Type / Values

1494 2028 

1495`none | otlp-http | otlp-grpc`2029`string`

1496 2030 

1497Details2031Details

1498 2032 

1499Select the OpenTelemetry exporter and provide any endpoint metadata.2033Client private key path for OTEL trace exporter TLS.

1500 2034 

1501Key2035Key

1502 2036 

1503`otel.exporter.<id>.endpoint`2037`permissions.<name>.filesystem`

1504 2038 

1505Type / Values2039Type / Values

1506 2040 

1507`string`2041`table`

1508 2042 

1509Details2043Details

1510 2044 

1511Exporter endpoint for OTEL logs.2045Named filesystem permission profile. Each key is an absolute path or special token such as `:minimal` or `:project_roots`.

1512 2046 

1513Key2047Key

1514 2048 

1515`otel.exporter.<id>.headers`2049`permissions.<name>.filesystem.":project_roots".<subpath>`

1516 2050 

1517Type / Values2051Type / Values

1518 2052 

1519`map<string,string>`2053`"read" | "write" | "none"`

1520 2054 

1521Details2055Details

1522 2056 

1523Static headers included with OTEL exporter requests.2057Scoped filesystem access relative to the detected project roots. Use `"."` for the root itself.

1524 2058 

1525Key2059Key

1526 2060 

1527`otel.exporter.<id>.protocol`2061`permissions.<name>.filesystem.<path>`

1528 2062 

1529Type / Values2063Type / Values

1530 2064 

1531`binary | json`2065`"read" | "write" | "none" | table`

1532 2066 

1533Details2067Details

1534 2068 

1535Protocol used by the OTLP/HTTP exporter.2069Grant direct access for a path or special token, or scope nested entries under that root.

1536 2070 

1537Key2071Key

1538 2072 

1539`otel.exporter.<id>.tls.ca-certificate`2073`permissions.<name>.network.allow_local_binding`

1540 2074 

1541Type / Values2075Type / Values

1542 2076 

1543`string`2077`boolean`

1544 2078 

1545Details2079Details

1546 2080 

1547CA certificate path for OTEL exporter TLS.2081Permit local bind/listen operations through the managed proxy.

1548 2082 

1549Key2083Key

1550 2084 

1551`otel.exporter.<id>.tls.client-certificate`2085`permissions.<name>.network.allow_upstream_proxy`

1552 2086 

1553Type / Values2087Type / Values

1554 2088 

1555`string`2089`boolean`

1556 2090 

1557Details2091Details

1558 2092 

1559Client certificate path for OTEL exporter TLS.2093Allow the managed proxy to chain to another upstream proxy.

1560 2094 

1561Key2095Key

1562 2096 

1563`otel.exporter.<id>.tls.client-private-key`2097`permissions.<name>.network.dangerously_allow_all_unix_sockets`

1564 2098 

1565Type / Values2099Type / Values

1566 2100 

1567`string`2101`boolean`

1568 2102 

1569Details2103Details

1570 2104 

1571Client private key path for OTEL exporter TLS.2105Allow the proxy to use arbitrary Unix sockets instead of the default restricted set.

1572 2106 

1573Key2107Key

1574 2108 

1575`otel.log_user_prompt`2109`permissions.<name>.network.dangerously_allow_non_loopback_proxy`

1576 2110 

1577Type / Values2111Type / Values

1578 2112 


1580 2114 

1581Details2115Details

1582 2116 

1583Opt in to exporting raw user prompts with OpenTelemetry logs.2117Permit non-loopback bind addresses for the managed proxy listener.

1584 2118 

1585Key2119Key

1586 2120 

1587`otel.trace_exporter`2121`permissions.<name>.network.domains`

1588 2122 

1589Type / Values2123Type / Values

1590 2124 

1591`none | otlp-http | otlp-grpc`2125`map<string, allow | deny>`

1592 2126 

1593Details2127Details

1594 2128 

1595Select the OpenTelemetry trace exporter and provide any endpoint metadata.2129Domain rules for the managed proxy. Use domain names or wildcard patterns as keys, with `allow` or `deny` values.

1596 2130 

1597Key2131Key

1598 2132 

1599`otel.trace_exporter.<id>.endpoint`2133`permissions.<name>.network.enable_socks5`

1600 2134 

1601Type / Values2135Type / Values

1602 2136 

1603`string`2137`boolean`

1604 2138 

1605Details2139Details

1606 2140 

1607Trace exporter endpoint for OTEL logs.2141Expose a SOCKS5 listener when this permissions profile enables the managed network proxy.

1608 2142 

1609Key2143Key

1610 2144 

1611`otel.trace_exporter.<id>.headers`2145`permissions.<name>.network.enable_socks5_udp`

1612 2146 

1613Type / Values2147Type / Values

1614 2148 

1615`map<string,string>`2149`boolean`

1616 2150 

1617Details2151Details

1618 2152 

1619Static headers included with OTEL trace exporter requests.2153Allow UDP over the SOCKS5 listener when enabled.

1620 2154 

1621Key2155Key

1622 2156 

1623`otel.trace_exporter.<id>.protocol`2157`permissions.<name>.network.enabled`

1624 2158 

1625Type / Values2159Type / Values

1626 2160 

1627`binary | json`2161`boolean`

1628 2162 

1629Details2163Details

1630 2164 

1631Protocol used by the OTLP/HTTP trace exporter.2165Enable network access for this named permissions profile.

1632 2166 

1633Key2167Key

1634 2168 

1635`otel.trace_exporter.<id>.tls.ca-certificate`2169`permissions.<name>.network.mode`

1636 2170 

1637Type / Values2171Type / Values

1638 2172 

1639`string`2173`limited | full`

1640 2174 

1641Details2175Details

1642 2176 

1643CA certificate path for OTEL trace exporter TLS.2177Network proxy mode used for subprocess traffic.

1644 2178 

1645Key2179Key

1646 2180 

1647`otel.trace_exporter.<id>.tls.client-certificate`2181`permissions.<name>.network.proxy_url`

1648 2182 

1649Type / Values2183Type / Values

1650 2184 


1652 2186 

1653Details2187Details

1654 2188 

1655Client certificate path for OTEL trace exporter TLS.2189HTTP proxy endpoint used when this permissions profile enables the managed network proxy.

1656 2190 

1657Key2191Key

1658 2192 

1659`otel.trace_exporter.<id>.tls.client-private-key`2193`permissions.<name>.network.socks_url`

1660 2194 

1661Type / Values2195Type / Values

1662 2196 


1664 2198 

1665Details2199Details

1666 2200 

1667Client private key path for OTEL trace exporter TLS.2201SOCKS5 proxy endpoint used by this permissions profile.

2202 

2203Key

2204 

2205`permissions.<name>.network.unix_sockets`

2206 

2207Type / Values

2208 

2209`map<string, allow | none>`

2210 

2211Details

2212 

2213Unix socket rules for the managed proxy. Use socket paths as keys, with `allow` or `none` values.

1668 2214 

1669Key2215Key

1670 2216 


1680 2226 

1681Key2227Key

1682 2228 

2229`plan_mode_reasoning_effort`

2230 

2231Type / Values

2232 

2233`none | minimal | low | medium | high | xhigh`

2234 

2235Details

2236 

2237Plan-mode-specific reasoning override. When unset, Plan mode uses its built-in preset default.

2238 

2239Key

2240 

1683`profile`2241`profile`

1684 2242 

1685Type / Values2243Type / Values


1704 2262 

1705Key2263Key

1706 2264 

1707`profiles.<name>.experimental_use_freeform_apply_patch`2265`profiles.<name>.analytics.enabled`

1708 2266 

1709Type / Values2267Type / Values

1710 2268 


1712 2270 

1713Details2271Details

1714 2272 

1715Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`.2273Profile-scoped analytics enablement override.

1716 2274 

1717Key2275Key

1718 2276 


1728 2286 

1729Key2287Key

1730 2288 

1731`profiles.<name>.include_apply_patch_tool`2289`profiles.<name>.model_catalog_json`

1732 2290 

1733Type / Values2291Type / Values

1734 2292 

1735`boolean`2293`string (path)`

1736 2294 

1737Details2295Details

1738 2296 

1739Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`.2297Profile-scoped model catalog JSON path override (applied on startup only; overrides the top-level `model_catalog_json` for that profile).

1740 2298 

1741Key2299Key

1742 2300 

1743`profiles.<name>.model_catalog_json`2301`profiles.<name>.model_instructions_file`

1744 2302 

1745Type / Values2303Type / Values

1746 2304 


1748 2306 

1749Details2307Details

1750 2308 

1751Profile-scoped model catalog JSON path override (applied on startup only; overrides the top-level `model_catalog_json` for that profile).2309Profile-scoped replacement for the built-in instruction file.

1752 2310 

1753Key2311Key

1754 2312 


1776 2334 

1777Key2335Key

1778 2336 

2337`profiles.<name>.plan_mode_reasoning_effort`

2338 

2339Type / Values

2340 

2341`none | minimal | low | medium | high | xhigh`

2342 

2343Details

2344 

2345Profile-scoped Plan-mode reasoning override.

2346 

2347Key

2348 

2349`profiles.<name>.service_tier`

2350 

2351Type / Values

2352 

2353`flex | fast`

2354 

2355Details

2356 

2357Profile-scoped service tier preference for new turns.

2358 

2359Key

2360 

2361`profiles.<name>.tools_view_image`

2362 

2363Type / Values

2364 

2365`boolean`

2366 

2367Details

2368 

2369Enable or disable the `view_image` tool in that profile.

2370 

2371Key

2372 

1779`profiles.<name>.web_search`2373`profiles.<name>.web_search`

1780 2374 

1781Type / Values2375Type / Values


1788 2382 

1789Key2383Key

1790 2384 

2385`profiles.<name>.windows.sandbox`

2386 

2387Type / Values

2388 

2389`unelevated | elevated`

2390 

2391Details

2392 

2393Profile-scoped Windows sandbox mode override.

2394 

2395Key

2396 

1791`project_doc_fallback_filenames`2397`project_doc_fallback_filenames`

1792 2398 

1793Type / Values2399Type / Values


1908 2514 

1909Key2515Key

1910 2516 

2517`service_tier`

2518 

2519Type / Values

2520 

2521`flex | fast`

2522 

2523Details

2524 

2525Preferred service tier for new turns.

2526 

2527Key

2528 

1911`shell_environment_policy.exclude`2529`shell_environment_policy.exclude`

1912 2530 

1913Type / Values2531Type / Values


2028 2646 

2029Key2647Key

2030 2648 

2649`sqlite_home`

2650 

2651Type / Values

2652 

2653`string (path)`

2654 

2655Details

2656 

2657Directory where Codex stores the SQLite-backed state DB used by agent jobs and other resumable runtime state.

2658 

2659Key

2660 

2031`suppress_unstable_features_warning`2661`suppress_unstable_features_warning`

2032 2662 

2033Type / Values2663Type / Values


2052 2682 

2053Key2683Key

2054 2684 

2055`tools.web_search`2685`tool_suggest.discoverables`

2686 

2687Type / Values

2688 

2689`array<table>`

2690 

2691Details

2692 

2693Allow tool suggestions for additional discoverable connectors or plugins. Each entry uses `type = "connector"` or `"plugin"` and an `id`.

2694 

2695Key

2696 

2697`tools.view_image`

2056 2698 

2057Type / Values2699Type / Values

2058 2700 


2060 2702 

2061Details2703Details

2062 2704 

2063Deprecated legacy toggle for web search; prefer the top-level `web_search` setting.2705Enable the local-image attachment tool `view_image`.

2706 

2707Key

2708 

2709`tools.web_search`

2710 

2711Type / Values

2712 

2713`boolean | { context_size = "low|medium|high", allowed_domains = [string], location = { country, region, city, timezone } }`

2714 

2715Details

2716 

2717Optional web search tool configuration. The legacy boolean form is still accepted, but the object form lets you set search context size, allowed domains, and approximate user location.

2064 2718 

2065Key2719Key

2066 2720 


2100 2754 

2101Key2755Key

2102 2756 

2757`tui.model_availability_nux.<model>`

2758 

2759Type / Values

2760 

2761`integer`

2762 

2763Details

2764 

2765Internal startup-tooltip state keyed by model slug.

2766 

2767Key

2768 

2103`tui.notification_method`2769`tui.notification_method`

2104 2770 

2105Type / Values2771Type / Values


2148 2814 

2149Key2815Key

2150 2816 

2817`tui.terminal_title`

2818 

2819Type / Values

2820 

2821`array<string> | null`

2822 

2823Details

2824 

2825Ordered list of terminal window/tab title item identifiers. Defaults to `["spinner", "project"]`; `null` disables title updates.

2826 

2827Key

2828 

2829`tui.theme`

2830 

2831Type / Values

2832 

2833`string`

2834 

2835Details

2836 

2837Syntax-highlighting theme override (kebab-case theme name).

2838 

2839Key

2840 

2151`web_search`2841`web_search`

2152 2842 

2153Type / Values2843Type / Values


2182 2872 

2183Windows-only native sandbox mode when running Codex natively on Windows.2873Windows-only native sandbox mode when running Codex natively on Windows.

2184 2874 

2875Key

2876 

2877`windows.sandbox_private_desktop`

2878 

2879Type / Values

2880 

2881`boolean`

2882 

2883Details

2884 

2885Run 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.

2886 

2185Expand to view all2887Expand to view all

2186 2888 

2187You can find the latest JSON schema for `config.toml` [here](https://developers.openai.com/codex/config-schema.json).2889You can find the latest JSON schema for `config.toml` [here](https://developers.openai.com/codex/config-schema.json).


2201For ChatGPT Business and Enterprise users, Codex can also apply cloud-fetched2903For ChatGPT Business and Enterprise users, Codex can also apply cloud-fetched

2202requirements. See the security page for precedence details.2904requirements. See the security page for precedence details.

2203 2905 

2906Use `[features]` in `requirements.toml` to pin feature flags by the same

2907canonical keys that `config.toml` uses. Omitted keys remain unconstrained.

2908 

2204| Key | Type / Values | Details |2909| Key | Type / Values | Details |

2205| --- | --- | --- |2910| --- | --- | --- |

2206| `allowed_approval_policies` | `array<string>` | Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `reject`). |2911| `allowed_approval_policies` | `array<string>` | Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `granular`). |

2912| `allowed_approvals_reviewers` | `array<string>` | Allowed values for `approvals_reviewer` (for example `user` and `guardian_subagent`). |

2207| `allowed_sandbox_modes` | `array<string>` | Allowed values for `sandbox_mode`. |2913| `allowed_sandbox_modes` | `array<string>` | Allowed values for `sandbox_mode`. |

2208| `allowed_web_search_modes` | `array<string>` | Allowed values for `web_search` (`disabled`, `cached`, `live`). `disabled` is always allowed; an empty list effectively allows only `disabled`. |2914| `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`. |

2915| `features` | `table` | Pinned feature values keyed by the canonical names from `config.toml`'s `[features]` table. |

2916| `features.<name>` | `boolean` | Require a specific canonical feature key to stay enabled or disabled. |

2209| `mcp_servers` | `table` | Allowlist of MCP servers that may be enabled. Both the server name (`<id>`) and its identity must match for the MCP server to be enabled. Any configured MCP server not in the allowlist (or with a mismatched identity) is disabled. |2917| `mcp_servers` | `table` | Allowlist of MCP servers that may be enabled. Both the server name (`<id>`) and its identity must match for the MCP server to be enabled. Any configured MCP server not in the allowlist (or with a mismatched identity) is disabled. |

2210| `mcp_servers.<id>.identity` | `table` | Identity rule for a single MCP server. Set either `command` (stdio) or `url` (streamable HTTP). |2918| `mcp_servers.<id>.identity` | `table` | Identity rule for a single MCP server. Set either `command` (stdio) or `url` (streamable HTTP). |

2211| `mcp_servers.<id>.identity.command` | `string` | Allow an MCP stdio server when its `mcp_servers.<id>.command` matches this command. |2919| `mcp_servers.<id>.identity.command` | `string` | Allow an MCP stdio server when its `mcp_servers.<id>.command` matches this command. |


2228 2936 

2229Details2937Details

2230 2938 

2231Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `reject`).2939Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `granular`).

2940 

2941Key

2942 

2943`allowed_approvals_reviewers`

2944 

2945Type / Values

2946 

2947`array<string>`

2948 

2949Details

2950 

2951Allowed values for `approvals_reviewer` (for example `user` and `guardian_subagent`).

2232 2952 

2233Key2953Key

2234 2954 


2256 2976 

2257Key2977Key

2258 2978 

2979`features`

2980 

2981Type / Values

2982 

2983`table`

2984 

2985Details

2986 

2987Pinned feature values keyed by the canonical names from `config.toml`'s `[features]` table.

2988 

2989Key

2990 

2991`features.<name>`

2992 

2993Type / Values

2994 

2995`boolean`

2996 

2997Details

2998 

2999Require a specific canonical feature key to stay enabled or disabled.

3000 

3001Key

3002 

2259`mcp_servers`3003`mcp_servers`

2260 3004 

2261Type / Values3005Type / Values