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