config-reference.md +1503 −2413
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).9For sandbox and approval keys (`approval_policy`, `sandbox_mode`, and `sandbox_workspace_write.*`), pair this reference with [Sandbox and approvals](https://developers.openai.com/codex/agent-approvals-security#sandbox-and-approvals), [Protected paths in writable roots](https://developers.openai.com/codex/agent-approvals-security#protected-paths-in-writable-roots), and [Network access](https://developers.openai.com/codex/agent-approvals-security#network-access).
10 10
1111| Key | Type / Values | Details |<ConfigTable
1212| --- | --- | --- | options={[
1313| `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. | {
1414| `agents.<name>.description` | `string` | Role guidance shown to Codex when choosing and spawning that agent type. | key: "model",
1515| `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. | type: "string",
1616| `agents.max_depth` | `number` | Maximum nesting depth allowed for spawned agent threads (root sessions start at depth 0; default: 1). | description: "Model to use (e.g., `gpt-5.5`).",
1717| `agents.max_threads` | `number` | Maximum number of agent threads that can be open concurrently. | },
1818| `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. | {
1919| `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. | key: "review_model",
2020| `approval_policy.reject.mcp_elicitations` | `boolean` | When `true`, MCP elicitation prompts are auto-rejected instead of shown to the user. | type: "string",
2121| `approval_policy.reject.rules` | `boolean` | When `true`, approvals triggered by execpolicy `prompt` rules are auto-rejected. | description:
2222| `approval_policy.reject.sandbox_approval` | `boolean` | When `true`, sandbox escalation approval prompts are auto-rejected. | "Optional model override used by `/review` (defaults to the current session model).",
2323| `apps._default.destructive_enabled` | `boolean` | Default allow/deny for app tools with `destructive_hint = true`. | },
2424| `apps._default.enabled` | `boolean` | Default app enabled state for all apps unless overridden per app. | {
2525| `apps._default.open_world_enabled` | `boolean` | Default allow/deny for app tools with `open_world_hint = true`. | key: "model_provider",
2626| `apps.<id>.default_tools_approval_mode` | `auto | prompt | approve` | Default approval behavior for tools in this app unless a per-tool override exists. | type: "string",
2727| `apps.<id>.default_tools_enabled` | `boolean` | Default enabled state for tools in this app unless a per-tool override exists. | description: "Provider id from `model_providers` (default: `openai`).",
2828| `apps.<id>.destructive_enabled` | `boolean` | Allow or block tools in this app that advertise `destructive_hint = true`. | },
2929| `apps.<id>.enabled` | `boolean` | Enable or disable a specific app/connector by id (default: true). | {
3030| `apps.<id>.open_world_enabled` | `boolean` | Allow or block tools in this app that advertise `open_world_hint = true`. | key: "openai_base_url",
3131| `apps.<id>.tools.<tool>.approval_mode` | `auto | prompt | approve` | Per-tool approval behavior override for a single app tool. | type: "string",
3232| `apps.<id>.tools.<tool>.enabled` | `boolean` | Per-tool enabled override for an app tool (for example `repos/list`). | description:
3333| `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. | "Base URL override for the built-in `openai` model provider.",
3434| `chatgpt_base_url` | `string` | Override the base URL used during the ChatGPT login flow. | },
3535| `check_for_update_on_startup` | `boolean` | Check for Codex updates on startup (set to false only when updates are centrally managed). | {
3636| `cli_auth_credentials_store` | `file | keyring | auto` | Control where the CLI stores cached credentials (file-based auth.json vs OS keychain). | key: "model_context_window",
3737| `compact_prompt` | `string` | Inline override for the history compaction prompt. | type: "number",
3838| `developer_instructions` | `string` | Additional developer instructions injected into the session (optional). | description: "Context window tokens available to the active model.",
3939| `disable_paste_burst` | `boolean` | Disable burst-paste detection in the TUI. | },
4040| `experimental_compact_prompt_file` | `string (path)` | Load the compaction prompt override from a file (experimental). | {
4141| `experimental_use_freeform_apply_patch` | `boolean` | Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform` or `codex --enable apply_patch_freeform`. | key: "model_auto_compact_token_limit",
4242| `experimental_use_unified_exec_tool` | `boolean` | Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`. | type: "number",
4343| `features.apply_patch_freeform` | `boolean` | Expose the freeform `apply_patch` tool (experimental). | description:
4444| `features.apps` | `boolean` | Enable ChatGPT Apps/connectors support (experimental). | "Token threshold that triggers automatic history compaction (unset uses model defaults).",
4545| `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). | },
4646| `features.child_agents_md` | `boolean` | Append AGENTS.md scope/precedence guidance even when no AGENTS.md is present (experimental). | {
4747| `features.collaboration_modes` | `boolean` | Enable collaboration modes such as plan mode (stable; on by default). | key: "model_catalog_json",
4848| `features.multi_agent` | `boolean` | Enable multi-agent collaboration tools (`spawn_agent`, `send_input`, `resume_agent`, `wait`, `close_agent`, and `spawn_agents_on_csv`) (experimental; off by default). | type: "string (path)",
4949| `features.personality` | `boolean` | Enable personality selection controls (stable; on by default). | description:
5050| `features.powershell_utf8` | `boolean` | Force PowerShell UTF-8 output (defaults to true). | "Optional path to a JSON model catalog loaded on startup. Profile-level `profiles.<name>.model_catalog_json` can override this per profile.",
5151| `features.remote_models` | `boolean` | Refresh remote model list before showing readiness (experimental). | },
5252| `features.request_rule` | `boolean` | Enable Smart approvals (`prefix_rule` suggestions on escalation requests; stable; on by default). | {
5353| `features.runtime_metrics` | `boolean` | Show runtime metrics summary in TUI turn separators (experimental). | key: "oss_provider",
5454| `features.search_tool` | `boolean` | Enable `search_tool_bm25` for Apps tool discovery before invoking app MCP tools (experimental). | type: "lmstudio | ollama",
5555| `features.shell_snapshot` | `boolean` | Snapshot shell environment to speed up repeated commands (beta). | description:
5656| `features.shell_tool` | `boolean` | Enable the default `shell` tool for running commands (stable; on by default). | "Default local provider used when running with `--oss` (defaults to prompting if unset).",
5757| `features.unified_exec` | `boolean` | Use the unified PTY-backed exec tool (beta). | },
5858| `features.use_linux_sandbox_bwrap` | `boolean` | Use the bubblewrap-based Linux sandbox pipeline (experimental; off by default). | {
5959| `features.web_search` | `boolean` | Deprecated legacy toggle; prefer the top-level `web_search` setting. | key: "approval_policy",
6060| `features.web_search_cached` | `boolean` | Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "cached"`. | type: "untrusted | on-request | never | { granular = { sandbox_approval = bool, rules = bool, mcp_elicitations = bool, request_permissions = bool, skill_approval = bool } }",
6161| `features.web_search_request` | `boolean` | Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "live"`. | description:
6262| `feedback.enabled` | `boolean` | Enable feedback submission via `/feedback` across Codex surfaces (default: true). | "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.",
6363| `file_opener` | `vscode | vscode-insiders | windsurf | cursor | none` | URI scheme used to open citations from Codex output (default: `vscode`). | },
6464| `forced_chatgpt_workspace_id` | `string (uuid)` | Limit ChatGPT logins to a specific workspace identifier. | {
6565| `forced_login_method` | `chatgpt | api` | Restrict Codex to a specific authentication method. | key: "approval_policy.granular.sandbox_approval",
6666| `hide_agent_reasoning` | `boolean` | Suppress reasoning events in both the TUI and `codex exec` output. | type: "boolean",
6767| `history.max_bytes` | `number` | If set, caps the history file size in bytes by dropping oldest entries. | description:
6868| `history.persistence` | `save-all | none` | Control whether Codex saves session transcripts to history.jsonl. | "When `true`, sandbox escalation approval prompts are allowed to surface.",
6969| `include_apply_patch_tool` | `boolean` | Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`. | },
7070| `instructions` | `string` | Reserved for future use; prefer `model_instructions_file` or `AGENTS.md`. | {
7171| `log_dir` | `string (path)` | Directory where Codex writes log files (for example `codex-tui.log`); defaults to `$CODEX_HOME/log`. | key: "approval_policy.granular.rules",
7272| `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. | type: "boolean",
7373| `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. | description:
7474| `mcp_oauth_credentials_store` | `auto | file | keyring` | Preferred store for MCP OAuth credentials. | "When `true`, approvals triggered by execpolicy `prompt` rules are allowed to surface.",
7575| `mcp_servers.<id>.args` | `array<string>` | Arguments passed to the MCP stdio server command. | },
7676| `mcp_servers.<id>.bearer_token_env_var` | `string` | Environment variable sourcing the bearer token for an MCP HTTP server. | {
7777| `mcp_servers.<id>.command` | `string` | Launcher command for an MCP stdio server. | key: "approval_policy.granular.mcp_elicitations",
7878| `mcp_servers.<id>.cwd` | `string` | Working directory for the MCP stdio server process. | type: "boolean",
7979| `mcp_servers.<id>.disabled_tools` | `array<string>` | Deny list applied after `enabled_tools` for the MCP server. | description:
8080| `mcp_servers.<id>.enabled` | `boolean` | Disable an MCP server without removing its configuration. | "When `true`, MCP elicitation prompts are allowed to surface instead of being auto-rejected.",
8181| `mcp_servers.<id>.enabled_tools` | `array<string>` | Allow list of tool names exposed by the MCP server. | },
8282| `mcp_servers.<id>.env` | `map<string,string>` | Environment variables forwarded to the MCP stdio server. | {
8383| `mcp_servers.<id>.env_http_headers` | `map<string,string>` | HTTP headers populated from environment variables for an MCP HTTP server. | key: "approval_policy.granular.request_permissions",
8484| `mcp_servers.<id>.env_vars` | `array<string>` | Additional environment variables to whitelist for an MCP stdio server. | type: "boolean",
8585| `mcp_servers.<id>.http_headers` | `map<string,string>` | Static HTTP headers included with each MCP HTTP request. | description:
8686| `mcp_servers.<id>.required` | `boolean` | When true, fail startup/resume if this enabled MCP server cannot initialize. | "When `true`, prompts from the `request_permissions` tool are allowed to surface.",
8787| `mcp_servers.<id>.startup_timeout_ms` | `number` | Alias for `startup_timeout_sec` in milliseconds. | },
8888| `mcp_servers.<id>.startup_timeout_sec` | `number` | Override the default 10s startup timeout for an MCP server. | {
8989| `mcp_servers.<id>.tool_timeout_sec` | `number` | Override the default 60s per-tool timeout for an MCP server. | key: "approval_policy.granular.skill_approval",
9090| `mcp_servers.<id>.url` | `string` | Endpoint for an MCP streamable HTTP server. | type: "boolean",
9191| `model` | `string` | Model to use (e.g., `gpt-5-codex`). | description:
9292| `model_auto_compact_token_limit` | `number` | Token threshold that triggers automatic history compaction (unset uses model defaults). | "When `true`, skill-script approval prompts are allowed to surface.",
9393| `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. | },
9494| `model_context_window` | `number` | Context window tokens available to the active model. | {
9595| `model_instructions_file` | `string (path)` | Replacement for built-in instructions instead of `AGENTS.md`. | key: "approvals_reviewer",
9696| `model_provider` | `string` | Provider id from `model_providers` (default: `openai`). | type: "user | auto_review",
9797| `model_providers.<id>.base_url` | `string` | API base URL for the model provider. | description:
9898| `model_providers.<id>.env_http_headers` | `map<string,string>` | HTTP headers populated from environment variables when present. | "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.",
9999| `model_providers.<id>.env_key` | `string` | Environment variable supplying the provider API key. | },
100100| `model_providers.<id>.env_key_instructions` | `string` | Optional setup guidance for the provider API key. | {
101101| `model_providers.<id>.experimental_bearer_token` | `string` | Direct bearer token for the provider (discouraged; use `env_key`). | key: "auto_review.policy",
102102| `model_providers.<id>.http_headers` | `map<string,string>` | Static HTTP headers added to provider requests. | type: "string",
103103| `model_providers.<id>.name` | `string` | Display name for a custom model provider. | description:
104104| `model_providers.<id>.query_params` | `map<string,string>` | Extra query parameters appended to provider requests. | "Local Markdown policy instructions for automatic review. Managed `guardian_policy_config` takes precedence. Blank values are ignored.",
105105| `model_providers.<id>.request_max_retries` | `number` | Retry count for HTTP requests to the provider (default: 4). | },
106106| `model_providers.<id>.requires_openai_auth` | `boolean` | The provider uses OpenAI authentication (defaults to false). | {
107107| `model_providers.<id>.stream_idle_timeout_ms` | `number` | Idle timeout for SSE streams in milliseconds (default: 300000). | key: "allow_login_shell",
108108| `model_providers.<id>.stream_max_retries` | `number` | Retry count for SSE streaming interruptions (default: 5). | type: "boolean",
109109| `model_providers.<id>.wire_api` | `chat | responses` | Protocol used by the provider (defaults to `chat` if omitted). | description:
110110| `model_reasoning_effort` | `minimal | low | medium | high | xhigh` | Adjust reasoning effort for supported models (Responses API only; `xhigh` is model-dependent). | "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.",
111111| `model_reasoning_summary` | `auto | concise | detailed | none` | Select reasoning summary detail or disable summaries entirely. | },
112112| `model_supports_reasoning_summaries` | `boolean` | Force Codex to send or not send reasoning metadata. | {
113113| `model_verbosity` | `low | medium | high` | Control GPT-5 Responses API verbosity (defaults to `medium`). | key: "sandbox_mode",
114114| `notice.hide_full_access_warning` | `boolean` | Track acknowledgement of the full access warning prompt. | type: "read-only | workspace-write | danger-full-access",
115115| `notice.hide_gpt-5.1-codex-max_migration_prompt` | `boolean` | Track acknowledgement of the gpt-5.1-codex-max migration prompt. | description:
116116| `notice.hide_gpt5_1_migration_prompt` | `boolean` | Track acknowledgement of the GPT-5.1 migration prompt. | "Sandbox policy for filesystem and network access during command execution.",
117117| `notice.hide_rate_limit_model_nudge` | `boolean` | Track opt-out of the rate limit model switch reminder. | },
118118| `notice.hide_world_writable_warning` | `boolean` | Track acknowledgement of the Windows world-writable directories warning. | {
119119| `notice.model_migrations` | `map<string,string>` | Track acknowledged model migrations as old->new mappings. | key: "sandbox_workspace_write.writable_roots",
120120| `notify` | `array<string>` | Command invoked for notifications; receives a JSON payload from Codex. | type: "array<string>",
121121| `oss_provider` | `lmstudio | ollama` | Default local provider used when running with `--oss` (defaults to prompting if unset). | description:
122122| `otel.environment` | `string` | Environment tag applied to emitted OpenTelemetry events (default: `dev`). | 'Additional writable roots when `sandbox_mode = "workspace-write"`.',
123123| `otel.exporter` | `none | otlp-http | otlp-grpc` | Select the OpenTelemetry exporter and provide any endpoint metadata. | },
124124| `otel.exporter.<id>.endpoint` | `string` | Exporter endpoint for OTEL logs. | {
125125| `otel.exporter.<id>.headers` | `map<string,string>` | Static headers included with OTEL exporter requests. | key: "sandbox_workspace_write.network_access",
126126| `otel.exporter.<id>.protocol` | `binary | json` | Protocol used by the OTLP/HTTP exporter. | type: "boolean",
127127| `otel.exporter.<id>.tls.ca-certificate` | `string` | CA certificate path for OTEL exporter TLS. | description:
128128| `otel.exporter.<id>.tls.client-certificate` | `string` | Client certificate path for OTEL exporter TLS. | "Allow outbound network access inside the workspace-write sandbox.",
129129| `otel.exporter.<id>.tls.client-private-key` | `string` | Client private key path for OTEL exporter TLS. | },
130130| `otel.log_user_prompt` | `boolean` | Opt in to exporting raw user prompts with OpenTelemetry logs. | {
131131| `otel.trace_exporter` | `none | otlp-http | otlp-grpc` | Select the OpenTelemetry trace exporter and provide any endpoint metadata. | key: "sandbox_workspace_write.exclude_tmpdir_env_var",
132132| `otel.trace_exporter.<id>.endpoint` | `string` | Trace exporter endpoint for OTEL logs. | type: "boolean",
133133| `otel.trace_exporter.<id>.headers` | `map<string,string>` | Static headers included with OTEL trace exporter requests. | description:
134134| `otel.trace_exporter.<id>.protocol` | `binary | json` | Protocol used by the OTLP/HTTP trace exporter. | "Exclude `$TMPDIR` from writable roots in workspace-write mode.",
135135| `otel.trace_exporter.<id>.tls.ca-certificate` | `string` | CA certificate path for OTEL trace exporter TLS. | },
136136| `otel.trace_exporter.<id>.tls.client-certificate` | `string` | Client certificate path for OTEL trace exporter TLS. | {
137137| `otel.trace_exporter.<id>.tls.client-private-key` | `string` | Client private key path for OTEL trace exporter TLS. | key: "sandbox_workspace_write.exclude_slash_tmp",
138138| `personality` | `none | friendly | pragmatic` | Default communication style for models that advertise `supportsPersonality`; can be overridden per thread/turn or via `/personality`. | type: "boolean",
139139| `profile` | `string` | Default profile applied at startup (equivalent to `--profile`). | description:
140140| `profiles.<name>.*` | `various` | Profile-scoped overrides for any of the supported configuration keys. | "Exclude `/tmp` from writable roots in workspace-write mode.",
141141| `profiles.<name>.experimental_use_freeform_apply_patch` | `boolean` | Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`. | },
142142| `profiles.<name>.experimental_use_unified_exec_tool` | `boolean` | Legacy name for enabling unified exec; prefer `[features].unified_exec`. | {
143143| `profiles.<name>.include_apply_patch_tool` | `boolean` | Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`. | key: "windows.sandbox",
144144| `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). | type: "unelevated | elevated",
145145| `profiles.<name>.oss_provider` | `lmstudio | ollama` | Profile-scoped OSS provider for `--oss` sessions. | description:
146146| `profiles.<name>.personality` | `none | friendly | pragmatic` | Profile-scoped communication style override for supported models. | "Windows-only native sandbox mode when running Codex natively on Windows.",
147147| `profiles.<name>.web_search` | `disabled | cached | live` | Profile-scoped web search mode override (default: `"cached"`). | },
148148| `project_doc_fallback_filenames` | `array<string>` | Additional filenames to try when `AGENTS.md` is missing. | {
149149| `project_doc_max_bytes` | `number` | Maximum bytes read from `AGENTS.md` when building project instructions. | key: "windows.sandbox_private_desktop",
150150| `project_root_markers` | `array<string>` | List of project root marker filenames; used when searching parent directories for the project root. | type: "boolean",
151151| `projects.<path>.trust_level` | `string` | Mark a project or worktree as trusted or untrusted (`"trusted"` | `"untrusted"`). Untrusted projects skip project-scoped `.codex/` layers. | description:
152152| `review_model` | `string` | Optional model override used by `/review` (defaults to the current session model). | "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.",
153153| `sandbox_mode` | `read-only | workspace-write | danger-full-access` | Sandbox policy for filesystem and network access during command execution. | },
154154| `sandbox_workspace_write.exclude_slash_tmp` | `boolean` | Exclude `/tmp` from writable roots in workspace-write mode. | {
155155| `sandbox_workspace_write.exclude_tmpdir_env_var` | `boolean` | Exclude `$TMPDIR` from writable roots in workspace-write mode. | key: "notify",
156156| `sandbox_workspace_write.network_access` | `boolean` | Allow outbound network access inside the workspace-write sandbox. | type: "array<string>",
157157| `sandbox_workspace_write.writable_roots` | `array<string>` | Additional writable roots when `sandbox_mode = "workspace-write"`. | description:
158158| `shell_environment_policy.exclude` | `array<string>` | Glob patterns for removing environment variables after the defaults. | "Command invoked for notifications; receives a JSON payload from Codex.",
159159| `shell_environment_policy.experimental_use_profile` | `boolean` | Use the user shell profile when spawning subprocesses. | },
160160| `shell_environment_policy.ignore_default_excludes` | `boolean` | Keep variables containing KEY/SECRET/TOKEN before other filters run. | {
161161| `shell_environment_policy.include_only` | `array<string>` | Whitelist of patterns; when set only matching variables are kept. | key: "check_for_update_on_startup",
162162| `shell_environment_policy.inherit` | `all | core | none` | Baseline environment inheritance when spawning subprocesses. | type: "boolean",
163163| `shell_environment_policy.set` | `map<string,string>` | Explicit environment overrides injected into every subprocess. | description:
164164| `show_raw_agent_reasoning` | `boolean` | Surface raw reasoning content when the active model emits it. | "Check for Codex updates on startup (set to false only when updates are centrally managed).",
165165| `skills.config` | `array<object>` | Per-skill enablement overrides stored in config.toml. | },
166166| `skills.config.<index>.enabled` | `boolean` | Enable or disable the referenced skill. | {
167167| `skills.config.<index>.path` | `string (path)` | Path to a skill folder containing `SKILL.md`. | key: "feedback.enabled",
168168| `sqlite_home` | `string (path)` | Directory where Codex stores the SQLite-backed state DB used by agent jobs and other resumable runtime state. | type: "boolean",
169169| `suppress_unstable_features_warning` | `boolean` | Suppress the warning that appears when under-development feature flags are enabled. | description:
170170| `tool_output_token_limit` | `number` | Token budget for storing individual tool/function outputs in history. | "Enable feedback submission via `/feedback` across Codex surfaces (default: true).",
171171| `tools.web_search` | `boolean` | Deprecated legacy toggle for web search; prefer the top-level `web_search` setting. | },
172172| `tui` | `table` | TUI-specific options such as enabling inline desktop notifications. | {
173173| `tui.alternate_screen` | `auto | always | never` | Control alternate screen usage for the TUI (default: auto; auto skips it in Zellij to preserve scrollback). | key: "analytics.enabled",
174174| `tui.animations` | `boolean` | Enable terminal animations (welcome screen, shimmer, spinner) (default: true). | type: "boolean",
175175| `tui.notification_method` | `auto | osc9 | bel` | Notification method for unfocused terminal notifications (default: auto). | description:
176176| `tui.notifications` | `boolean | array<string>` | Enable TUI notifications; optionally restrict to specific event types. | "Enable or disable analytics for this machine/profile. When unset, the client default applies.",
177177| `tui.show_tooltips` | `boolean` | Show onboarding tooltips in the TUI welcome screen (default: true). | },
178178| `tui.status_line` | `array<string> | null` | Ordered list of TUI footer status-line item identifiers. `null` disables the status line. | {
179179| `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. | key: "instructions",
180180| `windows_wsl_setup_acknowledged` | `boolean` | Track Windows onboarding acknowledgement (Windows only). | type: "string",
181181| `windows.sandbox` | `unelevated | elevated` | Windows-only native sandbox mode when running Codex natively on Windows. | description:
182182 "Reserved for future use; prefer `model_instructions_file` or `AGENTS.md`.",
183183Key },
184184 {
185185`agents.<name>.config_file` key: "developer_instructions",
186186 type: "string",
187187Type / Values description:
188188 "Additional developer instructions injected into the session (optional).",
189189`string (path)` },
190190 {
191191Details key: "log_dir",
192192 type: "string (path)",
193193Path to a TOML config layer for that role; relative paths resolve from the config file that declares the role. description:
194194 "Directory where Codex writes log files (for example `codex-tui.log`); defaults to `$CODEX_HOME/log`.",
195195Key },
196196 {
197197`agents.<name>.description` key: "sqlite_home",
198198 type: "string (path)",
199199Type / Values description:
200200 "Directory where Codex stores the SQLite-backed state DB used by agent jobs and other resumable runtime state.",
201201`string` },
202202 {
203203Details key: "compact_prompt",
204204 type: "string",
205205Role guidance shown to Codex when choosing and spawning that agent type. description: "Inline override for the history compaction prompt.",
206206 },
207207Key {
208208 key: "commit_attribution",
209209`agents.job_max_runtime_seconds` type: "string",
210210 description:
211211Type / Values "Override the commit co-author trailer text. Set an empty string to disable automatic attribution.",
212212 },
213213`number` {
214214 key: "model_instructions_file",
215215Details type: "string (path)",
216216 description:
217217Default per-worker timeout for `spawn_agents_on_csv` jobs. When unset, the tool falls back to 1800 seconds per worker. "Replacement for built-in instructions instead of `AGENTS.md`.",
218218 },
219219Key {
220220 key: "personality",
221221`agents.max_depth` type: "none | friendly | pragmatic",
222222 description:
223223Type / Values "Default communication style for models that advertise `supportsPersonality`; can be overridden per thread/turn or via `/personality`.",
224224 },
225225`number` {
226226 key: "service_tier",
227227Details type: "flex | fast",
228228 description: "Preferred service tier for new turns.",
229229Maximum nesting depth allowed for spawned agent threads (root sessions start at depth 0; default: 1). },
230230 {
231231Key key: "experimental_compact_prompt_file",
232232 type: "string (path)",
233233`agents.max_threads` description:
234234 "Load the compaction prompt override from a file (experimental).",
235235Type / Values },
236236 {
237237`number` key: "skills.config",
238238 type: "array<object>",
239239Details description: "Per-skill enablement overrides stored in config.toml.",
240240 },
241241Maximum number of agent threads that can be open concurrently. {
242242 key: "skills.config.<index>.path",
243243Key type: "string (path)",
244244 description: "Path to a skill folder containing `SKILL.md`.",
245245`allow_login_shell` },
246246 {
247247Type / Values key: "skills.config.<index>.enabled",
248248 type: "boolean",
249249`boolean` description: "Enable or disable the referenced skill.",
250250 },
251251Details {
252252 key: "apps.<id>.enabled",
253253Allow 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. type: "boolean",
254254 description:
255255Key "Enable or disable a specific app/connector by id (default: true).",
256256 },
257257`approval_policy` {
258258 key: "apps._default.enabled",
259259Type / Values type: "boolean",
260260 description:
261261`untrusted | on-request | never | { reject = { sandbox_approval = bool, rules = bool, mcp_elicitations = bool } }` "Default app enabled state for all apps unless overridden per app.",
262262 },
263263Details {
264264 key: "apps._default.destructive_enabled",
265265Controls 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. type: "boolean",
266266 description:
267267Key "Default allow/deny for app tools with `destructive_hint = true`.",
268268 },
269269`approval_policy.reject.mcp_elicitations` {
270270 key: "apps._default.open_world_enabled",
271271Type / Values type: "boolean",
272272 description:
273273`boolean` "Default allow/deny for app tools with `open_world_hint = true`.",
274274 },
275275Details {
276276 key: "apps.<id>.destructive_enabled",
277277When `true`, MCP elicitation prompts are auto-rejected instead of shown to the user. type: "boolean",
278278 description:
279279Key "Allow or block tools in this app that advertise `destructive_hint = true`.",
280280 },
281281`approval_policy.reject.rules` {
282282 key: "apps.<id>.open_world_enabled",
283283Type / Values type: "boolean",
284284 description:
285285`boolean` "Allow or block tools in this app that advertise `open_world_hint = true`.",
286286 },
287287Details {
288288 key: "apps.<id>.default_tools_enabled",
289289When `true`, approvals triggered by execpolicy `prompt` rules are auto-rejected. type: "boolean",
290290 description:
291291Key "Default enabled state for tools in this app unless a per-tool override exists.",
292292 },
293293`approval_policy.reject.sandbox_approval` {
294294 key: "apps.<id>.default_tools_approval_mode",
295295Type / Values type: "auto | prompt | approve",
296296 description:
297297`boolean` "Default approval behavior for tools in this app unless a per-tool override exists.",
298298 },
299299Details {
300300 key: "apps.<id>.tools.<tool>.enabled",
301301When `true`, sandbox escalation approval prompts are auto-rejected. type: "boolean",
302302 description:
303303Key "Per-tool enabled override for an app tool (for example `repos/list`).",
304304 },
305305`apps._default.destructive_enabled` {
306306 key: "apps.<id>.tools.<tool>.approval_mode",
307307Type / Values type: "auto | prompt | approve",
308308 description: "Per-tool approval behavior override for a single app tool.",
309309`boolean` },
310310 {
311311Details key: "tool_suggest.discoverables",
312312 type: "array<table>",
313313Default allow/deny for app tools with `destructive_hint = true`. description:
314314 'Allow tool suggestions for additional discoverable connectors or plugins. Each entry uses `type = "connector"` or `"plugin"` and an `id`.',
315315Key },
316316 {
317317`apps._default.enabled` key: "tool_suggest.disabled_tools",
318318 type: "array<table>",
319319Type / Values description:
320320 'Disable suggestions for specific discoverable connectors or plugins. Each entry uses `type = "connector"` or `"plugin"` and an `id`.',
321321`boolean` },
322322 {
323323Details key: "features.apps",
324324 type: "boolean",
325325Default app enabled state for all apps unless overridden per app. description: "Enable ChatGPT Apps/connectors support (experimental).",
326326 },
327327Key {
328328 key: "features.codex_hooks",
329329`apps._default.open_world_enabled` type: "boolean",
330330 description:
331331Type / Values "Enable lifecycle hooks loaded from `hooks.json` or inline `[hooks]` config.",
332332 },
333333`boolean` {
334334 key: "hooks",
335335Details type: "table",
336336 description:
337337Default allow/deny for app tools with `open_world_hint = true`. "Lifecycle hooks configured inline in `config.toml`. Uses the same event schema as `hooks.json`; see the Hooks guide for examples and supported events.",
338338 },
339339Key {
340340 key: "features.memories",
341341`apps.<id>.default_tools_approval_mode` type: "boolean",
342342 description: "Enable [Memories](https://developers.openai.com/codex/memories) (off by default).",
343343Type / Values },
344344 {
345345`auto | prompt | approve` key: "mcp_servers.<id>.command",
346346 type: "string",
347347Details description: "Launcher command for an MCP stdio server.",
348348 },
349349Default approval behavior for tools in this app unless a per-tool override exists. {
350350 key: "mcp_servers.<id>.args",
351351Key type: "array<string>",
352352 description: "Arguments passed to the MCP stdio server command.",
353353`apps.<id>.default_tools_enabled` },
354354 {
355355Type / Values key: "mcp_servers.<id>.env",
356356 type: "map<string,string>",
357357`boolean` description: "Environment variables forwarded to the MCP stdio server.",
358358 },
359359Details {
360360 key: "mcp_servers.<id>.env_vars",
361361Default enabled state for tools in this app unless a per-tool override exists. type: 'array<string | { name = string, source = "local" | "remote" }>',
362362 description:
363363Key '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.',
364364 },
365365`apps.<id>.destructive_enabled` {
366366 key: "mcp_servers.<id>.cwd",
367367Type / Values type: "string",
368368 description: "Working directory for the MCP stdio server process.",
369369`boolean` },
370370 {
371371Details key: "mcp_servers.<id>.url",
372372 type: "string",
373373Allow or block tools in this app that advertise `destructive_hint = true`. description: "Endpoint for an MCP streamable HTTP server.",
374374 },
375375Key {
376376 key: "mcp_servers.<id>.bearer_token_env_var",
377377`apps.<id>.enabled` type: "string",
378378 description:
379379Type / Values "Environment variable sourcing the bearer token for an MCP HTTP server.",
380380 },
381381`boolean` {
382382 key: "mcp_servers.<id>.http_headers",
383383Details type: "map<string,string>",
384384 description: "Static HTTP headers included with each MCP HTTP request.",
385385Enable or disable a specific app/connector by id (default: true). },
386386 {
387387Key key: "mcp_servers.<id>.env_http_headers",
388388 type: "map<string,string>",
389389`apps.<id>.open_world_enabled` description:
390390 "HTTP headers populated from environment variables for an MCP HTTP server.",
391391Type / Values },
392392 {
393393`boolean` key: "mcp_servers.<id>.enabled",
394394 type: "boolean",
395395Details description: "Disable an MCP server without removing its configuration.",
396396 },
397397Allow or block tools in this app that advertise `open_world_hint = true`. {
398398 key: "mcp_servers.<id>.required",
399399Key type: "boolean",
400400 description:
401401`apps.<id>.tools.<tool>.approval_mode` "When true, fail startup/resume if this enabled MCP server cannot initialize.",
402402 },
403403Type / Values {
404404 key: "mcp_servers.<id>.startup_timeout_sec",
405405`auto | prompt | approve` type: "number",
406406 description:
407407Details "Override the default 10s startup timeout for an MCP server.",
408408 },
409409Per-tool approval behavior override for a single app tool. {
410410 key: "mcp_servers.<id>.startup_timeout_ms",
411411Key type: "number",
412412 description: "Alias for `startup_timeout_sec` in milliseconds.",
413413`apps.<id>.tools.<tool>.enabled` },
414414 {
415415Type / Values key: "mcp_servers.<id>.tool_timeout_sec",
416416 type: "number",
417417`boolean` description:
418418 "Override the default 60s per-tool timeout for an MCP server.",
419419Details },
420420 {
421421Per-tool enabled override for an app tool (for example `repos/list`). key: "mcp_servers.<id>.enabled_tools",
422422 type: "array<string>",
423423Key description: "Allow list of tool names exposed by the MCP server.",
424424 },
425425`background_terminal_max_timeout` {
426426 key: "mcp_servers.<id>.disabled_tools",
427427Type / Values type: "array<string>",
428428 description:
429429`number` "Deny list applied after `enabled_tools` for the MCP server.",
430430 },
431431Details {
432432 key: "mcp_servers.<id>.scopes",
433433Maximum poll window in milliseconds for empty `write_stdin` polls (background terminal polling). Default: `300000` (5 minutes). Replaces the older `background_terminal_timeout` key. type: "array<string>",
434434 description:
435435Key "OAuth scopes to request when authenticating to that MCP server.",
436436 },
437437`chatgpt_base_url` {
438438 key: "mcp_servers.<id>.oauth_resource",
439439Type / Values type: "string",
440440 description:
441441`string` "Optional RFC 8707 OAuth resource parameter to include during MCP login.",
442442 },
443443Details {
444444 key: "mcp_servers.<id>.experimental_environment",
445445Override the base URL used during the ChatGPT login flow. type: "local | remote",
446446 description:
447447Key "Experimental placement for an MCP server. `remote` starts stdio servers through a remote executor environment; streamable HTTP remote placement is not implemented.",
448448 },
449449`check_for_update_on_startup` {
450450 key: "agents.max_threads",
451451Type / Values type: "number",
452452 description:
453453`boolean` "Maximum number of agent threads that can be open concurrently. Defaults to `6` when unset.",
454454 },
455455Details {
456456 key: "agents.max_depth",
457457Check for Codex updates on startup (set to false only when updates are centrally managed). type: "number",
458458 description:
459459Key "Maximum nesting depth allowed for spawned agent threads (root sessions start at depth 0; default: 1).",
460460 },
461461`cli_auth_credentials_store` {
462462 key: "agents.job_max_runtime_seconds",
463463Type / Values type: "number",
464464 description:
465465`file | keyring | auto` "Default per-worker timeout for `spawn_agents_on_csv` jobs. When unset, the tool falls back to 1800 seconds per worker.",
466466 },
467467Details {
468468 key: "agents.<name>.description",
469469Control where the CLI stores cached credentials (file-based auth.json vs OS keychain). type: "string",
470470 description:
471471Key "Role guidance shown to Codex when choosing and spawning that agent type.",
472472 },
473473`compact_prompt` {
474474 key: "agents.<name>.config_file",
475475Type / Values type: "string (path)",
476476 description:
477477`string` "Path to a TOML config layer for that role; relative paths resolve from the config file that declares the role.",
478478 },
479479Details {
480480 key: "agents.<name>.nickname_candidates",
481481Inline override for the history compaction prompt. type: "array<string>",
482482 description:
483483Key "Optional pool of display nicknames for spawned agents in that role.",
484484 },
485485`developer_instructions` {
486486 key: "memories.generate_memories",
487487Type / Values type: "boolean",
488488 description:
489489`string` "When `false`, newly created threads are not stored as memory-generation inputs. Defaults to `true`.",
490490 },
491491Details {
492492 key: "memories.use_memories",
493493Additional developer instructions injected into the session (optional). type: "boolean",
494494 description:
495495Key "When `false`, Codex skips injecting existing memories into future sessions. Defaults to `true`.",
496496 },
497497`disable_paste_burst` {
498498 key: "memories.disable_on_external_context",
499499Type / Values type: "boolean",
500500 description:
501501`boolean` "When `true`, threads that use external context such as MCP tool calls, web search, or tool search are kept out of memory generation. Defaults to `false`. Legacy alias: `memories.no_memories_if_mcp_or_web_search`.",
502502 },
503503Details {
504504 key: "memories.max_raw_memories_for_consolidation",
505505Disable burst-paste detection in the TUI. type: "number",
506506 description:
507507Key "Maximum recent raw memories retained for global consolidation. Defaults to `256` and is capped at `4096`.",
508508 },
509509`experimental_compact_prompt_file` {
510510 key: "memories.max_unused_days",
511511Type / Values type: "number",
512512 description:
513513`string (path)` "Maximum days since a memory was last used before it becomes ineligible for consolidation. Defaults to `30` and is clamped to `0`-`365`.",
514514 },
515515Details {
516516 key: "memories.max_rollout_age_days",
517517Load the compaction prompt override from a file (experimental). type: "number",
518518 description:
519519Key "Maximum age of threads considered for memory generation. Defaults to `30` and is clamped to `0`-`90`.",
520520 },
521521`experimental_use_freeform_apply_patch` {
522522 key: "memories.max_rollouts_per_startup",
523523Type / Values type: "number",
524524 description:
525525`boolean` "Maximum rollout candidates processed per startup pass. Defaults to `16` and is capped at `128`.",
526526 },
527527Details {
528528 key: "memories.min_rollout_idle_hours",
529529Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform` or `codex --enable apply_patch_freeform`. type: "number",
530530 description:
531531Key "Minimum idle time before a thread is considered for memory generation. Defaults to `6` and is clamped to `1`-`48`.",
532532 },
533533`experimental_use_unified_exec_tool` {
534534 key: "memories.min_rate_limit_remaining_percent",
535535Type / Values type: "number",
536536 description:
537537`boolean` "Minimum remaining percentage required in Codex rate-limit windows before memory generation starts. Defaults to `25` and is clamped to `0`-`100`.",
538538 },
539539Details {
540540 key: "memories.extract_model",
541541Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`. type: "string",
542542 description: "Optional model override for per-thread memory extraction.",
543543Key },
544544 {
545545`features.apply_patch_freeform` key: "memories.consolidation_model",
546546 type: "string",
547547Type / Values description: "Optional model override for global memory consolidation.",
548548 },
549549`boolean` {
550550 key: "features.unified_exec",
551551Details type: "boolean",
552552 description:
553553Expose the freeform `apply_patch` tool (experimental). "Use the unified PTY-backed exec tool (stable; enabled by default except on Windows).",
554554 },
555555Key {
556556 key: "features.shell_snapshot",
557557`features.apps` type: "boolean",
558558 description:
559559Type / Values "Snapshot shell environment to speed up repeated commands (stable; on by default).",
560560 },
561561`boolean` {
562562 key: "features.undo",
563563Details type: "boolean",
564564 description: "Enable undo support (stable; off by default).",
565565Enable ChatGPT Apps/connectors support (experimental). },
566566 {
567567Key key: "features.multi_agent",
568568 type: "boolean",
569569`features.apps_mcp_gateway` description:
570570 "Enable multi-agent collaboration tools (`spawn_agent`, `send_input`, `resume_agent`, `wait_agent`, and `close_agent`) (stable; on by default).",
571571Type / Values },
572572 {
573573`boolean` key: "features.personality",
574574 type: "boolean",
575575Details description:
576576 "Enable personality selection controls (stable; on by default).",
577577Route Apps MCP calls through the OpenAI connectors MCP gateway (`https://api.openai.com/v1/connectors/mcp/`) instead of legacy routing (experimental). },
578578 {
579579Key key: "features.web_search",
580580 type: "boolean",
581581`features.child_agents_md` description:
582582 "Deprecated legacy toggle; prefer the top-level `web_search` setting.",
583583Type / Values },
584584 {
585585`boolean` key: "features.web_search_cached",
586586 type: "boolean",
587587Details description:
588588 'Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "cached"`.',
589589Append AGENTS.md scope/precedence guidance even when no AGENTS.md is present (experimental). },
590590 {
591591Key key: "features.web_search_request",
592592 type: "boolean",
593593`features.collaboration_modes` description:
594594 'Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "live"`.',
595595Type / Values },
596596 {
597597`boolean` key: "features.shell_tool",
598598 type: "boolean",
599599Details description:
600600 "Enable the default `shell` tool for running commands (stable; on by default).",
601601Enable collaboration modes such as plan mode (stable; on by default). },
602602 {
603603Key key: "features.enable_request_compression",
604604 type: "boolean",
605605`features.multi_agent` description:
606606 "Compress streaming request bodies with zstd when supported (stable; on by default).",
607607Type / Values },
608608 {
609609`boolean` key: "features.skill_mcp_dependency_install",
610610 type: "boolean",
611611Details description:
612612 "Allow prompting and installing missing MCP dependencies for skills (stable; on by default).",
613613Enable multi-agent collaboration tools (`spawn_agent`, `send_input`, `resume_agent`, `wait`, `close_agent`, and `spawn_agents_on_csv`) (experimental; off by default). },
614614 {
615615Key key: "features.fast_mode",
616616 type: "boolean",
617617`features.personality` description:
618618 'Enable Fast mode selection and the `service_tier = "fast"` path (stable; on by default).',
619619Type / Values },
620620 {
621621`boolean` key: "features.prevent_idle_sleep",
622622 type: "boolean",
623623Details description:
624624 "Prevent the machine from sleeping while a turn is actively running (experimental; off by default).",
625625Enable personality selection controls (stable; on by default). },
626626 {
627627Key key: "suppress_unstable_features_warning",
628628 type: "boolean",
629629`features.powershell_utf8` description:
630630 "Suppress the warning that appears when under-development feature flags are enabled.",
631631Type / Values },
632632 {
633633`boolean` key: "model_providers.<id>",
634634 type: "table",
635635Details description:
636636 "Custom provider definition. Built-in provider IDs (`openai`, `ollama`, and `lmstudio`) are reserved and cannot be overridden.",
637637Force PowerShell UTF-8 output (defaults to true). },
638638 {
639639Key key: "model_providers.<id>.name",
640640 type: "string",
641641`features.remote_models` description: "Display name for a custom model provider.",
642642 },
643643Type / Values {
644644 key: "model_providers.<id>.base_url",
645645`boolean` type: "string",
646646 description: "API base URL for the model provider.",
647647Details },
648648 {
649649Refresh remote model list before showing readiness (experimental). key: "model_providers.<id>.env_key",
650650 type: "string",
651651Key description: "Environment variable supplying the provider API key.",
652652 },
653653`features.request_rule` {
654654 key: "model_providers.<id>.env_key_instructions",
655655Type / Values type: "string",
656656 description: "Optional setup guidance for the provider API key.",
657657`boolean` },
658658 {
659659Details key: "model_providers.<id>.experimental_bearer_token",
660660 type: "string",
661661Enable Smart approvals (`prefix_rule` suggestions on escalation requests; stable; on by default). description:
662662 "Direct bearer token for the provider (discouraged; use `env_key`).",
663663Key },
664664 {
665665`features.runtime_metrics` key: "model_providers.<id>.requires_openai_auth",
666666 type: "boolean",
667667Type / Values description:
668668 "The provider uses OpenAI authentication (defaults to false).",
669669`boolean` },
670670 {
671671Details key: "model_providers.<id>.wire_api",
672672 type: "responses",
673673Show runtime metrics summary in TUI turn separators (experimental). description:
674674 "Protocol used by the provider. `responses` is the only supported value, and it is the default when omitted.",
675675Key },
676676 {
677677`features.search_tool` key: "model_providers.<id>.query_params",
678678 type: "map<string,string>",
679679Type / Values description: "Extra query parameters appended to provider requests.",
680680 },
681681`boolean` {
682682 key: "model_providers.<id>.http_headers",
683683Details type: "map<string,string>",
684684 description: "Static HTTP headers added to provider requests.",
685685Enable `search_tool_bm25` for Apps tool discovery before invoking app MCP tools (experimental). },
686686 {
687687Key key: "model_providers.<id>.env_http_headers",
688688 type: "map<string,string>",
689689`features.shell_snapshot` description:
690690 "HTTP headers populated from environment variables when present.",
691691Type / Values },
692692 {
693693`boolean` key: "model_providers.<id>.request_max_retries",
694694 type: "number",
695695Details description:
696696 "Retry count for HTTP requests to the provider (default: 4).",
697697Snapshot shell environment to speed up repeated commands (beta). },
698698 {
699699Key key: "model_providers.<id>.stream_max_retries",
700700 type: "number",
701701`features.shell_tool` description: "Retry count for SSE streaming interruptions (default: 5).",
702702 },
703703Type / Values {
704704 key: "model_providers.<id>.stream_idle_timeout_ms",
705705`boolean` type: "number",
706706 description:
707707Details "Idle timeout for SSE streams in milliseconds (default: 300000).",
708708 },
709709Enable the default `shell` tool for running commands (stable; on by default). {
710710 key: "model_providers.<id>.supports_websockets",
711711Key type: "boolean",
712712 description:
713713`features.unified_exec` "Whether that provider supports the Responses API WebSocket transport.",
714714 },
715715Type / Values {
716716 key: "model_providers.<id>.auth",
717717`boolean` type: "table",
718718 description:
719719Details "Command-backed bearer token configuration for a custom provider. Do not combine with `env_key`, `experimental_bearer_token`, or `requires_openai_auth`.",
720720 },
721721Use the unified PTY-backed exec tool (beta). {
722722 key: "model_providers.<id>.auth.command",
723723Key type: "string",
724724 description:
725725`features.use_linux_sandbox_bwrap` "Command to run when Codex needs a bearer token. The command must print the token to stdout.",
726726 },
727727Type / Values {
728728 key: "model_providers.<id>.auth.args",
729729`boolean` type: "array<string>",
730730 description: "Arguments passed to the token command.",
731731Details },
732732 {
733733Use the bubblewrap-based Linux sandbox pipeline (experimental; off by default). key: "model_providers.<id>.auth.timeout_ms",
734734 type: "number",
735735Key description:
736736 "Maximum token command runtime in milliseconds (default: 5000).",
737737`features.web_search` },
738738 {
739739Type / Values key: "model_providers.<id>.auth.refresh_interval_ms",
740740 type: "number",
741741`boolean` description:
742742 "How often Codex proactively refreshes the token in milliseconds (default: 300000). Set to `0` to refresh only after an authentication retry.",
743743Details },
744744 {
745745Deprecated legacy toggle; prefer the top-level `web_search` setting. key: "model_providers.<id>.auth.cwd",
746746 type: "string (path)",
747747Key description: "Working directory for the token command.",
748748 },
749749`features.web_search_cached` {
750750 key: "model_providers.amazon-bedrock.aws.profile",
751751Type / Values type: "string",
752752 description:
753753`boolean` "AWS profile name used by the built-in `amazon-bedrock` provider.",
754754 },
755755Details {
756756 key: "model_providers.amazon-bedrock.aws.region",
757757Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "cached"`. type: "string",
758758 description: "AWS region used by the built-in `amazon-bedrock` provider.",
759759Key },
760760 {
761761`features.web_search_request` key: "model_reasoning_effort",
762762 type: "minimal | low | medium | high | xhigh",
763763Type / Values description:
764764 "Adjust reasoning effort for supported models (Responses API only; `xhigh` is model-dependent).",
765765`boolean` },
766766 {
767767Details key: "plan_mode_reasoning_effort",
768768 type: "none | minimal | low | medium | high | xhigh",
769769Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "live"`. description:
770770 "Plan-mode-specific reasoning override. When unset, Plan mode uses its built-in preset default.",
771771Key },
772772 {
773773`feedback.enabled` key: "model_reasoning_summary",
774774 type: "auto | concise | detailed | none",
775775Type / Values description:
776776 "Select reasoning summary detail or disable summaries entirely.",
777777`boolean` },
778778 {
779779Details key: "model_verbosity",
780780 type: "low | medium | high",
781781Enable feedback submission via `/feedback` across Codex surfaces (default: true). description:
782782 "Optional GPT-5 Responses API verbosity override; when unset, the selected model/preset default is used.",
783783Key },
784784 {
785785`file_opener` key: "model_supports_reasoning_summaries",
786786 type: "boolean",
787787Type / Values description: "Force Codex to send or not send reasoning metadata.",
788788 },
789789`vscode | vscode-insiders | windsurf | cursor | none` {
790790 key: "shell_environment_policy.inherit",
791791Details type: "all | core | none",
792792 description:
793793URI scheme used to open citations from Codex output (default: `vscode`). "Baseline environment inheritance when spawning subprocesses.",
794794 },
795795Key {
796796 key: "shell_environment_policy.ignore_default_excludes",
797797`forced_chatgpt_workspace_id` type: "boolean",
798798 description:
799799Type / Values "Keep variables containing KEY/SECRET/TOKEN before other filters run.",
800800 },
801801`string (uuid)` {
802802 key: "shell_environment_policy.exclude",
803803Details type: "array<string>",
804804 description:
805805Limit ChatGPT logins to a specific workspace identifier. "Glob patterns for removing environment variables after the defaults.",
806806 },
807807Key {
808808 key: "shell_environment_policy.include_only",
809809`forced_login_method` type: "array<string>",
810810 description:
811811Type / Values "Whitelist of patterns; when set only matching variables are kept.",
812812 },
813813`chatgpt | api` {
814814 key: "shell_environment_policy.set",
815815Details type: "map<string,string>",
816816 description:
817817Restrict Codex to a specific authentication method. "Explicit environment overrides injected into every subprocess.",
818818 },
819819Key {
820820 key: "shell_environment_policy.experimental_use_profile",
821821`hide_agent_reasoning` type: "boolean",
822822 description: "Use the user shell profile when spawning subprocesses.",
823823Type / Values },
824824 {
825825`boolean` key: "project_root_markers",
826826 type: "array<string>",
827827Details description:
828828 "List of project root marker filenames; used when searching parent directories for the project root.",
829829Suppress reasoning events in both the TUI and `codex exec` output. },
830830 {
831831Key key: "project_doc_max_bytes",
832832 type: "number",
833833`history.max_bytes` description:
834834 "Maximum bytes read from `AGENTS.md` when building project instructions.",
835835Type / Values },
836836 {
837837`number` key: "project_doc_fallback_filenames",
838838 type: "array<string>",
839839Details description: "Additional filenames to try when `AGENTS.md` is missing.",
840840 },
841841If set, caps the history file size in bytes by dropping oldest entries. {
842842 key: "profile",
843843Key type: "string",
844844 description:
845845`history.persistence` "Default profile applied at startup (equivalent to `--profile`).",
846846 },
847847Type / Values {
848848 key: "profiles.<name>.*",
849849`save-all | none` type: "various",
850850 description:
851851Details "Profile-scoped overrides for any of the supported configuration keys.",
852852 },
853853Control whether Codex saves session transcripts to history.jsonl. {
854854 key: "profiles.<name>.service_tier",
855855Key type: "flex | fast",
856856 description: "Profile-scoped service tier preference for new turns.",
857857`include_apply_patch_tool` },
858858 {
859859Type / Values key: "profiles.<name>.plan_mode_reasoning_effort",
860860 type: "none | minimal | low | medium | high | xhigh",
861861`boolean` description: "Profile-scoped Plan-mode reasoning override.",
862862 },
863863Details {
864864 key: "profiles.<name>.web_search",
865865Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`. type: "disabled | cached | live",
866866 description:
867867Key 'Profile-scoped web search mode override (default: `"cached"`).',
868868 },
869869`instructions` {
870870 key: "profiles.<name>.personality",
871871Type / Values type: "none | friendly | pragmatic",
872872 description:
873873`string` "Profile-scoped communication style override for supported models.",
874874 },
875875Details {
876876 key: "profiles.<name>.model_catalog_json",
877877Reserved for future use; prefer `model_instructions_file` or `AGENTS.md`. type: "string (path)",
878878 description:
879879Key "Profile-scoped model catalog JSON path override (applied on startup only; overrides the top-level `model_catalog_json` for that profile).",
880880 },
881881`log_dir` {
882882 key: "profiles.<name>.model_instructions_file",
883883Type / Values type: "string (path)",
884884 description:
885885`string (path)` "Profile-scoped replacement for the built-in instruction file.",
886886 },
887887Details {
888888 key: "profiles.<name>.experimental_use_unified_exec_tool",
889889Directory where Codex writes log files (for example `codex-tui.log`); defaults to `$CODEX_HOME/log`. type: "boolean",
890890 description:
891891Key "Legacy name for enabling unified exec; prefer `[features].unified_exec`.",
892892 },
893893`mcp_oauth_callback_port` {
894894 key: "profiles.<name>.oss_provider",
895895Type / Values type: "lmstudio | ollama",
896896 description: "Profile-scoped OSS provider for `--oss` sessions.",
897897`integer` },
898898 {
899899Details key: "profiles.<name>.tools_view_image",
900900 type: "boolean",
901901Optional 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. description: "Enable or disable the `view_image` tool in that profile.",
902902 },
903903Key {
904904 key: "profiles.<name>.analytics.enabled",
905905`mcp_oauth_callback_url` type: "boolean",
906906 description: "Profile-scoped analytics enablement override.",
907907Type / Values },
908908 {
909909`string` key: "profiles.<name>.windows.sandbox",
910910 type: "unelevated | elevated",
911911Details description: "Profile-scoped Windows sandbox mode override.",
912912 },
913913Optional redirect URI override for MCP OAuth login (for example, a devbox ingress URL). `mcp_oauth_callback_port` still controls the callback listener port. {
914914 key: "history.persistence",
915915Key type: "save-all | none",
916916 description:
917917`mcp_oauth_credentials_store` "Control whether Codex saves session transcripts to history.jsonl.",
918918 },
919919Type / Values {
920920 key: "tool_output_token_limit",
921921`auto | file | keyring` type: "number",
922922 description:
923923Details "Token budget for storing individual tool/function outputs in history.",
924924 },
925925Preferred store for MCP OAuth credentials. {
926926 key: "background_terminal_max_timeout",
927927Key type: "number",
928928 description:
929929`mcp_servers.<id>.args` "Maximum poll window in milliseconds for empty `write_stdin` polls (background terminal polling). Default: `300000` (5 minutes). Replaces the older `background_terminal_timeout` key.",
930930 },
931931Type / Values {
932932 key: "history.max_bytes",
933933`array<string>` type: "number",
934934 description:
935935Details "If set, caps the history file size in bytes by dropping oldest entries.",
936936 },
937937Arguments passed to the MCP stdio server command. {
938938 key: "file_opener",
939939Key type: "vscode | vscode-insiders | windsurf | cursor | none",
940940 description:
941941`mcp_servers.<id>.bearer_token_env_var` "URI scheme used to open citations from Codex output (default: `vscode`).",
942942 },
943943Type / Values {
944944 key: "otel.environment",
945945`string` type: "string",
946946 description:
947947Details "Environment tag applied to emitted OpenTelemetry events (default: `dev`).",
948948 },
949949Environment variable sourcing the bearer token for an MCP HTTP server. {
950950 key: "otel.exporter",
951951Key type: "none | otlp-http | otlp-grpc",
952952 description:
953953`mcp_servers.<id>.command` "Select the OpenTelemetry exporter and provide any endpoint metadata.",
954954 },
955955Type / Values {
956956 key: "otel.trace_exporter",
957957`string` type: "none | otlp-http | otlp-grpc",
958958 description:
959959Details "Select the OpenTelemetry trace exporter and provide any endpoint metadata.",
960960 },
961961Launcher command for an MCP stdio server. {
962962 key: "otel.metrics_exporter",
963963Key type: "none | statsig | otlp-http | otlp-grpc",
964964 description:
965965`mcp_servers.<id>.cwd` "Select the OpenTelemetry metrics exporter (defaults to `statsig`).",
966966 },
967967Type / Values {
968968 key: "otel.log_user_prompt",
969969`string` type: "boolean",
970970 description:
971971Details "Opt in to exporting raw user prompts with OpenTelemetry logs.",
972972 },
973973Working directory for the MCP stdio server process. {
974974 key: "otel.exporter.<id>.endpoint",
975975Key type: "string",
976976 description: "Exporter endpoint for OTEL logs.",
977977`mcp_servers.<id>.disabled_tools` },
978978 {
979979Type / Values key: "otel.exporter.<id>.protocol",
980980 type: "binary | json",
981981`array<string>` description: "Protocol used by the OTLP/HTTP exporter.",
982982 },
983983Details {
984984 key: "otel.exporter.<id>.headers",
985985Deny list applied after `enabled_tools` for the MCP server. type: "map<string,string>",
986986 description: "Static headers included with OTEL exporter requests.",
987987Key },
988988 {
989989`mcp_servers.<id>.enabled` key: "otel.trace_exporter.<id>.endpoint",
990990 type: "string",
991991Type / Values description: "Trace exporter endpoint for OTEL logs.",
992992 },
993993`boolean` {
994994 key: "otel.trace_exporter.<id>.protocol",
995995Details type: "binary | json",
996996 description: "Protocol used by the OTLP/HTTP trace exporter.",
997997Disable an MCP server without removing its configuration. },
998998 {
999999Key key: "otel.trace_exporter.<id>.headers",
10001000 type: "map<string,string>",
10011001`mcp_servers.<id>.enabled_tools` description: "Static headers included with OTEL trace exporter requests.",
10021002 },
10031003Type / Values {
10041004 key: "otel.exporter.<id>.tls.ca-certificate",
10051005`array<string>` type: "string",
10061006 description: "CA certificate path for OTEL exporter TLS.",
10071007Details },
10081008 {
10091009Allow list of tool names exposed by the MCP server. key: "otel.exporter.<id>.tls.client-certificate",
10101010 type: "string",
10111011Key description: "Client certificate path for OTEL exporter TLS.",
10121012 },
10131013`mcp_servers.<id>.env` {
10141014 key: "otel.exporter.<id>.tls.client-private-key",
10151015Type / Values type: "string",
10161016 description: "Client private key path for OTEL exporter TLS.",
10171017`map<string,string>` },
10181018 {
10191019Details key: "otel.trace_exporter.<id>.tls.ca-certificate",
10201020 type: "string",
10211021Environment variables forwarded to the MCP stdio server. description: "CA certificate path for OTEL trace exporter TLS.",
10221022 },
10231023Key {
10241024 key: "otel.trace_exporter.<id>.tls.client-certificate",
10251025`mcp_servers.<id>.env_http_headers` type: "string",
10261026 description: "Client certificate path for OTEL trace exporter TLS.",
10271027Type / Values },
10281028 {
10291029`map<string,string>` key: "otel.trace_exporter.<id>.tls.client-private-key",
10301030 type: "string",
10311031Details description: "Client private key path for OTEL trace exporter TLS.",
10321032 },
10331033HTTP headers populated from environment variables for an MCP HTTP server. {
10341034 key: "tui",
10351035Key type: "table",
10361036 description:
10371037`mcp_servers.<id>.env_vars` "TUI-specific options such as enabling inline desktop notifications.",
10381038 },
10391039Type / Values {
10401040 key: "tui.notifications",
10411041`array<string>` type: "boolean | array<string>",
10421042 description:
10431043Details "Enable TUI notifications; optionally restrict to specific event types.",
10441044 },
10451045Additional environment variables to whitelist for an MCP stdio server. {
10461046 key: "tui.notification_method",
10471047Key type: "auto | osc9 | bel",
10481048 description:
10491049`mcp_servers.<id>.http_headers` "Notification method for terminal notifications (default: auto).",
10501050 },
10511051Type / Values {
10521052 key: "tui.notification_condition",
10531053`map<string,string>` type: "unfocused | always",
10541054 description:
10551055Details "Control whether TUI notifications fire only when the terminal is unfocused or regardless of focus. Defaults to `unfocused`.",
10561056 },
10571057Static HTTP headers included with each MCP HTTP request. {
10581058 key: "tui.animations",
10591059Key type: "boolean",
10601060 description:
10611061`mcp_servers.<id>.required` "Enable terminal animations (welcome screen, shimmer, spinner) (default: true).",
10621062 },
10631063Type / Values {
10641064 key: "tui.alternate_screen",
10651065`boolean` type: "auto | always | never",
10661066 description:
10671067Details "Control alternate screen usage for the TUI (default: auto; auto skips it in Zellij to preserve scrollback).",
10681068 },
10691069When true, fail startup/resume if this enabled MCP server cannot initialize. {
10701070 key: "tui.show_tooltips",
10711071Key type: "boolean",
10721072 description:
10731073`mcp_servers.<id>.startup_timeout_ms` "Show onboarding tooltips in the TUI welcome screen (default: true).",
10741074 },
10751075Type / Values {
10761076 key: "tui.status_line",
10771077`number` type: "array<string> | null",
10781078 description:
10791079Details "Ordered list of TUI footer status-line item identifiers. `null` disables the status line.",
10801080 },
10811081Alias for `startup_timeout_sec` in milliseconds. {
10821082 key: "tui.terminal_title",
10831083Key type: "array<string> | null",
10841084 description:
10851085`mcp_servers.<id>.startup_timeout_sec` 'Ordered list of terminal window/tab title item identifiers. Defaults to `["spinner", "project"]`; `null` disables title updates.',
10861086 },
10871087Type / Values {
10881088 key: "tui.theme",
10891089`number` type: "string",
10901090 description:
10911091Details "Syntax-highlighting theme override (kebab-case theme name).",
10921092 },
10931093Override the default 10s startup timeout for an MCP server. {
10941094 key: "tui.keymap.<context>.<action>",
10951095Key type: "string | array<string>",
10961096 description:
10971097`mcp_servers.<id>.tool_timeout_sec` "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`.",
10981098 },
10991099Type / Values {
11001100 key: "tui.keymap.<context>.<action> = []",
11011101`number` type: "empty array",
11021102 description:
11031103Details "Unbind the action in that keymap context. Key names use normalized strings such as `ctrl-a`, `shift-enter`, or `page-down`.",
11041104 },
11051105Override the default 60s per-tool timeout for an MCP server. {
11061106 key: "tui.model_availability_nux.<model>",
11071107Key type: "integer",
11081108 description: "Internal startup-tooltip state keyed by model slug.",
11091109`mcp_servers.<id>.url` },
11101110 {
11111111Type / Values key: "hide_agent_reasoning",
11121112 type: "boolean",
11131113`string` description:
11141114 "Suppress reasoning events in both the TUI and `codex exec` output.",
11151115Details },
11161116 {
11171117Endpoint for an MCP streamable HTTP server. key: "show_raw_agent_reasoning",
11181118 type: "boolean",
11191119Key description:
11201120 "Surface raw reasoning content when the active model emits it.",
11211121`model` },
11221122 {
11231123Type / Values key: "disable_paste_burst",
11241124 type: "boolean",
11251125`string` description: "Disable burst-paste detection in the TUI.",
11261126 },
11271127Details {
11281128 key: "windows_wsl_setup_acknowledged",
11291129Model to use (e.g., `gpt-5-codex`). type: "boolean",
11301130 description: "Track Windows onboarding acknowledgement (Windows only).",
11311131Key },
11321132 {
11331133`model_auto_compact_token_limit` key: "chatgpt_base_url",
11341134 type: "string",
11351135Type / Values description: "Override the base URL used during the ChatGPT login flow.",
11361136 },
11371137`number` {
11381138 key: "cli_auth_credentials_store",
11391139Details type: "file | keyring | auto",
11401140 description:
11411141Token threshold that triggers automatic history compaction (unset uses model defaults). "Control where the CLI stores cached credentials (file-based auth.json vs OS keychain).",
11421142 },
11431143Key {
11441144 key: "mcp_oauth_credentials_store",
11451145`model_catalog_json` type: "auto | file | keyring",
11461146 description: "Preferred store for MCP OAuth credentials.",
11471147Type / Values },
11481148 {
11491149`string (path)` key: "mcp_oauth_callback_port",
11501150 type: "integer",
11511151Details description:
11521152 "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.",
11531153Optional path to a JSON model catalog loaded on startup. Profile-level `profiles.<name>.model_catalog_json` can override this per profile. },
11541154 {
11551155Key key: "mcp_oauth_callback_url",
11561156 type: "string",
11571157`model_context_window` description:
11581158 "Optional redirect URI override for MCP OAuth login (for example, a devbox ingress URL). `mcp_oauth_callback_port` still controls the callback listener port.",
11591159Type / Values },
11601160 {
11611161`number` key: "experimental_use_unified_exec_tool",
11621162 type: "boolean",
11631163Details description:
11641164 "Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`.",
11651165Context window tokens available to the active model. },
11661166 {
11671167Key key: "tools.web_search",
11681168 type: 'boolean | { context_size = "low|medium|high", allowed_domains = [string], location = { country, region, city, timezone } }',
11691169`model_instructions_file` description:
11701170 "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.",
11711171Type / Values },
11721172 {
11731173`string (path)` key: "tools.view_image",
11741174 type: "boolean",
11751175Details description: "Enable the local-image attachment tool `view_image`.",
11761176 },
11771177Replacement for built-in instructions instead of `AGENTS.md`. {
11781178 key: "web_search",
11791179Key type: "disabled | cached | live",
11801180 description:
11811181`model_provider` '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.',
11821182 },
11831183Type / Values {
11841184 key: "default_permissions",
11851185`string` type: "string",
11861186 description:
11871187Details "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.",
11881188 },
11891189Provider id from `model_providers` (default: `openai`). {
11901190 key: "permissions.<name>.filesystem",
11911191Key type: "table",
11921192 description:
11931193`model_providers.<id>.base_url` "Named filesystem permission profile. Each key is an absolute path or special token such as `:minimal` or `:project_roots`.",
11941194 },
11951195Type / Values {
11961196 key: "permissions.<name>.filesystem.glob_scan_max_depth",
11971197`string` type: "number",
11981198 description:
11991199Details "Maximum depth for expanding deny-read glob patterns on platforms that snapshot matches before sandbox startup. Must be at least `1` when set.",
12001200 },
12011201API base URL for the model provider. {
12021202 key: "permissions.<name>.filesystem.<path-or-glob>",
12031203Key type: '"read" | "write" | "none" | table',
12041204 description:
12051205`model_providers.<id>.env_http_headers` '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.',
12061206 },
12071207Type / Values {
12081208 key: 'permissions.<name>.filesystem.":project_roots".<subpath-or-glob>',
12091209`map<string,string>` type: '"read" | "write" | "none"',
12101210 description:
12111211Details 'Scoped filesystem access relative to the detected project roots. Use `"."` for the root itself; glob subpaths such as `"**/*.env"` can deny reads with `"none"`.',
12121212 },
12131213HTTP headers populated from environment variables when present. {
12141214 key: "permissions.<name>.network.enabled",
12151215Key type: "boolean",
12161216 description: "Enable network access for this named permissions profile.",
12171217`model_providers.<id>.env_key` },
12181218 {
12191219Type / Values key: "permissions.<name>.network.proxy_url",
12201220 type: "string",
12211221`string` description:
12221222 "HTTP proxy endpoint used when this permissions profile enables the managed network proxy.",
12231223Details },
12241224 {
12251225Environment variable supplying the provider API key. key: "permissions.<name>.network.enable_socks5",
12261226 type: "boolean",
12271227Key description:
12281228 "Expose a SOCKS5 listener when this permissions profile enables the managed network proxy.",
12291229`model_providers.<id>.env_key_instructions` },
12301230 {
12311231Type / Values key: "permissions.<name>.network.socks_url",
12321232 type: "string",
12331233`string` description: "SOCKS5 proxy endpoint used by this permissions profile.",
12341234 },
12351235Details {
12361236 key: "permissions.<name>.network.enable_socks5_udp",
12371237Optional setup guidance for the provider API key. type: "boolean",
12381238 description: "Allow UDP over the SOCKS5 listener when enabled.",
12391239Key },
12401240 {
12411241`model_providers.<id>.experimental_bearer_token` key: "permissions.<name>.network.allow_upstream_proxy",
12421242 type: "boolean",
12431243Type / Values description:
12441244 "Allow the managed proxy to chain to another upstream proxy.",
12451245`string` },
12461246 {
12471247Details key: "permissions.<name>.network.dangerously_allow_non_loopback_proxy",
12481248 type: "boolean",
12491249Direct bearer token for the provider (discouraged; use `env_key`). description:
12501250 "Permit non-loopback bind addresses for the managed proxy listener.",
12511251Key },
12521252 {
12531253`model_providers.<id>.http_headers` key: "permissions.<name>.network.dangerously_allow_all_unix_sockets",
12541254 type: "boolean",
12551255Type / Values description:
12561256 "Allow the proxy to use arbitrary Unix sockets instead of the default restricted set.",
12571257`map<string,string>` },
12581258 {
12591259Details key: "permissions.<name>.network.mode",
12601260 type: "limited | full",
12611261Static HTTP headers added to provider requests. description: "Network proxy mode used for subprocess traffic.",
12621262 },
12631263Key {
12641264 key: "permissions.<name>.network.domains",
12651265`model_providers.<id>.name` type: "map<string, allow | deny>",
12661266 description:
12671267Type / Values "Domain rules for the managed proxy. Use domain names or wildcard patterns as keys, with `allow` or `deny` values.",
12681268 },
12691269`string` {
12701270 key: "permissions.<name>.network.unix_sockets",
12711271Details type: "map<string, allow | none>",
12721272 description:
12731273Display name for a custom model provider. "Unix socket rules for the managed proxy. Use socket paths as keys, with `allow` or `none` values.",
12741274 },
12751275Key {
12761276 key: "permissions.<name>.network.allow_local_binding",
12771277`model_providers.<id>.query_params` type: "boolean",
12781278 description:
12791279Type / Values "Permit local bind/listen operations through the managed proxy.",
12801280 },
12811281`map<string,string>` {
12821282 key: "projects.<path>.trust_level",
12831283Details type: "string",
12841284 description:
12851285Extra query parameters appended to provider requests. '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.',
12861286 },
12871287Key {
12881288 key: "notice.hide_full_access_warning",
12891289`model_providers.<id>.request_max_retries` type: "boolean",
12901290 description: "Track acknowledgement of the full access warning prompt.",
12911291Type / Values },
12921292 {
12931293`number` key: "notice.hide_world_writable_warning",
12941294 type: "boolean",
12951295Details description:
12961296 "Track acknowledgement of the Windows world-writable directories warning.",
12971297Retry count for HTTP requests to the provider (default: 4). },
12981298 {
12991299Key key: "notice.hide_rate_limit_model_nudge",
13001300 type: "boolean",
13011301`model_providers.<id>.requires_openai_auth` description: "Track opt-out of the rate limit model switch reminder.",
13021302 },
13031303Type / Values {
13041304 key: "notice.hide_gpt5_1_migration_prompt",
13051305`boolean` type: "boolean",
13061306 description: "Track acknowledgement of the GPT-5.1 migration prompt.",
13071307Details },
13081308 {
13091309The provider uses OpenAI authentication (defaults to false). key: "notice.hide_gpt-5.1-codex-max_migration_prompt",
13101310 type: "boolean",
13111311Key description:
13121312 "Track acknowledgement of the gpt-5.1-codex-max migration prompt.",
13131313`model_providers.<id>.stream_idle_timeout_ms` },
13141314 {
13151315Type / Values key: "notice.model_migrations",
13161316 type: "map<string,string>",
13171317`number` description: "Track acknowledged model migrations as old->new mappings.",
13181318 },
13191319Details {
13201320 key: "forced_login_method",
13211321Idle timeout for SSE streams in milliseconds (default: 300000). type: "chatgpt | api",
13221322 description: "Restrict Codex to a specific authentication method.",
13231323Key },
13241324 {
13251325`model_providers.<id>.stream_max_retries` key: "forced_chatgpt_workspace_id",
13261326 type: "string (uuid)",
13271327Type / Values description: "Limit ChatGPT logins to a specific workspace identifier.",
13281328 },
13291329`number` ]}
13301330 client:load
13311331Details/>
1332
1333Retry count for SSE streaming interruptions (default: 5).
1334
1335Key
1336
1337`model_providers.<id>.wire_api`
1338
1339Type / Values
1340
1341`chat | responses`
1342
1343Details
1344
1345Protocol used by the provider (defaults to `chat` if omitted).
1346
1347Key
1348
1349`model_reasoning_effort`
1350
1351Type / Values
1352
1353`minimal | low | medium | high | xhigh`
1354
1355Details
1356
1357Adjust reasoning effort for supported models (Responses API only; `xhigh` is model-dependent).
1358
1359Key
1360
1361`model_reasoning_summary`
1362
1363Type / Values
1364
1365`auto | concise | detailed | none`
1366
1367Details
1368
1369Select reasoning summary detail or disable summaries entirely.
1370
1371Key
1372
1373`model_supports_reasoning_summaries`
1374
1375Type / Values
1376
1377`boolean`
1378
1379Details
1380
1381Force Codex to send or not send reasoning metadata.
1382
1383Key
1384
1385`model_verbosity`
1386
1387Type / Values
1388
1389`low | medium | high`
1390
1391Details
1392
1393Control GPT-5 Responses API verbosity (defaults to `medium`).
1394
1395Key
1396
1397`notice.hide_full_access_warning`
1398
1399Type / Values
1400
1401`boolean`
1402
1403Details
1404
1405Track acknowledgement of the full access warning prompt.
1406
1407Key
1408
1409`notice.hide_gpt-5.1-codex-max_migration_prompt`
1410
1411Type / Values
1412
1413`boolean`
1414
1415Details
1416
1417Track acknowledgement of the gpt-5.1-codex-max migration prompt.
1418
1419Key
1420
1421`notice.hide_gpt5_1_migration_prompt`
1422
1423Type / Values
1424
1425`boolean`
1426
1427Details
1428
1429Track acknowledgement of the GPT-5.1 migration prompt.
1430
1431Key
1432
1433`notice.hide_rate_limit_model_nudge`
1434
1435Type / Values
1436
1437`boolean`
1438
1439Details
1440
1441Track opt-out of the rate limit model switch reminder.
1442
1443Key
1444
1445`notice.hide_world_writable_warning`
1446
1447Type / Values
1448
1449`boolean`
1450
1451Details
1452
1453Track acknowledgement of the Windows world-writable directories warning.
1454
1455Key
1456
1457`notice.model_migrations`
1458
1459Type / Values
1460
1461`map<string,string>`
1462
1463Details
1464
1465Track acknowledged model migrations as old->new mappings.
1466
1467Key
1468
1469`notify`
1470
1471Type / Values
1472
1473`array<string>`
1474
1475Details
1476
1477Command invoked for notifications; receives a JSON payload from Codex.
1478
1479Key
1480
1481`oss_provider`
1482
1483Type / Values
1484
1485`lmstudio | ollama`
1486
1487Details
1488
1489Default local provider used when running with `--oss` (defaults to prompting if unset).
1490
1491Key
1492
1493`otel.environment`
1494
1495Type / Values
1496
1497`string`
1498
1499Details
1500
1501Environment tag applied to emitted OpenTelemetry events (default: `dev`).
1502
1503Key
1504
1505`otel.exporter`
1506
1507Type / Values
1508
1509`none | otlp-http | otlp-grpc`
1510
1511Details
1512
1513Select the OpenTelemetry exporter and provide any endpoint metadata.
1514
1515Key
1516
1517`otel.exporter.<id>.endpoint`
1518
1519Type / Values
1520
1521`string`
1522
1523Details
1524
1525Exporter endpoint for OTEL logs.
1526
1527Key
1528
1529`otel.exporter.<id>.headers`
1530
1531Type / Values
1532
1533`map<string,string>`
1534
1535Details
1536
1537Static headers included with OTEL exporter requests.
1538
1539Key
1540
1541`otel.exporter.<id>.protocol`
1542
1543Type / Values
1544
1545`binary | json`
1546
1547Details
1548
1549Protocol used by the OTLP/HTTP exporter.
1550
1551Key
1552
1553`otel.exporter.<id>.tls.ca-certificate`
1554
1555Type / Values
1556
1557`string`
1558
1559Details
1560
1561CA certificate path for OTEL exporter TLS.
1562
1563Key
1564
1565`otel.exporter.<id>.tls.client-certificate`
1566
1567Type / Values
1568
1569`string`
1570
1571Details
1572
1573Client certificate path for OTEL exporter TLS.
1574
1575Key
1576
1577`otel.exporter.<id>.tls.client-private-key`
1578
1579Type / Values
1580
1581`string`
1582
1583Details
1584
1585Client private key path for OTEL exporter TLS.
1586
1587Key
1588
1589`otel.log_user_prompt`
1590
1591Type / Values
1592
1593`boolean`
1594
1595Details
1596
1597Opt in to exporting raw user prompts with OpenTelemetry logs.
1598
1599Key
1600
1601`otel.trace_exporter`
1602
1603Type / Values
1604
1605`none | otlp-http | otlp-grpc`
1606
1607Details
1608
1609Select the OpenTelemetry trace exporter and provide any endpoint metadata.
1610
1611Key
1612
1613`otel.trace_exporter.<id>.endpoint`
1614
1615Type / Values
1616
1617`string`
1618
1619Details
1620
1621Trace exporter endpoint for OTEL logs.
1622
1623Key
1624
1625`otel.trace_exporter.<id>.headers`
1626
1627Type / Values
1628
1629`map<string,string>`
1630
1631Details
1632
1633Static headers included with OTEL trace exporter requests.
1634
1635Key
1636
1637`otel.trace_exporter.<id>.protocol`
1638
1639Type / Values
1640
1641`binary | json`
1642
1643Details
1644
1645Protocol used by the OTLP/HTTP trace exporter.
1646
1647Key
1648
1649`otel.trace_exporter.<id>.tls.ca-certificate`
1650
1651Type / Values
1652
1653`string`
1654
1655Details
1656
1657CA certificate path for OTEL trace exporter TLS.
1658
1659Key
1660
1661`otel.trace_exporter.<id>.tls.client-certificate`
1662
1663Type / Values
1664
1665`string`
1666
1667Details
1668
1669Client certificate path for OTEL trace exporter TLS.
1670
1671Key
1672
1673`otel.trace_exporter.<id>.tls.client-private-key`
1674
1675Type / Values
1676
1677`string`
1678
1679Details
1680
1681Client private key path for OTEL trace exporter TLS.
1682
1683Key
1684
1685`personality`
1686
1687Type / Values
1688
1689`none | friendly | pragmatic`
1690
1691Details
1692
1693Default communication style for models that advertise `supportsPersonality`; can be overridden per thread/turn or via `/personality`.
1694
1695Key
1696
1697`profile`
1698
1699Type / Values
1700
1701`string`
1702
1703Details
1704
1705Default profile applied at startup (equivalent to `--profile`).
1706
1707Key
1708
1709`profiles.<name>.*`
1710
1711Type / Values
1712
1713`various`
1714
1715Details
1716
1717Profile-scoped overrides for any of the supported configuration keys.
1718
1719Key
1720
1721`profiles.<name>.experimental_use_freeform_apply_patch`
1722
1723Type / Values
1724
1725`boolean`
1726
1727Details
1728
1729Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`.
1730
1731Key
1732
1733`profiles.<name>.experimental_use_unified_exec_tool`
1734
1735Type / Values
1736
1737`boolean`
1738
1739Details
1740
1741Legacy name for enabling unified exec; prefer `[features].unified_exec`.
1742
1743Key
1744
1745`profiles.<name>.include_apply_patch_tool`
1746
1747Type / Values
1748
1749`boolean`
1750
1751Details
1752
1753Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`.
1754
1755Key
1756
1757`profiles.<name>.model_catalog_json`
1758
1759Type / Values
1760
1761`string (path)`
1762
1763Details
1764
1765Profile-scoped model catalog JSON path override (applied on startup only; overrides the top-level `model_catalog_json` for that profile).
1766
1767Key
1768
1769`profiles.<name>.oss_provider`
1770
1771Type / Values
1772
1773`lmstudio | ollama`
1774
1775Details
1776
1777Profile-scoped OSS provider for `--oss` sessions.
1778
1779Key
1780
1781`profiles.<name>.personality`
1782
1783Type / Values
1784
1785`none | friendly | pragmatic`
1786
1787Details
1788
1789Profile-scoped communication style override for supported models.
1790
1791Key
1792
1793`profiles.<name>.web_search`
1794
1795Type / Values
1796
1797`disabled | cached | live`
1798
1799Details
1800
1801Profile-scoped web search mode override (default: `"cached"`).
1802
1803Key
1804
1805`project_doc_fallback_filenames`
1806
1807Type / Values
1808
1809`array<string>`
1810
1811Details
1812
1813Additional filenames to try when `AGENTS.md` is missing.
1814
1815Key
1816
1817`project_doc_max_bytes`
1818
1819Type / Values
1820
1821`number`
1822
1823Details
1824
1825Maximum bytes read from `AGENTS.md` when building project instructions.
1826
1827Key
1828
1829`project_root_markers`
1830
1831Type / Values
1832
1833`array<string>`
1834
1835Details
1836
1837List of project root marker filenames; used when searching parent directories for the project root.
1838
1839Key
1840
1841`projects.<path>.trust_level`
1842
1843Type / Values
1844
1845`string`
1846
1847Details
1848
1849Mark a project or worktree as trusted or untrusted (`"trusted"` | `"untrusted"`). Untrusted projects skip project-scoped `.codex/` layers.
1850
1851Key
1852
1853`review_model`
1854
1855Type / Values
1856
1857`string`
1858
1859Details
1860
1861Optional model override used by `/review` (defaults to the current session model).
1862
1863Key
1864
1865`sandbox_mode`
1866
1867Type / Values
1868
1869`read-only | workspace-write | danger-full-access`
1870
1871Details
1872
1873Sandbox policy for filesystem and network access during command execution.
1874
1875Key
1876
1877`sandbox_workspace_write.exclude_slash_tmp`
1878
1879Type / Values
1880
1881`boolean`
1882
1883Details
1884
1885Exclude `/tmp` from writable roots in workspace-write mode.
1886
1887Key
1888
1889`sandbox_workspace_write.exclude_tmpdir_env_var`
1890
1891Type / Values
1892
1893`boolean`
1894
1895Details
1896
1897Exclude `$TMPDIR` from writable roots in workspace-write mode.
1898
1899Key
1900
1901`sandbox_workspace_write.network_access`
1902
1903Type / Values
1904
1905`boolean`
1906
1907Details
1908
1909Allow outbound network access inside the workspace-write sandbox.
1910
1911Key
1912
1913`sandbox_workspace_write.writable_roots`
1914
1915Type / Values
1916
1917`array<string>`
1918
1919Details
1920
1921Additional writable roots when `sandbox_mode = "workspace-write"`.
1922
1923Key
1924
1925`shell_environment_policy.exclude`
1926
1927Type / Values
1928
1929`array<string>`
1930
1931Details
1932
1933Glob patterns for removing environment variables after the defaults.
1934
1935Key
1936
1937`shell_environment_policy.experimental_use_profile`
1938
1939Type / Values
1940
1941`boolean`
1942
1943Details
1944
1945Use the user shell profile when spawning subprocesses.
1946
1947Key
1948
1949`shell_environment_policy.ignore_default_excludes`
1950
1951Type / Values
1952
1953`boolean`
1954
1955Details
1956
1957Keep variables containing KEY/SECRET/TOKEN before other filters run.
1958
1959Key
1960
1961`shell_environment_policy.include_only`
1962
1963Type / Values
1964
1965`array<string>`
1966
1967Details
1968
1969Whitelist of patterns; when set only matching variables are kept.
1970
1971Key
1972
1973`shell_environment_policy.inherit`
1974
1975Type / Values
1976
1977`all | core | none`
1978
1979Details
1980
1981Baseline environment inheritance when spawning subprocesses.
1982
1983Key
1984
1985`shell_environment_policy.set`
1986
1987Type / Values
1988
1989`map<string,string>`
1990
1991Details
1992
1993Explicit environment overrides injected into every subprocess.
1994
1995Key
1996
1997`show_raw_agent_reasoning`
1998
1999Type / Values
2000
2001`boolean`
2002
2003Details
2004
2005Surface raw reasoning content when the active model emits it.
2006
2007Key
2008
2009`skills.config`
2010
2011Type / Values
2012
2013`array<object>`
2014
2015Details
2016
2017Per-skill enablement overrides stored in config.toml.
2018
2019Key
2020
2021`skills.config.<index>.enabled`
2022
2023Type / Values
2024
2025`boolean`
2026
2027Details
2028
2029Enable or disable the referenced skill.
2030
2031Key
2032
2033`skills.config.<index>.path`
2034
2035Type / Values
2036
2037`string (path)`
2038
2039Details
2040
2041Path to a skill folder containing `SKILL.md`.
2042
2043Key
2044
2045`sqlite_home`
2046
2047Type / Values
2048
2049`string (path)`
2050
2051Details
2052
2053Directory where Codex stores the SQLite-backed state DB used by agent jobs and other resumable runtime state.
2054
2055Key
2056
2057`suppress_unstable_features_warning`
2058
2059Type / Values
2060
2061`boolean`
2062
2063Details
2064
2065Suppress the warning that appears when under-development feature flags are enabled.
2066
2067Key
2068
2069`tool_output_token_limit`
2070
2071Type / Values
2072
2073`number`
2074
2075Details
2076
2077Token budget for storing individual tool/function outputs in history.
2078
2079Key
2080
2081`tools.web_search`
2082
2083Type / Values
2084
2085`boolean`
2086
2087Details
2088
2089Deprecated legacy toggle for web search; prefer the top-level `web_search` setting.
2090
2091Key
2092
2093`tui`
2094
2095Type / Values
2096
2097`table`
2098
2099Details
2100
2101TUI-specific options such as enabling inline desktop notifications.
2102
2103Key
2104
2105`tui.alternate_screen`
2106
2107Type / Values
2108
2109`auto | always | never`
2110
2111Details
2112
2113Control alternate screen usage for the TUI (default: auto; auto skips it in Zellij to preserve scrollback).
2114
2115Key
2116
2117`tui.animations`
2118
2119Type / Values
2120
2121`boolean`
2122
2123Details
2124
2125Enable terminal animations (welcome screen, shimmer, spinner) (default: true).
2126
2127Key
2128
2129`tui.notification_method`
2130
2131Type / Values
2132
2133`auto | osc9 | bel`
2134
2135Details
2136
2137Notification method for unfocused terminal notifications (default: auto).
2138
2139Key
2140
2141`tui.notifications`
2142
2143Type / Values
2144
2145`boolean | array<string>`
2146
2147Details
2148
2149Enable TUI notifications; optionally restrict to specific event types.
2150
2151Key
2152
2153`tui.show_tooltips`
2154
2155Type / Values
2156
2157`boolean`
2158
2159Details
2160
2161Show onboarding tooltips in the TUI welcome screen (default: true).
2162
2163Key
2164
2165`tui.status_line`
2166
2167Type / Values
2168
2169`array<string> | null`
2170
2171Details
2172
2173Ordered list of TUI footer status-line item identifiers. `null` disables the status line.
2174
2175Key
2176
2177`web_search`
2178
2179Type / Values
2180
2181`disabled | cached | live`
2182
2183Details
2184
2185Web 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.
2186
2187Key
2188
2189`windows_wsl_setup_acknowledged`
2190
2191Type / Values
2192
2193`boolean`
2194
2195Details
2196
2197Track Windows onboarding acknowledgement (Windows only).
2198
2199Key
2200
2201`windows.sandbox`
2202
2203Type / Values
2204
2205`unelevated | elevated`
2206
2207Details
2208
2209Windows-only native sandbox mode when running Codex natively on Windows.
2210
2211Expand to view all
2212 1332
2213You can find the latest JSON schema for `config.toml` [here](https://developers.openai.com/codex/config-schema.json).1333You can find the latest JSON schema for `config.toml` [here](https://developers.openai.com/codex/config-schema.json).
2214 1334
2230Use `[features]` in `requirements.toml` to pin feature flags by the same1350Use `[features]` in `requirements.toml` to pin feature flags by the same
2231canonical keys that `config.toml` uses. Omitted keys remain unconstrained.1351canonical keys that `config.toml` uses. Omitted keys remain unconstrained.
2232 1352
22331353| Key | Type / Values | Details |<ConfigTable
22341354| --- | --- | --- | options={[
22351355| `allowed_approval_policies` | `array<string>` | Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `reject`). | {
22361356| `allowed_sandbox_modes` | `array<string>` | Allowed values for `sandbox_mode`. | key: "allowed_approval_policies",
22371357| `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`. | type: "array<string>",
22381358| `features` | `table` | Pinned feature values keyed by the canonical names from `config.toml`'s `[features]` table. | description:
22391359| `features.<name>` | `boolean` | Require a specific canonical feature key to stay enabled or disabled. | "Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `granular`).",
22401360| `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. | },
22411361| `mcp_servers.<id>.identity` | `table` | Identity rule for a single MCP server. Set either `command` (stdio) or `url` (streamable HTTP). | {
22421362| `mcp_servers.<id>.identity.command` | `string` | Allow an MCP stdio server when its `mcp_servers.<id>.command` matches this command. | key: "allowed_approvals_reviewers",
22431363| `mcp_servers.<id>.identity.url` | `string` | Allow an MCP streamable HTTP server when its `mcp_servers.<id>.url` matches this URL. | type: "array<string>",
22441364| `rules` | `table` | Admin-enforced command rules merged with `.rules` files. Requirements rules must be restrictive. | description:
22451365| `rules.prefix_rules` | `array<table>` | List of enforced prefix rules. Each rule must include `pattern` and `decision`. | "Allowed values for `approvals_reviewer`, such as `user` and `auto_review`.",
22461366| `rules.prefix_rules[].decision` | `prompt | forbidden` | Required. Requirements rules can only prompt or forbid (not allow). | },
22471367| `rules.prefix_rules[].justification` | `string` | Optional non-empty rationale surfaced in approval prompts or rejection messages. | {
22481368| `rules.prefix_rules[].pattern` | `array<table>` | Command prefix expressed as pattern tokens. Each token sets either `token` or `any_of`. | key: "guardian_policy_config",
22491369| `rules.prefix_rules[].pattern[].any_of` | `array<string>` | A list of allowed alternative tokens at this position. | type: "string",
22501370| `rules.prefix_rules[].pattern[].token` | `string` | A single literal token at this position. | description:
22511371 "Managed Markdown policy instructions for automatic review. This takes precedence over local `[auto_review].policy`. Blank values are ignored.",
22521372Key },
22531373 {
22541374`allowed_approval_policies` key: "allowed_sandbox_modes",
22551375 type: "array<string>",
22561376Type / Values description: "Allowed values for `sandbox_mode`.",
22571377 },
22581378`array<string>` {
22591379 key: "remote_sandbox_config",
22601380Details type: "array<table>",
22611381 description:
22621382Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `reject`). "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.",
22631383 },
22641384Key {
22651385 key: "remote_sandbox_config[].hostname_patterns",
22661386`allowed_sandbox_modes` type: "array<string>",
22671387 description:
22681388Type / Values "Case-insensitive host name patterns. Supports `*` for any sequence of characters and `?` for one character.",
22691389 },
22701390`array<string>` {
22711391 key: "remote_sandbox_config[].allowed_sandbox_modes",
22721392Details type: "array<string>",
22731393 description:
22741394Allowed values for `sandbox_mode`. "Allowed sandbox modes to apply when this host-specific entry matches.",
22751395 },
22761396Key {
22771397 key: "allowed_web_search_modes",
22781398`allowed_web_search_modes` type: "array<string>",
22791399 description:
22801400Type / Values "Allowed values for `web_search` (`disabled`, `cached`, `live`). `disabled` is always allowed; an empty list effectively allows only `disabled`.",
22811401 },
22821402`array<string>` {
22831403 key: "features",
22841404Details type: "table",
22851405 description:
22861406Allowed values for `web_search` (`disabled`, `cached`, `live`). `disabled` is always allowed; an empty list effectively allows only `disabled`. "Pinned feature values keyed by the canonical names from `config.toml`'s `[features]` table.",
22871407 },
22881408Key {
22891409 key: "features.<name>",
22901410`features` type: "boolean",
22911411 description:
22921412Type / Values "Require a specific canonical feature key to stay enabled or disabled.",
22931413 },
22941414`table` {
22951415 key: "features.in_app_browser",
22961416Details type: "boolean",
22971417 description:
22981418Pinned feature values keyed by the canonical names from `config.toml`'s `[features]` table. "Set to `false` in `requirements.toml` to disable the in-app browser pane.",
22991419 },
23001420Key {
23011421 key: "features.browser_use",
23021422`features.<name>` type: "boolean",
23031423 description:
23041424Type / Values "Set to `false` in `requirements.toml` to disable Browser Use and Browser Agent availability.",
23051425 },
23061426`boolean` {
23071427 key: "features.computer_use",
23081428Details type: "boolean",
23091429 description:
23101430Require a specific canonical feature key to stay enabled or disabled. "Set to `false` in `requirements.toml` to disable Computer Use availability and related install or enablement flows.",
23111431 },
23121432Key {
23131433 key: "hooks",
23141434`mcp_servers` type: "table",
23151435 description:
23161436Type / Values "Admin-enforced managed lifecycle hooks. Requires a managed hook directory and uses the same event schema as inline `[hooks]` in `config.toml`.",
23171437 },
23181438`table` {
23191439 key: "hooks.managed_dir",
23201440Details type: "string (absolute path)",
23211441 description:
23221442Allowlist 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. "Directory containing managed hook scripts on macOS and Linux. Codex validates that it is absolute and exists before loading managed hooks.",
23231443 },
23241444Key {
23251445 key: "hooks.windows_managed_dir",
23261446`mcp_servers.<id>.identity` type: "string (absolute path)",
23271447 description:
23281448Type / Values "Directory containing managed hook scripts on Windows. Codex validates that it is absolute and exists before loading managed hooks.",
23291449 },
23301450`table` {
23311451 key: "hooks.<Event>",
23321452Details type: "array<table>",
23331453 description:
23341454Identity rule for a single MCP server. Set either `command` (stdio) or `url` (streamable HTTP). "Matcher groups for a hook event such as `PreToolUse`, `PostToolUse`, `PermissionRequest`, `SessionStart`, `UserPromptSubmit`, or `Stop`.",
23351455 },
23361456Key {
23371457 key: "hooks.<Event>[].hooks",
23381458`mcp_servers.<id>.identity.command` type: "array<table>",
23391459 description:
23401460Type / Values "Hook handlers for a matcher group. Command hooks are currently supported; prompt and agent hook handlers are parsed but skipped.",
23411461 },
23421462`string` {
23431463 key: "permissions.filesystem.deny_read",
23441464Details type: "array<string>",
23451465 description:
23461466Allow an MCP stdio server when its `mcp_servers.<id>.command` matches this command. "Admin-enforced filesystem read denials. Entries can be paths or glob patterns, and users cannot weaken them with local config.",
23471467 },
23481468Key {
23491469 key: "mcp_servers",
23501470`mcp_servers.<id>.identity.url` type: "table",
23511471 description:
23521472Type / Values "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.",
23531473 },
23541474`string` {
23551475 key: "mcp_servers.<id>.identity",
23561476Details type: "table",
23571477 description:
23581478Allow an MCP streamable HTTP server when its `mcp_servers.<id>.url` matches this URL. "Identity rule for a single MCP server. Set either `command` (stdio) or `url` (streamable HTTP).",
23591479 },
23601480Key {
23611481 key: "mcp_servers.<id>.identity.command",
23621482`rules` type: "string",
23631483 description:
23641484Type / Values "Allow an MCP stdio server when its `mcp_servers.<id>.command` matches this command.",
23651485 },
23661486`table` {
23671487 key: "mcp_servers.<id>.identity.url",
23681488Details type: "string",
23691489 description:
23701490Admin-enforced command rules merged with `.rules` files. Requirements rules must be restrictive. "Allow an MCP streamable HTTP server when its `mcp_servers.<id>.url` matches this URL.",
23711491 },
23721492Key {
23731493 key: "rules",
23741494`rules.prefix_rules` type: "table",
23751495 description:
23761496Type / Values "Admin-enforced command rules merged with `.rules` files. Requirements rules must be restrictive.",
23771497 },
23781498`array<table>` {
23791499 key: "rules.prefix_rules",
23801500Details type: "array<table>",
23811501 description:
23821502List of enforced prefix rules. Each rule must include `pattern` and `decision`. "List of enforced prefix rules. Each rule must include `pattern` and `decision`.",
23831503 },
23841504Key {
23851505 key: "rules.prefix_rules[].pattern",
23861506`rules.prefix_rules[].decision` type: "array<table>",
23871507 description:
23881508Type / Values "Command prefix expressed as pattern tokens. Each token sets either `token` or `any_of`.",
23891509 },
23901510`prompt | forbidden` {
23911511 key: "rules.prefix_rules[].pattern[].token",
23921512Details type: "string",
23931513 description: "A single literal token at this position.",
23941514Required. Requirements rules can only prompt or forbid (not allow). },
23951515 {
23961516Key key: "rules.prefix_rules[].pattern[].any_of",
23971517 type: "array<string>",
23981518`rules.prefix_rules[].justification` description: "A list of allowed alternative tokens at this position.",
23991519 },
24001520Type / Values {
24011521 key: "rules.prefix_rules[].decision",
24021522`string` type: "prompt | forbidden",
24031523 description:
24041524Details "Required. Requirements rules can only prompt or forbid (not allow).",
24051525 },
24061526Optional non-empty rationale surfaced in approval prompts or rejection messages. {
24071527 key: "rules.prefix_rules[].justification",
24081528Key type: "string",
24091529 description:
24101530`rules.prefix_rules[].pattern` "Optional non-empty rationale surfaced in approval prompts or rejection messages.",
24111531 },
24121532Type / Values ]}
24131533 client:load
24141534`array<table>`/>
2415
2416Details
2417
2418Command prefix expressed as pattern tokens. Each token sets either `token` or `any_of`.
2419
2420Key
2421
2422`rules.prefix_rules[].pattern[].any_of`
2423
2424Type / Values
2425
2426`array<string>`
2427
2428Details
2429
2430A list of allowed alternative tokens at this position.
2431
2432Key
2433
2434`rules.prefix_rules[].pattern[].token`
2435
2436Type / Values
2437
2438`string`
2439
2440Details
2441
2442A single literal token at this position.
2443
2444Expand to view all