config-reference.md +1503 −3336
8 8
9For sandbox and approval keys (`approval_policy`, `sandbox_mode`, and `sandbox_workspace_write.*`), pair this reference with [Sandbox and approvals](https://developers.openai.com/codex/agent-approvals-security#sandbox-and-approvals), [Protected paths in writable roots](https://developers.openai.com/codex/agent-approvals-security#protected-paths-in-writable-roots), and [Network access](https://developers.openai.com/codex/agent-approvals-security#network-access).9For sandbox and approval keys (`approval_policy`, `sandbox_mode`, and `sandbox_workspace_write.*`), pair this reference with [Sandbox and approvals](https://developers.openai.com/codex/agent-approvals-security#sandbox-and-approvals), [Protected paths in writable roots](https://developers.openai.com/codex/agent-approvals-security#protected-paths-in-writable-roots), and [Network access](https://developers.openai.com/codex/agent-approvals-security#network-access).
10 10
1111| Key | Type / Values | Details |<ConfigTable
1212| --- | --- | --- | options={[
1313| `agents.<name>.config_file` | `string (path)` | Path to a TOML config layer for that role; relative paths resolve from the config file that declares the role. | {
1414| `agents.<name>.description` | `string` | Role guidance shown to Codex when choosing and spawning that agent type. | key: "model",
1515| `agents.<name>.nickname_candidates` | `array<string>` | Optional pool of display nicknames for spawned agents in that role. | type: "string",
1616| `agents.job_max_runtime_seconds` | `number` | Default per-worker timeout for `spawn_agents_on_csv` jobs. When unset, the tool falls back to 1800 seconds per worker. | description: "Model to use (e.g., `gpt-5.5`).",
1717| `agents.max_depth` | `number` | Maximum nesting depth allowed for spawned agent threads (root sessions start at depth 0; default: 1). | },
1818| `agents.max_threads` | `number` | Maximum number of agent threads that can be open concurrently. Defaults to `6` when unset. | {
1919| `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. | key: "review_model",
2020| `analytics.enabled` | `boolean` | Enable or disable analytics for this machine/profile. When unset, the client default applies. | type: "string",
2121| `approval_policy` | `untrusted | on-request | never | { granular = { sandbox_approval = bool, rules = bool, mcp_elicitations = bool, request_permissions = bool, skill_approval = bool } }` | Controls when Codex pauses for approval before executing commands. You can also use `approval_policy = { granular = { ... } }` to allow or auto-reject specific prompt categories while keeping other prompts interactive. `on-failure` is deprecated; use `on-request` for interactive runs or `never` for non-interactive runs. | description:
2222| `approval_policy.granular.mcp_elicitations` | `boolean` | When `true`, MCP elicitation prompts are allowed to surface instead of being auto-rejected. | "Optional model override used by `/review` (defaults to the current session model).",
2323| `approval_policy.granular.request_permissions` | `boolean` | When `true`, prompts from the `request_permissions` tool are allowed to surface. | },
2424| `approval_policy.granular.rules` | `boolean` | When `true`, approvals triggered by execpolicy `prompt` rules are allowed to surface. | {
2525| `approval_policy.granular.sandbox_approval` | `boolean` | When `true`, sandbox escalation approval prompts are allowed to surface. | key: "model_provider",
2626| `approval_policy.granular.skill_approval` | `boolean` | When `true`, skill-script approval prompts are allowed to surface. | type: "string",
2727| `approvals_reviewer` | `user | auto_review` | 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. | description: "Provider id from `model_providers` (default: `openai`).",
2828| `apps._default.destructive_enabled` | `boolean` | Default allow/deny for app tools with `destructive_hint = true`. | },
2929| `apps._default.enabled` | `boolean` | Default app enabled state for all apps unless overridden per app. | {
3030| `apps._default.open_world_enabled` | `boolean` | Default allow/deny for app tools with `open_world_hint = true`. | key: "openai_base_url",
3131| `apps.<id>.default_tools_approval_mode` | `auto | prompt | approve` | Default approval behavior for tools in this app unless a per-tool override exists. | type: "string",
3232| `apps.<id>.default_tools_enabled` | `boolean` | Default enabled state for tools in this app unless a per-tool override exists. | description:
3333| `apps.<id>.destructive_enabled` | `boolean` | Allow or block tools in this app that advertise `destructive_hint = true`. | "Base URL override for the built-in `openai` model provider.",
3434| `apps.<id>.enabled` | `boolean` | Enable or disable a specific app/connector by id (default: true). | },
3535| `apps.<id>.open_world_enabled` | `boolean` | Allow or block tools in this app that advertise `open_world_hint = true`. | {
3636| `apps.<id>.tools.<tool>.approval_mode` | `auto | prompt | approve` | Per-tool approval behavior override for a single app tool. | key: "model_context_window",
3737| `apps.<id>.tools.<tool>.enabled` | `boolean` | Per-tool enabled override for an app tool (for example `repos/list`). | type: "number",
3838| `auto_review.policy` | `string` | Local Markdown policy instructions for automatic review. Managed `guardian_policy_config` takes precedence. Blank values are ignored. | description: "Context window tokens available to the active model.",
3939| `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. | },
4040| `chatgpt_base_url` | `string` | Override the base URL used during the ChatGPT login flow. | {
4141| `check_for_update_on_startup` | `boolean` | Check for Codex updates on startup (set to false only when updates are centrally managed). | key: "model_auto_compact_token_limit",
4242| `cli_auth_credentials_store` | `file | keyring | auto` | Control where the CLI stores cached credentials (file-based auth.json vs OS keychain). | type: "number",
4343| `commit_attribution` | `string` | Override the commit co-author trailer text. Set an empty string to disable automatic attribution. | description:
4444| `compact_prompt` | `string` | Inline override for the history compaction prompt. | "Token threshold that triggers automatic history compaction (unset uses model defaults).",
4545| `default_permissions` | `string` | Name of the default permissions profile to apply to sandboxed tool calls. | },
4646| `developer_instructions` | `string` | Additional developer instructions injected into the session (optional). | {
4747| `disable_paste_burst` | `boolean` | Disable burst-paste detection in the TUI. | key: "model_catalog_json",
4848| `experimental_compact_prompt_file` | `string (path)` | Load the compaction prompt override from a file (experimental). | type: "string (path)",
4949| `experimental_use_unified_exec_tool` | `boolean` | Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`. | description:
5050| `features.apps` | `boolean` | Enable ChatGPT Apps/connectors support (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.codex_hooks` | `boolean` | Enable lifecycle hooks loaded from `hooks.json` or inline `[hooks]` config. | },
5252| `features.enable_request_compression` | `boolean` | Compress streaming request bodies with zstd when supported (stable; on by default). | {
5353| `features.fast_mode` | `boolean` | Enable Fast mode selection and the `service_tier = "fast"` path (stable; on by default). | key: "oss_provider",
5454| `features.memories` | `boolean` | Enable [Memories](https://developers.openai.com/codex/memories) (off by default). | type: "lmstudio | ollama",
5555| `features.multi_agent` | `boolean` | Enable multi-agent collaboration tools (`spawn_agent`, `send_input`, `resume_agent`, `wait_agent`, and `close_agent`) (stable; on by default). | description:
5656| `features.personality` | `boolean` | Enable personality selection controls (stable; on by default). | "Default local provider used when running with `--oss` (defaults to prompting if unset).",
5757| `features.prevent_idle_sleep` | `boolean` | Prevent the machine from sleeping while a turn is actively running (experimental; off by default). | },
5858| `features.shell_snapshot` | `boolean` | Snapshot shell environment to speed up repeated commands (stable; on by default). | {
5959| `features.shell_tool` | `boolean` | Enable the default `shell` tool for running commands (stable; on by default). | key: "approval_policy",
6060| `features.skill_mcp_dependency_install` | `boolean` | Allow prompting and installing missing MCP dependencies for skills (stable; on by default). | type: "untrusted | on-request | never | { granular = { sandbox_approval = bool, rules = bool, mcp_elicitations = bool, request_permissions = bool, skill_approval = bool } }",
6161| `features.undo` | `boolean` | Enable undo support (stable; off by default). | description:
6262| `features.unified_exec` | `boolean` | Use the unified PTY-backed exec tool (stable; enabled by default except on Windows). | "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| `features.web_search` | `boolean` | Deprecated legacy toggle; prefer the top-level `web_search` setting. | },
6464| `features.web_search_cached` | `boolean` | Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "cached"`. | {
6565| `features.web_search_request` | `boolean` | Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "live"`. | key: "approval_policy.granular.sandbox_approval",
6666| `feedback.enabled` | `boolean` | Enable feedback submission via `/feedback` across Codex surfaces (default: true). | type: "boolean",
6767| `file_opener` | `vscode | vscode-insiders | windsurf | cursor | none` | URI scheme used to open citations from Codex output (default: `vscode`). | description:
6868| `forced_chatgpt_workspace_id` | `string (uuid)` | Limit ChatGPT logins to a specific workspace identifier. | "When `true`, sandbox escalation approval prompts are allowed to surface.",
6969| `forced_login_method` | `chatgpt | api` | Restrict Codex to a specific authentication method. | },
7070| `hide_agent_reasoning` | `boolean` | Suppress reasoning events in both the TUI and `codex exec` output. | {
7171| `history.max_bytes` | `number` | If set, caps the history file size in bytes by dropping oldest entries. | key: "approval_policy.granular.rules",
7272| `history.persistence` | `save-all | none` | Control whether Codex saves session transcripts to history.jsonl. | type: "boolean",
7373| `hooks` | `table` | Lifecycle hooks configured inline in `config.toml`. Uses the same event schema as `hooks.json`; see the Hooks guide for examples and supported events. | description:
7474| `instructions` | `string` | Reserved for future use; prefer `model_instructions_file` or `AGENTS.md`. | "When `true`, approvals triggered by execpolicy `prompt` rules are allowed to surface.",
7575| `log_dir` | `string (path)` | Directory where Codex writes log files (for example `codex-tui.log`); defaults to `$CODEX_HOME/log`. | },
7676| `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. | {
7777| `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. | key: "approval_policy.granular.mcp_elicitations",
7878| `mcp_oauth_credentials_store` | `auto | file | keyring` | Preferred store for MCP OAuth credentials. | type: "boolean",
7979| `mcp_servers.<id>.args` | `array<string>` | Arguments passed to the MCP stdio server command. | description:
8080| `mcp_servers.<id>.bearer_token_env_var` | `string` | Environment variable sourcing the bearer token for an MCP HTTP server. | "When `true`, MCP elicitation prompts are allowed to surface instead of being auto-rejected.",
8181| `mcp_servers.<id>.command` | `string` | Launcher command for an MCP stdio server. | },
8282| `mcp_servers.<id>.cwd` | `string` | Working directory for the MCP stdio server process. | {
8383| `mcp_servers.<id>.disabled_tools` | `array<string>` | Deny list applied after `enabled_tools` for the MCP server. | key: "approval_policy.granular.request_permissions",
8484| `mcp_servers.<id>.enabled` | `boolean` | Disable an MCP server without removing its configuration. | type: "boolean",
8585| `mcp_servers.<id>.enabled_tools` | `array<string>` | Allow list of tool names exposed by the MCP server. | description:
8686| `mcp_servers.<id>.env` | `map<string,string>` | Environment variables forwarded to the MCP stdio server. | "When `true`, prompts from the `request_permissions` tool are allowed to surface.",
8787| `mcp_servers.<id>.env_http_headers` | `map<string,string>` | HTTP headers populated from environment variables for an MCP HTTP server. | },
8888| `mcp_servers.<id>.env_vars` | `array<string | { name = string, source = "local" | "remote" }>` | 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. | {
8989| `mcp_servers.<id>.experimental_environment` | `local | remote` | Experimental placement for an MCP server. `remote` starts stdio servers through a remote executor environment; streamable HTTP remote placement is not implemented. | key: "approval_policy.granular.skill_approval",
9090| `mcp_servers.<id>.http_headers` | `map<string,string>` | Static HTTP headers included with each MCP HTTP request. | type: "boolean",
9191| `mcp_servers.<id>.oauth_resource` | `string` | Optional RFC 8707 OAuth resource parameter to include during MCP login. | description:
9292| `mcp_servers.<id>.required` | `boolean` | When true, fail startup/resume if this enabled MCP server cannot initialize. | "When `true`, skill-script approval prompts are allowed to surface.",
9393| `mcp_servers.<id>.scopes` | `array<string>` | OAuth scopes to request when authenticating to that MCP server. | },
9494| `mcp_servers.<id>.startup_timeout_ms` | `number` | Alias for `startup_timeout_sec` in milliseconds. | {
9595| `mcp_servers.<id>.startup_timeout_sec` | `number` | Override the default 10s startup timeout for an MCP server. | key: "approvals_reviewer",
9696| `mcp_servers.<id>.tool_timeout_sec` | `number` | Override the default 60s per-tool timeout for an MCP server. | type: "user | auto_review",
9797| `mcp_servers.<id>.url` | `string` | Endpoint for an MCP streamable HTTP server. | description:
9898| `memories.consolidation_model` | `string` | Optional model override for global memory consolidation. | "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| `memories.disable_on_external_context` | `boolean` | When `true`, threads that use external context such as MCP tool calls, web search, or tool search are kept out of memory generation. Defaults to `false`. Legacy alias: `memories.no_memories_if_mcp_or_web_search`. | },
100100| `memories.extract_model` | `string` | Optional model override for per-thread memory extraction. | {
101101| `memories.generate_memories` | `boolean` | When `false`, newly created threads are not stored as memory-generation inputs. Defaults to `true`. | key: "auto_review.policy",
102102| `memories.max_raw_memories_for_consolidation` | `number` | Maximum recent raw memories retained for global consolidation. Defaults to `256` and is capped at `4096`. | type: "string",
103103| `memories.max_rollout_age_days` | `number` | Maximum age of threads considered for memory generation. Defaults to `30` and is clamped to `0`-`90`. | description:
104104| `memories.max_rollouts_per_startup` | `number` | Maximum rollout candidates processed per startup pass. Defaults to `16` and is capped at `128`. | "Local Markdown policy instructions for automatic review. Managed `guardian_policy_config` takes precedence. Blank values are ignored.",
105105| `memories.max_unused_days` | `number` | Maximum days since a memory was last used before it becomes ineligible for consolidation. Defaults to `30` and is clamped to `0`-`365`. | },
106106| `memories.min_rate_limit_remaining_percent` | `number` | Minimum remaining percentage required in Codex rate-limit windows before memory generation starts. Defaults to `25` and is clamped to `0`-`100`. | {
107107| `memories.min_rollout_idle_hours` | `number` | Minimum idle time before a thread is considered for memory generation. Defaults to `6` and is clamped to `1`-`48`. | key: "allow_login_shell",
108108| `memories.use_memories` | `boolean` | When `false`, Codex skips injecting existing memories into future sessions. Defaults to `true`. | type: "boolean",
109109| `model` | `string` | Model to use (e.g., `gpt-5.5`). | description:
110110| `model_auto_compact_token_limit` | `number` | Token threshold that triggers automatic history compaction (unset uses model defaults). | "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_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. | },
112112| `model_context_window` | `number` | Context window tokens available to the active model. | {
113113| `model_instructions_file` | `string (path)` | Replacement for built-in instructions instead of `AGENTS.md`. | key: "sandbox_mode",
114114| `model_provider` | `string` | Provider id from `model_providers` (default: `openai`). | type: "read-only | workspace-write | danger-full-access",
115115| `model_providers.<id>` | `table` | Custom provider definition. Built-in provider IDs (`openai`, `ollama`, and `lmstudio`) are reserved and cannot be overridden. | description:
116116| `model_providers.<id>.auth` | `table` | Command-backed bearer token configuration for a custom provider. Do not combine with `env_key`, `experimental_bearer_token`, or `requires_openai_auth`. | "Sandbox policy for filesystem and network access during command execution.",
117117| `model_providers.<id>.auth.args` | `array<string>` | Arguments passed to the token command. | },
118118| `model_providers.<id>.auth.command` | `string` | Command to run when Codex needs a bearer token. The command must print the token to stdout. | {
119119| `model_providers.<id>.auth.cwd` | `string (path)` | Working directory for the token command. | key: "sandbox_workspace_write.writable_roots",
120120| `model_providers.<id>.auth.refresh_interval_ms` | `number` | How often Codex proactively refreshes the token in milliseconds (default: 300000). Set to `0` to refresh only after an authentication retry. | type: "array<string>",
121121| `model_providers.<id>.auth.timeout_ms` | `number` | Maximum token command runtime in milliseconds (default: 5000). | description:
122122| `model_providers.<id>.base_url` | `string` | API base URL for the model provider. | 'Additional writable roots when `sandbox_mode = "workspace-write"`.',
123123| `model_providers.<id>.env_http_headers` | `map<string,string>` | HTTP headers populated from environment variables when present. | },
124124| `model_providers.<id>.env_key` | `string` | Environment variable supplying the provider API key. | {
125125| `model_providers.<id>.env_key_instructions` | `string` | Optional setup guidance for the provider API key. | key: "sandbox_workspace_write.network_access",
126126| `model_providers.<id>.experimental_bearer_token` | `string` | Direct bearer token for the provider (discouraged; use `env_key`). | type: "boolean",
127127| `model_providers.<id>.http_headers` | `map<string,string>` | Static HTTP headers added to provider requests. | description:
128128| `model_providers.<id>.name` | `string` | Display name for a custom model provider. | "Allow outbound network access inside the workspace-write sandbox.",
129129| `model_providers.<id>.query_params` | `map<string,string>` | Extra query parameters appended to provider requests. | },
130130| `model_providers.<id>.request_max_retries` | `number` | Retry count for HTTP requests to the provider (default: 4). | {
131131| `model_providers.<id>.requires_openai_auth` | `boolean` | The provider uses OpenAI authentication (defaults to false). | key: "sandbox_workspace_write.exclude_tmpdir_env_var",
132132| `model_providers.<id>.stream_idle_timeout_ms` | `number` | Idle timeout for SSE streams in milliseconds (default: 300000). | type: "boolean",
133133| `model_providers.<id>.stream_max_retries` | `number` | Retry count for SSE streaming interruptions (default: 5). | description:
134134| `model_providers.<id>.supports_websockets` | `boolean` | Whether that provider supports the Responses API WebSocket transport. | "Exclude `$TMPDIR` from writable roots in workspace-write mode.",
135135| `model_providers.<id>.wire_api` | `responses` | Protocol used by the provider. `responses` is the only supported value, and it is the default when omitted. | },
136136| `model_reasoning_effort` | `minimal | low | medium | high | xhigh` | Adjust reasoning effort for supported models (Responses API only; `xhigh` is model-dependent). | {
137137| `model_reasoning_summary` | `auto | concise | detailed | none` | Select reasoning summary detail or disable summaries entirely. | key: "sandbox_workspace_write.exclude_slash_tmp",
138138| `model_supports_reasoning_summaries` | `boolean` | Force Codex to send or not send reasoning metadata. | type: "boolean",
139139| `model_verbosity` | `low | medium | high` | Optional GPT-5 Responses API verbosity override; when unset, the selected model/preset default is used. | description:
140140| `notice.hide_full_access_warning` | `boolean` | Track acknowledgement of the full access warning prompt. | "Exclude `/tmp` from writable roots in workspace-write mode.",
141141| `notice.hide_gpt-5.1-codex-max_migration_prompt` | `boolean` | Track acknowledgement of the gpt-5.1-codex-max migration prompt. | },
142142| `notice.hide_gpt5_1_migration_prompt` | `boolean` | Track acknowledgement of the GPT-5.1 migration prompt. | {
143143| `notice.hide_rate_limit_model_nudge` | `boolean` | Track opt-out of the rate limit model switch reminder. | key: "windows.sandbox",
144144| `notice.hide_world_writable_warning` | `boolean` | Track acknowledgement of the Windows world-writable directories warning. | type: "unelevated | elevated",
145145| `notice.model_migrations` | `map<string,string>` | Track acknowledged model migrations as old->new mappings. | description:
146146| `notify` | `array<string>` | Command invoked for notifications; receives a JSON payload from Codex. | "Windows-only native sandbox mode when running Codex natively on Windows.",
147147| `openai_base_url` | `string` | Base URL override for the built-in `openai` model provider. | },
148148| `oss_provider` | `lmstudio | ollama` | Default local provider used when running with `--oss` (defaults to prompting if unset). | {
149149| `otel.environment` | `string` | Environment tag applied to emitted OpenTelemetry events (default: `dev`). | key: "windows.sandbox_private_desktop",
150150| `otel.exporter` | `none | otlp-http | otlp-grpc` | Select the OpenTelemetry exporter and provide any endpoint metadata. | type: "boolean",
151151| `otel.exporter.<id>.endpoint` | `string` | Exporter endpoint for OTEL logs. | description:
152152| `otel.exporter.<id>.headers` | `map<string,string>` | Static headers included with OTEL exporter requests. | "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| `otel.exporter.<id>.protocol` | `binary | json` | Protocol used by the OTLP/HTTP exporter. | },
154154| `otel.exporter.<id>.tls.ca-certificate` | `string` | CA certificate path for OTEL exporter TLS. | {
155155| `otel.exporter.<id>.tls.client-certificate` | `string` | Client certificate path for OTEL exporter TLS. | key: "notify",
156156| `otel.exporter.<id>.tls.client-private-key` | `string` | Client private key path for OTEL exporter TLS. | type: "array<string>",
157157| `otel.log_user_prompt` | `boolean` | Opt in to exporting raw user prompts with OpenTelemetry logs. | description:
158158| `otel.metrics_exporter` | `none | statsig | otlp-http | otlp-grpc` | Select the OpenTelemetry metrics exporter (defaults to `statsig`). | "Command invoked for notifications; receives a JSON payload from Codex.",
159159| `otel.trace_exporter` | `none | otlp-http | otlp-grpc` | Select the OpenTelemetry trace exporter and provide any endpoint metadata. | },
160160| `otel.trace_exporter.<id>.endpoint` | `string` | Trace exporter endpoint for OTEL logs. | {
161161| `otel.trace_exporter.<id>.headers` | `map<string,string>` | Static headers included with OTEL trace exporter requests. | key: "check_for_update_on_startup",
162162| `otel.trace_exporter.<id>.protocol` | `binary | json` | Protocol used by the OTLP/HTTP trace exporter. | type: "boolean",
163163| `otel.trace_exporter.<id>.tls.ca-certificate` | `string` | CA certificate path for OTEL trace exporter TLS. | description:
164164| `otel.trace_exporter.<id>.tls.client-certificate` | `string` | Client certificate path for OTEL trace exporter TLS. | "Check for Codex updates on startup (set to false only when updates are centrally managed).",
165165| `otel.trace_exporter.<id>.tls.client-private-key` | `string` | Client private key path for OTEL trace exporter TLS. | },
166166| `permissions.<name>.filesystem` | `table` | Named filesystem permission profile. Each key is an absolute path or special token such as `:minimal` or `:project_roots`. | {
167167| `permissions.<name>.filesystem.":project_roots".<subpath-or-glob>` | `"read" | "write" | "none"` | Scoped filesystem access relative to the detected project roots. Use `"."` for the root itself; glob subpaths such as `"**/*.env"` can deny reads with `"none"`. | key: "feedback.enabled",
168168| `permissions.<name>.filesystem.<path-or-glob>` | `"read" | "write" | "none" | table` | 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. | type: "boolean",
169169| `permissions.<name>.filesystem.glob_scan_max_depth` | `number` | Maximum depth for expanding deny-read glob patterns on platforms that snapshot matches before sandbox startup. Must be at least `1` when set. | description:
170170| `permissions.<name>.network.allow_local_binding` | `boolean` | Permit local bind/listen operations through the managed proxy. | "Enable feedback submission via `/feedback` across Codex surfaces (default: true).",
171171| `permissions.<name>.network.allow_upstream_proxy` | `boolean` | Allow the managed proxy to chain to another upstream proxy. | },
172172| `permissions.<name>.network.dangerously_allow_all_unix_sockets` | `boolean` | Allow the proxy to use arbitrary Unix sockets instead of the default restricted set. | {
173173| `permissions.<name>.network.dangerously_allow_non_loopback_proxy` | `boolean` | Permit non-loopback bind addresses for the managed proxy listener. | key: "analytics.enabled",
174174| `permissions.<name>.network.domains` | `map<string, allow | deny>` | Domain rules for the managed proxy. Use domain names or wildcard patterns as keys, with `allow` or `deny` values. | type: "boolean",
175175| `permissions.<name>.network.enable_socks5` | `boolean` | Expose a SOCKS5 listener when this permissions profile enables the managed network proxy. | description:
176176| `permissions.<name>.network.enable_socks5_udp` | `boolean` | Allow UDP over the SOCKS5 listener when enabled. | "Enable or disable analytics for this machine/profile. When unset, the client default applies.",
177177| `permissions.<name>.network.enabled` | `boolean` | Enable network access for this named permissions profile. | },
178178| `permissions.<name>.network.mode` | `limited | full` | Network proxy mode used for subprocess traffic. | {
179179| `permissions.<name>.network.proxy_url` | `string` | HTTP proxy endpoint used when this permissions profile enables the managed network proxy. | key: "instructions",
180180| `permissions.<name>.network.socks_url` | `string` | SOCKS5 proxy endpoint used by this permissions profile. | type: "string",
181181| `permissions.<name>.network.unix_sockets` | `map<string, allow | none>` | Unix socket rules for the managed proxy. Use socket paths as keys, with `allow` or `none` values. | description:
182182| `personality` | `none | friendly | pragmatic` | Default communication style for models that advertise `supportsPersonality`; can be overridden per thread/turn or via `/personality`. | "Reserved for future use; prefer `model_instructions_file` or `AGENTS.md`.",
183183| `plan_mode_reasoning_effort` | `none | minimal | low | medium | high | xhigh` | Plan-mode-specific reasoning override. When unset, Plan mode uses its built-in preset default. | },
184184| `profile` | `string` | Default profile applied at startup (equivalent to `--profile`). | {
185185| `profiles.<name>.*` | `various` | Profile-scoped overrides for any of the supported configuration keys. | key: "developer_instructions",
186186| `profiles.<name>.analytics.enabled` | `boolean` | Profile-scoped analytics enablement override. | type: "string",
187187| `profiles.<name>.experimental_use_unified_exec_tool` | `boolean` | Legacy name for enabling unified exec; prefer `[features].unified_exec`. | description:
188188| `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). | "Additional developer instructions injected into the session (optional).",
189189| `profiles.<name>.model_instructions_file` | `string (path)` | Profile-scoped replacement for the built-in instruction file. | },
190190| `profiles.<name>.oss_provider` | `lmstudio | ollama` | Profile-scoped OSS provider for `--oss` sessions. | {
191191| `profiles.<name>.personality` | `none | friendly | pragmatic` | Profile-scoped communication style override for supported models. | key: "log_dir",
192192| `profiles.<name>.plan_mode_reasoning_effort` | `none | minimal | low | medium | high | xhigh` | Profile-scoped Plan-mode reasoning override. | type: "string (path)",
193193| `profiles.<name>.service_tier` | `flex | fast` | Profile-scoped service tier preference for new turns. | description:
194194| `profiles.<name>.tools_view_image` | `boolean` | Enable or disable the `view_image` tool in that profile. | "Directory where Codex writes log files (for example `codex-tui.log`); defaults to `$CODEX_HOME/log`.",
195195| `profiles.<name>.web_search` | `disabled | cached | live` | Profile-scoped web search mode override (default: `"cached"`). | },
196196| `profiles.<name>.windows.sandbox` | `unelevated | elevated` | Profile-scoped Windows sandbox mode override. | {
197197| `project_doc_fallback_filenames` | `array<string>` | Additional filenames to try when `AGENTS.md` is missing. | key: "sqlite_home",
198198| `project_doc_max_bytes` | `number` | Maximum bytes read from `AGENTS.md` when building project instructions. | type: "string (path)",
199199| `project_root_markers` | `array<string>` | List of project root marker filenames; used when searching parent directories for the project root. | description:
200200| `projects.<path>.trust_level` | `string` | 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. | "Directory where Codex stores the SQLite-backed state DB used by agent jobs and other resumable runtime state.",
201201| `review_model` | `string` | Optional model override used by `/review` (defaults to the current session model). | },
202202| `sandbox_mode` | `read-only | workspace-write | danger-full-access` | Sandbox policy for filesystem and network access during command execution. | {
203203| `sandbox_workspace_write.exclude_slash_tmp` | `boolean` | Exclude `/tmp` from writable roots in workspace-write mode. | key: "compact_prompt",
204204| `sandbox_workspace_write.exclude_tmpdir_env_var` | `boolean` | Exclude `$TMPDIR` from writable roots in workspace-write mode. | type: "string",
205205| `sandbox_workspace_write.network_access` | `boolean` | Allow outbound network access inside the workspace-write sandbox. | description: "Inline override for the history compaction prompt.",
206206| `sandbox_workspace_write.writable_roots` | `array<string>` | Additional writable roots when `sandbox_mode = "workspace-write"`. | },
207207| `service_tier` | `flex | fast` | Preferred service tier for new turns. | {
208208| `shell_environment_policy.exclude` | `array<string>` | Glob patterns for removing environment variables after the defaults. | key: "commit_attribution",
209209| `shell_environment_policy.experimental_use_profile` | `boolean` | Use the user shell profile when spawning subprocesses. | type: "string",
210210| `shell_environment_policy.ignore_default_excludes` | `boolean` | Keep variables containing KEY/SECRET/TOKEN before other filters run. | description:
211211| `shell_environment_policy.include_only` | `array<string>` | Whitelist of patterns; when set only matching variables are kept. | "Override the commit co-author trailer text. Set an empty string to disable automatic attribution.",
212212| `shell_environment_policy.inherit` | `all | core | none` | Baseline environment inheritance when spawning subprocesses. | },
213213| `shell_environment_policy.set` | `map<string,string>` | Explicit environment overrides injected into every subprocess. | {
214214| `show_raw_agent_reasoning` | `boolean` | Surface raw reasoning content when the active model emits it. | key: "model_instructions_file",
215215| `skills.config` | `array<object>` | Per-skill enablement overrides stored in config.toml. | type: "string (path)",
216216| `skills.config.<index>.enabled` | `boolean` | Enable or disable the referenced skill. | description:
217217| `skills.config.<index>.path` | `string (path)` | Path to a skill folder containing `SKILL.md`. | "Replacement for built-in instructions instead of `AGENTS.md`.",
218218| `sqlite_home` | `string (path)` | Directory where Codex stores the SQLite-backed state DB used by agent jobs and other resumable runtime state. | },
219219| `suppress_unstable_features_warning` | `boolean` | Suppress the warning that appears when under-development feature flags are enabled. | {
220220| `tool_output_token_limit` | `number` | Token budget for storing individual tool/function outputs in history. | key: "personality",
221221| `tool_suggest.discoverables` | `array<table>` | Allow tool suggestions for additional discoverable connectors or plugins. Each entry uses `type = "connector"` or `"plugin"` and an `id`. | type: "none | friendly | pragmatic",
222222| `tools.view_image` | `boolean` | Enable the local-image attachment tool `view_image`. | description:
223223| `tools.web_search` | `boolean | { context_size = "low|medium|high", allowed_domains = [string], location = { country, region, city, timezone } }` | Optional web search tool configuration. The legacy boolean form is still accepted, but the object form lets you set search context size, allowed domains, and approximate user location. | "Default communication style for models that advertise `supportsPersonality`; can be overridden per thread/turn or via `/personality`.",
224224| `tui` | `table` | TUI-specific options such as enabling inline desktop notifications. | },
225225| `tui.alternate_screen` | `auto | always | never` | Control alternate screen usage for the TUI (default: auto; auto skips it in Zellij to preserve scrollback). | {
226226| `tui.animations` | `boolean` | Enable terminal animations (welcome screen, shimmer, spinner) (default: true). | key: "service_tier",
227227| `tui.model_availability_nux.<model>` | `integer` | Internal startup-tooltip state keyed by model slug. | type: "flex | fast",
228228| `tui.notification_condition` | `unfocused | always` | Control whether TUI notifications fire only when the terminal is unfocused or regardless of focus. Defaults to `unfocused`. | description: "Preferred service tier for new turns.",
229229| `tui.notification_method` | `auto | osc9 | bel` | Notification method for terminal notifications (default: auto). | },
230230| `tui.notifications` | `boolean | array<string>` | Enable TUI notifications; optionally restrict to specific event types. | {
231231| `tui.show_tooltips` | `boolean` | Show onboarding tooltips in the TUI welcome screen (default: true). | key: "experimental_compact_prompt_file",
232232| `tui.status_line` | `array<string> | null` | Ordered list of TUI footer status-line item identifiers. `null` disables the status line. | type: "string (path)",
233233| `tui.terminal_title` | `array<string> | null` | Ordered list of terminal window/tab title item identifiers. Defaults to `["spinner", "project"]`; `null` disables title updates. | description:
234234| `tui.theme` | `string` | Syntax-highlighting theme override (kebab-case theme name). | "Load the compaction prompt override from a file (experimental).",
235235| `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. | },
236236| `windows_wsl_setup_acknowledged` | `boolean` | Track Windows onboarding acknowledgement (Windows only). | {
237237| `windows.sandbox` | `unelevated | elevated` | Windows-only native sandbox mode when running Codex natively on Windows. | key: "skills.config",
238238| `windows.sandbox_private_desktop` | `boolean` | Run the final sandboxed child process on a private desktop by default on native Windows. Set `false` only for compatibility with the older `Winsta0\\Default` behavior. | type: "array<object>",
239239 description: "Per-skill enablement overrides stored in config.toml.",
240240Key },
241241 {
242242`agents.<name>.config_file` key: "skills.config.<index>.path",
243243 type: "string (path)",
244244Type / Values description: "Path to a skill folder containing `SKILL.md`.",
245245 },
246246`string (path)` {
247247 key: "skills.config.<index>.enabled",
248248Details type: "boolean",
249249 description: "Enable or disable the referenced skill.",
250250Path to a TOML config layer for that role; relative paths resolve from the config file that declares the role. },
251251 {
252252Key key: "apps.<id>.enabled",
253253 type: "boolean",
254254`agents.<name>.description` description:
255255 "Enable or disable a specific app/connector by id (default: true).",
256256Type / Values },
257257 {
258258`string` key: "apps._default.enabled",
259259 type: "boolean",
260260Details description:
261261 "Default app enabled state for all apps unless overridden per app.",
262262Role guidance shown to Codex when choosing and spawning that agent type. },
263263 {
264264Key key: "apps._default.destructive_enabled",
265265 type: "boolean",
266266`agents.<name>.nickname_candidates` description:
267267 "Default allow/deny for app tools with `destructive_hint = true`.",
268268Type / Values },
269269 {
270270`array<string>` key: "apps._default.open_world_enabled",
271271 type: "boolean",
272272Details description:
273273 "Default allow/deny for app tools with `open_world_hint = true`.",
274274Optional pool of display nicknames for spawned agents in that role. },
275275 {
276276Key key: "apps.<id>.destructive_enabled",
277277 type: "boolean",
278278`agents.job_max_runtime_seconds` description:
279279 "Allow or block tools in this app that advertise `destructive_hint = true`.",
280280Type / Values },
281281 {
282282`number` key: "apps.<id>.open_world_enabled",
283283 type: "boolean",
284284Details description:
285285 "Allow or block tools in this app that advertise `open_world_hint = true`.",
286286Default per-worker timeout for `spawn_agents_on_csv` jobs. When unset, the tool falls back to 1800 seconds per worker. },
287287 {
288288Key key: "apps.<id>.default_tools_enabled",
289289 type: "boolean",
290290`agents.max_depth` description:
291291 "Default enabled state for tools in this app unless a per-tool override exists.",
292292Type / Values },
293293 {
294294`number` key: "apps.<id>.default_tools_approval_mode",
295295 type: "auto | prompt | approve",
296296Details description:
297297 "Default approval behavior for tools in this app unless a per-tool override exists.",
298298Maximum nesting depth allowed for spawned agent threads (root sessions start at depth 0; default: 1). },
299299 {
300300Key key: "apps.<id>.tools.<tool>.enabled",
301301 type: "boolean",
302302`agents.max_threads` description:
303303 "Per-tool enabled override for an app tool (for example `repos/list`).",
304304Type / Values },
305305 {
306306`number` key: "apps.<id>.tools.<tool>.approval_mode",
307307 type: "auto | prompt | approve",
308308Details description: "Per-tool approval behavior override for a single app tool.",
309309 },
310310Maximum number of agent threads that can be open concurrently. Defaults to `6` when unset. {
311311 key: "tool_suggest.discoverables",
312312Key type: "array<table>",
313313 description:
314314`allow_login_shell` 'Allow tool suggestions for additional discoverable connectors or plugins. Each entry uses `type = "connector"` or `"plugin"` and an `id`.',
315315 },
316316Type / Values {
317317 key: "tool_suggest.disabled_tools",
318318`boolean` type: "array<table>",
319319 description:
320320Details 'Disable suggestions for specific discoverable connectors or plugins. Each entry uses `type = "connector"` or `"plugin"` and an `id`.',
321321 },
322322Allow 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. {
323323 key: "features.apps",
324324Key type: "boolean",
325325 description: "Enable ChatGPT Apps/connectors support (experimental).",
326326`analytics.enabled` },
327327 {
328328Type / Values key: "features.codex_hooks",
329329 type: "boolean",
330330`boolean` description:
331331 "Enable lifecycle hooks loaded from `hooks.json` or inline `[hooks]` config.",
332332Details },
333333 {
334334Enable or disable analytics for this machine/profile. When unset, the client default applies. key: "hooks",
335335 type: "table",
336336Key description:
337337 "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`approval_policy` },
339339 {
340340Type / Values key: "features.memories",
341341 type: "boolean",
342342`untrusted | on-request | never | { granular = { sandbox_approval = bool, rules = bool, mcp_elicitations = bool, request_permissions = bool, skill_approval = bool } }` description: "Enable [Memories](https://developers.openai.com/codex/memories) (off by default).",
343343 },
344344Details {
345345 key: "mcp_servers.<id>.command",
346346Controls 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. type: "string",
347347 description: "Launcher command for an MCP stdio server.",
348348Key },
349349 {
350350`approval_policy.granular.mcp_elicitations` key: "mcp_servers.<id>.args",
351351 type: "array<string>",
352352Type / Values description: "Arguments passed to the MCP stdio server command.",
353353 },
354354`boolean` {
355355 key: "mcp_servers.<id>.env",
356356Details type: "map<string,string>",
357357 description: "Environment variables forwarded to the MCP stdio server.",
358358When `true`, MCP elicitation prompts are allowed to surface instead of being auto-rejected. },
359359 {
360360Key key: "mcp_servers.<id>.env_vars",
361361 type: 'array<string | { name = string, source = "local" | "remote" }>',
362362`approval_policy.granular.request_permissions` description:
363363 '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.',
364364Type / Values },
365365 {
366366`boolean` key: "mcp_servers.<id>.cwd",
367367 type: "string",
368368Details description: "Working directory for the MCP stdio server process.",
369369 },
370370When `true`, prompts from the `request_permissions` tool are allowed to surface. {
371371 key: "mcp_servers.<id>.url",
372372Key type: "string",
373373 description: "Endpoint for an MCP streamable HTTP server.",
374374`approval_policy.granular.rules` },
375375 {
376376Type / Values key: "mcp_servers.<id>.bearer_token_env_var",
377377 type: "string",
378378`boolean` description:
379379 "Environment variable sourcing the bearer token for an MCP HTTP server.",
380380Details },
381381 {
382382When `true`, approvals triggered by execpolicy `prompt` rules are allowed to surface. key: "mcp_servers.<id>.http_headers",
383383 type: "map<string,string>",
384384Key description: "Static HTTP headers included with each MCP HTTP request.",
385385 },
386386`approval_policy.granular.sandbox_approval` {
387387 key: "mcp_servers.<id>.env_http_headers",
388388Type / Values type: "map<string,string>",
389389 description:
390390`boolean` "HTTP headers populated from environment variables for an MCP HTTP server.",
391391 },
392392Details {
393393 key: "mcp_servers.<id>.enabled",
394394When `true`, sandbox escalation approval prompts are allowed to surface. type: "boolean",
395395 description: "Disable an MCP server without removing its configuration.",
396396Key },
397397 {
398398`approval_policy.granular.skill_approval` key: "mcp_servers.<id>.required",
399399 type: "boolean",
400400Type / Values description:
401401 "When true, fail startup/resume if this enabled MCP server cannot initialize.",
402402`boolean` },
403403 {
404404Details key: "mcp_servers.<id>.startup_timeout_sec",
405405 type: "number",
406406When `true`, skill-script approval prompts are allowed to surface. description:
407407 "Override the default 10s startup timeout for an MCP server.",
408408Key },
409409 {
410410`approvals_reviewer` key: "mcp_servers.<id>.startup_timeout_ms",
411411 type: "number",
412412Type / Values description: "Alias for `startup_timeout_sec` in milliseconds.",
413413 },
414414`user | auto_review` {
415415 key: "mcp_servers.<id>.tool_timeout_sec",
416416Details type: "number",
417417 description:
418418Who 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. "Override the default 60s per-tool timeout for an MCP server.",
419419 },
420420Key {
421421 key: "mcp_servers.<id>.enabled_tools",
422422`apps._default.destructive_enabled` type: "array<string>",
423423 description: "Allow list of tool names exposed by the MCP server.",
424424Type / Values },
425425 {
426426`boolean` key: "mcp_servers.<id>.disabled_tools",
427427 type: "array<string>",
428428Details description:
429429 "Deny list applied after `enabled_tools` for the MCP server.",
430430Default allow/deny for app tools with `destructive_hint = true`. },
431431 {
432432Key key: "mcp_servers.<id>.scopes",
433433 type: "array<string>",
434434`apps._default.enabled` description:
435435 "OAuth scopes to request when authenticating to that MCP server.",
436436Type / Values },
437437 {
438438`boolean` key: "mcp_servers.<id>.oauth_resource",
439439 type: "string",
440440Details description:
441441 "Optional RFC 8707 OAuth resource parameter to include during MCP login.",
442442Default app enabled state for all apps unless overridden per app. },
443443 {
444444Key key: "mcp_servers.<id>.experimental_environment",
445445 type: "local | remote",
446446`apps._default.open_world_enabled` description:
447447 "Experimental placement for an MCP server. `remote` starts stdio servers through a remote executor environment; streamable HTTP remote placement is not implemented.",
448448Type / Values },
449449 {
450450`boolean` key: "agents.max_threads",
451451 type: "number",
452452Details description:
453453 "Maximum number of agent threads that can be open concurrently. Defaults to `6` when unset.",
454454Default allow/deny for app tools with `open_world_hint = true`. },
455455 {
456456Key key: "agents.max_depth",
457457 type: "number",
458458`apps.<id>.default_tools_approval_mode` description:
459459 "Maximum nesting depth allowed for spawned agent threads (root sessions start at depth 0; default: 1).",
460460Type / Values },
461461 {
462462`auto | prompt | approve` key: "agents.job_max_runtime_seconds",
463463 type: "number",
464464Details description:
465465 "Default per-worker timeout for `spawn_agents_on_csv` jobs. When unset, the tool falls back to 1800 seconds per worker.",
466466Default approval behavior for tools in this app unless a per-tool override exists. },
467467 {
468468Key key: "agents.<name>.description",
469469 type: "string",
470470`apps.<id>.default_tools_enabled` description:
471471 "Role guidance shown to Codex when choosing and spawning that agent type.",
472472Type / Values },
473473 {
474474`boolean` key: "agents.<name>.config_file",
475475 type: "string (path)",
476476Details description:
477477 "Path to a TOML config layer for that role; relative paths resolve from the config file that declares the role.",
478478Default enabled state for tools in this app unless a per-tool override exists. },
479479 {
480480Key key: "agents.<name>.nickname_candidates",
481481 type: "array<string>",
482482`apps.<id>.destructive_enabled` description:
483483 "Optional pool of display nicknames for spawned agents in that role.",
484484Type / Values },
485485 {
486486`boolean` key: "memories.generate_memories",
487487 type: "boolean",
488488Details description:
489489 "When `false`, newly created threads are not stored as memory-generation inputs. Defaults to `true`.",
490490Allow or block tools in this app that advertise `destructive_hint = true`. },
491491 {
492492Key key: "memories.use_memories",
493493 type: "boolean",
494494`apps.<id>.enabled` description:
495495 "When `false`, Codex skips injecting existing memories into future sessions. Defaults to `true`.",
496496Type / Values },
497497 {
498498`boolean` key: "memories.disable_on_external_context",
499499 type: "boolean",
500500Details description:
501501 "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`.",
502502Enable or disable a specific app/connector by id (default: true). },
503503 {
504504Key key: "memories.max_raw_memories_for_consolidation",
505505 type: "number",
506506`apps.<id>.open_world_enabled` description:
507507 "Maximum recent raw memories retained for global consolidation. Defaults to `256` and is capped at `4096`.",
508508Type / Values },
509509 {
510510`boolean` key: "memories.max_unused_days",
511511 type: "number",
512512Details description:
513513 "Maximum days since a memory was last used before it becomes ineligible for consolidation. Defaults to `30` and is clamped to `0`-`365`.",
514514Allow or block tools in this app that advertise `open_world_hint = true`. },
515515 {
516516Key key: "memories.max_rollout_age_days",
517517 type: "number",
518518`apps.<id>.tools.<tool>.approval_mode` description:
519519 "Maximum age of threads considered for memory generation. Defaults to `30` and is clamped to `0`-`90`.",
520520Type / Values },
521521 {
522522`auto | prompt | approve` key: "memories.max_rollouts_per_startup",
523523 type: "number",
524524Details description:
525525 "Maximum rollout candidates processed per startup pass. Defaults to `16` and is capped at `128`.",
526526Per-tool approval behavior override for a single app tool. },
527527 {
528528Key key: "memories.min_rollout_idle_hours",
529529 type: "number",
530530`apps.<id>.tools.<tool>.enabled` description:
531531 "Minimum idle time before a thread is considered for memory generation. Defaults to `6` and is clamped to `1`-`48`.",
532532Type / Values },
533533 {
534534`boolean` key: "memories.min_rate_limit_remaining_percent",
535535 type: "number",
536536Details description:
537537 "Minimum remaining percentage required in Codex rate-limit windows before memory generation starts. Defaults to `25` and is clamped to `0`-`100`.",
538538Per-tool enabled override for an app tool (for example `repos/list`). },
539539 {
540540Key key: "memories.extract_model",
541541 type: "string",
542542`auto_review.policy` description: "Optional model override for per-thread memory extraction.",
543543 },
544544Type / Values {
545545 key: "memories.consolidation_model",
546546`string` type: "string",
547547 description: "Optional model override for global memory consolidation.",
548548Details },
549549 {
550550Local Markdown policy instructions for automatic review. Managed `guardian_policy_config` takes precedence. Blank values are ignored. key: "features.unified_exec",
551551 type: "boolean",
552552Key description:
553553 "Use the unified PTY-backed exec tool (stable; enabled by default except on Windows).",
554554`background_terminal_max_timeout` },
555555 {
556556Type / Values key: "features.shell_snapshot",
557557 type: "boolean",
558558`number` description:
559559 "Snapshot shell environment to speed up repeated commands (stable; on by default).",
560560Details },
561561 {
562562Maximum poll window in milliseconds for empty `write_stdin` polls (background terminal polling). Default: `300000` (5 minutes). Replaces the older `background_terminal_timeout` key. key: "features.undo",
563563 type: "boolean",
564564Key description: "Enable undo support (stable; off by default).",
565565 },
566566`chatgpt_base_url` {
567567 key: "features.multi_agent",
568568Type / Values type: "boolean",
569569 description:
570570`string` "Enable multi-agent collaboration tools (`spawn_agent`, `send_input`, `resume_agent`, `wait_agent`, and `close_agent`) (stable; on by default).",
571571 },
572572Details {
573573 key: "features.personality",
574574Override the base URL used during the ChatGPT login flow. type: "boolean",
575575 description:
576576Key "Enable personality selection controls (stable; on by default).",
577577 },
578578`check_for_update_on_startup` {
579579 key: "features.web_search",
580580Type / Values type: "boolean",
581581 description:
582582`boolean` "Deprecated legacy toggle; prefer the top-level `web_search` setting.",
583583 },
584584Details {
585585 key: "features.web_search_cached",
586586Check for Codex updates on startup (set to false only when updates are centrally managed). type: "boolean",
587587 description:
588588Key 'Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "cached"`.',
589589 },
590590`cli_auth_credentials_store` {
591591 key: "features.web_search_request",
592592Type / Values type: "boolean",
593593 description:
594594`file | keyring | auto` 'Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "live"`.',
595595 },
596596Details {
597597 key: "features.shell_tool",
598598Control where the CLI stores cached credentials (file-based auth.json vs OS keychain). type: "boolean",
599599 description:
600600Key "Enable the default `shell` tool for running commands (stable; on by default).",
601601 },
602602`commit_attribution` {
603603 key: "features.enable_request_compression",
604604Type / Values type: "boolean",
605605 description:
606606`string` "Compress streaming request bodies with zstd when supported (stable; on by default).",
607607 },
608608Details {
609609 key: "features.skill_mcp_dependency_install",
610610Override the commit co-author trailer text. Set an empty string to disable automatic attribution. type: "boolean",
611611 description:
612612Key "Allow prompting and installing missing MCP dependencies for skills (stable; on by default).",
613613 },
614614`compact_prompt` {
615615 key: "features.fast_mode",
616616Type / Values type: "boolean",
617617 description:
618618`string` 'Enable Fast mode selection and the `service_tier = "fast"` path (stable; on by default).',
619619 },
620620Details {
621621 key: "features.prevent_idle_sleep",
622622Inline override for the history compaction prompt. type: "boolean",
623623 description:
624624Key "Prevent the machine from sleeping while a turn is actively running (experimental; off by default).",
625625 },
626626`default_permissions` {
627627 key: "suppress_unstable_features_warning",
628628Type / Values type: "boolean",
629629 description:
630630`string` "Suppress the warning that appears when under-development feature flags are enabled.",
631631 },
632632Details {
633633 key: "model_providers.<id>",
634634Name of the default permissions profile to apply to sandboxed tool calls. type: "table",
635635 description:
636636Key "Custom provider definition. Built-in provider IDs (`openai`, `ollama`, and `lmstudio`) are reserved and cannot be overridden.",
637637 },
638638`developer_instructions` {
639639 key: "model_providers.<id>.name",
640640Type / Values type: "string",
641641 description: "Display name for a custom model provider.",
642642`string` },
643643 {
644644Details key: "model_providers.<id>.base_url",
645645 type: "string",
646646Additional developer instructions injected into the session (optional). description: "API base URL for the model provider.",
647647 },
648648Key {
649649 key: "model_providers.<id>.env_key",
650650`disable_paste_burst` type: "string",
651651 description: "Environment variable supplying the provider API key.",
652652Type / Values },
653653 {
654654`boolean` key: "model_providers.<id>.env_key_instructions",
655655 type: "string",
656656Details description: "Optional setup guidance for the provider API key.",
657657 },
658658Disable burst-paste detection in the TUI. {
659659 key: "model_providers.<id>.experimental_bearer_token",
660660Key type: "string",
661661 description:
662662`experimental_compact_prompt_file` "Direct bearer token for the provider (discouraged; use `env_key`).",
663663 },
664664Type / Values {
665665 key: "model_providers.<id>.requires_openai_auth",
666666`string (path)` type: "boolean",
667667 description:
668668Details "The provider uses OpenAI authentication (defaults to false).",
669669 },
670670Load the compaction prompt override from a file (experimental). {
671671 key: "model_providers.<id>.wire_api",
672672Key type: "responses",
673673 description:
674674`experimental_use_unified_exec_tool` "Protocol used by the provider. `responses` is the only supported value, and it is the default when omitted.",
675675 },
676676Type / Values {
677677 key: "model_providers.<id>.query_params",
678678`boolean` type: "map<string,string>",
679679 description: "Extra query parameters appended to provider requests.",
680680Details },
681681 {
682682Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`. key: "model_providers.<id>.http_headers",
683683 type: "map<string,string>",
684684Key description: "Static HTTP headers added to provider requests.",
685685 },
686686`features.apps` {
687687 key: "model_providers.<id>.env_http_headers",
688688Type / Values type: "map<string,string>",
689689 description:
690690`boolean` "HTTP headers populated from environment variables when present.",
691691 },
692692Details {
693693 key: "model_providers.<id>.request_max_retries",
694694Enable ChatGPT Apps/connectors support (experimental). type: "number",
695695 description:
696696Key "Retry count for HTTP requests to the provider (default: 4).",
697697 },
698698`features.codex_hooks` {
699699 key: "model_providers.<id>.stream_max_retries",
700700Type / Values type: "number",
701701 description: "Retry count for SSE streaming interruptions (default: 5).",
702702`boolean` },
703703 {
704704Details key: "model_providers.<id>.stream_idle_timeout_ms",
705705 type: "number",
706706Enable lifecycle hooks loaded from `hooks.json` or inline `[hooks]` config. description:
707707 "Idle timeout for SSE streams in milliseconds (default: 300000).",
708708Key },
709709 {
710710`features.enable_request_compression` key: "model_providers.<id>.supports_websockets",
711711 type: "boolean",
712712Type / Values description:
713713 "Whether that provider supports the Responses API WebSocket transport.",
714714`boolean` },
715715 {
716716Details key: "model_providers.<id>.auth",
717717 type: "table",
718718Compress streaming request bodies with zstd when supported (stable; on by default). description:
719719 "Command-backed bearer token configuration for a custom provider. Do not combine with `env_key`, `experimental_bearer_token`, or `requires_openai_auth`.",
720720Key },
721721 {
722722`features.fast_mode` key: "model_providers.<id>.auth.command",
723723 type: "string",
724724Type / Values description:
725725 "Command to run when Codex needs a bearer token. The command must print the token to stdout.",
726726`boolean` },
727727 {
728728Details key: "model_providers.<id>.auth.args",
729729 type: "array<string>",
730730Enable Fast mode selection and the `service_tier = "fast"` path (stable; on by default). description: "Arguments passed to the token command.",
731731 },
732732Key {
733733 key: "model_providers.<id>.auth.timeout_ms",
734734`features.memories` type: "number",
735735 description:
736736Type / Values "Maximum token command runtime in milliseconds (default: 5000).",
737737 },
738738`boolean` {
739739 key: "model_providers.<id>.auth.refresh_interval_ms",
740740Details type: "number",
741741 description:
742742Enable [Memories](https://developers.openai.com/codex/memories) (off by default). "How often Codex proactively refreshes the token in milliseconds (default: 300000). Set to `0` to refresh only after an authentication retry.",
743743 },
744744Key {
745745 key: "model_providers.<id>.auth.cwd",
746746`features.multi_agent` type: "string (path)",
747747 description: "Working directory for the token command.",
748748Type / Values },
749749 {
750750`boolean` key: "model_providers.amazon-bedrock.aws.profile",
751751 type: "string",
752752Details description:
753753 "AWS profile name used by the built-in `amazon-bedrock` provider.",
754754Enable multi-agent collaboration tools (`spawn_agent`, `send_input`, `resume_agent`, `wait_agent`, and `close_agent`) (stable; on by default). },
755755 {
756756Key key: "model_providers.amazon-bedrock.aws.region",
757757 type: "string",
758758`features.personality` description: "AWS region used by the built-in `amazon-bedrock` provider.",
759759 },
760760Type / Values {
761761 key: "model_reasoning_effort",
762762`boolean` type: "minimal | low | medium | high | xhigh",
763763 description:
764764Details "Adjust reasoning effort for supported models (Responses API only; `xhigh` is model-dependent).",
765765 },
766766Enable personality selection controls (stable; on by default). {
767767 key: "plan_mode_reasoning_effort",
768768Key type: "none | minimal | low | medium | high | xhigh",
769769 description:
770770`features.prevent_idle_sleep` "Plan-mode-specific reasoning override. When unset, Plan mode uses its built-in preset default.",
771771 },
772772Type / Values {
773773 key: "model_reasoning_summary",
774774`boolean` type: "auto | concise | detailed | none",
775775 description:
776776Details "Select reasoning summary detail or disable summaries entirely.",
777777 },
778778Prevent the machine from sleeping while a turn is actively running (experimental; off by default). {
779779 key: "model_verbosity",
780780Key type: "low | medium | high",
781781 description:
782782`features.shell_snapshot` "Optional GPT-5 Responses API verbosity override; when unset, the selected model/preset default is used.",
783783 },
784784Type / Values {
785785 key: "model_supports_reasoning_summaries",
786786`boolean` type: "boolean",
787787 description: "Force Codex to send or not send reasoning metadata.",
788788Details },
789789 {
790790Snapshot shell environment to speed up repeated commands (stable; on by default). key: "shell_environment_policy.inherit",
791791 type: "all | core | none",
792792Key description:
793793 "Baseline environment inheritance when spawning subprocesses.",
794794`features.shell_tool` },
795795 {
796796Type / Values key: "shell_environment_policy.ignore_default_excludes",
797797 type: "boolean",
798798`boolean` description:
799799 "Keep variables containing KEY/SECRET/TOKEN before other filters run.",
800800Details },
801801 {
802802Enable the default `shell` tool for running commands (stable; on by default). key: "shell_environment_policy.exclude",
803803 type: "array<string>",
804804Key description:
805805 "Glob patterns for removing environment variables after the defaults.",
806806`features.skill_mcp_dependency_install` },
807807 {
808808Type / Values key: "shell_environment_policy.include_only",
809809 type: "array<string>",
810810`boolean` description:
811811 "Whitelist of patterns; when set only matching variables are kept.",
812812Details },
813813 {
814814Allow prompting and installing missing MCP dependencies for skills (stable; on by default). key: "shell_environment_policy.set",
815815 type: "map<string,string>",
816816Key description:
817817 "Explicit environment overrides injected into every subprocess.",
818818`features.undo` },
819819 {
820820Type / Values key: "shell_environment_policy.experimental_use_profile",
821821 type: "boolean",
822822`boolean` description: "Use the user shell profile when spawning subprocesses.",
823823 },
824824Details {
825825 key: "project_root_markers",
826826Enable undo support (stable; off by default). type: "array<string>",
827827 description:
828828Key "List of project root marker filenames; used when searching parent directories for the project root.",
829829 },
830830`features.unified_exec` {
831831 key: "project_doc_max_bytes",
832832Type / Values type: "number",
833833 description:
834834`boolean` "Maximum bytes read from `AGENTS.md` when building project instructions.",
835835 },
836836Details {
837837 key: "project_doc_fallback_filenames",
838838Use the unified PTY-backed exec tool (stable; enabled by default except on Windows). type: "array<string>",
839839 description: "Additional filenames to try when `AGENTS.md` is missing.",
840840Key },
841841 {
842842`features.web_search` key: "profile",
843843 type: "string",
844844Type / Values description:
845845 "Default profile applied at startup (equivalent to `--profile`).",
846846`boolean` },
847847 {
848848Details key: "profiles.<name>.*",
849849 type: "various",
850850Deprecated legacy toggle; prefer the top-level `web_search` setting. description:
851851 "Profile-scoped overrides for any of the supported configuration keys.",
852852Key },
853853 {
854854`features.web_search_cached` key: "profiles.<name>.service_tier",
855855 type: "flex | fast",
856856Type / Values description: "Profile-scoped service tier preference for new turns.",
857857 },
858858`boolean` {
859859 key: "profiles.<name>.plan_mode_reasoning_effort",
860860Details type: "none | minimal | low | medium | high | xhigh",
861861 description: "Profile-scoped Plan-mode reasoning override.",
862862Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "cached"`. },
863863 {
864864Key key: "profiles.<name>.web_search",
865865 type: "disabled | cached | live",
866866`features.web_search_request` description:
867867 'Profile-scoped web search mode override (default: `"cached"`).',
868868Type / Values },
869869 {
870870`boolean` key: "profiles.<name>.personality",
871871 type: "none | friendly | pragmatic",
872872Details description:
873873 "Profile-scoped communication style override for supported models.",
874874Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "live"`. },
875875 {
876876Key key: "profiles.<name>.model_catalog_json",
877877 type: "string (path)",
878878`feedback.enabled` description:
879879 "Profile-scoped model catalog JSON path override (applied on startup only; overrides the top-level `model_catalog_json` for that profile).",
880880Type / Values },
881881 {
882882`boolean` key: "profiles.<name>.model_instructions_file",
883883 type: "string (path)",
884884Details description:
885885 "Profile-scoped replacement for the built-in instruction file.",
886886Enable feedback submission via `/feedback` across Codex surfaces (default: true). },
887887 {
888888Key key: "profiles.<name>.experimental_use_unified_exec_tool",
889889 type: "boolean",
890890`file_opener` description:
891891 "Legacy name for enabling unified exec; prefer `[features].unified_exec`.",
892892Type / Values },
893893 {
894894`vscode | vscode-insiders | windsurf | cursor | none` key: "profiles.<name>.oss_provider",
895895 type: "lmstudio | ollama",
896896Details description: "Profile-scoped OSS provider for `--oss` sessions.",
897897 },
898898URI scheme used to open citations from Codex output (default: `vscode`). {
899899 key: "profiles.<name>.tools_view_image",
900900Key type: "boolean",
901901 description: "Enable or disable the `view_image` tool in that profile.",
902902`forced_chatgpt_workspace_id` },
903903 {
904904Type / Values key: "profiles.<name>.analytics.enabled",
905905 type: "boolean",
906906`string (uuid)` description: "Profile-scoped analytics enablement override.",
907907 },
908908Details {
909909 key: "profiles.<name>.windows.sandbox",
910910Limit ChatGPT logins to a specific workspace identifier. type: "unelevated | elevated",
911911 description: "Profile-scoped Windows sandbox mode override.",
912912Key },
913913 {
914914`forced_login_method` key: "history.persistence",
915915 type: "save-all | none",
916916Type / Values description:
917917 "Control whether Codex saves session transcripts to history.jsonl.",
918918`chatgpt | api` },
919919 {
920920Details key: "tool_output_token_limit",
921921 type: "number",
922922Restrict Codex to a specific authentication method. description:
923923 "Token budget for storing individual tool/function outputs in history.",
924924Key },
925925 {
926926`hide_agent_reasoning` key: "background_terminal_max_timeout",
927927 type: "number",
928928Type / Values description:
929929 "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`boolean` },
931931 {
932932Details key: "history.max_bytes",
933933 type: "number",
934934Suppress reasoning events in both the TUI and `codex exec` output. description:
935935 "If set, caps the history file size in bytes by dropping oldest entries.",
936936Key },
937937 {
938938`history.max_bytes` key: "file_opener",
939939 type: "vscode | vscode-insiders | windsurf | cursor | none",
940940Type / Values description:
941941 "URI scheme used to open citations from Codex output (default: `vscode`).",
942942`number` },
943943 {
944944Details key: "otel.environment",
945945 type: "string",
946946If set, caps the history file size in bytes by dropping oldest entries. description:
947947 "Environment tag applied to emitted OpenTelemetry events (default: `dev`).",
948948Key },
949949 {
950950`history.persistence` key: "otel.exporter",
951951 type: "none | otlp-http | otlp-grpc",
952952Type / Values description:
953953 "Select the OpenTelemetry exporter and provide any endpoint metadata.",
954954`save-all | none` },
955955 {
956956Details key: "otel.trace_exporter",
957957 type: "none | otlp-http | otlp-grpc",
958958Control whether Codex saves session transcripts to history.jsonl. description:
959959 "Select the OpenTelemetry trace exporter and provide any endpoint metadata.",
960960Key },
961961 {
962962`hooks` key: "otel.metrics_exporter",
963963 type: "none | statsig | otlp-http | otlp-grpc",
964964Type / Values description:
965965 "Select the OpenTelemetry metrics exporter (defaults to `statsig`).",
966966`table` },
967967 {
968968Details key: "otel.log_user_prompt",
969969 type: "boolean",
970970Lifecycle hooks configured inline in `config.toml`. Uses the same event schema as `hooks.json`; see the Hooks guide for examples and supported events. description:
971971 "Opt in to exporting raw user prompts with OpenTelemetry logs.",
972972Key },
973973 {
974974`instructions` key: "otel.exporter.<id>.endpoint",
975975 type: "string",
976976Type / Values description: "Exporter endpoint for OTEL logs.",
977977 },
978978`string` {
979979 key: "otel.exporter.<id>.protocol",
980980Details type: "binary | json",
981981 description: "Protocol used by the OTLP/HTTP exporter.",
982982Reserved for future use; prefer `model_instructions_file` or `AGENTS.md`. },
983983 {
984984Key key: "otel.exporter.<id>.headers",
985985 type: "map<string,string>",
986986`log_dir` description: "Static headers included with OTEL exporter requests.",
987987 },
988988Type / Values {
989989 key: "otel.trace_exporter.<id>.endpoint",
990990`string (path)` type: "string",
991991 description: "Trace exporter endpoint for OTEL logs.",
992992Details },
993993 {
994994Directory where Codex writes log files (for example `codex-tui.log`); defaults to `$CODEX_HOME/log`. key: "otel.trace_exporter.<id>.protocol",
995995 type: "binary | json",
996996Key description: "Protocol used by the OTLP/HTTP trace exporter.",
997997 },
998998`mcp_oauth_callback_port` {
999999 key: "otel.trace_exporter.<id>.headers",
10001000Type / Values type: "map<string,string>",
10011001 description: "Static headers included with OTEL trace exporter requests.",
10021002`integer` },
10031003 {
10041004Details key: "otel.exporter.<id>.tls.ca-certificate",
10051005 type: "string",
10061006Optional fixed port for the local HTTP callback server used during MCP OAuth login. When unset, Codex binds to an ephemeral port chosen by the OS. description: "CA certificate path for OTEL exporter TLS.",
10071007 },
10081008Key {
10091009 key: "otel.exporter.<id>.tls.client-certificate",
10101010`mcp_oauth_callback_url` type: "string",
10111011 description: "Client certificate path for OTEL exporter TLS.",
10121012Type / Values },
10131013 {
10141014`string` key: "otel.exporter.<id>.tls.client-private-key",
10151015 type: "string",
10161016Details description: "Client private key path for OTEL exporter TLS.",
10171017 },
10181018Optional redirect URI override for MCP OAuth login (for example, a devbox ingress URL). `mcp_oauth_callback_port` still controls the callback listener port. {
10191019 key: "otel.trace_exporter.<id>.tls.ca-certificate",
10201020Key type: "string",
10211021 description: "CA certificate path for OTEL trace exporter TLS.",
10221022`mcp_oauth_credentials_store` },
10231023 {
10241024Type / Values key: "otel.trace_exporter.<id>.tls.client-certificate",
10251025 type: "string",
10261026`auto | file | keyring` description: "Client certificate path for OTEL trace exporter TLS.",
10271027 },
10281028Details {
10291029 key: "otel.trace_exporter.<id>.tls.client-private-key",
10301030Preferred store for MCP OAuth credentials. type: "string",
10311031 description: "Client private key path for OTEL trace exporter TLS.",
10321032Key },
10331033 {
10341034`mcp_servers.<id>.args` key: "tui",
10351035 type: "table",
10361036Type / Values description:
10371037 "TUI-specific options such as enabling inline desktop notifications.",
10381038`array<string>` },
10391039 {
10401040Details key: "tui.notifications",
10411041 type: "boolean | array<string>",
10421042Arguments passed to the MCP stdio server command. description:
10431043 "Enable TUI notifications; optionally restrict to specific event types.",
10441044Key },
10451045 {
10461046`mcp_servers.<id>.bearer_token_env_var` key: "tui.notification_method",
10471047 type: "auto | osc9 | bel",
10481048Type / Values description:
10491049 "Notification method for terminal notifications (default: auto).",
10501050`string` },
10511051 {
10521052Details key: "tui.notification_condition",
10531053 type: "unfocused | always",
10541054Environment variable sourcing the bearer token for an MCP HTTP server. description:
10551055 "Control whether TUI notifications fire only when the terminal is unfocused or regardless of focus. Defaults to `unfocused`.",
10561056Key },
10571057 {
10581058`mcp_servers.<id>.command` key: "tui.animations",
10591059 type: "boolean",
10601060Type / Values description:
10611061 "Enable terminal animations (welcome screen, shimmer, spinner) (default: true).",
10621062`string` },
10631063 {
10641064Details key: "tui.alternate_screen",
10651065 type: "auto | always | never",
10661066Launcher command for an MCP stdio server. description:
10671067 "Control alternate screen usage for the TUI (default: auto; auto skips it in Zellij to preserve scrollback).",
10681068Key },
10691069 {
10701070`mcp_servers.<id>.cwd` key: "tui.show_tooltips",
10711071 type: "boolean",
10721072Type / Values description:
10731073 "Show onboarding tooltips in the TUI welcome screen (default: true).",
10741074`string` },
10751075 {
10761076Details key: "tui.status_line",
10771077 type: "array<string> | null",
10781078Working directory for the MCP stdio server process. description:
10791079 "Ordered list of TUI footer status-line item identifiers. `null` disables the status line.",
10801080Key },
10811081 {
10821082`mcp_servers.<id>.disabled_tools` key: "tui.terminal_title",
10831083 type: "array<string> | null",
10841084Type / Values description:
10851085 'Ordered list of terminal window/tab title item identifiers. Defaults to `["spinner", "project"]`; `null` disables title updates.',
10861086`array<string>` },
10871087 {
10881088Details key: "tui.theme",
10891089 type: "string",
10901090Deny list applied after `enabled_tools` for the MCP server. description:
10911091 "Syntax-highlighting theme override (kebab-case theme name).",
10921092Key },
10931093 {
10941094`mcp_servers.<id>.enabled` key: "tui.keymap.<context>.<action>",
10951095 type: "string | array<string>",
10961096Type / Values description:
10971097 "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`boolean` },
10991099 {
11001100Details key: "tui.keymap.<context>.<action> = []",
11011101 type: "empty array",
11021102Disable an MCP server without removing its configuration. description:
11031103 "Unbind the action in that keymap context. Key names use normalized strings such as `ctrl-a`, `shift-enter`, or `page-down`.",
11041104Key },
11051105 {
11061106`mcp_servers.<id>.enabled_tools` key: "tui.model_availability_nux.<model>",
11071107 type: "integer",
11081108Type / Values description: "Internal startup-tooltip state keyed by model slug.",
11091109 },
11101110`array<string>` {
11111111 key: "hide_agent_reasoning",
11121112Details type: "boolean",
11131113 description:
11141114Allow list of tool names exposed by the MCP server. "Suppress reasoning events in both the TUI and `codex exec` output.",
11151115 },
11161116Key {
11171117 key: "show_raw_agent_reasoning",
11181118`mcp_servers.<id>.env` type: "boolean",
11191119 description:
11201120Type / Values "Surface raw reasoning content when the active model emits it.",
11211121 },
11221122`map<string,string>` {
11231123 key: "disable_paste_burst",
11241124Details type: "boolean",
11251125 description: "Disable burst-paste detection in the TUI.",
11261126Environment variables forwarded to the MCP stdio server. },
11271127 {
11281128Key key: "windows_wsl_setup_acknowledged",
11291129 type: "boolean",
11301130`mcp_servers.<id>.env_http_headers` description: "Track Windows onboarding acknowledgement (Windows only).",
11311131 },
11321132Type / Values {
11331133 key: "chatgpt_base_url",
11341134`map<string,string>` type: "string",
11351135 description: "Override the base URL used during the ChatGPT login flow.",
11361136Details },
11371137 {
11381138HTTP headers populated from environment variables for an MCP HTTP server. key: "cli_auth_credentials_store",
11391139 type: "file | keyring | auto",
11401140Key description:
11411141 "Control where the CLI stores cached credentials (file-based auth.json vs OS keychain).",
11421142`mcp_servers.<id>.env_vars` },
11431143 {
11441144Type / Values key: "mcp_oauth_credentials_store",
11451145 type: "auto | file | keyring",
11461146`array<string | { name = string, source = "local" | "remote" }>` description: "Preferred store for MCP OAuth credentials.",
11471147 },
11481148Details {
11491149 key: "mcp_oauth_callback_port",
11501150Additional environment variables to whitelist for an MCP stdio server. String entries default to `source = "local"`; use `source = "remote"` only with executor-backed remote stdio. type: "integer",
11511151 description:
11521152Key "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.",
11531153 },
11541154`mcp_servers.<id>.experimental_environment` {
11551155 key: "mcp_oauth_callback_url",
11561156Type / Values type: "string",
11571157 description:
11581158`local | remote` "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 },
11601160Details {
11611161 key: "experimental_use_unified_exec_tool",
11621162Experimental placement for an MCP server. `remote` starts stdio servers through a remote executor environment; streamable HTTP remote placement is not implemented. type: "boolean",
11631163 description:
11641164Key "Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`.",
11651165 },
11661166`mcp_servers.<id>.http_headers` {
11671167 key: "tools.web_search",
11681168Type / Values type: 'boolean | { context_size = "low|medium|high", allowed_domains = [string], location = { country, region, city, timezone } }',
11691169 description:
11701170`map<string,string>` "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 },
11721172Details {
11731173 key: "tools.view_image",
11741174Static HTTP headers included with each MCP HTTP request. type: "boolean",
11751175 description: "Enable the local-image attachment tool `view_image`.",
11761176Key },
11771177 {
11781178`mcp_servers.<id>.oauth_resource` key: "web_search",
11791179 type: "disabled | cached | live",
11801180Type / Values description:
11811181 '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`string` },
11831183 {
11841184Details key: "default_permissions",
11851185 type: "string",
11861186Optional RFC 8707 OAuth resource parameter to include during MCP login. description:
11871187 "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.",
11881188Key },
11891189 {
11901190`mcp_servers.<id>.required` key: "permissions.<name>.filesystem",
11911191 type: "table",
11921192Type / Values description:
11931193 "Named filesystem permission profile. Each key is an absolute path or special token such as `:minimal` or `:project_roots`.",
11941194`boolean` },
11951195 {
11961196Details key: "permissions.<name>.filesystem.glob_scan_max_depth",
11971197 type: "number",
11981198When true, fail startup/resume if this enabled MCP server cannot initialize. description:
11991199 "Maximum depth for expanding deny-read glob patterns on platforms that snapshot matches before sandbox startup. Must be at least `1` when set.",
12001200Key },
12011201 {
12021202`mcp_servers.<id>.scopes` key: "permissions.<name>.filesystem.<path-or-glob>",
12031203 type: '"read" | "write" | "none" | table',
12041204Type / Values description:
12051205 '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`array<string>` },
12071207 {
12081208Details key: 'permissions.<name>.filesystem.":project_roots".<subpath-or-glob>',
12091209 type: '"read" | "write" | "none"',
12101210OAuth scopes to request when authenticating to that MCP server. description:
12111211 'Scoped filesystem access relative to the detected project roots. Use `"."` for the root itself; glob subpaths such as `"**/*.env"` can deny reads with `"none"`.',
12121212Key },
12131213 {
12141214`mcp_servers.<id>.startup_timeout_ms` key: "permissions.<name>.network.enabled",
12151215 type: "boolean",
12161216Type / Values description: "Enable network access for this named permissions profile.",
12171217 },
12181218`number` {
12191219 key: "permissions.<name>.network.proxy_url",
12201220Details type: "string",
12211221 description:
12221222Alias for `startup_timeout_sec` in milliseconds. "HTTP proxy endpoint used when this permissions profile enables the managed network proxy.",
12231223 },
12241224Key {
12251225 key: "permissions.<name>.network.enable_socks5",
12261226`mcp_servers.<id>.startup_timeout_sec` type: "boolean",
12271227 description:
12281228Type / Values "Expose a SOCKS5 listener when this permissions profile enables the managed network proxy.",
12291229 },
12301230`number` {
12311231 key: "permissions.<name>.network.socks_url",
12321232Details type: "string",
12331233 description: "SOCKS5 proxy endpoint used by this permissions profile.",
12341234Override the default 10s startup timeout for an MCP server. },
12351235 {
12361236Key key: "permissions.<name>.network.enable_socks5_udp",
12371237 type: "boolean",
12381238`mcp_servers.<id>.tool_timeout_sec` description: "Allow UDP over the SOCKS5 listener when enabled.",
12391239 },
12401240Type / Values {
12411241 key: "permissions.<name>.network.allow_upstream_proxy",
12421242`number` type: "boolean",
12431243 description:
12441244Details "Allow the managed proxy to chain to another upstream proxy.",
12451245 },
12461246Override the default 60s per-tool timeout for an MCP server. {
12471247 key: "permissions.<name>.network.dangerously_allow_non_loopback_proxy",
12481248Key type: "boolean",
12491249 description:
12501250`mcp_servers.<id>.url` "Permit non-loopback bind addresses for the managed proxy listener.",
12511251 },
12521252Type / Values {
12531253 key: "permissions.<name>.network.dangerously_allow_all_unix_sockets",
12541254`string` type: "boolean",
12551255 description:
12561256Details "Allow the proxy to use arbitrary Unix sockets instead of the default restricted set.",
12571257 },
12581258Endpoint for an MCP streamable HTTP server. {
12591259 key: "permissions.<name>.network.mode",
12601260Key type: "limited | full",
12611261 description: "Network proxy mode used for subprocess traffic.",
12621262`memories.consolidation_model` },
12631263 {
12641264Type / Values key: "permissions.<name>.network.domains",
12651265 type: "map<string, allow | deny>",
12661266`string` description:
12671267 "Domain rules for the managed proxy. Use domain names or wildcard patterns as keys, with `allow` or `deny` values.",
12681268Details },
12691269 {
12701270Optional model override for global memory consolidation. key: "permissions.<name>.network.unix_sockets",
12711271 type: "map<string, allow | none>",
12721272Key description:
12731273 "Unix socket rules for the managed proxy. Use socket paths as keys, with `allow` or `none` values.",
12741274`memories.disable_on_external_context` },
12751275 {
12761276Type / Values key: "permissions.<name>.network.allow_local_binding",
12771277 type: "boolean",
12781278`boolean` description:
12791279 "Permit local bind/listen operations through the managed proxy.",
12801280Details },
12811281 {
12821282When `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`. key: "projects.<path>.trust_level",
12831283 type: "string",
12841284Key description:
12851285 '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`memories.extract_model` },
12871287 {
12881288Type / Values key: "notice.hide_full_access_warning",
12891289 type: "boolean",
12901290`string` description: "Track acknowledgement of the full access warning prompt.",
12911291 },
12921292Details {
12931293 key: "notice.hide_world_writable_warning",
12941294Optional model override for per-thread memory extraction. type: "boolean",
12951295 description:
12961296Key "Track acknowledgement of the Windows world-writable directories warning.",
12971297 },
12981298`memories.generate_memories` {
12991299 key: "notice.hide_rate_limit_model_nudge",
13001300Type / Values type: "boolean",
13011301 description: "Track opt-out of the rate limit model switch reminder.",
13021302`boolean` },
13031303 {
13041304Details key: "notice.hide_gpt5_1_migration_prompt",
13051305 type: "boolean",
13061306When `false`, newly created threads are not stored as memory-generation inputs. Defaults to `true`. description: "Track acknowledgement of the GPT-5.1 migration prompt.",
13071307 },
13081308Key {
13091309 key: "notice.hide_gpt-5.1-codex-max_migration_prompt",
13101310`memories.max_raw_memories_for_consolidation` type: "boolean",
13111311 description:
13121312Type / Values "Track acknowledgement of the gpt-5.1-codex-max migration prompt.",
13131313 },
13141314`number` {
13151315 key: "notice.model_migrations",
13161316Details type: "map<string,string>",
13171317 description: "Track acknowledged model migrations as old->new mappings.",
13181318Maximum recent raw memories retained for global consolidation. Defaults to `256` and is capped at `4096`. },
13191319 {
13201320Key key: "forced_login_method",
13211321 type: "chatgpt | api",
13221322`memories.max_rollout_age_days` description: "Restrict Codex to a specific authentication method.",
13231323 },
13241324Type / Values {
13251325 key: "forced_chatgpt_workspace_id",
13261326`number` type: "string (uuid)",
13271327 description: "Limit ChatGPT logins to a specific workspace identifier.",
13281328Details },
13291329 ]}
13301330Maximum age of threads considered for memory generation. Defaults to `30` and is clamped to `0`-`90`. client:load
13311331 />
1332Key
1333
1334`memories.max_rollouts_per_startup`
1335
1336Type / Values
1337
1338`number`
1339
1340Details
1341
1342Maximum rollout candidates processed per startup pass. Defaults to `16` and is capped at `128`.
1343
1344Key
1345
1346`memories.max_unused_days`
1347
1348Type / Values
1349
1350`number`
1351
1352Details
1353
1354Maximum days since a memory was last used before it becomes ineligible for consolidation. Defaults to `30` and is clamped to `0`-`365`.
1355
1356Key
1357
1358`memories.min_rate_limit_remaining_percent`
1359
1360Type / Values
1361
1362`number`
1363
1364Details
1365
1366Minimum remaining percentage required in Codex rate-limit windows before memory generation starts. Defaults to `25` and is clamped to `0`-`100`.
1367
1368Key
1369
1370`memories.min_rollout_idle_hours`
1371
1372Type / Values
1373
1374`number`
1375
1376Details
1377
1378Minimum idle time before a thread is considered for memory generation. Defaults to `6` and is clamped to `1`-`48`.
1379
1380Key
1381
1382`memories.use_memories`
1383
1384Type / Values
1385
1386`boolean`
1387
1388Details
1389
1390When `false`, Codex skips injecting existing memories into future sessions. Defaults to `true`.
1391
1392Key
1393
1394`model`
1395
1396Type / Values
1397
1398`string`
1399
1400Details
1401
1402Model to use (e.g., `gpt-5.5`).
1403
1404Key
1405
1406`model_auto_compact_token_limit`
1407
1408Type / Values
1409
1410`number`
1411
1412Details
1413
1414Token threshold that triggers automatic history compaction (unset uses model defaults).
1415
1416Key
1417
1418`model_catalog_json`
1419
1420Type / Values
1421
1422`string (path)`
1423
1424Details
1425
1426Optional path to a JSON model catalog loaded on startup. Profile-level `profiles.<name>.model_catalog_json` can override this per profile.
1427
1428Key
1429
1430`model_context_window`
1431
1432Type / Values
1433
1434`number`
1435
1436Details
1437
1438Context window tokens available to the active model.
1439
1440Key
1441
1442`model_instructions_file`
1443
1444Type / Values
1445
1446`string (path)`
1447
1448Details
1449
1450Replacement for built-in instructions instead of `AGENTS.md`.
1451
1452Key
1453
1454`model_provider`
1455
1456Type / Values
1457
1458`string`
1459
1460Details
1461
1462Provider id from `model_providers` (default: `openai`).
1463
1464Key
1465
1466`model_providers.<id>`
1467
1468Type / Values
1469
1470`table`
1471
1472Details
1473
1474Custom provider definition. Built-in provider IDs (`openai`, `ollama`, and `lmstudio`) are reserved and cannot be overridden.
1475
1476Key
1477
1478`model_providers.<id>.auth`
1479
1480Type / Values
1481
1482`table`
1483
1484Details
1485
1486Command-backed bearer token configuration for a custom provider. Do not combine with `env_key`, `experimental_bearer_token`, or `requires_openai_auth`.
1487
1488Key
1489
1490`model_providers.<id>.auth.args`
1491
1492Type / Values
1493
1494`array<string>`
1495
1496Details
1497
1498Arguments passed to the token command.
1499
1500Key
1501
1502`model_providers.<id>.auth.command`
1503
1504Type / Values
1505
1506`string`
1507
1508Details
1509
1510Command to run when Codex needs a bearer token. The command must print the token to stdout.
1511
1512Key
1513
1514`model_providers.<id>.auth.cwd`
1515
1516Type / Values
1517
1518`string (path)`
1519
1520Details
1521
1522Working directory for the token command.
1523
1524Key
1525
1526`model_providers.<id>.auth.refresh_interval_ms`
1527
1528Type / Values
1529
1530`number`
1531
1532Details
1533
1534How often Codex proactively refreshes the token in milliseconds (default: 300000). Set to `0` to refresh only after an authentication retry.
1535
1536Key
1537
1538`model_providers.<id>.auth.timeout_ms`
1539
1540Type / Values
1541
1542`number`
1543
1544Details
1545
1546Maximum token command runtime in milliseconds (default: 5000).
1547
1548Key
1549
1550`model_providers.<id>.base_url`
1551
1552Type / Values
1553
1554`string`
1555
1556Details
1557
1558API base URL for the model provider.
1559
1560Key
1561
1562`model_providers.<id>.env_http_headers`
1563
1564Type / Values
1565
1566`map<string,string>`
1567
1568Details
1569
1570HTTP headers populated from environment variables when present.
1571
1572Key
1573
1574`model_providers.<id>.env_key`
1575
1576Type / Values
1577
1578`string`
1579
1580Details
1581
1582Environment variable supplying the provider API key.
1583
1584Key
1585
1586`model_providers.<id>.env_key_instructions`
1587
1588Type / Values
1589
1590`string`
1591
1592Details
1593
1594Optional setup guidance for the provider API key.
1595
1596Key
1597
1598`model_providers.<id>.experimental_bearer_token`
1599
1600Type / Values
1601
1602`string`
1603
1604Details
1605
1606Direct bearer token for the provider (discouraged; use `env_key`).
1607
1608Key
1609
1610`model_providers.<id>.http_headers`
1611
1612Type / Values
1613
1614`map<string,string>`
1615
1616Details
1617
1618Static HTTP headers added to provider requests.
1619
1620Key
1621
1622`model_providers.<id>.name`
1623
1624Type / Values
1625
1626`string`
1627
1628Details
1629
1630Display name for a custom model provider.
1631
1632Key
1633
1634`model_providers.<id>.query_params`
1635
1636Type / Values
1637
1638`map<string,string>`
1639
1640Details
1641
1642Extra query parameters appended to provider requests.
1643
1644Key
1645
1646`model_providers.<id>.request_max_retries`
1647
1648Type / Values
1649
1650`number`
1651
1652Details
1653
1654Retry count for HTTP requests to the provider (default: 4).
1655
1656Key
1657
1658`model_providers.<id>.requires_openai_auth`
1659
1660Type / Values
1661
1662`boolean`
1663
1664Details
1665
1666The provider uses OpenAI authentication (defaults to false).
1667
1668Key
1669
1670`model_providers.<id>.stream_idle_timeout_ms`
1671
1672Type / Values
1673
1674`number`
1675
1676Details
1677
1678Idle timeout for SSE streams in milliseconds (default: 300000).
1679
1680Key
1681
1682`model_providers.<id>.stream_max_retries`
1683
1684Type / Values
1685
1686`number`
1687
1688Details
1689
1690Retry count for SSE streaming interruptions (default: 5).
1691
1692Key
1693
1694`model_providers.<id>.supports_websockets`
1695
1696Type / Values
1697
1698`boolean`
1699
1700Details
1701
1702Whether that provider supports the Responses API WebSocket transport.
1703
1704Key
1705
1706`model_providers.<id>.wire_api`
1707
1708Type / Values
1709
1710`responses`
1711
1712Details
1713
1714Protocol used by the provider. `responses` is the only supported value, and it is the default when omitted.
1715
1716Key
1717
1718`model_reasoning_effort`
1719
1720Type / Values
1721
1722`minimal | low | medium | high | xhigh`
1723
1724Details
1725
1726Adjust reasoning effort for supported models (Responses API only; `xhigh` is model-dependent).
1727
1728Key
1729
1730`model_reasoning_summary`
1731
1732Type / Values
1733
1734`auto | concise | detailed | none`
1735
1736Details
1737
1738Select reasoning summary detail or disable summaries entirely.
1739
1740Key
1741
1742`model_supports_reasoning_summaries`
1743
1744Type / Values
1745
1746`boolean`
1747
1748Details
1749
1750Force Codex to send or not send reasoning metadata.
1751
1752Key
1753
1754`model_verbosity`
1755
1756Type / Values
1757
1758`low | medium | high`
1759
1760Details
1761
1762Optional GPT-5 Responses API verbosity override; when unset, the selected model/preset default is used.
1763
1764Key
1765
1766`notice.hide_full_access_warning`
1767
1768Type / Values
1769
1770`boolean`
1771
1772Details
1773
1774Track acknowledgement of the full access warning prompt.
1775
1776Key
1777
1778`notice.hide_gpt-5.1-codex-max_migration_prompt`
1779
1780Type / Values
1781
1782`boolean`
1783
1784Details
1785
1786Track acknowledgement of the gpt-5.1-codex-max migration prompt.
1787
1788Key
1789
1790`notice.hide_gpt5_1_migration_prompt`
1791
1792Type / Values
1793
1794`boolean`
1795
1796Details
1797
1798Track acknowledgement of the GPT-5.1 migration prompt.
1799
1800Key
1801
1802`notice.hide_rate_limit_model_nudge`
1803
1804Type / Values
1805
1806`boolean`
1807
1808Details
1809
1810Track opt-out of the rate limit model switch reminder.
1811
1812Key
1813
1814`notice.hide_world_writable_warning`
1815
1816Type / Values
1817
1818`boolean`
1819
1820Details
1821
1822Track acknowledgement of the Windows world-writable directories warning.
1823
1824Key
1825
1826`notice.model_migrations`
1827
1828Type / Values
1829
1830`map<string,string>`
1831
1832Details
1833
1834Track acknowledged model migrations as old->new mappings.
1835
1836Key
1837
1838`notify`
1839
1840Type / Values
1841
1842`array<string>`
1843
1844Details
1845
1846Command invoked for notifications; receives a JSON payload from Codex.
1847
1848Key
1849
1850`openai_base_url`
1851
1852Type / Values
1853
1854`string`
1855
1856Details
1857
1858Base URL override for the built-in `openai` model provider.
1859
1860Key
1861
1862`oss_provider`
1863
1864Type / Values
1865
1866`lmstudio | ollama`
1867
1868Details
1869
1870Default local provider used when running with `--oss` (defaults to prompting if unset).
1871
1872Key
1873
1874`otel.environment`
1875
1876Type / Values
1877
1878`string`
1879
1880Details
1881
1882Environment tag applied to emitted OpenTelemetry events (default: `dev`).
1883
1884Key
1885
1886`otel.exporter`
1887
1888Type / Values
1889
1890`none | otlp-http | otlp-grpc`
1891
1892Details
1893
1894Select the OpenTelemetry exporter and provide any endpoint metadata.
1895
1896Key
1897
1898`otel.exporter.<id>.endpoint`
1899
1900Type / Values
1901
1902`string`
1903
1904Details
1905
1906Exporter endpoint for OTEL logs.
1907
1908Key
1909
1910`otel.exporter.<id>.headers`
1911
1912Type / Values
1913
1914`map<string,string>`
1915
1916Details
1917
1918Static headers included with OTEL exporter requests.
1919
1920Key
1921
1922`otel.exporter.<id>.protocol`
1923
1924Type / Values
1925
1926`binary | json`
1927
1928Details
1929
1930Protocol used by the OTLP/HTTP exporter.
1931
1932Key
1933
1934`otel.exporter.<id>.tls.ca-certificate`
1935
1936Type / Values
1937
1938`string`
1939
1940Details
1941
1942CA certificate path for OTEL exporter TLS.
1943
1944Key
1945
1946`otel.exporter.<id>.tls.client-certificate`
1947
1948Type / Values
1949
1950`string`
1951
1952Details
1953
1954Client certificate path for OTEL exporter TLS.
1955
1956Key
1957
1958`otel.exporter.<id>.tls.client-private-key`
1959
1960Type / Values
1961
1962`string`
1963
1964Details
1965
1966Client private key path for OTEL exporter TLS.
1967
1968Key
1969
1970`otel.log_user_prompt`
1971
1972Type / Values
1973
1974`boolean`
1975
1976Details
1977
1978Opt in to exporting raw user prompts with OpenTelemetry logs.
1979
1980Key
1981
1982`otel.metrics_exporter`
1983
1984Type / Values
1985
1986`none | statsig | otlp-http | otlp-grpc`
1987
1988Details
1989
1990Select the OpenTelemetry metrics exporter (defaults to `statsig`).
1991
1992Key
1993
1994`otel.trace_exporter`
1995
1996Type / Values
1997
1998`none | otlp-http | otlp-grpc`
1999
2000Details
2001
2002Select the OpenTelemetry trace exporter and provide any endpoint metadata.
2003
2004Key
2005
2006`otel.trace_exporter.<id>.endpoint`
2007
2008Type / Values
2009
2010`string`
2011
2012Details
2013
2014Trace exporter endpoint for OTEL logs.
2015
2016Key
2017
2018`otel.trace_exporter.<id>.headers`
2019
2020Type / Values
2021
2022`map<string,string>`
2023
2024Details
2025
2026Static headers included with OTEL trace exporter requests.
2027
2028Key
2029
2030`otel.trace_exporter.<id>.protocol`
2031
2032Type / Values
2033
2034`binary | json`
2035
2036Details
2037
2038Protocol used by the OTLP/HTTP trace exporter.
2039
2040Key
2041
2042`otel.trace_exporter.<id>.tls.ca-certificate`
2043
2044Type / Values
2045
2046`string`
2047
2048Details
2049
2050CA certificate path for OTEL trace exporter TLS.
2051
2052Key
2053
2054`otel.trace_exporter.<id>.tls.client-certificate`
2055
2056Type / Values
2057
2058`string`
2059
2060Details
2061
2062Client certificate path for OTEL trace exporter TLS.
2063
2064Key
2065
2066`otel.trace_exporter.<id>.tls.client-private-key`
2067
2068Type / Values
2069
2070`string`
2071
2072Details
2073
2074Client private key path for OTEL trace exporter TLS.
2075
2076Key
2077
2078`permissions.<name>.filesystem`
2079
2080Type / Values
2081
2082`table`
2083
2084Details
2085
2086Named filesystem permission profile. Each key is an absolute path or special token such as `:minimal` or `:project_roots`.
2087
2088Key
2089
2090`permissions.<name>.filesystem.":project_roots".<subpath-or-glob>`
2091
2092Type / Values
2093
2094`"read" | "write" | "none"`
2095
2096Details
2097
2098Scoped filesystem access relative to the detected project roots. Use `"."` for the root itself; glob subpaths such as `"**/*.env"` can deny reads with `"none"`.
2099
2100Key
2101
2102`permissions.<name>.filesystem.<path-or-glob>`
2103
2104Type / Values
2105
2106`"read" | "write" | "none" | table`
2107
2108Details
2109
2110Grant 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.
2111
2112Key
2113
2114`permissions.<name>.filesystem.glob_scan_max_depth`
2115
2116Type / Values
2117
2118`number`
2119
2120Details
2121
2122Maximum depth for expanding deny-read glob patterns on platforms that snapshot matches before sandbox startup. Must be at least `1` when set.
2123
2124Key
2125
2126`permissions.<name>.network.allow_local_binding`
2127
2128Type / Values
2129
2130`boolean`
2131
2132Details
2133
2134Permit local bind/listen operations through the managed proxy.
2135
2136Key
2137
2138`permissions.<name>.network.allow_upstream_proxy`
2139
2140Type / Values
2141
2142`boolean`
2143
2144Details
2145
2146Allow the managed proxy to chain to another upstream proxy.
2147
2148Key
2149
2150`permissions.<name>.network.dangerously_allow_all_unix_sockets`
2151
2152Type / Values
2153
2154`boolean`
2155
2156Details
2157
2158Allow the proxy to use arbitrary Unix sockets instead of the default restricted set.
2159
2160Key
2161
2162`permissions.<name>.network.dangerously_allow_non_loopback_proxy`
2163
2164Type / Values
2165
2166`boolean`
2167
2168Details
2169
2170Permit non-loopback bind addresses for the managed proxy listener.
2171
2172Key
2173
2174`permissions.<name>.network.domains`
2175
2176Type / Values
2177
2178`map<string, allow | deny>`
2179
2180Details
2181
2182Domain rules for the managed proxy. Use domain names or wildcard patterns as keys, with `allow` or `deny` values.
2183
2184Key
2185
2186`permissions.<name>.network.enable_socks5`
2187
2188Type / Values
2189
2190`boolean`
2191
2192Details
2193
2194Expose a SOCKS5 listener when this permissions profile enables the managed network proxy.
2195
2196Key
2197
2198`permissions.<name>.network.enable_socks5_udp`
2199
2200Type / Values
2201
2202`boolean`
2203
2204Details
2205
2206Allow UDP over the SOCKS5 listener when enabled.
2207
2208Key
2209
2210`permissions.<name>.network.enabled`
2211
2212Type / Values
2213
2214`boolean`
2215
2216Details
2217
2218Enable network access for this named permissions profile.
2219
2220Key
2221
2222`permissions.<name>.network.mode`
2223
2224Type / Values
2225
2226`limited | full`
2227
2228Details
2229
2230Network proxy mode used for subprocess traffic.
2231
2232Key
2233
2234`permissions.<name>.network.proxy_url`
2235
2236Type / Values
2237
2238`string`
2239
2240Details
2241
2242HTTP proxy endpoint used when this permissions profile enables the managed network proxy.
2243
2244Key
2245
2246`permissions.<name>.network.socks_url`
2247
2248Type / Values
2249
2250`string`
2251
2252Details
2253
2254SOCKS5 proxy endpoint used by this permissions profile.
2255
2256Key
2257
2258`permissions.<name>.network.unix_sockets`
2259
2260Type / Values
2261
2262`map<string, allow | none>`
2263
2264Details
2265
2266Unix socket rules for the managed proxy. Use socket paths as keys, with `allow` or `none` values.
2267
2268Key
2269
2270`personality`
2271
2272Type / Values
2273
2274`none | friendly | pragmatic`
2275
2276Details
2277
2278Default communication style for models that advertise `supportsPersonality`; can be overridden per thread/turn or via `/personality`.
2279
2280Key
2281
2282`plan_mode_reasoning_effort`
2283
2284Type / Values
2285
2286`none | minimal | low | medium | high | xhigh`
2287
2288Details
2289
2290Plan-mode-specific reasoning override. When unset, Plan mode uses its built-in preset default.
2291
2292Key
2293
2294`profile`
2295
2296Type / Values
2297
2298`string`
2299
2300Details
2301
2302Default profile applied at startup (equivalent to `--profile`).
2303
2304Key
2305
2306`profiles.<name>.*`
2307
2308Type / Values
2309
2310`various`
2311
2312Details
2313
2314Profile-scoped overrides for any of the supported configuration keys.
2315
2316Key
2317
2318`profiles.<name>.analytics.enabled`
2319
2320Type / Values
2321
2322`boolean`
2323
2324Details
2325
2326Profile-scoped analytics enablement override.
2327
2328Key
2329
2330`profiles.<name>.experimental_use_unified_exec_tool`
2331
2332Type / Values
2333
2334`boolean`
2335
2336Details
2337
2338Legacy name for enabling unified exec; prefer `[features].unified_exec`.
2339
2340Key
2341
2342`profiles.<name>.model_catalog_json`
2343
2344Type / Values
2345
2346`string (path)`
2347
2348Details
2349
2350Profile-scoped model catalog JSON path override (applied on startup only; overrides the top-level `model_catalog_json` for that profile).
2351
2352Key
2353
2354`profiles.<name>.model_instructions_file`
2355
2356Type / Values
2357
2358`string (path)`
2359
2360Details
2361
2362Profile-scoped replacement for the built-in instruction file.
2363
2364Key
2365
2366`profiles.<name>.oss_provider`
2367
2368Type / Values
2369
2370`lmstudio | ollama`
2371
2372Details
2373
2374Profile-scoped OSS provider for `--oss` sessions.
2375
2376Key
2377
2378`profiles.<name>.personality`
2379
2380Type / Values
2381
2382`none | friendly | pragmatic`
2383
2384Details
2385
2386Profile-scoped communication style override for supported models.
2387
2388Key
2389
2390`profiles.<name>.plan_mode_reasoning_effort`
2391
2392Type / Values
2393
2394`none | minimal | low | medium | high | xhigh`
2395
2396Details
2397
2398Profile-scoped Plan-mode reasoning override.
2399
2400Key
2401
2402`profiles.<name>.service_tier`
2403
2404Type / Values
2405
2406`flex | fast`
2407
2408Details
2409
2410Profile-scoped service tier preference for new turns.
2411
2412Key
2413
2414`profiles.<name>.tools_view_image`
2415
2416Type / Values
2417
2418`boolean`
2419
2420Details
2421
2422Enable or disable the `view_image` tool in that profile.
2423
2424Key
2425
2426`profiles.<name>.web_search`
2427
2428Type / Values
2429
2430`disabled | cached | live`
2431
2432Details
2433
2434Profile-scoped web search mode override (default: `"cached"`).
2435
2436Key
2437
2438`profiles.<name>.windows.sandbox`
2439
2440Type / Values
2441
2442`unelevated | elevated`
2443
2444Details
2445
2446Profile-scoped Windows sandbox mode override.
2447
2448Key
2449
2450`project_doc_fallback_filenames`
2451
2452Type / Values
2453
2454`array<string>`
2455
2456Details
2457
2458Additional filenames to try when `AGENTS.md` is missing.
2459
2460Key
2461
2462`project_doc_max_bytes`
2463
2464Type / Values
2465
2466`number`
2467
2468Details
2469
2470Maximum bytes read from `AGENTS.md` when building project instructions.
2471
2472Key
2473
2474`project_root_markers`
2475
2476Type / Values
2477
2478`array<string>`
2479
2480Details
2481
2482List of project root marker filenames; used when searching parent directories for the project root.
2483
2484Key
2485
2486`projects.<path>.trust_level`
2487
2488Type / Values
2489
2490`string`
2491
2492Details
2493
2494Mark a project or worktree as trusted or untrusted (`"trusted"` | `"untrusted"`). Untrusted projects skip project-scoped `.codex/` layers, including project-local config, hooks, and rules.
2495
2496Key
2497
2498`review_model`
2499
2500Type / Values
2501
2502`string`
2503
2504Details
2505
2506Optional model override used by `/review` (defaults to the current session model).
2507
2508Key
2509
2510`sandbox_mode`
2511
2512Type / Values
2513
2514`read-only | workspace-write | danger-full-access`
2515
2516Details
2517
2518Sandbox policy for filesystem and network access during command execution.
2519
2520Key
2521
2522`sandbox_workspace_write.exclude_slash_tmp`
2523
2524Type / Values
2525
2526`boolean`
2527
2528Details
2529
2530Exclude `/tmp` from writable roots in workspace-write mode.
2531
2532Key
2533
2534`sandbox_workspace_write.exclude_tmpdir_env_var`
2535
2536Type / Values
2537
2538`boolean`
2539
2540Details
2541
2542Exclude `$TMPDIR` from writable roots in workspace-write mode.
2543
2544Key
2545
2546`sandbox_workspace_write.network_access`
2547
2548Type / Values
2549
2550`boolean`
2551
2552Details
2553
2554Allow outbound network access inside the workspace-write sandbox.
2555
2556Key
2557
2558`sandbox_workspace_write.writable_roots`
2559
2560Type / Values
2561
2562`array<string>`
2563
2564Details
2565
2566Additional writable roots when `sandbox_mode = "workspace-write"`.
2567
2568Key
2569
2570`service_tier`
2571
2572Type / Values
2573
2574`flex | fast`
2575
2576Details
2577
2578Preferred service tier for new turns.
2579
2580Key
2581
2582`shell_environment_policy.exclude`
2583
2584Type / Values
2585
2586`array<string>`
2587
2588Details
2589
2590Glob patterns for removing environment variables after the defaults.
2591
2592Key
2593
2594`shell_environment_policy.experimental_use_profile`
2595
2596Type / Values
2597
2598`boolean`
2599
2600Details
2601
2602Use the user shell profile when spawning subprocesses.
2603
2604Key
2605
2606`shell_environment_policy.ignore_default_excludes`
2607
2608Type / Values
2609
2610`boolean`
2611
2612Details
2613
2614Keep variables containing KEY/SECRET/TOKEN before other filters run.
2615
2616Key
2617
2618`shell_environment_policy.include_only`
2619
2620Type / Values
2621
2622`array<string>`
2623
2624Details
2625
2626Whitelist of patterns; when set only matching variables are kept.
2627
2628Key
2629
2630`shell_environment_policy.inherit`
2631
2632Type / Values
2633
2634`all | core | none`
2635
2636Details
2637
2638Baseline environment inheritance when spawning subprocesses.
2639
2640Key
2641
2642`shell_environment_policy.set`
2643
2644Type / Values
2645
2646`map<string,string>`
2647
2648Details
2649
2650Explicit environment overrides injected into every subprocess.
2651
2652Key
2653
2654`show_raw_agent_reasoning`
2655
2656Type / Values
2657
2658`boolean`
2659
2660Details
2661
2662Surface raw reasoning content when the active model emits it.
2663
2664Key
2665
2666`skills.config`
2667
2668Type / Values
2669
2670`array<object>`
2671
2672Details
2673
2674Per-skill enablement overrides stored in config.toml.
2675
2676Key
2677
2678`skills.config.<index>.enabled`
2679
2680Type / Values
2681
2682`boolean`
2683
2684Details
2685
2686Enable or disable the referenced skill.
2687
2688Key
2689
2690`skills.config.<index>.path`
2691
2692Type / Values
2693
2694`string (path)`
2695
2696Details
2697
2698Path to a skill folder containing `SKILL.md`.
2699
2700Key
2701
2702`sqlite_home`
2703
2704Type / Values
2705
2706`string (path)`
2707
2708Details
2709
2710Directory where Codex stores the SQLite-backed state DB used by agent jobs and other resumable runtime state.
2711
2712Key
2713
2714`suppress_unstable_features_warning`
2715
2716Type / Values
2717
2718`boolean`
2719
2720Details
2721
2722Suppress the warning that appears when under-development feature flags are enabled.
2723
2724Key
2725
2726`tool_output_token_limit`
2727
2728Type / Values
2729
2730`number`
2731
2732Details
2733
2734Token budget for storing individual tool/function outputs in history.
2735
2736Key
2737
2738`tool_suggest.discoverables`
2739
2740Type / Values
2741
2742`array<table>`
2743
2744Details
2745
2746Allow tool suggestions for additional discoverable connectors or plugins. Each entry uses `type = "connector"` or `"plugin"` and an `id`.
2747
2748Key
2749
2750`tools.view_image`
2751
2752Type / Values
2753
2754`boolean`
2755
2756Details
2757
2758Enable the local-image attachment tool `view_image`.
2759
2760Key
2761
2762`tools.web_search`
2763
2764Type / Values
2765
2766`boolean | { context_size = "low|medium|high", allowed_domains = [string], location = { country, region, city, timezone } }`
2767
2768Details
2769
2770Optional 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.
2771
2772Key
2773
2774`tui`
2775
2776Type / Values
2777
2778`table`
2779
2780Details
2781
2782TUI-specific options such as enabling inline desktop notifications.
2783
2784Key
2785
2786`tui.alternate_screen`
2787
2788Type / Values
2789
2790`auto | always | never`
2791
2792Details
2793
2794Control alternate screen usage for the TUI (default: auto; auto skips it in Zellij to preserve scrollback).
2795
2796Key
2797
2798`tui.animations`
2799
2800Type / Values
2801
2802`boolean`
2803
2804Details
2805
2806Enable terminal animations (welcome screen, shimmer, spinner) (default: true).
2807
2808Key
2809
2810`tui.model_availability_nux.<model>`
2811
2812Type / Values
2813
2814`integer`
2815
2816Details
2817
2818Internal startup-tooltip state keyed by model slug.
2819
2820Key
2821
2822`tui.notification_condition`
2823
2824Type / Values
2825
2826`unfocused | always`
2827
2828Details
2829
2830Control whether TUI notifications fire only when the terminal is unfocused or regardless of focus. Defaults to `unfocused`.
2831
2832Key
2833
2834`tui.notification_method`
2835
2836Type / Values
2837
2838`auto | osc9 | bel`
2839
2840Details
2841
2842Notification method for terminal notifications (default: auto).
2843
2844Key
2845
2846`tui.notifications`
2847
2848Type / Values
2849
2850`boolean | array<string>`
2851
2852Details
2853
2854Enable TUI notifications; optionally restrict to specific event types.
2855
2856Key
2857
2858`tui.show_tooltips`
2859
2860Type / Values
2861
2862`boolean`
2863
2864Details
2865
2866Show onboarding tooltips in the TUI welcome screen (default: true).
2867
2868Key
2869
2870`tui.status_line`
2871
2872Type / Values
2873
2874`array<string> | null`
2875
2876Details
2877
2878Ordered list of TUI footer status-line item identifiers. `null` disables the status line.
2879
2880Key
2881
2882`tui.terminal_title`
2883
2884Type / Values
2885
2886`array<string> | null`
2887
2888Details
2889
2890Ordered list of terminal window/tab title item identifiers. Defaults to `["spinner", "project"]`; `null` disables title updates.
2891
2892Key
2893
2894`tui.theme`
2895
2896Type / Values
2897
2898`string`
2899
2900Details
2901
2902Syntax-highlighting theme override (kebab-case theme name).
2903
2904Key
2905
2906`web_search`
2907
2908Type / Values
2909
2910`disabled | cached | live`
2911
2912Details
2913
2914Web 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.
2915
2916Key
2917
2918`windows_wsl_setup_acknowledged`
2919
2920Type / Values
2921
2922`boolean`
2923
2924Details
2925
2926Track Windows onboarding acknowledgement (Windows only).
2927
2928Key
2929
2930`windows.sandbox`
2931
2932Type / Values
2933
2934`unelevated | elevated`
2935
2936Details
2937
2938Windows-only native sandbox mode when running Codex natively on Windows.
2939
2940Key
2941
2942`windows.sandbox_private_desktop`
2943
2944Type / Values
2945
2946`boolean`
2947
2948Details
2949
2950Run 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.
2951
2952Expand to view all
2953 1332
2954You 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).
2955 1334
2971Use `[features]` in `requirements.toml` to pin feature flags by the same1350Use `[features]` in `requirements.toml` to pin feature flags by the same
2972canonical keys that `config.toml` uses. Omitted keys remain unconstrained.1351canonical keys that `config.toml` uses. Omitted keys remain unconstrained.
2973 1352
29741353| Key | Type / Values | Details |<ConfigTable
29751354| --- | --- | --- | options={[
29761355| `allowed_approval_policies` | `array<string>` | Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `granular`). | {
29771356| `allowed_approvals_reviewers` | `array<string>` | Allowed values for `approvals_reviewer`, such as `user` and `auto_review`. | key: "allowed_approval_policies",
29781357| `allowed_sandbox_modes` | `array<string>` | Allowed values for `sandbox_mode`. | type: "array<string>",
29791358| `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`. | description:
29801359| `features` | `table` | Pinned feature values keyed by the canonical names from `config.toml`'s `[features]` table. | "Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `granular`).",
29811360| `features.<name>` | `boolean` | Require a specific canonical feature key to stay enabled or disabled. | },
29821361| `features.browser_use` | `boolean` | Set to `false` in `requirements.toml` to disable Browser Use and Browser Agent availability. | {
29831362| `features.computer_use` | `boolean` | Set to `false` in `requirements.toml` to disable Computer Use availability and related install or enablement flows. | key: "allowed_approvals_reviewers",
29841363| `features.in_app_browser` | `boolean` | Set to `false` in `requirements.toml` to disable the in-app browser pane. | type: "array<string>",
29851364| `guardian_policy_config` | `string` | Managed Markdown policy instructions for automatic review. This takes precedence over local `[auto_review].policy`. Blank values are ignored. | description:
29861365| `hooks` | `table` | Admin-enforced managed lifecycle hooks. Requires a managed hook directory and uses the same event schema as inline `[hooks]` in `config.toml`. | "Allowed values for `approvals_reviewer`, such as `user` and `auto_review`.",
29871366| `hooks.<Event>` | `array<table>` | Matcher groups for a hook event such as `PreToolUse`, `PostToolUse`, `PermissionRequest`, `SessionStart`, `UserPromptSubmit`, or `Stop`. | },
29881367| `hooks.<Event>[].hooks` | `array<table>` | Hook handlers for a matcher group. Command hooks are currently supported; prompt and agent hook handlers are parsed but skipped. | {
29891368| `hooks.managed_dir` | `string (absolute path)` | Directory containing managed hook scripts on macOS and Linux. Codex validates that it is absolute and exists before loading managed hooks. | key: "guardian_policy_config",
29901369| `hooks.windows_managed_dir` | `string (absolute path)` | Directory containing managed hook scripts on Windows. Codex validates that it is absolute and exists before loading managed hooks. | type: "string",
29911370| `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. | description:
29921371| `mcp_servers.<id>.identity` | `table` | Identity rule for a single MCP server. Set either `command` (stdio) or `url` (streamable HTTP). | "Managed Markdown policy instructions for automatic review. This takes precedence over local `[auto_review].policy`. Blank values are ignored.",
29931372| `mcp_servers.<id>.identity.command` | `string` | Allow an MCP stdio server when its `mcp_servers.<id>.command` matches this command. | },
29941373| `mcp_servers.<id>.identity.url` | `string` | Allow an MCP streamable HTTP server when its `mcp_servers.<id>.url` matches this URL. | {
29951374| `permissions.filesystem.deny_read` | `array<string>` | Admin-enforced filesystem read denials. Entries can be paths or glob patterns, and users cannot weaken them with local config. | key: "allowed_sandbox_modes",
29961375| `remote_sandbox_config` | `array<table>` | 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. | type: "array<string>",
29971376| `remote_sandbox_config[].allowed_sandbox_modes` | `array<string>` | Allowed sandbox modes to apply when this host-specific entry matches. | description: "Allowed values for `sandbox_mode`.",
29981377| `remote_sandbox_config[].hostname_patterns` | `array<string>` | Case-insensitive host name patterns. Supports `*` for any sequence of characters and `?` for one character. | },
29991378| `rules` | `table` | Admin-enforced command rules merged with `.rules` files. Requirements rules must be restrictive. | {
30001379| `rules.prefix_rules` | `array<table>` | List of enforced prefix rules. Each rule must include `pattern` and `decision`. | key: "remote_sandbox_config",
30011380| `rules.prefix_rules[].decision` | `prompt | forbidden` | Required. Requirements rules can only prompt or forbid (not allow). | type: "array<table>",
30021381| `rules.prefix_rules[].justification` | `string` | Optional non-empty rationale surfaced in approval prompts or rejection messages. | description:
30031382| `rules.prefix_rules[].pattern` | `array<table>` | Command prefix expressed as pattern tokens. Each token sets either `token` or `any_of`. | "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.",
30041383| `rules.prefix_rules[].pattern[].any_of` | `array<string>` | A list of allowed alternative tokens at this position. | },
30051384| `rules.prefix_rules[].pattern[].token` | `string` | A single literal token at this position. | {
30061385 key: "remote_sandbox_config[].hostname_patterns",
30071386Key type: "array<string>",
30081387 description:
30091388`allowed_approval_policies` "Case-insensitive host name patterns. Supports `*` for any sequence of characters and `?` for one character.",
30101389 },
30111390Type / Values {
30121391 key: "remote_sandbox_config[].allowed_sandbox_modes",
30131392`array<string>` type: "array<string>",
30141393 description:
30151394Details "Allowed sandbox modes to apply when this host-specific entry matches.",
30161395 },
30171396Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `granular`). {
30181397 key: "allowed_web_search_modes",
30191398Key type: "array<string>",
30201399 description:
30211400`allowed_approvals_reviewers` "Allowed values for `web_search` (`disabled`, `cached`, `live`). `disabled` is always allowed; an empty list effectively allows only `disabled`.",
30221401 },
30231402Type / Values {
30241403 key: "features",
30251404`array<string>` type: "table",
30261405 description:
30271406Details "Pinned feature values keyed by the canonical names from `config.toml`'s `[features]` table.",
30281407 },
30291408Allowed values for `approvals_reviewer`, such as `user` and `auto_review`. {
30301409 key: "features.<name>",
30311410Key type: "boolean",
30321411 description:
30331412`allowed_sandbox_modes` "Require a specific canonical feature key to stay enabled or disabled.",
30341413 },
30351414Type / Values {
30361415 key: "features.in_app_browser",
30371416`array<string>` type: "boolean",
30381417 description:
30391418Details "Set to `false` in `requirements.toml` to disable the in-app browser pane.",
30401419 },
30411420Allowed values for `sandbox_mode`. {
30421421 key: "features.browser_use",
30431422Key type: "boolean",
30441423 description:
30451424`allowed_web_search_modes` "Set to `false` in `requirements.toml` to disable Browser Use and Browser Agent availability.",
30461425 },
30471426Type / Values {
30481427 key: "features.computer_use",
30491428`array<string>` type: "boolean",
30501429 description:
30511430Details "Set to `false` in `requirements.toml` to disable Computer Use availability and related install or enablement flows.",
30521431 },
30531432Allowed values for `web_search` (`disabled`, `cached`, `live`). `disabled` is always allowed; an empty list effectively allows only `disabled`. {
30541433 key: "hooks",
30551434Key type: "table",
30561435 description:
30571436`features` "Admin-enforced managed lifecycle hooks. Requires a managed hook directory and uses the same event schema as inline `[hooks]` in `config.toml`.",
30581437 },
30591438Type / Values {
30601439 key: "hooks.managed_dir",
30611440`table` type: "string (absolute path)",
30621441 description:
30631442Details "Directory containing managed hook scripts on macOS and Linux. Codex validates that it is absolute and exists before loading managed hooks.",
30641443 },
30651444Pinned feature values keyed by the canonical names from `config.toml`'s `[features]` table. {
30661445 key: "hooks.windows_managed_dir",
30671446Key type: "string (absolute path)",
30681447 description:
30691448`features.<name>` "Directory containing managed hook scripts on Windows. Codex validates that it is absolute and exists before loading managed hooks.",
30701449 },
30711450Type / Values {
30721451 key: "hooks.<Event>",
30731452`boolean` type: "array<table>",
30741453 description:
30751454Details "Matcher groups for a hook event such as `PreToolUse`, `PostToolUse`, `PermissionRequest`, `SessionStart`, `UserPromptSubmit`, or `Stop`.",
30761455 },
30771456Require a specific canonical feature key to stay enabled or disabled. {
30781457 key: "hooks.<Event>[].hooks",
30791458Key type: "array<table>",
30801459 description:
30811460`features.browser_use` "Hook handlers for a matcher group. Command hooks are currently supported; prompt and agent hook handlers are parsed but skipped.",
30821461 },
30831462Type / Values {
30841463 key: "permissions.filesystem.deny_read",
30851464`boolean` type: "array<string>",
30861465 description:
30871466Details "Admin-enforced filesystem read denials. Entries can be paths or glob patterns, and users cannot weaken them with local config.",
30881467 },
30891468Set to `false` in `requirements.toml` to disable Browser Use and Browser Agent availability. {
30901469 key: "mcp_servers",
30911470Key type: "table",
30921471 description:
30931472`features.computer_use` "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.",
30941473 },
30951474Type / Values {
30961475 key: "mcp_servers.<id>.identity",
30971476`boolean` type: "table",
30981477 description:
30991478Details "Identity rule for a single MCP server. Set either `command` (stdio) or `url` (streamable HTTP).",
31001479 },
31011480Set to `false` in `requirements.toml` to disable Computer Use availability and related install or enablement flows. {
31021481 key: "mcp_servers.<id>.identity.command",
31031482Key type: "string",
31041483 description:
31051484`features.in_app_browser` "Allow an MCP stdio server when its `mcp_servers.<id>.command` matches this command.",
31061485 },
31071486Type / Values {
31081487 key: "mcp_servers.<id>.identity.url",
31091488`boolean` type: "string",
31101489 description:
31111490Details "Allow an MCP streamable HTTP server when its `mcp_servers.<id>.url` matches this URL.",
31121491 },
31131492Set to `false` in `requirements.toml` to disable the in-app browser pane. {
31141493 key: "rules",
31151494Key type: "table",
31161495 description:
31171496`guardian_policy_config` "Admin-enforced command rules merged with `.rules` files. Requirements rules must be restrictive.",
31181497 },
31191498Type / Values {
31201499 key: "rules.prefix_rules",
31211500`string` type: "array<table>",
31221501 description:
31231502Details "List of enforced prefix rules. Each rule must include `pattern` and `decision`.",
31241503 },
31251504Managed Markdown policy instructions for automatic review. This takes precedence over local `[auto_review].policy`. Blank values are ignored. {
31261505 key: "rules.prefix_rules[].pattern",
31271506Key type: "array<table>",
31281507 description:
31291508`hooks` "Command prefix expressed as pattern tokens. Each token sets either `token` or `any_of`.",
31301509 },
31311510Type / Values {
31321511 key: "rules.prefix_rules[].pattern[].token",
31331512`table` type: "string",
31341513 description: "A single literal token at this position.",
31351514Details },
31361515 {
31371516Admin-enforced managed lifecycle hooks. Requires a managed hook directory and uses the same event schema as inline `[hooks]` in `config.toml`. key: "rules.prefix_rules[].pattern[].any_of",
31381517 type: "array<string>",
31391518Key description: "A list of allowed alternative tokens at this position.",
31401519 },
31411520`hooks.<Event>` {
31421521 key: "rules.prefix_rules[].decision",
31431522Type / Values type: "prompt | forbidden",
31441523 description:
31451524`array<table>` "Required. Requirements rules can only prompt or forbid (not allow).",
31461525 },
31471526Details {
31481527 key: "rules.prefix_rules[].justification",
31491528Matcher groups for a hook event such as `PreToolUse`, `PostToolUse`, `PermissionRequest`, `SessionStart`, `UserPromptSubmit`, or `Stop`. type: "string",
31501529 description:
31511530Key "Optional non-empty rationale surfaced in approval prompts or rejection messages.",
31521531 },
31531532`hooks.<Event>[].hooks` ]}
31541533 client:load
31551534Type / Values/>
3156
3157`array<table>`
3158
3159Details
3160
3161Hook handlers for a matcher group. Command hooks are currently supported; prompt and agent hook handlers are parsed but skipped.
3162
3163Key
3164
3165`hooks.managed_dir`
3166
3167Type / Values
3168
3169`string (absolute path)`
3170
3171Details
3172
3173Directory containing managed hook scripts on macOS and Linux. Codex validates that it is absolute and exists before loading managed hooks.
3174
3175Key
3176
3177`hooks.windows_managed_dir`
3178
3179Type / Values
3180
3181`string (absolute path)`
3182
3183Details
3184
3185Directory containing managed hook scripts on Windows. Codex validates that it is absolute and exists before loading managed hooks.
3186
3187Key
3188
3189`mcp_servers`
3190
3191Type / Values
3192
3193`table`
3194
3195Details
3196
3197Allowlist 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.
3198
3199Key
3200
3201`mcp_servers.<id>.identity`
3202
3203Type / Values
3204
3205`table`
3206
3207Details
3208
3209Identity rule for a single MCP server. Set either `command` (stdio) or `url` (streamable HTTP).
3210
3211Key
3212
3213`mcp_servers.<id>.identity.command`
3214
3215Type / Values
3216
3217`string`
3218
3219Details
3220
3221Allow an MCP stdio server when its `mcp_servers.<id>.command` matches this command.
3222
3223Key
3224
3225`mcp_servers.<id>.identity.url`
3226
3227Type / Values
3228
3229`string`
3230
3231Details
3232
3233Allow an MCP streamable HTTP server when its `mcp_servers.<id>.url` matches this URL.
3234
3235Key
3236
3237`permissions.filesystem.deny_read`
3238
3239Type / Values
3240
3241`array<string>`
3242
3243Details
3244
3245Admin-enforced filesystem read denials. Entries can be paths or glob patterns, and users cannot weaken them with local config.
3246
3247Key
3248
3249`remote_sandbox_config`
3250
3251Type / Values
3252
3253`array<table>`
3254
3255Details
3256
3257Host-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.
3258
3259Key
3260
3261`remote_sandbox_config[].allowed_sandbox_modes`
3262
3263Type / Values
3264
3265`array<string>`
3266
3267Details
3268
3269Allowed sandbox modes to apply when this host-specific entry matches.
3270
3271Key
3272
3273`remote_sandbox_config[].hostname_patterns`
3274
3275Type / Values
3276
3277`array<string>`
3278
3279Details
3280
3281Case-insensitive host name patterns. Supports `*` for any sequence of characters and `?` for one character.
3282
3283Key
3284
3285`rules`
3286
3287Type / Values
3288
3289`table`
3290
3291Details
3292
3293Admin-enforced command rules merged with `.rules` files. Requirements rules must be restrictive.
3294
3295Key
3296
3297`rules.prefix_rules`
3298
3299Type / Values
3300
3301`array<table>`
3302
3303Details
3304
3305List of enforced prefix rules. Each rule must include `pattern` and `decision`.
3306
3307Key
3308
3309`rules.prefix_rules[].decision`
3310
3311Type / Values
3312
3313`prompt | forbidden`
3314
3315Details
3316
3317Required. Requirements rules can only prompt or forbid (not allow).
3318
3319Key
3320
3321`rules.prefix_rules[].justification`
3322
3323Type / Values
3324
3325`string`
3326
3327Details
3328
3329Optional non-empty rationale surfaced in approval prompts or rejection messages.
3330
3331Key
3332
3333`rules.prefix_rules[].pattern`
3334
3335Type / Values
3336
3337`array<table>`
3338
3339Details
3340
3341Command prefix expressed as pattern tokens. Each token sets either `token` or `any_of`.
3342
3343Key
3344
3345`rules.prefix_rules[].pattern[].any_of`
3346
3347Type / Values
3348
3349`array<string>`
3350
3351Details
3352
3353A list of allowed alternative tokens at this position.
3354
3355Key
3356
3357`rules.prefix_rules[].pattern[].token`
3358
3359Type / Values
3360
3361`string`
3362
3363Details
3364
3365A single literal token at this position.
3366
3367Expand to view all