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