6 6
7User-level configuration lives in `~/.codex/config.toml`. You can also add project-scoped overrides in `.codex/config.toml` files. Codex loads project-scoped config files only when you trust the project.7User-level configuration lives in `~/.codex/config.toml`. You can also add project-scoped overrides in `.codex/config.toml` files. Codex loads project-scoped config files only when you trust the project.
8 8
9For sandbox and approval keys (`approval_policy`, `sandbox_mode`, and `sandbox_workspace_write.*`), pair this reference with [Sandbox and approvals](https://developers.openai.com/codex/agent-approvals-security#sandbox-and-approvals), [Protected paths in writable roots](https://developers.openai.com/codex/agent-approvals-security#protected-paths-in-writable-roots), and [Network access](https://developers.openai.com/codex/agent-approvals-security#network-access).9Project-scoped config can't override machine-local provider, auth,
10 10notification, profile, or telemetry routing keys. Codex ignores
11| Key | Type / Values | Details |11`openai_base_url`, `chatgpt_base_url`, `model_provider`, `model_providers`,
12| --- | --- | --- |12`notify`, `profile`, `profiles`, `experimental_realtime_ws_base_url`, and
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`otel` when they appear in a project-local `.codex/config.toml`; put those in
14| `agents.<name>.description` | `string` | Role guidance shown to Codex when choosing and spawning that agent type. |14user-level config instead.
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. |
17| `agents.max_depth` | `number` | Maximum nesting depth allowed for spawned agent threads (root sessions start at depth 0; default: 1). |
18| `agents.max_threads` | `number` | Maximum number of agent threads that can be open concurrently. Defaults to `6` when unset. |
19| `allow_login_shell` | `boolean` | Allow shell-based tools to use login-shell semantics. Defaults to `true`; when `false`, `login = true` requests are rejected and omitted `login` defaults to non-login shells. |
20| `analytics.enabled` | `boolean` | Enable or disable analytics for this machine/profile. When unset, the client default applies. |
21| `approval_policy` | `untrusted | on-request | never | { 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. |
22| `approval_policy.reject.mcp_elicitations` | `boolean` | When `true`, MCP elicitation prompts are auto-rejected instead of shown to the user. |
23| `approval_policy.reject.rules` | `boolean` | When `true`, approvals triggered by execpolicy `prompt` rules are auto-rejected. |
24| `approval_policy.reject.sandbox_approval` | `boolean` | When `true`, sandbox escalation approval prompts are auto-rejected. |
25| `apps._default.destructive_enabled` | `boolean` | Default allow/deny for app tools with `destructive_hint = true`. |
26| `apps._default.enabled` | `boolean` | Default app enabled state for all apps unless overridden per app. |
27| `apps._default.open_world_enabled` | `boolean` | Default allow/deny for app tools with `open_world_hint = true`. |
28| `apps.<id>.default_tools_approval_mode` | `auto | prompt | approve` | Default approval behavior for tools in this app unless a per-tool override exists. |
29| `apps.<id>.default_tools_enabled` | `boolean` | Default enabled state for tools in this app unless a per-tool override exists. |
30| `apps.<id>.destructive_enabled` | `boolean` | Allow or block tools in this app that advertise `destructive_hint = true`. |
31| `apps.<id>.enabled` | `boolean` | Enable or disable a specific app/connector by id (default: true). |
32| `apps.<id>.open_world_enabled` | `boolean` | Allow or block tools in this app that advertise `open_world_hint = true`. |
33| `apps.<id>.tools.<tool>.approval_mode` | `auto | prompt | approve` | Per-tool approval behavior override for a single app tool. |
34| `apps.<id>.tools.<tool>.enabled` | `boolean` | Per-tool enabled override for an app tool (for example `repos/list`). |
35| `background_terminal_max_timeout` | `number` | Maximum poll window in milliseconds for empty `write_stdin` polls (background terminal polling). Default: `300000` (5 minutes). Replaces the older `background_terminal_timeout` key. |
36| `chatgpt_base_url` | `string` | Override the base URL used during the ChatGPT login flow. |
37| `check_for_update_on_startup` | `boolean` | Check for Codex updates on startup (set to false only when updates are centrally managed). |
38| `cli_auth_credentials_store` | `file | keyring | auto` | Control where the CLI stores cached credentials (file-based auth.json vs OS keychain). |
39| `commit_attribution` | `string` | Override the commit co-author trailer text. Set an empty string to disable automatic attribution. |
40| `compact_prompt` | `string` | Inline override for the history compaction prompt. |
41| `developer_instructions` | `string` | Additional developer instructions injected into the session (optional). |
42| `disable_paste_burst` | `boolean` | Disable burst-paste detection in the TUI. |
43| `experimental_compact_prompt_file` | `string (path)` | Load the compaction prompt override from a file (experimental). |
44| `experimental_use_unified_exec_tool` | `boolean` | Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`. |
45| `features.apps` | `boolean` | Enable ChatGPT Apps/connectors support (experimental). |
46| `features.apps_mcp_gateway` | `boolean` | Route Apps MCP calls through the OpenAI connectors MCP gateway (`https://api.openai.com/v1/connectors/mcp/`) instead of legacy routing (experimental). |
47| `features.artifact` | `boolean` | Enable native artifact tools such as slides and spreadsheets (under development). |
48| `features.child_agents_md` | `boolean` | Append AGENTS.md scope/precedence guidance even when no AGENTS.md is present (experimental). |
49| `features.collaboration_modes` | `boolean` | Legacy toggle for collaboration modes. Plan and default modes are available in current builds without setting this key. |
50| `features.default_mode_request_user_input` | `boolean` | Allow `request_user_input` in default collaboration mode (under development; off by default). |
51| `features.elevated_windows_sandbox` | `boolean` | Legacy toggle for an earlier elevated Windows sandbox rollout. Current builds do not use it. |
52| `features.enable_request_compression` | `boolean` | Compress streaming request bodies with zstd when supported (stable; on by default). |
53| `features.experimental_windows_sandbox` | `boolean` | Legacy toggle for an earlier Windows sandbox rollout. Current builds do not use it. |
54| `features.fast_mode` | `boolean` | Enable Fast mode selection and the `service_tier = "fast"` path (stable; on by default). |
55| `features.image_detail_original` | `boolean` | Allow image outputs with `detail = "original"` on supported models (under development). |
56| `features.image_generation` | `boolean` | Enable the built-in image generation tool (under development). |
57| `features.personality` | `boolean` | Enable personality selection controls (stable; on by default). |
58| `features.powershell_utf8` | `boolean` | Force PowerShell UTF-8 output. Enabled by default on Windows and off elsewhere. |
59| `features.prevent_idle_sleep` | `boolean` | Prevent the machine from sleeping while a turn is actively running (experimental; off by default). |
60| `features.remote_models` | `boolean` | Legacy toggle for an older remote-model readiness flow. Current builds do not use it. |
61| `features.request_rule` | `boolean` | Legacy toggle for Smart approvals. Current builds include this behavior by default, so most users can leave this unset. |
62| `features.responses_websockets` | `boolean` | Prefer the Responses API WebSocket transport for supported providers (under development). |
63| `features.responses_websockets_v2` | `boolean` | Enable Responses API WebSocket v2 mode (under development). |
64| `features.runtime_metrics` | `boolean` | Show runtime metrics summary in TUI turn separators (experimental). |
65| `features.search_tool` | `boolean` | Legacy toggle for an older Apps discovery flow. Current builds do not use it. |
66| `features.shell_snapshot` | `boolean` | Snapshot shell environment to speed up repeated commands (stable; on by default). |
67| `features.shell_tool` | `boolean` | Enable the default `shell` tool for running commands (stable; on by default). |
68| `features.skill_env_var_dependency_prompt` | `boolean` | Prompt for missing skill environment-variable dependencies (under development). |
69| `features.skill_mcp_dependency_install` | `boolean` | Allow prompting and installing missing MCP dependencies for skills (stable; on by default). |
70| `features.sqlite` | `boolean` | Enable SQLite-backed state persistence (stable; on by default). |
71| `features.steer` | `boolean` | Legacy toggle from an earlier Enter/Tab steering rollout. Current builds always use the current steering behavior. |
72| `features.undo` | `boolean` | Enable undo support (stable; off by default). |
73| `features.unified_exec` | `boolean` | Use the unified PTY-backed exec tool (stable; enabled by default except on Windows). |
74| `features.use_linux_sandbox_bwrap` | `boolean` | Use the bubblewrap-based Linux sandbox pipeline (experimental; off by default). |
75| `features.web_search` | `boolean` | Deprecated legacy toggle; prefer the top-level `web_search` setting. |
76| `features.web_search_cached` | `boolean` | Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "cached"`. |
77| `features.web_search_request` | `boolean` | Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "live"`. |
78| `feedback.enabled` | `boolean` | Enable feedback submission via `/feedback` across Codex surfaces (default: true). |
79| `file_opener` | `vscode | vscode-insiders | windsurf | cursor | none` | URI scheme used to open citations from Codex output (default: `vscode`). |
80| `forced_chatgpt_workspace_id` | `string (uuid)` | Limit ChatGPT logins to a specific workspace identifier. |
81| `forced_login_method` | `chatgpt | api` | Restrict Codex to a specific authentication method. |
82| `hide_agent_reasoning` | `boolean` | Suppress reasoning events in both the TUI and `codex exec` output. |
83| `history.max_bytes` | `number` | If set, caps the history file size in bytes by dropping oldest entries. |
84| `history.persistence` | `save-all | none` | Control whether Codex saves session transcripts to history.jsonl. |
85| `instructions` | `string` | Reserved for future use; prefer `model_instructions_file` or `AGENTS.md`. |
86| `log_dir` | `string (path)` | Directory where Codex writes log files (for example `codex-tui.log`); defaults to `$CODEX_HOME/log`. |
87| `mcp_oauth_callback_port` | `integer` | Optional fixed port for the local HTTP callback server used during MCP OAuth login. When unset, Codex binds to an ephemeral port chosen by the OS. |
88| `mcp_oauth_callback_url` | `string` | Optional redirect URI override for MCP OAuth login (for example, a devbox ingress URL). `mcp_oauth_callback_port` still controls the callback listener port. |
89| `mcp_oauth_credentials_store` | `auto | file | keyring` | Preferred store for MCP OAuth credentials. |
90| `mcp_servers.<id>.args` | `array<string>` | Arguments passed to the MCP stdio server command. |
91| `mcp_servers.<id>.bearer_token_env_var` | `string` | Environment variable sourcing the bearer token for an MCP HTTP server. |
92| `mcp_servers.<id>.command` | `string` | Launcher command for an MCP stdio server. |
93| `mcp_servers.<id>.cwd` | `string` | Working directory for the MCP stdio server process. |
94| `mcp_servers.<id>.disabled_tools` | `array<string>` | Deny list applied after `enabled_tools` for the MCP server. |
95| `mcp_servers.<id>.enabled` | `boolean` | Disable an MCP server without removing its configuration. |
96| `mcp_servers.<id>.enabled_tools` | `array<string>` | Allow list of tool names exposed by the MCP server. |
97| `mcp_servers.<id>.env` | `map<string,string>` | Environment variables forwarded to the MCP stdio server. |
98| `mcp_servers.<id>.env_http_headers` | `map<string,string>` | HTTP headers populated from environment variables for an MCP HTTP server. |
99| `mcp_servers.<id>.env_vars` | `array<string>` | Additional environment variables to whitelist for an MCP stdio server. |
100| `mcp_servers.<id>.http_headers` | `map<string,string>` | Static HTTP headers included with each MCP HTTP request. |
101| `mcp_servers.<id>.oauth_resource` | `string` | Optional RFC 8707 OAuth resource parameter to include during MCP login. |
102| `mcp_servers.<id>.required` | `boolean` | When true, fail startup/resume if this enabled MCP server cannot initialize. |
103| `mcp_servers.<id>.scopes` | `array<string>` | OAuth scopes to request when authenticating to that MCP server. |
104| `mcp_servers.<id>.startup_timeout_ms` | `number` | Alias for `startup_timeout_sec` in milliseconds. |
105| `mcp_servers.<id>.startup_timeout_sec` | `number` | Override the default 10s startup timeout for an MCP server. |
106| `mcp_servers.<id>.tool_timeout_sec` | `number` | Override the default 60s per-tool timeout for an MCP server. |
107| `mcp_servers.<id>.url` | `string` | Endpoint for an MCP streamable HTTP server. |
108| `model` | `string` | Model to use (e.g., `gpt-5-codex`). |
109| `model_auto_compact_token_limit` | `number` | Token threshold that triggers automatic history compaction (unset uses model defaults). |
110| `model_catalog_json` | `string (path)` | Optional path to a JSON model catalog loaded on startup. Profile-level `profiles.<name>.model_catalog_json` can override this per profile. |
111| `model_context_window` | `number` | Context window tokens available to the active model. |
112| `model_instructions_file` | `string (path)` | Replacement for built-in instructions instead of `AGENTS.md`. |
113| `model_provider` | `string` | Provider id from `model_providers` (default: `openai`). |
114| `model_providers.<id>.base_url` | `string` | API base URL for the model provider. |
115| `model_providers.<id>.env_http_headers` | `map<string,string>` | HTTP headers populated from environment variables when present. |
116| `model_providers.<id>.env_key` | `string` | Environment variable supplying the provider API key. |
117| `model_providers.<id>.env_key_instructions` | `string` | Optional setup guidance for the provider API key. |
118| `model_providers.<id>.experimental_bearer_token` | `string` | Direct bearer token for the provider (discouraged; use `env_key`). |
119| `model_providers.<id>.http_headers` | `map<string,string>` | Static HTTP headers added to provider requests. |
120| `model_providers.<id>.name` | `string` | Display name for a custom model provider. |
121| `model_providers.<id>.query_params` | `map<string,string>` | Extra query parameters appended to provider requests. |
122| `model_providers.<id>.request_max_retries` | `number` | Retry count for HTTP requests to the provider (default: 4). |
123| `model_providers.<id>.requires_openai_auth` | `boolean` | The provider uses OpenAI authentication (defaults to false). |
124| `model_providers.<id>.stream_idle_timeout_ms` | `number` | Idle timeout for SSE streams in milliseconds (default: 300000). |
125| `model_providers.<id>.stream_max_retries` | `number` | Retry count for SSE streaming interruptions (default: 5). |
126| `model_providers.<id>.supports_websockets` | `boolean` | Whether that provider supports the Responses API WebSocket transport. |
127| `model_providers.<id>.wire_api` | `responses` | Protocol used by the provider. `responses` is the only supported value, and it is the default when omitted. |
128| `model_reasoning_effort` | `minimal | low | medium | high | xhigh` | Adjust reasoning effort for supported models (Responses API only; `xhigh` is model-dependent). |
129| `model_reasoning_summary` | `auto | concise | detailed | none` | Select reasoning summary detail or disable summaries entirely. |
130| `model_supports_reasoning_summaries` | `boolean` | Force Codex to send or not send reasoning metadata. |
131| `model_verbosity` | `low | medium | high` | Optional GPT-5 Responses API verbosity override; when unset, the selected model/preset default is used. |
132| `notice.hide_full_access_warning` | `boolean` | Track acknowledgement of the full access warning prompt. |
133| `notice.hide_gpt-5.1-codex-max_migration_prompt` | `boolean` | Track acknowledgement of the gpt-5.1-codex-max migration prompt. |
134| `notice.hide_gpt5_1_migration_prompt` | `boolean` | Track acknowledgement of the GPT-5.1 migration prompt. |
135| `notice.hide_rate_limit_model_nudge` | `boolean` | Track opt-out of the rate limit model switch reminder. |
136| `notice.hide_world_writable_warning` | `boolean` | Track acknowledgement of the Windows world-writable directories warning. |
137| `notice.model_migrations` | `map<string,string>` | Track acknowledged model migrations as old->new mappings. |
138| `notify` | `array<string>` | Command invoked for notifications; receives a JSON payload from Codex. |
139| `oss_provider` | `lmstudio | ollama` | Default local provider used when running with `--oss` (defaults to prompting if unset). |
140| `otel.environment` | `string` | Environment tag applied to emitted OpenTelemetry events (default: `dev`). |
141| `otel.exporter` | `none | otlp-http | otlp-grpc` | Select the OpenTelemetry exporter and provide any endpoint metadata. |
142| `otel.exporter.<id>.endpoint` | `string` | Exporter endpoint for OTEL logs. |
143| `otel.exporter.<id>.headers` | `map<string,string>` | Static headers included with OTEL exporter requests. |
144| `otel.exporter.<id>.protocol` | `binary | json` | Protocol used by the OTLP/HTTP exporter. |
145| `otel.exporter.<id>.tls.ca-certificate` | `string` | CA certificate path for OTEL exporter TLS. |
146| `otel.exporter.<id>.tls.client-certificate` | `string` | Client certificate path for OTEL exporter TLS. |
147| `otel.exporter.<id>.tls.client-private-key` | `string` | Client private key path for OTEL exporter TLS. |
148| `otel.log_user_prompt` | `boolean` | Opt in to exporting raw user prompts with OpenTelemetry logs. |
149| `otel.metrics_exporter` | `none | statsig | otlp-http | otlp-grpc` | Select the OpenTelemetry metrics exporter (defaults to `statsig`). |
150| `otel.trace_exporter` | `none | otlp-http | otlp-grpc` | Select the OpenTelemetry trace exporter and provide any endpoint metadata. |
151| `otel.trace_exporter.<id>.endpoint` | `string` | Trace exporter endpoint for OTEL logs. |
152| `otel.trace_exporter.<id>.headers` | `map<string,string>` | Static headers included with OTEL trace exporter requests. |
153| `otel.trace_exporter.<id>.protocol` | `binary | json` | Protocol used by the OTLP/HTTP trace exporter. |
154| `otel.trace_exporter.<id>.tls.ca-certificate` | `string` | CA certificate path for OTEL trace exporter TLS. |
155| `otel.trace_exporter.<id>.tls.client-certificate` | `string` | Client certificate path for OTEL trace exporter TLS. |
156| `otel.trace_exporter.<id>.tls.client-private-key` | `string` | Client private key path for OTEL trace exporter TLS. |
157| `permissions.network.admin_url` | `string` | Admin endpoint for the managed network proxy. |
158| `permissions.network.allow_local_binding` | `boolean` | Permit local bind/listen operations through the managed proxy. |
159| `permissions.network.allow_unix_sockets` | `array<string>` | Allowlist of Unix socket paths permitted through the managed proxy. |
160| `permissions.network.allow_upstream_proxy` | `boolean` | Allow the managed proxy to chain to another upstream proxy. |
161| `permissions.network.allowed_domains` | `array<string>` | Allowlist of domains permitted through the managed proxy. |
162| `permissions.network.dangerously_allow_all_unix_sockets` | `boolean` | Allow the proxy to use arbitrary Unix sockets instead of the default restricted set. |
163| `permissions.network.dangerously_allow_non_loopback_admin` | `boolean` | Permit non-loopback bind addresses for the managed proxy admin listener. |
164| `permissions.network.dangerously_allow_non_loopback_proxy` | `boolean` | Permit non-loopback bind addresses for the managed proxy listener. |
165| `permissions.network.denied_domains` | `array<string>` | Denylist of domains blocked by the managed proxy. |
166| `permissions.network.enable_socks5` | `boolean` | Expose a SOCKS5 listener from the managed network proxy. |
167| `permissions.network.enable_socks5_udp` | `boolean` | Allow UDP over the SOCKS5 listener when enabled. |
168| `permissions.network.enabled` | `boolean` | Enable the managed network proxy configuration for subprocesses. |
169| `permissions.network.mode` | `limited | full` | Network proxy mode used for subprocess traffic. |
170| `permissions.network.proxy_url` | `string` | HTTP proxy endpoint used by the managed network proxy. |
171| `permissions.network.socks_url` | `string` | SOCKS5 proxy endpoint used by the managed network proxy. |
172| `personality` | `none | friendly | pragmatic` | Default communication style for models that advertise `supportsPersonality`; can be overridden per thread/turn or via `/personality`. |
173| `plan_mode_reasoning_effort` | `none | minimal | low | medium | high | xhigh` | Plan-mode-specific reasoning override. When unset, Plan mode uses its built-in preset default. |
174| `profile` | `string` | Default profile applied at startup (equivalent to `--profile`). |
175| `profiles.<name>.*` | `various` | Profile-scoped overrides for any of the supported configuration keys. |
176| `profiles.<name>.analytics.enabled` | `boolean` | Profile-scoped analytics enablement override. |
177| `profiles.<name>.experimental_use_unified_exec_tool` | `boolean` | Legacy name for enabling unified exec; prefer `[features].unified_exec`. |
178| `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). |
179| `profiles.<name>.model_instructions_file` | `string (path)` | Profile-scoped replacement for the built-in instruction file. |
180| `profiles.<name>.oss_provider` | `lmstudio | ollama` | Profile-scoped OSS provider for `--oss` sessions. |
181| `profiles.<name>.personality` | `none | friendly | pragmatic` | Profile-scoped communication style override for supported models. |
182| `profiles.<name>.plan_mode_reasoning_effort` | `none | minimal | low | medium | high | xhigh` | Profile-scoped Plan-mode reasoning override. |
183| `profiles.<name>.service_tier` | `flex | fast` | Profile-scoped service tier preference for new turns. |
184| `profiles.<name>.tools_view_image` | `boolean` | Enable or disable the `view_image` tool in that profile. |
185| `profiles.<name>.web_search` | `disabled | cached | live` | Profile-scoped web search mode override (default: `"cached"`). |
186| `profiles.<name>.windows.sandbox` | `unelevated | elevated` | Profile-scoped Windows sandbox mode override. |
187| `project_doc_fallback_filenames` | `array<string>` | Additional filenames to try when `AGENTS.md` is missing. |
188| `project_doc_max_bytes` | `number` | Maximum bytes read from `AGENTS.md` when building project instructions. |
189| `project_root_markers` | `array<string>` | List of project root marker filenames; used when searching parent directories for the project root. |
190| `projects.<path>.trust_level` | `string` | Mark a project or worktree as trusted or untrusted (`"trusted"` | `"untrusted"`). Untrusted projects skip project-scoped `.codex/` layers. |
191| `review_model` | `string` | Optional model override used by `/review` (defaults to the current session model). |
192| `sandbox_mode` | `read-only | workspace-write | danger-full-access` | Sandbox policy for filesystem and network access during command execution. |
193| `sandbox_workspace_write.exclude_slash_tmp` | `boolean` | Exclude `/tmp` from writable roots in workspace-write mode. |
194| `sandbox_workspace_write.exclude_tmpdir_env_var` | `boolean` | Exclude `$TMPDIR` from writable roots in workspace-write mode. |
195| `sandbox_workspace_write.network_access` | `boolean` | Allow outbound network access inside the workspace-write sandbox. |
196| `sandbox_workspace_write.writable_roots` | `array<string>` | Additional writable roots when `sandbox_mode = "workspace-write"`. |
197| `service_tier` | `flex | fast` | Preferred service tier for new turns. `fast` is honored only when the `features.fast_mode` gate is enabled. |
198| `shell_environment_policy.exclude` | `array<string>` | Glob patterns for removing environment variables after the defaults. |
199| `shell_environment_policy.experimental_use_profile` | `boolean` | Use the user shell profile when spawning subprocesses. |
200| `shell_environment_policy.ignore_default_excludes` | `boolean` | Keep variables containing KEY/SECRET/TOKEN before other filters run. |
201| `shell_environment_policy.include_only` | `array<string>` | Whitelist of patterns; when set only matching variables are kept. |
202| `shell_environment_policy.inherit` | `all | core | none` | Baseline environment inheritance when spawning subprocesses. |
203| `shell_environment_policy.set` | `map<string,string>` | Explicit environment overrides injected into every subprocess. |
204| `show_raw_agent_reasoning` | `boolean` | Surface raw reasoning content when the active model emits it. |
205| `skills.config` | `array<object>` | Per-skill enablement overrides stored in config.toml. |
206| `skills.config.<index>.enabled` | `boolean` | Enable or disable the referenced skill. |
207| `skills.config.<index>.path` | `string (path)` | Path to a skill folder containing `SKILL.md`. |
208| `sqlite_home` | `string (path)` | Directory where Codex stores the SQLite-backed state DB used by agent jobs and other resumable runtime state. |
209| `suppress_unstable_features_warning` | `boolean` | Suppress the warning that appears when under-development feature flags are enabled. |
210| `tool_output_token_limit` | `number` | Token budget for storing individual tool/function outputs in history. |
211| `tools.view_image` | `boolean` | Enable the local-image attachment tool `view_image`. |
212| `tools.web_search` | `boolean` | Deprecated legacy toggle for web search; prefer the top-level `web_search` setting. |
213| `tui` | `table` | TUI-specific options such as enabling inline desktop notifications. |
214| `tui.alternate_screen` | `auto | always | never` | Control alternate screen usage for the TUI (default: auto; auto skips it in Zellij to preserve scrollback). |
215| `tui.animations` | `boolean` | Enable terminal animations (welcome screen, shimmer, spinner) (default: true). |
216| `tui.model_availability_nux.<model>` | `integer` | Internal startup-tooltip state keyed by model slug. |
217| `tui.notification_method` | `auto | osc9 | bel` | Notification method for unfocused terminal notifications (default: auto). |
218| `tui.notifications` | `boolean | array<string>` | Enable TUI notifications; optionally restrict to specific event types. |
219| `tui.show_tooltips` | `boolean` | Show onboarding tooltips in the TUI welcome screen (default: true). |
220| `tui.status_line` | `array<string> | null` | Ordered list of TUI footer status-line item identifiers. `null` disables the status line. |
221| `tui.theme` | `string` | Syntax-highlighting theme override (kebab-case theme name). |
222| `web_search` | `disabled | cached | live` | Web search mode (default: `"cached"`; cached uses an OpenAI-maintained index and does not fetch live pages; if you use `--yolo` or another full access sandbox setting, it defaults to `"live"`). Use `"live"` to fetch the most recent data from the web, or `"disabled"` to remove the tool. |
223| `windows_wsl_setup_acknowledged` | `boolean` | Track Windows onboarding acknowledgement (Windows only). |
224| `windows.sandbox` | `unelevated | elevated` | Windows-only native sandbox mode when running Codex natively on Windows. |
225
226Key
227
228`agents.<name>.config_file`
229
230Type / Values
231
232`string (path)`
233
234Details
235
236Path to a TOML config layer for that role; relative paths resolve from the config file that declares the role.
237
238Key
239
240`agents.<name>.description`
241
242Type / Values
243
244`string`
245
246Details
247
248Role guidance shown to Codex when choosing and spawning that agent type.
249
250Key
251
252`agents.<name>.nickname_candidates`
253
254Type / Values
255
256`array<string>`
257
258Details
259
260Optional pool of display nicknames for spawned agents in that role.
261
262Key
263
264`agents.job_max_runtime_seconds`
265
266Type / Values
267
268`number`
269
270Details
271
272Default per-worker timeout for `spawn_agents_on_csv` jobs. When unset, the tool falls back to 1800 seconds per worker.
273
274Key
275
276`agents.max_depth`
277
278Type / Values
279
280`number`
281
282Details
283
284Maximum nesting depth allowed for spawned agent threads (root sessions start at depth 0; default: 1).
285
286Key
287
288`agents.max_threads`
289
290Type / Values
291
292`number`
293
294Details
295
296Maximum number of agent threads that can be open concurrently. Defaults to `6` when unset.
297
298Key
299
300`allow_login_shell`
301
302Type / Values
303
304`boolean`
305
306Details
307
308Allow 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.
309
310Key
311
312`analytics.enabled`
313
314Type / Values
315
316`boolean`
317
318Details
319
320Enable or disable analytics for this machine/profile. When unset, the client default applies.
321
322Key
323
324`approval_policy`
325
326Type / Values
327
328`untrusted | on-request | never | { reject = { sandbox_approval = bool, rules = bool, mcp_elicitations = bool } }`
329
330Details
331
332Controls when Codex pauses for approval before executing commands. You can also use `approval_policy = { reject = { ... } }` to auto-reject specific prompt categories while keeping other prompts interactive. `on-failure` is deprecated; use `on-request` for interactive runs or `never` for non-interactive runs.
333
334Key
335
336`approval_policy.reject.mcp_elicitations`
337
338Type / Values
339
340`boolean`
341
342Details
343
344When `true`, MCP elicitation prompts are auto-rejected instead of shown to the user.
345
346Key
347
348`approval_policy.reject.rules`
349
350Type / Values
351
352`boolean`
353
354Details
355
356When `true`, approvals triggered by execpolicy `prompt` rules are auto-rejected.
357
358Key
359
360`approval_policy.reject.sandbox_approval`
361
362Type / Values
363
364`boolean`
365
366Details
367
368When `true`, sandbox escalation approval prompts are auto-rejected.
369
370Key
371
372`apps._default.destructive_enabled`
373
374Type / Values
375
376`boolean`
377
378Details
379
380Default allow/deny for app tools with `destructive_hint = true`.
381
382Key
383
384`apps._default.enabled`
385
386Type / Values
387
388`boolean`
389
390Details
391
392Default app enabled state for all apps unless overridden per app.
393
394Key
395
396`apps._default.open_world_enabled`
397
398Type / Values
399
400`boolean`
401
402Details
403
404Default allow/deny for app tools with `open_world_hint = true`.
405
406Key
407
408`apps.<id>.default_tools_approval_mode`
409
410Type / Values
411
412`auto | prompt | approve`
413
414Details
415
416Default approval behavior for tools in this app unless a per-tool override exists.
417
418Key
419
420`apps.<id>.default_tools_enabled`
421
422Type / Values
423
424`boolean`
425
426Details
427
428Default enabled state for tools in this app unless a per-tool override exists.
429
430Key
431
432`apps.<id>.destructive_enabled`
433
434Type / Values
435
436`boolean`
437
438Details
439
440Allow or block tools in this app that advertise `destructive_hint = true`.
441
442Key
443
444`apps.<id>.enabled`
445
446Type / Values
447
448`boolean`
449
450Details
451
452Enable or disable a specific app/connector by id (default: true).
453
454Key
455
456`apps.<id>.open_world_enabled`
457
458Type / Values
459
460`boolean`
461
462Details
463
464Allow or block tools in this app that advertise `open_world_hint = true`.
465
466Key
467
468`apps.<id>.tools.<tool>.approval_mode`
469
470Type / Values
471
472`auto | prompt | approve`
473
474Details
475
476Per-tool approval behavior override for a single app tool.
477
478Key
479
480`apps.<id>.tools.<tool>.enabled`
481
482Type / Values
483
484`boolean`
485
486Details
487
488Per-tool enabled override for an app tool (for example `repos/list`).
489
490Key
491
492`background_terminal_max_timeout`
493
494Type / Values
495
496`number`
497
498Details
499
500Maximum poll window in milliseconds for empty `write_stdin` polls (background terminal polling). Default: `300000` (5 minutes). Replaces the older `background_terminal_timeout` key.
501
502Key
503
504`chatgpt_base_url`
505
506Type / Values
507
508`string`
509
510Details
511
512Override the base URL used during the ChatGPT login flow.
513
514Key
515
516`check_for_update_on_startup`
517
518Type / Values
519
520`boolean`
521
522Details
523
524Check for Codex updates on startup (set to false only when updates are centrally managed).
525
526Key
527
528`cli_auth_credentials_store`
529
530Type / Values
531
532`file | keyring | auto`
533
534Details
535
536Control where the CLI stores cached credentials (file-based auth.json vs OS keychain).
537
538Key
539
540`commit_attribution`
541
542Type / Values
543
544`string`
545
546Details
547
548Override the commit co-author trailer text. Set an empty string to disable automatic attribution.
549
550Key
551
552`compact_prompt`
553
554Type / Values
555
556`string`
557
558Details
559
560Inline override for the history compaction prompt.
561
562Key
563
564`developer_instructions`
565
566Type / Values
567
568`string`
569
570Details
571
572Additional developer instructions injected into the session (optional).
573
574Key
575
576`disable_paste_burst`
577
578Type / Values
579
580`boolean`
581
582Details
583
584Disable burst-paste detection in the TUI.
585
586Key
587
588`experimental_compact_prompt_file`
589
590Type / Values
591
592`string (path)`
593
594Details
595
596Load the compaction prompt override from a file (experimental).
597
598Key
599
600`experimental_use_unified_exec_tool`
601
602Type / Values
603
604`boolean`
605
606Details
607
608Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`.
609
610Key
611
612`features.apps`
613
614Type / Values
615
616`boolean`
617
618Details
619
620Enable ChatGPT Apps/connectors support (experimental).
621
622Key
623
624`features.apps_mcp_gateway`
625
626Type / Values
627
628`boolean`
629
630Details
631
632Route Apps MCP calls through the OpenAI connectors MCP gateway (`https://api.openai.com/v1/connectors/mcp/`) instead of legacy routing (experimental).
633
634Key
635
636`features.artifact`
637
638Type / Values
639
640`boolean`
641
642Details
643
644Enable native artifact tools such as slides and spreadsheets (under development).
645
646Key
647
648`features.child_agents_md`
649
650Type / Values
651
652`boolean`
653
654Details
655
656Append AGENTS.md scope/precedence guidance even when no AGENTS.md is present (experimental).
657
658Key
659
660`features.collaboration_modes`
661
662Type / Values
663
664`boolean`
665
666Details
667
668Legacy toggle for collaboration modes. Plan and default modes are available in current builds without setting this key.
669
670Key
671
672`features.default_mode_request_user_input`
673
674Type / Values
675
676`boolean`
677
678Details
679
680Allow `request_user_input` in default collaboration mode (under development; off by default).
681
682Key
683
684`features.elevated_windows_sandbox`
685
686Type / Values
687
688`boolean`
689
690Details
691
692Legacy toggle for an earlier elevated Windows sandbox rollout. Current builds do not use it.
693
694Key
695
696`features.enable_request_compression`
697
698Type / Values
699
700`boolean`
701
702Details
703
704Compress streaming request bodies with zstd when supported (stable; on by default).
705
706Key
707
708`features.experimental_windows_sandbox`
709
710Type / Values
711
712`boolean`
713
714Details
715
716Legacy toggle for an earlier Windows sandbox rollout. Current builds do not use it.
717
718Key
719
720`features.fast_mode`
721
722Type / Values
723
724`boolean`
725
726Details
727
728Enable Fast mode selection and the `service_tier = "fast"` path (stable; on by default).
729
730Key
731
732`features.image_detail_original`
733
734Type / Values
735
736`boolean`
737
738Details
739
740Allow image outputs with `detail = "original"` on supported models (under development).
741
742Key
743
744`features.image_generation`
745
746Type / Values
747
748`boolean`
749
750Details
751
752Enable the built-in image generation tool (under development).
753
754Key
755
756`features.personality`
757
758Type / Values
759
760`boolean`
761
762Details
763
764Enable personality selection controls (stable; on by default).
765
766Key
767
768`features.powershell_utf8`
769
770Type / Values
771
772`boolean`
773
774Details
775
776Force PowerShell UTF-8 output. Enabled by default on Windows and off elsewhere.
777
778Key
779
780`features.prevent_idle_sleep`
781
782Type / Values
783
784`boolean`
785
786Details
787
788Prevent the machine from sleeping while a turn is actively running (experimental; off by default).
789
790Key
791
792`features.remote_models`
793
794Type / Values
795
796`boolean`
797
798Details
799
800Legacy toggle for an older remote-model readiness flow. Current builds do not use it.
801
802Key
803
804`features.request_rule`
805
806Type / Values
807
808`boolean`
809
810Details
811
812Legacy toggle for Smart approvals. Current builds include this behavior by default, so most users can leave this unset.
813
814Key
815
816`features.responses_websockets`
817
818Type / Values
819
820`boolean`
821
822Details
823
824Prefer the Responses API WebSocket transport for supported providers (under development).
825
826Key
827
828`features.responses_websockets_v2`
829
830Type / Values
831
832`boolean`
833
834Details
835
836Enable Responses API WebSocket v2 mode (under development).
837
838Key
839
840`features.runtime_metrics`
841
842Type / Values
843
844`boolean`
845
846Details
847
848Show runtime metrics summary in TUI turn separators (experimental).
849
850Key
851
852`features.search_tool`
853
854Type / Values
855
856`boolean`
857
858Details
859
860Legacy toggle for an older Apps discovery flow. Current builds do not use it.
861
862Key
863
864`features.shell_snapshot`
865
866Type / Values
867
868`boolean`
869
870Details
871
872Snapshot shell environment to speed up repeated commands (stable; on by default).
873
874Key
875
876`features.shell_tool`
877
878Type / Values
879
880`boolean`
881
882Details
883
884Enable the default `shell` tool for running commands (stable; on by default).
885
886Key
887
888`features.skill_env_var_dependency_prompt`
889
890Type / Values
891
892`boolean`
893
894Details
895
896Prompt for missing skill environment-variable dependencies (under development).
897
898Key
899
900`features.skill_mcp_dependency_install`
901
902Type / Values
903
904`boolean`
905
906Details
907
908Allow prompting and installing missing MCP dependencies for skills (stable; on by default).
909
910Key
911
912`features.sqlite`
913
914Type / Values
915
916`boolean`
917
918Details
919
920Enable SQLite-backed state persistence (stable; on by default).
921
922Key
923
924`features.steer`
925
926Type / Values
927
928`boolean`
929
930Details
931
932Legacy toggle from an earlier Enter/Tab steering rollout. Current builds always use the current steering behavior.
933
934Key
935
936`features.undo`
937
938Type / Values
939
940`boolean`
941
942Details
943
944Enable undo support (stable; off by default).
945
946Key
947
948`features.unified_exec`
949
950Type / Values
951
952`boolean`
953
954Details
955
956Use the unified PTY-backed exec tool (stable; enabled by default except on Windows).
957
958Key
959
960`features.use_linux_sandbox_bwrap`
961
962Type / Values
963
964`boolean`
965
966Details
967
968Use the bubblewrap-based Linux sandbox pipeline (experimental; off by default).
969
970Key
971
972`features.web_search`
973
974Type / Values
975
976`boolean`
977
978Details
979
980Deprecated legacy toggle; prefer the top-level `web_search` setting.
981
982Key
983
984`features.web_search_cached`
985
986Type / Values
987
988`boolean`
989
990Details
991
992Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "cached"`.
993
994Key
995
996`features.web_search_request`
997
998Type / Values
999
1000`boolean`
1001
1002Details
1003
1004Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "live"`.
1005
1006Key
1007
1008`feedback.enabled`
1009
1010Type / Values
1011
1012`boolean`
1013
1014Details
1015
1016Enable feedback submission via `/feedback` across Codex surfaces (default: true).
1017
1018Key
1019
1020`file_opener`
1021
1022Type / Values
1023
1024`vscode | vscode-insiders | windsurf | cursor | none`
1025
1026Details
1027
1028URI scheme used to open citations from Codex output (default: `vscode`).
1029
1030Key
1031
1032`forced_chatgpt_workspace_id`
1033
1034Type / Values
1035
1036`string (uuid)`
1037
1038Details
1039
1040Limit ChatGPT logins to a specific workspace identifier.
1041
1042Key
1043
1044`forced_login_method`
1045
1046Type / Values
1047
1048`chatgpt | api`
1049
1050Details
1051
1052Restrict Codex to a specific authentication method.
1053
1054Key
1055
1056`hide_agent_reasoning`
1057
1058Type / Values
1059
1060`boolean`
1061
1062Details
1063
1064Suppress reasoning events in both the TUI and `codex exec` output.
1065
1066Key
1067
1068`history.max_bytes`
1069
1070Type / Values
1071
1072`number`
1073
1074Details
1075
1076If set, caps the history file size in bytes by dropping oldest entries.
1077
1078Key
1079
1080`history.persistence`
1081
1082Type / Values
1083
1084`save-all | none`
1085
1086Details
1087
1088Control whether Codex saves session transcripts to history.jsonl.
1089
1090Key
1091
1092`instructions`
1093
1094Type / Values
1095
1096`string`
1097
1098Details
1099
1100Reserved for future use; prefer `model_instructions_file` or `AGENTS.md`.
1101
1102Key
1103
1104`log_dir`
1105
1106Type / Values
1107
1108`string (path)`
1109
1110Details
1111
1112Directory where Codex writes log files (for example `codex-tui.log`); defaults to `$CODEX_HOME/log`.
1113
1114Key
1115
1116`mcp_oauth_callback_port`
1117
1118Type / Values
1119
1120`integer`
1121
1122Details
1123
1124Optional fixed port for the local HTTP callback server used during MCP OAuth login. When unset, Codex binds to an ephemeral port chosen by the OS.
1125
1126Key
1127
1128`mcp_oauth_callback_url`
1129
1130Type / Values
1131
1132`string`
1133
1134Details
1135
1136Optional redirect URI override for MCP OAuth login (for example, a devbox ingress URL). `mcp_oauth_callback_port` still controls the callback listener port.
1137
1138Key
1139
1140`mcp_oauth_credentials_store`
1141
1142Type / Values
1143
1144`auto | file | keyring`
1145
1146Details
1147
1148Preferred store for MCP OAuth credentials.
1149
1150Key
1151
1152`mcp_servers.<id>.args`
1153
1154Type / Values
1155
1156`array<string>`
1157
1158Details
1159
1160Arguments passed to the MCP stdio server command.
1161
1162Key
1163
1164`mcp_servers.<id>.bearer_token_env_var`
1165
1166Type / Values
1167
1168`string`
1169
1170Details
1171
1172Environment variable sourcing the bearer token for an MCP HTTP server.
1173
1174Key
1175
1176`mcp_servers.<id>.command`
1177
1178Type / Values
1179
1180`string`
1181
1182Details
1183
1184Launcher command for an MCP stdio server.
1185
1186Key
1187
1188`mcp_servers.<id>.cwd`
1189
1190Type / Values
1191
1192`string`
1193
1194Details
1195
1196Working directory for the MCP stdio server process.
1197
1198Key
1199
1200`mcp_servers.<id>.disabled_tools`
1201
1202Type / Values
1203
1204`array<string>`
1205
1206Details
1207
1208Deny list applied after `enabled_tools` for the MCP server.
1209
1210Key
1211
1212`mcp_servers.<id>.enabled`
1213
1214Type / Values
1215
1216`boolean`
1217
1218Details
1219
1220Disable an MCP server without removing its configuration.
1221
1222Key
1223
1224`mcp_servers.<id>.enabled_tools`
1225
1226Type / Values
1227
1228`array<string>`
1229
1230Details
1231
1232Allow list of tool names exposed by the MCP server.
1233
1234Key
1235
1236`mcp_servers.<id>.env`
1237
1238Type / Values
1239
1240`map<string,string>`
1241
1242Details
1243
1244Environment variables forwarded to the MCP stdio server.
1245
1246Key
1247
1248`mcp_servers.<id>.env_http_headers`
1249
1250Type / Values
1251
1252`map<string,string>`
1253
1254Details
1255
1256HTTP headers populated from environment variables for an MCP HTTP server.
1257
1258Key
1259
1260`mcp_servers.<id>.env_vars`
1261
1262Type / Values
1263
1264`array<string>`
1265
1266Details
1267
1268Additional environment variables to whitelist for an MCP stdio server.
1269
1270Key
1271
1272`mcp_servers.<id>.http_headers`
1273
1274Type / Values
1275
1276`map<string,string>`
1277
1278Details
1279
1280Static HTTP headers included with each MCP HTTP request.
1281
1282Key
1283
1284`mcp_servers.<id>.oauth_resource`
1285
1286Type / Values
1287
1288`string`
1289
1290Details
1291
1292Optional RFC 8707 OAuth resource parameter to include during MCP login.
1293
1294Key
1295
1296`mcp_servers.<id>.required`
1297
1298Type / Values
1299
1300`boolean`
1301
1302Details
1303
1304When true, fail startup/resume if this enabled MCP server cannot initialize.
1305
1306Key
1307
1308`mcp_servers.<id>.scopes`
1309
1310Type / Values
1311
1312`array<string>`
1313
1314Details
1315
1316OAuth scopes to request when authenticating to that MCP server.
1317
1318Key
1319
1320`mcp_servers.<id>.startup_timeout_ms`
1321
1322Type / Values
1323
1324`number`
1325
1326Details
1327
1328Alias for `startup_timeout_sec` in milliseconds.
1329
1330Key
1331
1332`mcp_servers.<id>.startup_timeout_sec`
1333
1334Type / Values
1335
1336`number`
1337
1338Details
1339
1340Override the default 10s startup timeout for an MCP server.
1341
1342Key
1343
1344`mcp_servers.<id>.tool_timeout_sec`
1345
1346Type / Values
1347
1348`number`
1349
1350Details
1351
1352Override the default 60s per-tool timeout for an MCP server.
1353
1354Key
1355
1356`mcp_servers.<id>.url`
1357
1358Type / Values
1359
1360`string`
1361
1362Details
1363
1364Endpoint for an MCP streamable HTTP server.
1365
1366Key
1367
1368`model`
1369
1370Type / Values
1371
1372`string`
1373
1374Details
1375
1376Model to use (e.g., `gpt-5-codex`).
1377
1378Key
1379
1380`model_auto_compact_token_limit`
1381
1382Type / Values
1383
1384`number`
1385
1386Details
1387
1388Token threshold that triggers automatic history compaction (unset uses model defaults).
1389
1390Key
1391
1392`model_catalog_json`
1393
1394Type / Values
1395
1396`string (path)`
1397
1398Details
1399
1400Optional path to a JSON model catalog loaded on startup. Profile-level `profiles.<name>.model_catalog_json` can override this per profile.
1401
1402Key
1403
1404`model_context_window`
1405
1406Type / Values
1407
1408`number`
1409
1410Details
1411
1412Context window tokens available to the active model.
1413
1414Key
1415
1416`model_instructions_file`
1417
1418Type / Values
1419
1420`string (path)`
1421
1422Details
1423
1424Replacement for built-in instructions instead of `AGENTS.md`.
1425
1426Key
1427
1428`model_provider`
1429
1430Type / Values
1431
1432`string`
1433
1434Details
1435
1436Provider id from `model_providers` (default: `openai`).
1437
1438Key
1439
1440`model_providers.<id>.base_url`
1441
1442Type / Values
1443
1444`string`
1445
1446Details
1447
1448API base URL for the model provider.
1449
1450Key
1451
1452`model_providers.<id>.env_http_headers`
1453
1454Type / Values
1455
1456`map<string,string>`
1457
1458Details
1459
1460HTTP headers populated from environment variables when present.
1461
1462Key
1463
1464`model_providers.<id>.env_key`
1465
1466Type / Values
1467
1468`string`
1469
1470Details
1471
1472Environment variable supplying the provider API key.
1473
1474Key
1475
1476`model_providers.<id>.env_key_instructions`
1477
1478Type / Values
1479
1480`string`
1481
1482Details
1483
1484Optional setup guidance for the provider API key.
1485
1486Key
1487
1488`model_providers.<id>.experimental_bearer_token`
1489
1490Type / Values
1491
1492`string`
1493
1494Details
1495
1496Direct bearer token for the provider (discouraged; use `env_key`).
1497
1498Key
1499
1500`model_providers.<id>.http_headers`
1501
1502Type / Values
1503
1504`map<string,string>`
1505
1506Details
1507
1508Static HTTP headers added to provider requests.
1509
1510Key
1511
1512`model_providers.<id>.name`
1513
1514Type / Values
1515
1516`string`
1517
1518Details
1519
1520Display name for a custom model provider.
1521
1522Key
1523
1524`model_providers.<id>.query_params`
1525
1526Type / Values
1527
1528`map<string,string>`
1529
1530Details
1531
1532Extra query parameters appended to provider requests.
1533
1534Key
1535
1536`model_providers.<id>.request_max_retries`
1537
1538Type / Values
1539
1540`number`
1541
1542Details
1543
1544Retry count for HTTP requests to the provider (default: 4).
1545
1546Key
1547
1548`model_providers.<id>.requires_openai_auth`
1549
1550Type / Values
1551
1552`boolean`
1553
1554Details
1555
1556The provider uses OpenAI authentication (defaults to false).
1557
1558Key
1559
1560`model_providers.<id>.stream_idle_timeout_ms`
1561
1562Type / Values
1563
1564`number`
1565
1566Details
1567
1568Idle timeout for SSE streams in milliseconds (default: 300000).
1569
1570Key
1571
1572`model_providers.<id>.stream_max_retries`
1573
1574Type / Values
1575
1576`number`
1577
1578Details
1579
1580Retry count for SSE streaming interruptions (default: 5).
1581
1582Key
1583
1584`model_providers.<id>.supports_websockets`
1585
1586Type / Values
1587
1588`boolean`
1589
1590Details
1591
1592Whether that provider supports the Responses API WebSocket transport.
1593
1594Key
1595
1596`model_providers.<id>.wire_api`
1597
1598Type / Values
1599
1600`responses`
1601
1602Details
1603
1604Protocol used by the provider. `responses` is the only supported value, and it is the default when omitted.
1605
1606Key
1607
1608`model_reasoning_effort`
1609
1610Type / Values
1611
1612`minimal | low | medium | high | xhigh`
1613
1614Details
1615
1616Adjust reasoning effort for supported models (Responses API only; `xhigh` is model-dependent).
1617
1618Key
1619
1620`model_reasoning_summary`
1621
1622Type / Values
1623
1624`auto | concise | detailed | none`
1625
1626Details
1627
1628Select reasoning summary detail or disable summaries entirely.
1629
1630Key
1631
1632`model_supports_reasoning_summaries`
1633
1634Type / Values
1635
1636`boolean`
1637
1638Details
1639
1640Force Codex to send or not send reasoning metadata.
1641
1642Key
1643
1644`model_verbosity`
1645
1646Type / Values
1647
1648`low | medium | high`
1649
1650Details
1651
1652Optional GPT-5 Responses API verbosity override; when unset, the selected model/preset default is used.
1653
1654Key
1655
1656`notice.hide_full_access_warning`
1657
1658Type / Values
1659
1660`boolean`
1661
1662Details
1663
1664Track acknowledgement of the full access warning prompt.
1665
1666Key
1667
1668`notice.hide_gpt-5.1-codex-max_migration_prompt`
1669
1670Type / Values
1671
1672`boolean`
1673
1674Details
1675
1676Track acknowledgement of the gpt-5.1-codex-max migration prompt.
1677
1678Key
1679
1680`notice.hide_gpt5_1_migration_prompt`
1681
1682Type / Values
1683
1684`boolean`
1685
1686Details
1687
1688Track acknowledgement of the GPT-5.1 migration prompt.
1689
1690Key
1691
1692`notice.hide_rate_limit_model_nudge`
1693
1694Type / Values
1695
1696`boolean`
1697
1698Details
1699
1700Track opt-out of the rate limit model switch reminder.
1701
1702Key
1703
1704`notice.hide_world_writable_warning`
1705
1706Type / Values
1707
1708`boolean`
1709
1710Details
1711
1712Track acknowledgement of the Windows world-writable directories warning.
1713
1714Key
1715
1716`notice.model_migrations`
1717
1718Type / Values
1719
1720`map<string,string>`
1721
1722Details
1723
1724Track acknowledged model migrations as old->new mappings.
1725
1726Key
1727
1728`notify`
1729
1730Type / Values
1731
1732`array<string>`
1733
1734Details
1735
1736Command invoked for notifications; receives a JSON payload from Codex.
1737
1738Key
1739
1740`oss_provider`
1741
1742Type / Values
1743
1744`lmstudio | ollama`
1745
1746Details
1747
1748Default local provider used when running with `--oss` (defaults to prompting if unset).
1749
1750Key
1751
1752`otel.environment`
1753
1754Type / Values
1755
1756`string`
1757
1758Details
1759
1760Environment tag applied to emitted OpenTelemetry events (default: `dev`).
1761
1762Key
1763
1764`otel.exporter`
1765
1766Type / Values
1767
1768`none | otlp-http | otlp-grpc`
1769
1770Details
1771
1772Select the OpenTelemetry exporter and provide any endpoint metadata.
1773
1774Key
1775
1776`otel.exporter.<id>.endpoint`
1777
1778Type / Values
1779
1780`string`
1781
1782Details
1783
1784Exporter endpoint for OTEL logs.
1785
1786Key
1787
1788`otel.exporter.<id>.headers`
1789
1790Type / Values
1791
1792`map<string,string>`
1793
1794Details
1795
1796Static headers included with OTEL exporter requests.
1797
1798Key
1799
1800`otel.exporter.<id>.protocol`
1801
1802Type / Values
1803
1804`binary | json`
1805
1806Details
1807
1808Protocol used by the OTLP/HTTP exporter.
1809
1810Key
1811
1812`otel.exporter.<id>.tls.ca-certificate`
1813
1814Type / Values
1815
1816`string`
1817
1818Details
1819
1820CA certificate path for OTEL exporter TLS.
1821
1822Key
1823
1824`otel.exporter.<id>.tls.client-certificate`
1825
1826Type / Values
1827
1828`string`
1829
1830Details
1831
1832Client certificate path for OTEL exporter TLS.
1833
1834Key
1835
1836`otel.exporter.<id>.tls.client-private-key`
1837
1838Type / Values
1839
1840`string`
1841
1842Details
1843
1844Client private key path for OTEL exporter TLS.
1845
1846Key
1847
1848`otel.log_user_prompt`
1849
1850Type / Values
1851
1852`boolean`
1853
1854Details
1855
1856Opt in to exporting raw user prompts with OpenTelemetry logs.
1857
1858Key
1859
1860`otel.metrics_exporter`
1861
1862Type / Values
1863
1864`none | statsig | otlp-http | otlp-grpc`
1865
1866Details
1867
1868Select the OpenTelemetry metrics exporter (defaults to `statsig`).
1869
1870Key
1871
1872`otel.trace_exporter`
1873
1874Type / Values
1875
1876`none | otlp-http | otlp-grpc`
1877
1878Details
1879
1880Select the OpenTelemetry trace exporter and provide any endpoint metadata.
1881
1882Key
1883
1884`otel.trace_exporter.<id>.endpoint`
1885
1886Type / Values
1887
1888`string`
1889
1890Details
1891
1892Trace exporter endpoint for OTEL logs.
1893
1894Key
1895
1896`otel.trace_exporter.<id>.headers`
1897
1898Type / Values
1899
1900`map<string,string>`
1901
1902Details
1903
1904Static headers included with OTEL trace exporter requests.
1905
1906Key
1907
1908`otel.trace_exporter.<id>.protocol`
1909
1910Type / Values
1911
1912`binary | json`
1913
1914Details
1915
1916Protocol used by the OTLP/HTTP trace exporter.
1917
1918Key
1919
1920`otel.trace_exporter.<id>.tls.ca-certificate`
1921
1922Type / Values
1923
1924`string`
1925
1926Details
1927
1928CA certificate path for OTEL trace exporter TLS.
1929
1930Key
1931
1932`otel.trace_exporter.<id>.tls.client-certificate`
1933
1934Type / Values
1935
1936`string`
1937
1938Details
1939
1940Client certificate path for OTEL trace exporter TLS.
1941
1942Key
1943
1944`otel.trace_exporter.<id>.tls.client-private-key`
1945
1946Type / Values
1947
1948`string`
1949
1950Details
1951
1952Client private key path for OTEL trace exporter TLS.
1953
1954Key
1955
1956`permissions.network.admin_url`
1957
1958Type / Values
1959
1960`string`
1961
1962Details
1963
1964Admin endpoint for the managed network proxy.
1965
1966Key
1967
1968`permissions.network.allow_local_binding`
1969
1970Type / Values
1971
1972`boolean`
1973
1974Details
1975
1976Permit local bind/listen operations through the managed proxy.
1977
1978Key
1979
1980`permissions.network.allow_unix_sockets`
1981
1982Type / Values
1983
1984`array<string>`
1985
1986Details
1987
1988Allowlist of Unix socket paths permitted through the managed proxy.
1989
1990Key
1991
1992`permissions.network.allow_upstream_proxy`
1993
1994Type / Values
1995
1996`boolean`
1997
1998Details
1999
2000Allow the managed proxy to chain to another upstream proxy.
2001
2002Key
2003
2004`permissions.network.allowed_domains`
2005
2006Type / Values
2007
2008`array<string>`
2009
2010Details
2011
2012Allowlist of domains permitted through the managed proxy.
2013
2014Key
2015
2016`permissions.network.dangerously_allow_all_unix_sockets`
2017
2018Type / Values
2019
2020`boolean`
2021
2022Details
2023
2024Allow the proxy to use arbitrary Unix sockets instead of the default restricted set.
2025
2026Key
2027
2028`permissions.network.dangerously_allow_non_loopback_admin`
2029
2030Type / Values
2031
2032`boolean`
2033
2034Details
2035
2036Permit non-loopback bind addresses for the managed proxy admin listener.
2037
2038Key
2039
2040`permissions.network.dangerously_allow_non_loopback_proxy`
2041
2042Type / Values
2043
2044`boolean`
2045
2046Details
2047
2048Permit non-loopback bind addresses for the managed proxy listener.
2049
2050Key
2051
2052`permissions.network.denied_domains`
2053
2054Type / Values
2055
2056`array<string>`
2057
2058Details
2059
2060Denylist of domains blocked by the managed proxy.
2061
2062Key
2063
2064`permissions.network.enable_socks5`
2065
2066Type / Values
2067
2068`boolean`
2069
2070Details
2071
2072Expose a SOCKS5 listener from the managed network proxy.
2073
2074Key
2075
2076`permissions.network.enable_socks5_udp`
2077
2078Type / Values
2079
2080`boolean`
2081
2082Details
2083
2084Allow UDP over the SOCKS5 listener when enabled.
2085
2086Key
2087
2088`permissions.network.enabled`
2089
2090Type / Values
2091
2092`boolean`
2093
2094Details
2095
2096Enable the managed network proxy configuration for subprocesses.
2097
2098Key
2099
2100`permissions.network.mode`
2101
2102Type / Values
2103
2104`limited | full`
2105
2106Details
2107
2108Network proxy mode used for subprocess traffic.
2109
2110Key
2111
2112`permissions.network.proxy_url`
2113
2114Type / Values
2115
2116`string`
2117
2118Details
2119
2120HTTP proxy endpoint used by the managed network proxy.
2121
2122Key
2123
2124`permissions.network.socks_url`
2125
2126Type / Values
2127
2128`string`
2129
2130Details
2131
2132SOCKS5 proxy endpoint used by the managed network proxy.
2133
2134Key
2135
2136`personality`
2137
2138Type / Values
2139
2140`none | friendly | pragmatic`
2141
2142Details
2143
2144Default communication style for models that advertise `supportsPersonality`; can be overridden per thread/turn or via `/personality`.
2145
2146Key
2147
2148`plan_mode_reasoning_effort`
2149
2150Type / Values
2151
2152`none | minimal | low | medium | high | xhigh`
2153
2154Details
2155
2156Plan-mode-specific reasoning override. When unset, Plan mode uses its built-in preset default.
2157
2158Key
2159
2160`profile`
2161
2162Type / Values
2163
2164`string`
2165
2166Details
2167
2168Default profile applied at startup (equivalent to `--profile`).
2169
2170Key
2171
2172`profiles.<name>.*`
2173
2174Type / Values
2175
2176`various`
2177
2178Details
2179
2180Profile-scoped overrides for any of the supported configuration keys.
2181
2182Key
2183
2184`profiles.<name>.analytics.enabled`
2185
2186Type / Values
2187
2188`boolean`
2189
2190Details
2191
2192Profile-scoped analytics enablement override.
2193
2194Key
2195
2196`profiles.<name>.experimental_use_unified_exec_tool`
2197
2198Type / Values
2199
2200`boolean`
2201
2202Details
2203
2204Legacy name for enabling unified exec; prefer `[features].unified_exec`.
2205
2206Key
2207
2208`profiles.<name>.model_catalog_json`
2209
2210Type / Values
2211
2212`string (path)`
2213
2214Details
2215
2216Profile-scoped model catalog JSON path override (applied on startup only; overrides the top-level `model_catalog_json` for that profile).
2217
2218Key
2219
2220`profiles.<name>.model_instructions_file`
2221
2222Type / Values
2223
2224`string (path)`
2225
2226Details
2227
2228Profile-scoped replacement for the built-in instruction file.
2229
2230Key
2231
2232`profiles.<name>.oss_provider`
2233
2234Type / Values
2235
2236`lmstudio | ollama`
2237
2238Details
2239
2240Profile-scoped OSS provider for `--oss` sessions.
2241
2242Key
2243
2244`profiles.<name>.personality`
2245
2246Type / Values
2247
2248`none | friendly | pragmatic`
2249
2250Details
2251
2252Profile-scoped communication style override for supported models.
2253
2254Key
2255
2256`profiles.<name>.plan_mode_reasoning_effort`
2257
2258Type / Values
2259
2260`none | minimal | low | medium | high | xhigh`
2261
2262Details
2263
2264Profile-scoped Plan-mode reasoning override.
2265
2266Key
2267
2268`profiles.<name>.service_tier`
2269
2270Type / Values
2271
2272`flex | fast`
2273
2274Details
2275
2276Profile-scoped service tier preference for new turns.
2277
2278Key
2279
2280`profiles.<name>.tools_view_image`
2281
2282Type / Values
2283
2284`boolean`
2285
2286Details
2287
2288Enable or disable the `view_image` tool in that profile.
2289
2290Key
2291
2292`profiles.<name>.web_search`
2293
2294Type / Values
2295
2296`disabled | cached | live`
2297
2298Details
2299
2300Profile-scoped web search mode override (default: `"cached"`).
2301
2302Key
2303
2304`profiles.<name>.windows.sandbox`
2305
2306Type / Values
2307
2308`unelevated | elevated`
2309
2310Details
2311
2312Profile-scoped Windows sandbox mode override.
2313
2314Key
2315
2316`project_doc_fallback_filenames`
2317
2318Type / Values
2319
2320`array<string>`
2321
2322Details
2323
2324Additional filenames to try when `AGENTS.md` is missing.
2325
2326Key
2327
2328`project_doc_max_bytes`
2329
2330Type / Values
2331
2332`number`
2333
2334Details
2335
2336Maximum bytes read from `AGENTS.md` when building project instructions.
2337
2338Key
2339
2340`project_root_markers`
2341
2342Type / Values
2343
2344`array<string>`
2345
2346Details
2347
2348List of project root marker filenames; used when searching parent directories for the project root.
2349
2350Key
2351
2352`projects.<path>.trust_level`
2353
2354Type / Values
2355
2356`string`
2357
2358Details
2359
2360Mark a project or worktree as trusted or untrusted (`"trusted"` | `"untrusted"`). Untrusted projects skip project-scoped `.codex/` layers.
2361
2362Key
2363
2364`review_model`
2365
2366Type / Values
2367
2368`string`
2369
2370Details
2371
2372Optional model override used by `/review` (defaults to the current session model).
2373
2374Key
2375
2376`sandbox_mode`
2377
2378Type / Values
2379
2380`read-only | workspace-write | danger-full-access`
2381
2382Details
2383
2384Sandbox policy for filesystem and network access during command execution.
2385
2386Key
2387
2388`sandbox_workspace_write.exclude_slash_tmp`
2389
2390Type / Values
2391
2392`boolean`
2393
2394Details
2395
2396Exclude `/tmp` from writable roots in workspace-write mode.
2397
2398Key
2399
2400`sandbox_workspace_write.exclude_tmpdir_env_var`
2401
2402Type / Values
2403
2404`boolean`
2405
2406Details
2407
2408Exclude `$TMPDIR` from writable roots in workspace-write mode.
2409
2410Key
2411
2412`sandbox_workspace_write.network_access`
2413
2414Type / Values
2415
2416`boolean`
2417
2418Details
2419
2420Allow outbound network access inside the workspace-write sandbox.
2421
2422Key
2423
2424`sandbox_workspace_write.writable_roots`
2425
2426Type / Values
2427
2428`array<string>`
2429
2430Details
2431
2432Additional writable roots when `sandbox_mode = "workspace-write"`.
2433
2434Key
2435
2436`service_tier`
2437
2438Type / Values
2439
2440`flex | fast`
2441
2442Details
2443
2444Preferred service tier for new turns. `fast` is honored only when the `features.fast_mode` gate is enabled.
2445
2446Key
2447
2448`shell_environment_policy.exclude`
2449
2450Type / Values
2451 15
2452`array<string>`16For 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).
2453
2454Details
2455
2456Glob patterns for removing environment variables after the defaults.
2457
2458Key
2459
2460`shell_environment_policy.experimental_use_profile`
2461
2462Type / Values
2463
2464`boolean`
2465
2466Details
2467
2468Use the user shell profile when spawning subprocesses.
2469
2470Key
2471
2472`shell_environment_policy.ignore_default_excludes`
2473
2474Type / Values
2475
2476`boolean`
2477
2478Details
2479
2480Keep variables containing KEY/SECRET/TOKEN before other filters run.
2481
2482Key
2483
2484`shell_environment_policy.include_only`
2485
2486Type / Values
2487
2488`array<string>`
2489
2490Details
2491
2492Whitelist of patterns; when set only matching variables are kept.
2493
2494Key
2495
2496`shell_environment_policy.inherit`
2497
2498Type / Values
2499
2500`all | core | none`
2501
2502Details
2503
2504Baseline environment inheritance when spawning subprocesses.
2505
2506Key
2507
2508`shell_environment_policy.set`
2509
2510Type / Values
2511
2512`map<string,string>`
2513
2514Details
2515
2516Explicit environment overrides injected into every subprocess.
2517
2518Key
2519
2520`show_raw_agent_reasoning`
2521
2522Type / Values
2523
2524`boolean`
2525
2526Details
2527
2528Surface raw reasoning content when the active model emits it.
2529
2530Key
2531
2532`skills.config`
2533
2534Type / Values
2535
2536`array<object>`
2537
2538Details
2539
2540Per-skill enablement overrides stored in config.toml.
2541
2542Key
2543
2544`skills.config.<index>.enabled`
2545
2546Type / Values
2547
2548`boolean`
2549
2550Details
2551
2552Enable or disable the referenced skill.
2553
2554Key
2555
2556`skills.config.<index>.path`
2557
2558Type / Values
2559
2560`string (path)`
2561
2562Details
2563
2564Path to a skill folder containing `SKILL.md`.
2565
2566Key
2567
2568`sqlite_home`
2569
2570Type / Values
2571
2572`string (path)`
2573
2574Details
2575
2576Directory where Codex stores the SQLite-backed state DB used by agent jobs and other resumable runtime state.
2577
2578Key
2579
2580`suppress_unstable_features_warning`
2581
2582Type / Values
2583
2584`boolean`
2585
2586Details
2587
2588Suppress the warning that appears when under-development feature flags are enabled.
2589
2590Key
2591
2592`tool_output_token_limit`
2593
2594Type / Values
2595
2596`number`
2597
2598Details
2599
2600Token budget for storing individual tool/function outputs in history.
2601
2602Key
2603
2604`tools.view_image`
2605
2606Type / Values
2607
2608`boolean`
2609
2610Details
2611
2612Enable the local-image attachment tool `view_image`.
2613
2614Key
2615
2616`tools.web_search`
2617
2618Type / Values
2619
2620`boolean`
2621
2622Details
2623
2624Deprecated legacy toggle for web search; prefer the top-level `web_search` setting.
2625
2626Key
2627
2628`tui`
2629
2630Type / Values
2631
2632`table`
2633
2634Details
2635
2636TUI-specific options such as enabling inline desktop notifications.
2637
2638Key
2639
2640`tui.alternate_screen`
2641
2642Type / Values
2643
2644`auto | always | never`
2645
2646Details
2647
2648Control alternate screen usage for the TUI (default: auto; auto skips it in Zellij to preserve scrollback).
2649
2650Key
2651
2652`tui.animations`
2653
2654Type / Values
2655
2656`boolean`
2657
2658Details
2659
2660Enable terminal animations (welcome screen, shimmer, spinner) (default: true).
2661
2662Key
2663
2664`tui.model_availability_nux.<model>`
2665
2666Type / Values
2667
2668`integer`
2669
2670Details
2671
2672Internal startup-tooltip state keyed by model slug.
2673
2674Key
2675
2676`tui.notification_method`
2677
2678Type / Values
2679
2680`auto | osc9 | bel`
2681
2682Details
2683
2684Notification method for unfocused terminal notifications (default: auto).
2685
2686Key
2687
2688`tui.notifications`
2689
2690Type / Values
2691
2692`boolean | array<string>`
2693
2694Details
2695
2696Enable TUI notifications; optionally restrict to specific event types.
2697
2698Key
2699
2700`tui.show_tooltips`
2701
2702Type / Values
2703
2704`boolean`
2705
2706Details
2707
2708Show onboarding tooltips in the TUI welcome screen (default: true).
2709
2710Key
2711
2712`tui.status_line`
2713
2714Type / Values
2715
2716`array<string> | null`
2717
2718Details
2719
2720Ordered list of TUI footer status-line item identifiers. `null` disables the status line.
2721
2722Key
2723
2724`tui.theme`
2725
2726Type / Values
2727
2728`string`
2729
2730Details
2731
2732Syntax-highlighting theme override (kebab-case theme name).
2733
2734Key
2735
2736`web_search`
2737
2738Type / Values
2739
2740`disabled | cached | live`
2741
2742Details
2743
2744Web 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.
2745
2746Key
2747
2748`windows_wsl_setup_acknowledged`
2749
2750Type / Values
2751
2752`boolean`
2753
2754Details
2755
2756Track Windows onboarding acknowledgement (Windows only).
2757
2758Key
2759
2760`windows.sandbox`
2761
2762Type / Values
2763
2764`unelevated | elevated`
2765
2766Details
2767
2768Windows-only native sandbox mode when running Codex natively on Windows.
2769 17
2770Expand to view all18<ConfigTable
19 options={[
20 {
21 key: "model",
22 type: "string",
23 description: "Model to use (e.g., `gpt-5.5`).",
24 },
25 {
26 key: "review_model",
27 type: "string",
28 description:
29 "Optional model override used by `/review` (defaults to the current session model).",
30 },
31 {
32 key: "model_provider",
33 type: "string",
34 description: "Provider id from `model_providers` (default: `openai`).",
35 },
36 {
37 key: "openai_base_url",
38 type: "string",
39 description:
40 "Base URL override for the built-in `openai` model provider.",
41 },
42 {
43 key: "model_context_window",
44 type: "number",
45 description: "Context window tokens available to the active model.",
46 },
47 {
48 key: "model_auto_compact_token_limit",
49 type: "number",
50 description:
51 "Token threshold that triggers automatic history compaction (unset uses model defaults).",
52 },
53 {
54 key: "model_catalog_json",
55 type: "string (path)",
56 description:
57 "Optional path to a JSON model catalog loaded on startup. Profile-level `profiles.<name>.model_catalog_json` can override this per profile.",
58 },
59 {
60 key: "oss_provider",
61 type: "lmstudio | ollama",
62 description:
63 "Default local provider used when running with `--oss` (defaults to prompting if unset).",
64 },
65 {
66 key: "approval_policy",
67 type: "untrusted | on-request | never | { granular = { sandbox_approval = bool, rules = bool, mcp_elicitations = bool, request_permissions = bool, skill_approval = bool } }",
68 description:
69 "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.",
70 },
71 {
72 key: "approval_policy.granular.sandbox_approval",
73 type: "boolean",
74 description:
75 "When `true`, sandbox escalation approval prompts are allowed to surface.",
76 },
77 {
78 key: "approval_policy.granular.rules",
79 type: "boolean",
80 description:
81 "When `true`, approvals triggered by execpolicy `prompt` rules are allowed to surface.",
82 },
83 {
84 key: "approval_policy.granular.mcp_elicitations",
85 type: "boolean",
86 description:
87 "When `true`, MCP elicitation prompts are allowed to surface instead of being auto-rejected.",
88 },
89 {
90 key: "approval_policy.granular.request_permissions",
91 type: "boolean",
92 description:
93 "When `true`, prompts from the `request_permissions` tool are allowed to surface.",
94 },
95 {
96 key: "approval_policy.granular.skill_approval",
97 type: "boolean",
98 description:
99 "When `true`, skill-script approval prompts are allowed to surface.",
100 },
101 {
102 key: "approvals_reviewer",
103 type: "user | auto_review",
104 description:
105 "Who reviews eligible approval prompts under `on-request` or granular approval policies. Defaults to `user`; `auto_review` uses the reviewer subagent. This setting doesn't change sandboxing or review actions already allowed inside the sandbox.",
106 },
107 {
108 key: "auto_review.policy",
109 type: "string",
110 description:
111 "Local Markdown policy instructions for automatic review. Managed `guardian_policy_config` takes precedence. Blank values are ignored.",
112 },
113 {
114 key: "allow_login_shell",
115 type: "boolean",
116 description:
117 "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.",
118 },
119 {
120 key: "sandbox_mode",
121 type: "read-only | workspace-write | danger-full-access",
122 description:
123 "Sandbox policy for filesystem and network access during command execution.",
124 },
125 {
126 key: "sandbox_workspace_write.writable_roots",
127 type: "array<string>",
128 description:
129 'Additional writable roots when `sandbox_mode = "workspace-write"`.',
130 },
131 {
132 key: "sandbox_workspace_write.network_access",
133 type: "boolean",
134 description:
135 "Allow outbound network access inside the workspace-write sandbox.",
136 },
137 {
138 key: "sandbox_workspace_write.exclude_tmpdir_env_var",
139 type: "boolean",
140 description:
141 "Exclude `$TMPDIR` from writable roots in workspace-write mode.",
142 },
143 {
144 key: "sandbox_workspace_write.exclude_slash_tmp",
145 type: "boolean",
146 description:
147 "Exclude `/tmp` from writable roots in workspace-write mode.",
148 },
149 {
150 key: "windows.sandbox",
151 type: "unelevated | elevated",
152 description:
153 "Windows-only native sandbox mode when running Codex natively on Windows.",
154 },
155 {
156 key: "windows.sandbox_private_desktop",
157 type: "boolean",
158 description:
159 "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.",
160 },
161 {
162 key: "notify",
163 type: "array<string>",
164 description:
165 "Command invoked for notifications; receives a JSON payload from Codex.",
166 },
167 {
168 key: "check_for_update_on_startup",
169 type: "boolean",
170 description:
171 "Check for Codex updates on startup (set to false only when updates are centrally managed).",
172 },
173 {
174 key: "feedback.enabled",
175 type: "boolean",
176 description:
177 "Enable feedback submission via `/feedback` across Codex surfaces (default: true).",
178 },
179 {
180 key: "analytics.enabled",
181 type: "boolean",
182 description:
183 "Enable or disable analytics for this machine/profile. When unset, the client default applies.",
184 },
185 {
186 key: "instructions",
187 type: "string",
188 description:
189 "Reserved for future use; prefer `model_instructions_file` or `AGENTS.md`.",
190 },
191 {
192 key: "developer_instructions",
193 type: "string",
194 description:
195 "Additional developer instructions injected into the session (optional).",
196 },
197 {
198 key: "log_dir",
199 type: "string (path)",
200 description:
201 "Directory where Codex writes log files (for example `codex-tui.log`); defaults to `$CODEX_HOME/log`.",
202 },
203 {
204 key: "sqlite_home",
205 type: "string (path)",
206 description:
207 "Directory where Codex stores the SQLite-backed state DB used by agent jobs and other resumable runtime state.",
208 },
209 {
210 key: "compact_prompt",
211 type: "string",
212 description: "Inline override for the history compaction prompt.",
213 },
214 {
215 key: "commit_attribution",
216 type: "string",
217 description:
218 'Commit co-author trailer used when `[features].codex_git_commit` is enabled. Defaults to `Codex <noreply@openai.com>`; set `""` to disable.',
219 },
220 {
221 key: "model_instructions_file",
222 type: "string (path)",
223 description:
224 "Replacement for built-in instructions instead of `AGENTS.md`.",
225 },
226 {
227 key: "personality",
228 type: "none | friendly | pragmatic",
229 description:
230 "Default communication style for models that advertise `supportsPersonality`; can be overridden per thread/turn or via `/personality`.",
231 },
232 {
233 key: "service_tier",
234 type: "string",
235 description:
236 "Preferred service tier for new turns. Built-in values include `flex` and `fast`; legacy `fast` config maps to the request value `priority`, and catalog-provided tier IDs can also be stored.",
237 },
238 {
239 key: "experimental_compact_prompt_file",
240 type: "string (path)",
241 description:
242 "Load the compaction prompt override from a file (experimental).",
243 },
244 {
245 key: "skills.config",
246 type: "array<object>",
247 description: "Per-skill enablement overrides stored in config.toml.",
248 },
249 {
250 key: "skills.config.<index>.path",
251 type: "string (path)",
252 description: "Path to a skill folder containing `SKILL.md`.",
253 },
254 {
255 key: "skills.config.<index>.enabled",
256 type: "boolean",
257 description: "Enable or disable the referenced skill.",
258 },
259 {
260 key: "apps.<id>.enabled",
261 type: "boolean",
262 description:
263 "Enable or disable a specific app/connector by id (default: true).",
264 },
265 {
266 key: "apps._default.enabled",
267 type: "boolean",
268 description:
269 "Default app enabled state for all apps unless overridden per app.",
270 },
271 {
272 key: "apps._default.destructive_enabled",
273 type: "boolean",
274 description:
275 "Default allow/deny for app tools with `destructive_hint = true`.",
276 },
277 {
278 key: "apps._default.open_world_enabled",
279 type: "boolean",
280 description:
281 "Default allow/deny for app tools with `open_world_hint = true`.",
282 },
283 {
284 key: "apps.<id>.destructive_enabled",
285 type: "boolean",
286 description:
287 "Allow or block tools in this app that advertise `destructive_hint = true`.",
288 },
289 {
290 key: "apps.<id>.open_world_enabled",
291 type: "boolean",
292 description:
293 "Allow or block tools in this app that advertise `open_world_hint = true`.",
294 },
295 {
296 key: "apps.<id>.default_tools_enabled",
297 type: "boolean",
298 description:
299 "Default enabled state for tools in this app unless a per-tool override exists.",
300 },
301 {
302 key: "apps.<id>.default_tools_approval_mode",
303 type: "auto | prompt | approve",
304 description:
305 "Default approval behavior for tools in this app unless a per-tool override exists.",
306 },
307 {
308 key: "apps.<id>.tools.<tool>.enabled",
309 type: "boolean",
310 description:
311 "Per-tool enabled override for an app tool (for example `repos/list`).",
312 },
313 {
314 key: "apps.<id>.tools.<tool>.approval_mode",
315 type: "auto | prompt | approve",
316 description: "Per-tool approval behavior override for a single app tool.",
317 },
318 {
319 key: "tool_suggest.discoverables",
320 type: "array<table>",
321 description:
322 'Allow tool suggestions for additional discoverable connectors or plugins. Each entry uses `type = "connector"` or `"plugin"` and an `id`.',
323 },
324 {
325 key: "tool_suggest.disabled_tools",
326 type: "array<table>",
327 description:
328 'Disable suggestions for specific discoverable connectors or plugins. Each entry uses `type = "connector"` or `"plugin"` and an `id`.',
329 },
330 {
331 key: "features.apps",
332 type: "boolean",
333 description: "Enable ChatGPT Apps/connectors support (experimental).",
334 },
335 {
336 key: "features.hooks",
337 type: "boolean",
338 description:
339 "Enable lifecycle hooks loaded from `hooks.json` or inline `[hooks]` config. `features.codex_hooks` is a deprecated alias.",
340 },
341 {
342 key: "features.codex_git_commit",
343 type: "boolean",
344 description:
345 "Enable Codex-generated git commits. When enabled, Codex uses `commit_attribution` to append a `Co-authored-by:` trailer to generated commit messages.",
346 },
347 {
348 key: "hooks",
349 type: "table",
350 description:
351 "Lifecycle hooks configured inline in `config.toml`. Uses the same event schema as `hooks.json`; see the Hooks guide for examples and supported events.",
352 },
353 {
354 key: "features.plugin_hooks",
355 type: "boolean",
356 description:
357 "Opt into lifecycle hooks bundled with enabled plugins. Off by default in this release; set to `true` to opt in.",
358 },
359 {
360 key: "features.memories",
361 type: "boolean",
362 description: "Enable [Memories](https://developers.openai.com/codex/memories) (off by default).",
363 },
364 {
365 key: "mcp_servers.<id>.command",
366 type: "string",
367 description: "Launcher command for an MCP stdio server.",
368 },
369 {
370 key: "mcp_servers.<id>.args",
371 type: "array<string>",
372 description: "Arguments passed to the MCP stdio server command.",
373 },
374 {
375 key: "mcp_servers.<id>.env",
376 type: "map<string,string>",
377 description: "Environment variables forwarded to the MCP stdio server.",
378 },
379 {
380 key: "mcp_servers.<id>.env_vars",
381 type: 'array<string | { name = string, source = "local" | "remote" }>',
382 description:
383 'Additional environment variables to whitelist for an MCP stdio server. String entries default to `source = "local"`; use `source = "remote"` only with executor-backed remote stdio.',
384 },
385 {
386 key: "mcp_servers.<id>.cwd",
387 type: "string",
388 description: "Working directory for the MCP stdio server process.",
389 },
390 {
391 key: "mcp_servers.<id>.url",
392 type: "string",
393 description: "Endpoint for an MCP streamable HTTP server.",
394 },
395 {
396 key: "mcp_servers.<id>.bearer_token_env_var",
397 type: "string",
398 description:
399 "Environment variable sourcing the bearer token for an MCP HTTP server.",
400 },
401 {
402 key: "mcp_servers.<id>.http_headers",
403 type: "map<string,string>",
404 description: "Static HTTP headers included with each MCP HTTP request.",
405 },
406 {
407 key: "mcp_servers.<id>.env_http_headers",
408 type: "map<string,string>",
409 description:
410 "HTTP headers populated from environment variables for an MCP HTTP server.",
411 },
412 {
413 key: "mcp_servers.<id>.enabled",
414 type: "boolean",
415 description: "Disable an MCP server without removing its configuration.",
416 },
417 {
418 key: "mcp_servers.<id>.required",
419 type: "boolean",
420 description:
421 "When true, fail startup/resume if this enabled MCP server cannot initialize.",
422 },
423 {
424 key: "mcp_servers.<id>.startup_timeout_sec",
425 type: "number",
426 description:
427 "Override the default 10s startup timeout for an MCP server.",
428 },
429 {
430 key: "mcp_servers.<id>.startup_timeout_ms",
431 type: "number",
432 description: "Alias for `startup_timeout_sec` in milliseconds.",
433 },
434 {
435 key: "mcp_servers.<id>.tool_timeout_sec",
436 type: "number",
437 description:
438 "Override the default 60s per-tool timeout for an MCP server.",
439 },
440 {
441 key: "mcp_servers.<id>.enabled_tools",
442 type: "array<string>",
443 description: "Allow list of tool names exposed by the MCP server.",
444 },
445 {
446 key: "mcp_servers.<id>.disabled_tools",
447 type: "array<string>",
448 description:
449 "Deny list applied after `enabled_tools` for the MCP server.",
450 },
451 {
452 key: "mcp_servers.<id>.default_tools_approval_mode",
453 type: "auto | prompt | approve",
454 description:
455 "Default approval behavior for MCP tools on this server unless a per-tool override exists.",
456 },
457 {
458 key: "mcp_servers.<id>.tools.<tool>.approval_mode",
459 type: "auto | prompt | approve",
460 description:
461 "Per-tool approval behavior override for one MCP tool on this server.",
462 },
463 {
464 key: "mcp_servers.<id>.scopes",
465 type: "array<string>",
466 description:
467 "OAuth scopes to request when authenticating to that MCP server.",
468 },
469 {
470 key: "mcp_servers.<id>.oauth_resource",
471 type: "string",
472 description:
473 "Optional RFC 8707 OAuth resource parameter to include during MCP login.",
474 },
475 {
476 key: "mcp_servers.<id>.experimental_environment",
477 type: "local | remote",
478 description:
479 "Experimental placement for an MCP server. `remote` starts stdio servers through a remote executor environment; streamable HTTP remote placement is not implemented.",
480 },
481 {
482 key: "agents.max_threads",
483 type: "number",
484 description:
485 "Maximum number of agent threads that can be open concurrently. Defaults to `6` when unset.",
486 },
487 {
488 key: "agents.max_depth",
489 type: "number",
490 description:
491 "Maximum nesting depth allowed for spawned agent threads (root sessions start at depth 0; default: 1).",
492 },
493 {
494 key: "agents.job_max_runtime_seconds",
495 type: "number",
496 description:
497 "Default per-worker timeout for `spawn_agents_on_csv` jobs. When unset, the tool falls back to 1800 seconds per worker.",
498 },
499 {
500 key: "agents.<name>.description",
501 type: "string",
502 description:
503 "Role guidance shown to Codex when choosing and spawning that agent type.",
504 },
505 {
506 key: "agents.<name>.config_file",
507 type: "string (path)",
508 description:
509 "Path to a TOML config layer for that role; relative paths resolve from the config file that declares the role.",
510 },
511 {
512 key: "agents.<name>.nickname_candidates",
513 type: "array<string>",
514 description:
515 "Optional pool of display nicknames for spawned agents in that role.",
516 },
517 {
518 key: "memories.generate_memories",
519 type: "boolean",
520 description:
521 "When `false`, newly created threads are not stored as memory-generation inputs. Defaults to `true`.",
522 },
523 {
524 key: "memories.use_memories",
525 type: "boolean",
526 description:
527 "When `false`, Codex skips injecting existing memories into future sessions. Defaults to `true`.",
528 },
529 {
530 key: "memories.disable_on_external_context",
531 type: "boolean",
532 description:
533 "When `true`, threads that use external context such as MCP tool calls, web search, or tool search are kept out of memory generation. Defaults to `false`. Legacy alias: `memories.no_memories_if_mcp_or_web_search`.",
534 },
535 {
536 key: "memories.max_raw_memories_for_consolidation",
537 type: "number",
538 description:
539 "Maximum recent raw memories retained for global consolidation. Defaults to `256` and is capped at `4096`.",
540 },
541 {
542 key: "memories.max_unused_days",
543 type: "number",
544 description:
545 "Maximum days since a memory was last used before it becomes ineligible for consolidation. Defaults to `30` and is clamped to `0`-`365`.",
546 },
547 {
548 key: "memories.max_rollout_age_days",
549 type: "number",
550 description:
551 "Maximum age of threads considered for memory generation. Defaults to `30` and is clamped to `0`-`90`.",
552 },
553 {
554 key: "memories.max_rollouts_per_startup",
555 type: "number",
556 description:
557 "Maximum rollout candidates processed per startup pass. Defaults to `16` and is capped at `128`.",
558 },
559 {
560 key: "memories.min_rollout_idle_hours",
561 type: "number",
562 description:
563 "Minimum idle time before a thread is considered for memory generation. Defaults to `6` and is clamped to `1`-`48`.",
564 },
565 {
566 key: "memories.min_rate_limit_remaining_percent",
567 type: "number",
568 description:
569 "Minimum remaining percentage required in Codex rate-limit windows before memory generation starts. Defaults to `25` and is clamped to `0`-`100`.",
570 },
571 {
572 key: "memories.extract_model",
573 type: "string",
574 description: "Optional model override for per-thread memory extraction.",
575 },
576 {
577 key: "memories.consolidation_model",
578 type: "string",
579 description: "Optional model override for global memory consolidation.",
580 },
581 {
582 key: "features.unified_exec",
583 type: "boolean",
584 description:
585 "Use the unified PTY-backed exec tool (stable; enabled by default except on Windows).",
586 },
587 {
588 key: "features.shell_snapshot",
589 type: "boolean",
590 description:
591 "Snapshot shell environment to speed up repeated commands (stable; on by default).",
592 },
593 {
594 key: "features.undo",
595 type: "boolean",
596 description: "Enable undo support (stable; off by default).",
597 },
598 {
599 key: "features.multi_agent",
600 type: "boolean",
601 description:
602 "Enable multi-agent collaboration tools (`spawn_agent`, `send_input`, `resume_agent`, `wait_agent`, and `close_agent`) (stable; on by default).",
603 },
604 {
605 key: "features.personality",
606 type: "boolean",
607 description:
608 "Enable personality selection controls (stable; on by default).",
609 },
610 {
611 key: "features.network_proxy",
612 type: "boolean | table",
613 description:
614 "Enable sandboxed networking. Use a table form when setting network policy options such as `domains` (experimental; off by default).",
615 },
616 {
617 key: "features.network_proxy.enabled",
618 type: "boolean",
619 description: "Enable sandboxed networking. Defaults to `false`.",
620 },
621 {
622 key: "features.network_proxy.domains",
623 type: "map<string, allow | deny>",
624 description:
625 "Domain policy for sandboxed networking. Unset by default, which means no external destinations are allowed until you add `allow` rules. Supports exact hosts, `*.example.com` for subdomains only, `**.example.com` for apex plus subdomains, and global `*` allow rules; prefer scoped rules because `*` broadly opens public outbound access. Add `deny` rules for blocked destinations; `deny` wins on conflicts.",
626 },
627 {
628 key: "features.network_proxy.unix_sockets",
629 type: "map<string, allow | none>",
630 description:
631 "Unix socket policy for sandboxed networking. Unset by default; add `allow` entries for permitted sockets.",
632 },
633 {
634 key: "features.network_proxy.allow_local_binding",
635 type: "boolean",
636 description:
637 "Allow broader local/private-network access. Defaults to `false`; exact local IP literal or `localhost` allow rules can still permit specific local targets.",
638 },
639 {
640 key: "features.network_proxy.enable_socks5",
641 type: "boolean",
642 description: "Expose SOCKS5 support. Defaults to `true`.",
643 },
644 {
645 key: "features.network_proxy.enable_socks5_udp",
646 type: "boolean",
647 description: "Allow UDP over SOCKS5. Defaults to `true`.",
648 },
649 {
650 key: "features.network_proxy.allow_upstream_proxy",
651 type: "boolean",
652 description:
653 "Allow chaining through an upstream proxy from the environment. Defaults to `true`.",
654 },
655 {
656 key: "features.network_proxy.dangerously_allow_non_loopback_proxy",
657 type: "boolean",
658 description:
659 "Permit non-loopback listener addresses. Defaults to `false`; enabling it can expose proxy listeners beyond localhost.",
660 },
661 {
662 key: "features.network_proxy.dangerously_allow_all_unix_sockets",
663 type: "boolean",
664 description:
665 "Permit arbitrary Unix socket destinations instead of allowlist-only access. Defaults to `false`; use only in tightly controlled environments.",
666 },
667 {
668 key: "features.network_proxy.proxy_url",
669 type: "string",
670 description:
671 'HTTP listener URL for sandboxed networking. Defaults to `"http://127.0.0.1:3128"`.',
672 },
673 {
674 key: "features.network_proxy.socks_url",
675 type: "string",
676 description:
677 'SOCKS5 listener URL. Defaults to `"http://127.0.0.1:8081"`.',
678 },
679 {
680 key: "features.web_search",
681 type: "boolean",
682 description:
683 "Deprecated legacy toggle; prefer the top-level `web_search` setting.",
684 },
685 {
686 key: "features.web_search_cached",
687 type: "boolean",
688 description:
689 'Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "cached"`.',
690 },
691 {
692 key: "features.web_search_request",
693 type: "boolean",
694 description:
695 'Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "live"`.',
696 },
697 {
698 key: "features.shell_tool",
699 type: "boolean",
700 description:
701 "Enable the default `shell` tool for running commands (stable; on by default).",
702 },
703 {
704 key: "features.enable_request_compression",
705 type: "boolean",
706 description:
707 "Compress streaming request bodies with zstd when supported (stable; on by default).",
708 },
709 {
710 key: "features.skill_mcp_dependency_install",
711 type: "boolean",
712 description:
713 "Allow prompting and installing missing MCP dependencies for skills (stable; on by default).",
714 },
715 {
716 key: "features.fast_mode",
717 type: "boolean",
718 description:
719 "Enable model-catalog service tier selection in the TUI, including Fast-tier commands when the active model advertises them (stable; on by default).",
720 },
721 {
722 key: "features.prevent_idle_sleep",
723 type: "boolean",
724 description:
725 "Prevent the machine from sleeping while a turn is actively running (experimental; off by default).",
726 },
727 {
728 key: "suppress_unstable_features_warning",
729 type: "boolean",
730 description:
731 "Suppress the warning that appears when under-development feature flags are enabled.",
732 },
733 {
734 key: "model_providers.<id>",
735 type: "table",
736 description:
737 "Custom provider definition. Built-in provider IDs (`openai`, `ollama`, and `lmstudio`) are reserved and cannot be overridden.",
738 },
739 {
740 key: "model_providers.<id>.name",
741 type: "string",
742 description: "Display name for a custom model provider.",
743 },
744 {
745 key: "model_providers.<id>.base_url",
746 type: "string",
747 description: "API base URL for the model provider.",
748 },
749 {
750 key: "model_providers.<id>.env_key",
751 type: "string",
752 description: "Environment variable supplying the provider API key.",
753 },
754 {
755 key: "model_providers.<id>.env_key_instructions",
756 type: "string",
757 description: "Optional setup guidance for the provider API key.",
758 },
759 {
760 key: "model_providers.<id>.experimental_bearer_token",
761 type: "string",
762 description:
763 "Direct bearer token for the provider (discouraged; use `env_key`).",
764 },
765 {
766 key: "model_providers.<id>.requires_openai_auth",
767 type: "boolean",
768 description:
769 "The provider uses OpenAI authentication (defaults to false).",
770 },
771 {
772 key: "model_providers.<id>.wire_api",
773 type: "responses",
774 description:
775 "Protocol used by the provider. `responses` is the only supported value, and it is the default when omitted.",
776 },
777 {
778 key: "model_providers.<id>.query_params",
779 type: "map<string,string>",
780 description: "Extra query parameters appended to provider requests.",
781 },
782 {
783 key: "model_providers.<id>.http_headers",
784 type: "map<string,string>",
785 description: "Static HTTP headers added to provider requests.",
786 },
787 {
788 key: "model_providers.<id>.env_http_headers",
789 type: "map<string,string>",
790 description:
791 "HTTP headers populated from environment variables when present.",
792 },
793 {
794 key: "model_providers.<id>.request_max_retries",
795 type: "number",
796 description:
797 "Retry count for HTTP requests to the provider (default: 4).",
798 },
799 {
800 key: "model_providers.<id>.stream_max_retries",
801 type: "number",
802 description: "Retry count for SSE streaming interruptions (default: 5).",
803 },
804 {
805 key: "model_providers.<id>.stream_idle_timeout_ms",
806 type: "number",
807 description:
808 "Idle timeout for SSE streams in milliseconds (default: 300000).",
809 },
810 {
811 key: "model_providers.<id>.supports_websockets",
812 type: "boolean",
813 description:
814 "Whether that provider supports the Responses API WebSocket transport.",
815 },
816 {
817 key: "model_providers.<id>.auth",
818 type: "table",
819 description:
820 "Command-backed bearer token configuration for a custom provider. Do not combine with `env_key`, `experimental_bearer_token`, or `requires_openai_auth`.",
821 },
822 {
823 key: "model_providers.<id>.auth.command",
824 type: "string",
825 description:
826 "Command to run when Codex needs a bearer token. The command must print the token to stdout.",
827 },
828 {
829 key: "model_providers.<id>.auth.args",
830 type: "array<string>",
831 description: "Arguments passed to the token command.",
832 },
833 {
834 key: "model_providers.<id>.auth.timeout_ms",
835 type: "number",
836 description:
837 "Maximum token command runtime in milliseconds (default: 5000).",
838 },
839 {
840 key: "model_providers.<id>.auth.refresh_interval_ms",
841 type: "number",
842 description:
843 "How often Codex proactively refreshes the token in milliseconds (default: 300000). Set to `0` to refresh only after an authentication retry.",
844 },
845 {
846 key: "model_providers.<id>.auth.cwd",
847 type: "string (path)",
848 description: "Working directory for the token command.",
849 },
850 {
851 key: "model_providers.amazon-bedrock.aws.profile",
852 type: "string",
853 description:
854 "AWS profile name used by the built-in `amazon-bedrock` provider.",
855 },
856 {
857 key: "model_providers.amazon-bedrock.aws.region",
858 type: "string",
859 description: "AWS region used by the built-in `amazon-bedrock` provider.",
860 },
861 {
862 key: "model_reasoning_effort",
863 type: "minimal | low | medium | high | xhigh",
864 description:
865 "Adjust reasoning effort for supported models (Responses API only; `xhigh` is model-dependent).",
866 },
867 {
868 key: "plan_mode_reasoning_effort",
869 type: "none | minimal | low | medium | high | xhigh",
870 description:
871 "Plan-mode-specific reasoning override. When unset, Plan mode uses its built-in preset default.",
872 },
873 {
874 key: "model_reasoning_summary",
875 type: "auto | concise | detailed | none",
876 description:
877 "Select reasoning summary detail or disable summaries entirely.",
878 },
879 {
880 key: "model_verbosity",
881 type: "low | medium | high",
882 description:
883 "Optional GPT-5 Responses API verbosity override; when unset, the selected model/preset default is used.",
884 },
885 {
886 key: "model_supports_reasoning_summaries",
887 type: "boolean",
888 description: "Force Codex to send or not send reasoning metadata.",
889 },
890 {
891 key: "shell_environment_policy.inherit",
892 type: "all | core | none",
893 description:
894 "Baseline environment inheritance when spawning subprocesses.",
895 },
896 {
897 key: "shell_environment_policy.ignore_default_excludes",
898 type: "boolean",
899 description:
900 "Keep variables containing KEY/SECRET/TOKEN before other filters run.",
901 },
902 {
903 key: "shell_environment_policy.exclude",
904 type: "array<string>",
905 description:
906 "Glob patterns for removing environment variables after the defaults.",
907 },
908 {
909 key: "shell_environment_policy.include_only",
910 type: "array<string>",
911 description:
912 "Whitelist of patterns; when set only matching variables are kept.",
913 },
914 {
915 key: "shell_environment_policy.set",
916 type: "map<string,string>",
917 description:
918 "Explicit environment overrides injected into every subprocess.",
919 },
920 {
921 key: "shell_environment_policy.experimental_use_profile",
922 type: "boolean",
923 description: "Use the user shell profile when spawning subprocesses.",
924 },
925 {
926 key: "project_root_markers",
927 type: "array<string>",
928 description:
929 "List of project root marker filenames; used when searching parent directories for the project root.",
930 },
931 {
932 key: "project_doc_max_bytes",
933 type: "number",
934 description:
935 "Maximum bytes read from `AGENTS.md` when building project instructions.",
936 },
937 {
938 key: "project_doc_fallback_filenames",
939 type: "array<string>",
940 description: "Additional filenames to try when `AGENTS.md` is missing.",
941 },
942 {
943 key: "profile",
944 type: "string",
945 description:
946 "Default profile applied at startup (equivalent to `--profile`).",
947 },
948 {
949 key: "profiles.<name>.*",
950 type: "various",
951 description:
952 "Profile-scoped overrides for any of the supported configuration keys.",
953 },
954 {
955 key: "profiles.<name>.service_tier",
956 type: "string",
957 description: "Profile-scoped service tier preference for new turns.",
958 },
959 {
960 key: "profiles.<name>.plan_mode_reasoning_effort",
961 type: "none | minimal | low | medium | high | xhigh",
962 description: "Profile-scoped Plan-mode reasoning override.",
963 },
964 {
965 key: "profiles.<name>.web_search",
966 type: "disabled | cached | live",
967 description:
968 'Profile-scoped web search mode override (default: `"cached"`).',
969 },
970 {
971 key: "profiles.<name>.personality",
972 type: "none | friendly | pragmatic",
973 description:
974 "Profile-scoped communication style override for supported models.",
975 },
976 {
977 key: "profiles.<name>.model_catalog_json",
978 type: "string (path)",
979 description:
980 "Profile-scoped model catalog JSON path override (applied on startup only; overrides the top-level `model_catalog_json` for that profile).",
981 },
982 {
983 key: "profiles.<name>.model_instructions_file",
984 type: "string (path)",
985 description:
986 "Profile-scoped replacement for the built-in instruction file.",
987 },
988 {
989 key: "profiles.<name>.experimental_use_unified_exec_tool",
990 type: "boolean",
991 description:
992 "Legacy name for enabling unified exec; prefer `[features].unified_exec`.",
993 },
994 {
995 key: "profiles.<name>.oss_provider",
996 type: "lmstudio | ollama",
997 description: "Profile-scoped OSS provider for `--oss` sessions.",
998 },
999 {
1000 key: "profiles.<name>.tools_view_image",
1001 type: "boolean",
1002 description: "Enable or disable the `view_image` tool in that profile.",
1003 },
1004 {
1005 key: "profiles.<name>.analytics.enabled",
1006 type: "boolean",
1007 description: "Profile-scoped analytics enablement override.",
1008 },
1009 {
1010 key: "profiles.<name>.windows.sandbox",
1011 type: "unelevated | elevated",
1012 description: "Profile-scoped Windows sandbox mode override.",
1013 },
1014 {
1015 key: "history.persistence",
1016 type: "save-all | none",
1017 description:
1018 "Control whether Codex saves session transcripts to history.jsonl.",
1019 },
1020 {
1021 key: "tool_output_token_limit",
1022 type: "number",
1023 description:
1024 "Token budget for storing individual tool/function outputs in history.",
1025 },
1026 {
1027 key: "background_terminal_max_timeout",
1028 type: "number",
1029 description:
1030 "Maximum poll window in milliseconds for empty `write_stdin` polls (background terminal polling). Default: `300000` (5 minutes). Replaces the older `background_terminal_timeout` key.",
1031 },
1032 {
1033 key: "history.max_bytes",
1034 type: "number",
1035 description:
1036 "If set, caps the history file size in bytes by dropping oldest entries.",
1037 },
1038 {
1039 key: "file_opener",
1040 type: "vscode | vscode-insiders | windsurf | cursor | none",
1041 description:
1042 "URI scheme used to open citations from Codex output (default: `vscode`).",
1043 },
1044 {
1045 key: "otel.environment",
1046 type: "string",
1047 description:
1048 "Environment tag applied to emitted OpenTelemetry events (default: `dev`).",
1049 },
1050 {
1051 key: "otel.exporter",
1052 type: "none | otlp-http | otlp-grpc",
1053 description:
1054 "Select the OpenTelemetry exporter and provide any endpoint metadata.",
1055 },
1056 {
1057 key: "otel.trace_exporter",
1058 type: "none | otlp-http | otlp-grpc",
1059 description:
1060 "Select the OpenTelemetry trace exporter and provide any endpoint metadata.",
1061 },
1062 {
1063 key: "otel.metrics_exporter",
1064 type: "none | statsig | otlp-http | otlp-grpc",
1065 description:
1066 "Select the OpenTelemetry metrics exporter (defaults to `statsig`).",
1067 },
1068 {
1069 key: "otel.log_user_prompt",
1070 type: "boolean",
1071 description:
1072 "Opt in to exporting raw user prompts with OpenTelemetry logs.",
1073 },
1074 {
1075 key: "otel.exporter.<id>.endpoint",
1076 type: "string",
1077 description: "Exporter endpoint for OTEL logs.",
1078 },
1079 {
1080 key: "otel.exporter.<id>.protocol",
1081 type: "binary | json",
1082 description: "Protocol used by the OTLP/HTTP exporter.",
1083 },
1084 {
1085 key: "otel.exporter.<id>.headers",
1086 type: "map<string,string>",
1087 description: "Static headers included with OTEL exporter requests.",
1088 },
1089 {
1090 key: "otel.trace_exporter.<id>.endpoint",
1091 type: "string",
1092 description: "Trace exporter endpoint for OTEL logs.",
1093 },
1094 {
1095 key: "otel.trace_exporter.<id>.protocol",
1096 type: "binary | json",
1097 description: "Protocol used by the OTLP/HTTP trace exporter.",
1098 },
1099 {
1100 key: "otel.trace_exporter.<id>.headers",
1101 type: "map<string,string>",
1102 description: "Static headers included with OTEL trace exporter requests.",
1103 },
1104 {
1105 key: "otel.exporter.<id>.tls.ca-certificate",
1106 type: "string",
1107 description: "CA certificate path for OTEL exporter TLS.",
1108 },
1109 {
1110 key: "otel.exporter.<id>.tls.client-certificate",
1111 type: "string",
1112 description: "Client certificate path for OTEL exporter TLS.",
1113 },
1114 {
1115 key: "otel.exporter.<id>.tls.client-private-key",
1116 type: "string",
1117 description: "Client private key path for OTEL exporter TLS.",
1118 },
1119 {
1120 key: "otel.trace_exporter.<id>.tls.ca-certificate",
1121 type: "string",
1122 description: "CA certificate path for OTEL trace exporter TLS.",
1123 },
1124 {
1125 key: "otel.trace_exporter.<id>.tls.client-certificate",
1126 type: "string",
1127 description: "Client certificate path for OTEL trace exporter TLS.",
1128 },
1129 {
1130 key: "otel.trace_exporter.<id>.tls.client-private-key",
1131 type: "string",
1132 description: "Client private key path for OTEL trace exporter TLS.",
1133 },
1134 {
1135 key: "tui",
1136 type: "table",
1137 description:
1138 "TUI-specific options such as enabling inline desktop notifications.",
1139 },
1140 {
1141 key: "tui.notifications",
1142 type: "boolean | array<string>",
1143 description:
1144 "Enable TUI notifications; optionally restrict to specific event types.",
1145 },
1146 {
1147 key: "tui.notification_method",
1148 type: "auto | osc9 | bel",
1149 description:
1150 "Notification method for terminal notifications (default: auto).",
1151 },
1152 {
1153 key: "tui.notification_condition",
1154 type: "unfocused | always",
1155 description:
1156 "Control whether TUI notifications fire only when the terminal is unfocused or regardless of focus. Defaults to `unfocused`.",
1157 },
1158 {
1159 key: "tui.animations",
1160 type: "boolean",
1161 description:
1162 "Enable terminal animations (welcome screen, shimmer, spinner) (default: true).",
1163 },
1164 {
1165 key: "tui.alternate_screen",
1166 type: "auto | always | never",
1167 description:
1168 "Control alternate screen usage for the TUI (default: auto; auto skips it in Zellij to preserve scrollback).",
1169 },
1170 {
1171 key: "tui.vim_mode_default",
1172 type: "boolean",
1173 description:
1174 "Start the composer in Vim normal mode instead of insert mode (default: false). You can still toggle it per session with `/vim`.",
1175 },
1176 {
1177 key: "tui.raw_output_mode",
1178 type: "boolean",
1179 description:
1180 "Start the TUI in raw scrollback mode for copy-friendly terminal selection (default: false). You can toggle it with `/raw` or the default `alt-r` key binding.",
1181 },
1182 {
1183 key: "tui.show_tooltips",
1184 type: "boolean",
1185 description:
1186 "Show onboarding tooltips in the TUI welcome screen (default: true).",
1187 },
1188 {
1189 key: "tui.status_line",
1190 type: "array<string> | null",
1191 description:
1192 "Ordered list of TUI footer status-line item identifiers. `null` disables the status line.",
1193 },
1194 {
1195 key: "tui.terminal_title",
1196 type: "array<string> | null",
1197 description:
1198 'Ordered list of terminal window/tab title item identifiers. Defaults to `["spinner", "project"]`; `null` disables title updates.',
1199 },
1200 {
1201 key: "tui.theme",
1202 type: "string",
1203 description:
1204 "Syntax-highlighting theme override (kebab-case theme name).",
1205 },
1206 {
1207 key: "tui.keymap.<context>.<action>",
1208 type: "string | array<string>",
1209 description:
1210 "Keyboard shortcut binding for a TUI action. Supported contexts include `global`, `chat`, `composer`, `editor`, `pager`, `list`, and `approval`; context-specific bindings override `tui.keymap.global`.",
1211 },
1212 {
1213 key: "tui.keymap.<context>.<action> = []",
1214 type: "empty array",
1215 description:
1216 "Unbind the action in that keymap context. Key names use normalized strings such as `ctrl-a`, `shift-enter`, `page-down`, or `minus`.",
1217 },
1218 {
1219 key: "plugins.<plugin>.mcp_servers.<server>.enabled",
1220 type: "boolean",
1221 description:
1222 "Enable or disable an MCP server bundled by an installed plugin without changing the plugin manifest.",
1223 },
1224 {
1225 key: "plugins.<plugin>.mcp_servers.<server>.default_tools_approval_mode",
1226 type: "auto | prompt | approve",
1227 description:
1228 "Default approval behavior for tools on a plugin-provided MCP server.",
1229 },
1230 {
1231 key: "plugins.<plugin>.mcp_servers.<server>.enabled_tools",
1232 type: "array<string>",
1233 description:
1234 "Allow list of tools exposed from a plugin-provided MCP server.",
1235 },
1236 {
1237 key: "plugins.<plugin>.mcp_servers.<server>.disabled_tools",
1238 type: "array<string>",
1239 description:
1240 "Deny list applied after `enabled_tools` for a plugin-provided MCP server.",
1241 },
1242 {
1243 key: "plugins.<plugin>.mcp_servers.<server>.tools.<tool>.approval_mode",
1244 type: "auto | prompt | approve",
1245 description:
1246 "Per-tool approval behavior override for a plugin-provided MCP tool.",
1247 },
1248 {
1249 key: "tui.model_availability_nux.<model>",
1250 type: "integer",
1251 description: "Internal startup-tooltip state keyed by model slug.",
1252 },
1253 {
1254 key: "hide_agent_reasoning",
1255 type: "boolean",
1256 description:
1257 "Suppress reasoning events in both the TUI and `codex exec` output.",
1258 },
1259 {
1260 key: "show_raw_agent_reasoning",
1261 type: "boolean",
1262 description:
1263 "Surface raw reasoning content when the active model emits it.",
1264 },
1265 {
1266 key: "disable_paste_burst",
1267 type: "boolean",
1268 description: "Disable burst-paste detection in the TUI.",
1269 },
1270 {
1271 key: "windows_wsl_setup_acknowledged",
1272 type: "boolean",
1273 description: "Track Windows onboarding acknowledgement (Windows only).",
1274 },
1275 {
1276 key: "chatgpt_base_url",
1277 type: "string",
1278 description: "Override the base URL used during the ChatGPT login flow.",
1279 },
1280 {
1281 key: "cli_auth_credentials_store",
1282 type: "file | keyring | auto",
1283 description:
1284 "Control where the CLI stores cached credentials (file-based auth.json vs OS keychain).",
1285 },
1286 {
1287 key: "mcp_oauth_credentials_store",
1288 type: "auto | file | keyring",
1289 description: "Preferred store for MCP OAuth credentials.",
1290 },
1291 {
1292 key: "mcp_oauth_callback_port",
1293 type: "integer",
1294 description:
1295 "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.",
1296 },
1297 {
1298 key: "mcp_oauth_callback_url",
1299 type: "string",
1300 description:
1301 "Optional redirect URI override for MCP OAuth login (for example, a devbox ingress URL). `mcp_oauth_callback_port` still controls the callback listener port.",
1302 },
1303 {
1304 key: "experimental_use_unified_exec_tool",
1305 type: "boolean",
1306 description:
1307 "Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`.",
1308 },
1309 {
1310 key: "tools.web_search",
1311 type: 'boolean | { context_size = "low|medium|high", allowed_domains = [string], location = { country, region, city, timezone } }',
1312 description:
1313 "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.",
1314 },
1315 {
1316 key: "tools.view_image",
1317 type: "boolean",
1318 description: "Enable the local-image attachment tool `view_image`.",
1319 },
1320 {
1321 key: "web_search",
1322 type: "disabled | cached | live",
1323 description:
1324 '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.',
1325 },
1326 {
1327 key: "default_permissions",
1328 type: "string",
1329 description:
1330 "Name of the default permissions profile to apply to sandboxed tool calls. Built-ins are `:read-only`, `:workspace`, and `:danger-no-sandbox`; custom profile names require matching `[permissions.<name>]` tables.",
1331 },
1332 {
1333 key: "permissions.<name>.filesystem",
1334 type: "table",
1335 description:
1336 "Named filesystem permission profile. Each key is an absolute path or special token such as `:minimal` or `:project_roots`.",
1337 },
1338 {
1339 key: "permissions.<name>.filesystem.glob_scan_max_depth",
1340 type: "number",
1341 description:
1342 "Maximum depth for expanding deny-read glob patterns on platforms that snapshot matches before sandbox startup. Must be at least `1` when set.",
1343 },
1344 {
1345 key: "permissions.<name>.filesystem.<path-or-glob>",
1346 type: '"read" | "write" | "none" | table',
1347 description:
1348 'Grant direct access for a path, glob pattern, or special token, or scope nested entries under that root. Use `"none"` to deny reads for matching paths.',
1349 },
1350 {
1351 key: 'permissions.<name>.filesystem.":project_roots".<subpath-or-glob>',
1352 type: '"read" | "write" | "none"',
1353 description:
1354 'Scoped filesystem access relative to the detected project roots. Use `"."` for the root itself; glob subpaths such as `"**/*.env"` can deny reads with `"none"`.',
1355 },
1356 {
1357 key: "permissions.<name>.network.enabled",
1358 type: "boolean",
1359 description: "Enable network access for this named permissions profile.",
1360 },
1361 {
1362 key: "permissions.<name>.network.proxy_url",
1363 type: "string",
1364 description:
1365 "HTTP listener URL used when this permissions profile enables sandboxed networking.",
1366 },
1367 {
1368 key: "permissions.<name>.network.enable_socks5",
1369 type: "boolean",
1370 description:
1371 "Expose SOCKS5 support when this permissions profile enables sandboxed networking.",
1372 },
1373 {
1374 key: "permissions.<name>.network.socks_url",
1375 type: "string",
1376 description: "SOCKS5 proxy endpoint used by this permissions profile.",
1377 },
1378 {
1379 key: "permissions.<name>.network.enable_socks5_udp",
1380 type: "boolean",
1381 description: "Allow UDP over the SOCKS5 listener when enabled.",
1382 },
1383 {
1384 key: "permissions.<name>.network.allow_upstream_proxy",
1385 type: "boolean",
1386 description:
1387 "Allow sandboxed networking to chain through another upstream proxy.",
1388 },
1389 {
1390 key: "permissions.<name>.network.dangerously_allow_non_loopback_proxy",
1391 type: "boolean",
1392 description:
1393 "Permit non-loopback bind addresses for sandboxed networking listeners. Enabling it can expose listeners beyond localhost.",
1394 },
1395 {
1396 key: "permissions.<name>.network.dangerously_allow_all_unix_sockets",
1397 type: "boolean",
1398 description:
1399 "Allow arbitrary Unix socket destinations instead of the default restricted set. Use only in tightly controlled environments.",
1400 },
1401 {
1402 key: "permissions.<name>.network.domains",
1403 type: "map<string, allow | deny>",
1404 description:
1405 "Domain rules for sandboxed networking. Supports exact hosts, `*.example.com` for subdomains only, `**.example.com` for apex plus subdomains, and global `*` allow rules. `deny` wins on conflicts.",
1406 },
1407 {
1408 key: "permissions.<name>.network.unix_sockets",
1409 type: "map<string, allow | none>",
1410 description:
1411 "Unix socket rules for sandboxed networking. Use socket paths as keys, with `allow` or `none` values.",
1412 },
1413 {
1414 key: "permissions.<name>.network.allow_local_binding",
1415 type: "boolean",
1416 description:
1417 "Permit broader local/private-network access through sandboxed networking. Exact local IP literal or `localhost` allow rules can still permit specific local targets when this stays `false`.",
1418 },
1419 {
1420 key: "projects.<path>.trust_level",
1421 type: "string",
1422 description:
1423 'Mark a project or worktree as trusted or untrusted (`"trusted"` | `"untrusted"`). Untrusted projects skip project-scoped `.codex/` layers, including project-local config, hooks, and rules.',
1424 },
1425 {
1426 key: "notice.hide_full_access_warning",
1427 type: "boolean",
1428 description: "Track acknowledgement of the full access warning prompt.",
1429 },
1430 {
1431 key: "notice.hide_world_writable_warning",
1432 type: "boolean",
1433 description:
1434 "Track acknowledgement of the Windows world-writable directories warning.",
1435 },
1436 {
1437 key: "notice.hide_rate_limit_model_nudge",
1438 type: "boolean",
1439 description: "Track opt-out of the rate limit model switch reminder.",
1440 },
1441 {
1442 key: "notice.hide_gpt5_1_migration_prompt",
1443 type: "boolean",
1444 description: "Track acknowledgement of the GPT-5.1 migration prompt.",
1445 },
1446 {
1447 key: "notice.hide_gpt-5.1-codex-max_migration_prompt",
1448 type: "boolean",
1449 description:
1450 "Track acknowledgement of the gpt-5.1-codex-max migration prompt.",
1451 },
1452 {
1453 key: "notice.model_migrations",
1454 type: "map<string,string>",
1455 description: "Track acknowledged model migrations as old->new mappings.",
1456 },
1457 {
1458 key: "forced_login_method",
1459 type: "chatgpt | api",
1460 description: "Restrict Codex to a specific authentication method.",
1461 },
1462 {
1463 key: "forced_chatgpt_workspace_id",
1464 type: "string (uuid)",
1465 description: "Limit ChatGPT logins to a specific workspace identifier.",
1466 },
1467 ]}
1468 client:load
1469/>
2771 1470
2772You can find the latest JSON schema for `config.toml` [here](https://developers.openai.com/codex/config-schema.json).1471You can find the latest JSON schema for `config.toml` [here](https://developers.openai.com/codex/config-schema.json).
2773 1472
2789Use `[features]` in `requirements.toml` to pin feature flags by the same1488Use `[features]` in `requirements.toml` to pin feature flags by the same
2790canonical keys that `config.toml` uses. Omitted keys remain unconstrained.1489canonical keys that `config.toml` uses. Omitted keys remain unconstrained.
2791 1490
2792| Key | Type / Values | Details |1491<ConfigTable
2793| --- | --- | --- |1492 options={[
2794| `allowed_approval_policies` | `array<string>` | Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `reject`). |1493 {
2795| `allowed_sandbox_modes` | `array<string>` | Allowed values for `sandbox_mode`. |1494 key: "allowed_approval_policies",
2796| `allowed_web_search_modes` | `array<string>` | Allowed values for `web_search` (`disabled`, `cached`, `live`). `disabled` is always allowed; an empty list effectively allows only `disabled`. |1495 type: "array<string>",
2797| `features` | `table` | Pinned feature values keyed by the canonical names from `config.toml`'s `[features]` table. |1496 description:
2798| `features.<name>` | `boolean` | Require a specific canonical feature key to stay enabled or disabled. |1497 "Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `granular`).",
2799| `mcp_servers` | `table` | Allowlist of MCP servers that may be enabled. Both the server name (`<id>`) and its identity must match for the MCP server to be enabled. Any configured MCP server not in the allowlist (or with a mismatched identity) is disabled. |1498 },
2800| `mcp_servers.<id>.identity` | `table` | Identity rule for a single MCP server. Set either `command` (stdio) or `url` (streamable HTTP). |1499 {
2801| `mcp_servers.<id>.identity.command` | `string` | Allow an MCP stdio server when its `mcp_servers.<id>.command` matches this command. |1500 key: "allowed_approvals_reviewers",
2802| `mcp_servers.<id>.identity.url` | `string` | Allow an MCP streamable HTTP server when its `mcp_servers.<id>.url` matches this URL. |1501 type: "array<string>",
2803| `rules` | `table` | Admin-enforced command rules merged with `.rules` files. Requirements rules must be restrictive. |1502 description:
2804| `rules.prefix_rules` | `array<table>` | List of enforced prefix rules. Each rule must include `pattern` and `decision`. |1503 "Allowed values for `approvals_reviewer`, such as `user` and `auto_review`.",
2805| `rules.prefix_rules[].decision` | `prompt | forbidden` | Required. Requirements rules can only prompt or forbid (not allow). |1504 },
2806| `rules.prefix_rules[].justification` | `string` | Optional non-empty rationale surfaced in approval prompts or rejection messages. |1505 {
2807| `rules.prefix_rules[].pattern` | `array<table>` | Command prefix expressed as pattern tokens. Each token sets either `token` or `any_of`. |1506 key: "guardian_policy_config",
2808| `rules.prefix_rules[].pattern[].any_of` | `array<string>` | A list of allowed alternative tokens at this position. |1507 type: "string",
2809| `rules.prefix_rules[].pattern[].token` | `string` | A single literal token at this position. |1508 description:
2810 1509 "Managed Markdown policy instructions for automatic review. This takes precedence over local `[auto_review].policy`. Blank values are ignored.",
2811Key1510 },
2812 1511 {
2813`allowed_approval_policies`1512 key: "allowed_sandbox_modes",
2814 1513 type: "array<string>",
2815Type / Values1514 description: "Allowed values for `sandbox_mode`.",
2816 1515 },
2817`array<string>`1516 {
2818 1517 key: "remote_sandbox_config",
2819Details1518 type: "array<table>",
2820 1519 description:
2821Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `reject`).1520 "Host-specific sandbox requirements. The first entry whose `hostname_patterns` match the resolved host name overrides top-level `allowed_sandbox_modes` for that requirements source. Host-specific entries currently override sandbox modes only.",
2822 1521 },
2823Key1522 {
2824 1523 key: "remote_sandbox_config[].hostname_patterns",
2825`allowed_sandbox_modes`1524 type: "array<string>",
2826 1525 description:
2827Type / Values1526 "Case-insensitive host name patterns. Supports `*` for any sequence of characters and `?` for one character.",
2828 1527 },
2829`array<string>`1528 {
2830 1529 key: "remote_sandbox_config[].allowed_sandbox_modes",
2831Details1530 type: "array<string>",
2832 1531 description:
2833Allowed values for `sandbox_mode`.1532 "Allowed sandbox modes to apply when this host-specific entry matches.",
2834 1533 },
2835Key1534 {
2836 1535 key: "allowed_web_search_modes",
2837`allowed_web_search_modes`1536 type: "array<string>",
2838 1537 description:
2839Type / Values1538 "Allowed values for `web_search` (`disabled`, `cached`, `live`). `disabled` is always allowed; an empty list effectively allows only `disabled`.",
2840 1539 },
2841`array<string>`1540 {
2842 1541 key: "features",
2843Details1542 type: "table",
2844 1543 description:
2845Allowed values for `web_search` (`disabled`, `cached`, `live`). `disabled` is always allowed; an empty list effectively allows only `disabled`.1544 "Pinned feature values keyed by the canonical names from `config.toml`'s `[features]` table.",
2846 1545 },
2847Key1546 {
2848 1547 key: "features.<name>",
2849`features`1548 type: "boolean",
2850 1549 description:
2851Type / Values1550 "Require a specific canonical feature key to stay enabled or disabled.",
2852 1551 },
2853`table`1552 {
2854 1553 key: "features.in_app_browser",
2855Details1554 type: "boolean",
2856 1555 description:
2857Pinned feature values keyed by the canonical names from `config.toml`'s `[features]` table.1556 "Set to `false` in `requirements.toml` to disable the in-app browser pane.",
2858 1557 },
2859Key1558 {
2860 1559 key: "features.browser_use",
2861`features.<name>`1560 type: "boolean",
2862 1561 description:
2863Type / Values1562 "Set to `false` in `requirements.toml` to disable Browser Use and Browser Agent availability.",
2864 1563 },
2865`boolean`1564 {
2866 1565 key: "features.computer_use",
2867Details1566 type: "boolean",
2868 1567 description:
2869Require a specific canonical feature key to stay enabled or disabled.1568 "Set to `false` in `requirements.toml` to disable Computer Use availability and related install or enablement flows.",
2870 1569 },
2871Key1570 {
2872 1571 key: "experimental_network",
2873`mcp_servers`1572 type: "table",
2874 1573 description:
2875Type / Values1574 "Network access requirements enforced from `requirements.toml`. These constraints are separate from `features.network_proxy` and can configure sandboxed networking without the user feature flag.",
2876 1575 },
2877`table`1576 {
2878 1577 key: "experimental_network.enabled",
2879Details1578 type: "boolean",
2880 1579 description:
2881Allowlist 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.1580 "Enable sandboxed networking requirements. This does not grant network access when the active sandbox keeps command networking off.",
2882 1581 },
2883Key1582 {
2884 1583 key: "experimental_network.http_port",
2885`mcp_servers.<id>.identity`1584 type: "integer",
2886 1585 description:
2887Type / Values1586 "Loopback HTTP listener port to use for `[experimental_network]` requirements.",
2888 1587 },
2889`table`1588 {
2890 1589 key: "experimental_network.socks_port",
2891Details1590 type: "integer",
2892 1591 description:
2893Identity rule for a single MCP server. Set either `command` (stdio) or `url` (streamable HTTP).1592 "Loopback SOCKS5 listener port to use for `[experimental_network]` requirements.",
2894 1593 },
2895Key1594 {
2896 1595 key: "experimental_network.allow_upstream_proxy",
2897`mcp_servers.<id>.identity.command`1596 type: "boolean",
2898 1597 description:
2899Type / Values1598 "Allow sandboxed networking to chain through an upstream proxy from the environment.",
2900 1599 },
2901`string`1600 {
2902 1601 key: "experimental_network.dangerously_allow_non_loopback_proxy",
2903Details1602 type: "boolean",
2904 1603 description:
2905Allow an MCP stdio server when its `mcp_servers.<id>.command` matches this command.1604 "Permit non-loopback listener addresses for `[experimental_network]` requirements. Enabling it can expose listeners beyond localhost.",
2906 1605 },
2907Key1606 {
2908 1607 key: "experimental_network.dangerously_allow_all_unix_sockets",
2909`mcp_servers.<id>.identity.url`1608 type: "boolean",
2910 1609 description:
2911Type / Values1610 "Permit arbitrary Unix socket destinations instead of allowlist-only access. Use only in tightly controlled environments.",
2912 1611 },
2913`string`1612 {
2914 1613 key: "experimental_network.domains",
2915Details1614 type: "map<string, allow | deny>",
2916 1615 description:
2917Allow an MCP streamable HTTP server when its `mcp_servers.<id>.url` matches this URL.1616 "Map-shaped administrator domain policy for sandboxed networking. Supports exact hosts, `*.example.com` for subdomains only, `**.example.com` for apex plus subdomains, and global `*` allow rules; prefer scoped rules because `*` broadly opens public outbound access. `deny` wins on conflicts. Do not combine this with `experimental_network.allowed_domains` or `experimental_network.denied_domains`.",
2918 1617 },
2919Key1618 {
2920 1619 key: "experimental_network.allowed_domains",
2921`rules`1620 type: "array<string>",
2922 1621 description:
2923Type / Values1622 "List-shaped administrator allow rules for sandboxed networking. Do not combine this with `experimental_network.domains`.",
2924 1623 },
2925`table`1624 {
2926 1625 key: "experimental_network.denied_domains",
2927Details1626 type: "array<string>",
2928 1627 description:
2929Admin-enforced command rules merged with `.rules` files. Requirements rules must be restrictive.1628 "List-shaped administrator deny rules for sandboxed networking. Do not combine this with `experimental_network.domains`.",
2930 1629 },
2931Key1630 {
2932 1631 key: "experimental_network.managed_allowed_domains_only",
2933`rules.prefix_rules`1632 type: "boolean",
2934 1633 description:
2935Type / Values1634 "When `true`, only administrator-managed allow rules remain effective while sandboxed networking requirements are active; user allowlist additions are ignored. Without managed allow rules, user-added domain allow rules do not remain effective.",
2936 1635 },
2937`array<table>`1636 {
2938 1637 key: "experimental_network.unix_sockets",
2939Details1638 type: "map<string, allow | none>",
2940 1639 description:
2941List of enforced prefix rules. Each rule must include `pattern` and `decision`.1640 "Administrator-managed Unix socket policy for sandboxed networking.",
2942 1641 },
2943Key1642 {
2944 1643 key: "experimental_network.allow_local_binding",
2945`rules.prefix_rules[].decision`1644 type: "boolean",
2946 1645 description:
2947Type / Values1646 "Permit broader local/private-network access for sandboxed networking. Exact local IP literal or `localhost` allow rules can still permit specific local targets when this stays `false`.",
2948 1647 },
2949`prompt | forbidden`1648 {
2950 1649 key: "hooks",
2951Details1650 type: "table",
2952 1651 description:
2953Required. Requirements rules can only prompt or forbid (not allow).1652 "Admin-enforced managed lifecycle hooks. Requires a managed hook directory and uses the same event schema as inline `[hooks]` in `config.toml`.",
2954 1653 },
2955Key1654 {
2956 1655 key: "hooks.managed_dir",
2957`rules.prefix_rules[].justification`1656 type: "string (absolute path)",
2958 1657 description:
2959Type / Values1658 "Directory containing managed hook scripts on macOS and Linux. Codex validates that it is absolute and exists before loading managed hooks.",
2960 1659 },
2961`string`1660 {
2962 1661 key: "hooks.windows_managed_dir",
2963Details1662 type: "string (absolute path)",
2964 1663 description:
2965Optional non-empty rationale surfaced in approval prompts or rejection messages.1664 "Directory containing managed hook scripts on Windows. Codex validates that it is absolute and exists before loading managed hooks.",
2966 1665 },
2967Key1666 {
2968 1667 key: "hooks.<Event>",
2969`rules.prefix_rules[].pattern`1668 type: "array<table>",
2970 1669 description:
2971Type / Values1670 "Matcher groups for a hook event such as `PreToolUse`, `PermissionRequest`, `PostToolUse`, `SessionStart`, `UserPromptSubmit`, or `Stop`.",
2972 1671 },
2973`array<table>`1672 {
2974 1673 key: "hooks.<Event>[].hooks",
2975Details1674 type: "array<table>",
2976 1675 description:
2977Command prefix expressed as pattern tokens. Each token sets either `token` or `any_of`.1676 "Hook handlers for a matcher group. Command hooks are currently supported; prompt and agent hook handlers are parsed but skipped.",
2978 1677 },
2979Key1678 {
2980 1679 key: "permissions.filesystem.deny_read",
2981`rules.prefix_rules[].pattern[].any_of`1680 type: "array<string>",
2982 1681 description:
2983Type / Values1682 "Admin-enforced filesystem read denials. Entries can be paths or glob patterns, and users cannot weaken them with local config.",
2984 1683 },
2985`array<string>`1684 {
2986 1685 key: "mcp_servers",
2987Details1686 type: "table",
2988 1687 description:
2989A list of allowed alternative tokens at this position.1688 "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.",
2990 1689 },
2991Key1690 {
2992 1691 key: "mcp_servers.<id>.identity",
2993`rules.prefix_rules[].pattern[].token`1692 type: "table",
2994 1693 description:
2995Type / Values1694 "Identity rule for a single MCP server. Set either `command` (stdio) or `url` (streamable HTTP).",
2996 1695 },
2997`string`1696 {
2998 1697 key: "mcp_servers.<id>.identity.command",
2999Details1698 type: "string",
3000 1699 description:
3001A single literal token at this position.1700 "Allow an MCP stdio server when its `mcp_servers.<id>.command` matches this command.",
3002 1701 },
3003Expand to view all1702 {
1703 key: "mcp_servers.<id>.identity.url",
1704 type: "string",
1705 description:
1706 "Allow an MCP streamable HTTP server when its `mcp_servers.<id>.url` matches this URL.",
1707 },
1708 {
1709 key: "rules",
1710 type: "table",
1711 description:
1712 "Admin-enforced command rules merged with `.rules` files. Requirements rules must be restrictive.",
1713 },
1714 {
1715 key: "rules.prefix_rules",
1716 type: "array<table>",
1717 description:
1718 "List of enforced prefix rules. Each rule must include `pattern` and `decision`.",
1719 },
1720 {
1721 key: "rules.prefix_rules[].pattern",
1722 type: "array<table>",
1723 description:
1724 "Command prefix expressed as pattern tokens. Each token sets either `token` or `any_of`.",
1725 },
1726 {
1727 key: "rules.prefix_rules[].pattern[].token",
1728 type: "string",
1729 description: "A single literal token at this position.",
1730 },
1731 {
1732 key: "rules.prefix_rules[].pattern[].any_of",
1733 type: "array<string>",
1734 description: "A list of allowed alternative tokens at this position.",
1735 },
1736 {
1737 key: "rules.prefix_rules[].decision",
1738 type: "prompt | forbidden",
1739 description:
1740 "Required. Requirements rules can only prompt or forbid (not allow).",
1741 },
1742 {
1743 key: "rules.prefix_rules[].justification",
1744 type: "string",
1745 description:
1746 "Optional non-empty rationale surfaced in approval prompts or rejection messages.",
1747 },
1748 ]}
1749 client:load
1750/>