config-reference.md +1509 −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. | 'Commit co-author trailer used when `[features].codex_git_commit` is enabled. Defaults to `Codex <noreply@openai.com>`; set `""` to disable.',
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: "features.codex_git_commit",
335335 type: "boolean",
336336Key description:
337337 "Enable Codex-generated git commits. When enabled, Codex uses `commit_attribution` to append a `Co-authored-by:` trailer to generated commit messages.",
338338`approval_policy` },
339339 {
340340Type / Values key: "hooks",
341341 type: "table",
342342`untrusted | on-request | never | { granular = { sandbox_approval = bool, rules = bool, mcp_elicitations = bool, request_permissions = bool, skill_approval = bool } }` description:
343343 "Lifecycle hooks configured inline in `config.toml`. Uses the same event schema as `hooks.json`; see the Hooks guide for examples and supported events.",
344344Details },
345345 {
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. key: "features.memories",
347347 type: "boolean",
348348Key description: "Enable [Memories](https://developers.openai.com/codex/memories) (off by default).",
349349 },
350350`approval_policy.granular.mcp_elicitations` {
351351 key: "mcp_servers.<id>.command",
352352Type / Values type: "string",
353353 description: "Launcher command for an MCP stdio server.",
354354`boolean` },
355355 {
356356Details key: "mcp_servers.<id>.args",
357357 type: "array<string>",
358358When `true`, MCP elicitation prompts are allowed to surface instead of being auto-rejected. description: "Arguments passed to the MCP stdio server command.",
359359 },
360360Key {
361361 key: "mcp_servers.<id>.env",
362362`approval_policy.granular.request_permissions` type: "map<string,string>",
363363 description: "Environment variables forwarded to the MCP stdio server.",
364364Type / Values },
365365 {
366366`boolean` key: "mcp_servers.<id>.env_vars",
367367 type: 'array<string | { name = string, source = "local" | "remote" }>',
368368Details description:
369369 'Additional environment variables to whitelist for an MCP stdio server. String entries default to `source = "local"`; use `source = "remote"` only with executor-backed remote stdio.',
370370When `true`, prompts from the `request_permissions` tool are allowed to surface. },
371371 {
372372Key key: "mcp_servers.<id>.cwd",
373373 type: "string",
374374`approval_policy.granular.rules` description: "Working directory for the MCP stdio server process.",
375375 },
376376Type / Values {
377377 key: "mcp_servers.<id>.url",
378378`boolean` type: "string",
379379 description: "Endpoint for an MCP streamable HTTP server.",
380380Details },
381381 {
382382When `true`, approvals triggered by execpolicy `prompt` rules are allowed to surface. key: "mcp_servers.<id>.bearer_token_env_var",
383383 type: "string",
384384Key description:
385385 "Environment variable sourcing the bearer token for an MCP HTTP server.",
386386`approval_policy.granular.sandbox_approval` },
387387 {
388388Type / Values key: "mcp_servers.<id>.http_headers",
389389 type: "map<string,string>",
390390`boolean` description: "Static HTTP headers included with each MCP HTTP request.",
391391 },
392392Details {
393393 key: "mcp_servers.<id>.env_http_headers",
394394When `true`, sandbox escalation approval prompts are allowed to surface. type: "map<string,string>",
395395 description:
396396Key "HTTP headers populated from environment variables for an MCP HTTP server.",
397397 },
398398`approval_policy.granular.skill_approval` {
399399 key: "mcp_servers.<id>.enabled",
400400Type / Values type: "boolean",
401401 description: "Disable an MCP server without removing its configuration.",
402402`boolean` },
403403 {
404404Details key: "mcp_servers.<id>.required",
405405 type: "boolean",
406406When `true`, skill-script approval prompts are allowed to surface. description:
407407 "When true, fail startup/resume if this enabled MCP server cannot initialize.",
408408Key },
409409 {
410410`approvals_reviewer` key: "mcp_servers.<id>.startup_timeout_sec",
411411 type: "number",
412412Type / Values description:
413413 "Override the default 10s startup timeout for an MCP server.",
414414`user | auto_review` },
415415 {
416416Details key: "mcp_servers.<id>.startup_timeout_ms",
417417 type: "number",
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. description: "Alias for `startup_timeout_sec` in milliseconds.",
419419 },
420420Key {
421421 key: "mcp_servers.<id>.tool_timeout_sec",
422422`apps._default.destructive_enabled` type: "number",
423423 description:
424424Type / Values "Override the default 60s per-tool timeout for an MCP server.",
425425 },
426426`boolean` {
427427 key: "mcp_servers.<id>.enabled_tools",
428428Details type: "array<string>",
429429 description: "Allow list of tool names exposed by the MCP server.",
430430Default allow/deny for app tools with `destructive_hint = true`. },
431431 {
432432Key key: "mcp_servers.<id>.disabled_tools",
433433 type: "array<string>",
434434`apps._default.enabled` description:
435435 "Deny list applied after `enabled_tools` for the MCP server.",
436436Type / Values },
437437 {
438438`boolean` key: "mcp_servers.<id>.scopes",
439439 type: "array<string>",
440440Details description:
441441 "OAuth scopes to request when authenticating to that MCP server.",
442442Default app enabled state for all apps unless overridden per app. },
443443 {
444444Key key: "mcp_servers.<id>.oauth_resource",
445445 type: "string",
446446`apps._default.open_world_enabled` description:
447447 "Optional RFC 8707 OAuth resource parameter to include during MCP login.",
448448Type / Values },
449449 {
450450`boolean` key: "mcp_servers.<id>.experimental_environment",
451451 type: "local | remote",
452452Details description:
453453 "Experimental placement for an MCP server. `remote` starts stdio servers through a remote executor environment; streamable HTTP remote placement is not implemented.",
454454Default allow/deny for app tools with `open_world_hint = true`. },
455455 {
456456Key key: "agents.max_threads",
457457 type: "number",
458458`apps.<id>.default_tools_approval_mode` description:
459459 "Maximum number of agent threads that can be open concurrently. Defaults to `6` when unset.",
460460Type / Values },
461461 {
462462`auto | prompt | approve` key: "agents.max_depth",
463463 type: "number",
464464Details description:
465465 "Maximum nesting depth allowed for spawned agent threads (root sessions start at depth 0; default: 1).",
466466Default approval behavior for tools in this app unless a per-tool override exists. },
467467 {
468468Key key: "agents.job_max_runtime_seconds",
469469 type: "number",
470470`apps.<id>.default_tools_enabled` description:
471471 "Default per-worker timeout for `spawn_agents_on_csv` jobs. When unset, the tool falls back to 1800 seconds per worker.",
472472Type / Values },
473473 {
474474`boolean` key: "agents.<name>.description",
475475 type: "string",
476476Details description:
477477 "Role guidance shown to Codex when choosing and spawning that agent type.",
478478Default enabled state for tools in this app unless a per-tool override exists. },
479479 {
480480Key key: "agents.<name>.config_file",
481481 type: "string (path)",
482482`apps.<id>.destructive_enabled` description:
483483 "Path to a TOML config layer for that role; relative paths resolve from the config file that declares the role.",
484484Type / Values },
485485 {
486486`boolean` key: "agents.<name>.nickname_candidates",
487487 type: "array<string>",
488488Details description:
489489 "Optional pool of display nicknames for spawned agents in that role.",
490490Allow or block tools in this app that advertise `destructive_hint = true`. },
491491 {
492492Key key: "memories.generate_memories",
493493 type: "boolean",
494494`apps.<id>.enabled` description:
495495 "When `false`, newly created threads are not stored as memory-generation inputs. Defaults to `true`.",
496496Type / Values },
497497 {
498498`boolean` key: "memories.use_memories",
499499 type: "boolean",
500500Details description:
501501 "When `false`, Codex skips injecting existing memories into future sessions. Defaults to `true`.",
502502Enable or disable a specific app/connector by id (default: true). },
503503 {
504504Key key: "memories.disable_on_external_context",
505505 type: "boolean",
506506`apps.<id>.open_world_enabled` description:
507507 "When `true`, threads that use external context such as MCP tool calls, web search, or tool search are kept out of memory generation. Defaults to `false`. Legacy alias: `memories.no_memories_if_mcp_or_web_search`.",
508508Type / Values },
509509 {
510510`boolean` key: "memories.max_raw_memories_for_consolidation",
511511 type: "number",
512512Details description:
513513 "Maximum recent raw memories retained for global consolidation. Defaults to `256` and is capped at `4096`.",
514514Allow or block tools in this app that advertise `open_world_hint = true`. },
515515 {
516516Key key: "memories.max_unused_days",
517517 type: "number",
518518`apps.<id>.tools.<tool>.approval_mode` description:
519519 "Maximum days since a memory was last used before it becomes ineligible for consolidation. Defaults to `30` and is clamped to `0`-`365`.",
520520Type / Values },
521521 {
522522`auto | prompt | approve` key: "memories.max_rollout_age_days",
523523 type: "number",
524524Details description:
525525 "Maximum age of threads considered for memory generation. Defaults to `30` and is clamped to `0`-`90`.",
526526Per-tool approval behavior override for a single app tool. },
527527 {
528528Key key: "memories.max_rollouts_per_startup",
529529 type: "number",
530530`apps.<id>.tools.<tool>.enabled` description:
531531 "Maximum rollout candidates processed per startup pass. Defaults to `16` and is capped at `128`.",
532532Type / Values },
533533 {
534534`boolean` key: "memories.min_rollout_idle_hours",
535535 type: "number",
536536Details description:
537537 "Minimum idle time before a thread is considered for memory generation. Defaults to `6` and is clamped to `1`-`48`.",
538538Per-tool enabled override for an app tool (for example `repos/list`). },
539539 {
540540Key key: "memories.min_rate_limit_remaining_percent",
541541 type: "number",
542542`auto_review.policy` description:
543543 "Minimum remaining percentage required in Codex rate-limit windows before memory generation starts. Defaults to `25` and is clamped to `0`-`100`.",
544544Type / Values },
545545 {
546546`string` key: "memories.extract_model",
547547 type: "string",
548548Details description: "Optional model override for per-thread memory extraction.",
549549 },
550550Local Markdown policy instructions for automatic review. Managed `guardian_policy_config` takes precedence. Blank values are ignored. {
551551 key: "memories.consolidation_model",
552552Key type: "string",
553553 description: "Optional model override for global memory consolidation.",
554554`background_terminal_max_timeout` },
555555 {
556556Type / Values key: "features.unified_exec",
557557 type: "boolean",
558558`number` description:
559559 "Use the unified PTY-backed exec tool (stable; enabled by default except on Windows).",
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.shell_snapshot",
563563 type: "boolean",
564564Key description:
565565 "Snapshot shell environment to speed up repeated commands (stable; on by default).",
566566`chatgpt_base_url` },
567567 {
568568Type / Values key: "features.undo",
569569 type: "boolean",
570570`string` description: "Enable undo support (stable; off by default).",
571571 },
572572Details {
573573 key: "features.multi_agent",
574574Override the base URL used during the ChatGPT login flow. type: "boolean",
575575 description:
576576Key "Enable multi-agent collaboration tools (`spawn_agent`, `send_input`, `resume_agent`, `wait_agent`, and `close_agent`) (stable; on by default).",
577577 },
578578`check_for_update_on_startup` {
579579 key: "features.personality",
580580Type / Values type: "boolean",
581581 description:
582582`boolean` "Enable personality selection controls (stable; on by default).",
583583 },
584584Details {
585585 key: "features.web_search",
586586Check for Codex updates on startup (set to false only when updates are centrally managed). type: "boolean",
587587 description:
588588Key "Deprecated legacy toggle; prefer the top-level `web_search` setting.",
589589 },
590590`cli_auth_credentials_store` {
591591 key: "features.web_search_cached",
592592Type / Values type: "boolean",
593593 description:
594594`file | keyring | auto` 'Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "cached"`.',
595595 },
596596Details {
597597 key: "features.web_search_request",
598598Control where the CLI stores cached credentials (file-based auth.json vs OS keychain). type: "boolean",
599599 description:
600600Key 'Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "live"`.',
601601 },
602602`commit_attribution` {
603603 key: "features.shell_tool",
604604Type / Values type: "boolean",
605605 description:
606606`string` "Enable the default `shell` tool for running commands (stable; on by default).",
607607 },
608608Details {
609609 key: "features.enable_request_compression",
610610Override the commit co-author trailer text. Set an empty string to disable automatic attribution. type: "boolean",
611611 description:
612612Key "Compress streaming request bodies with zstd when supported (stable; on by default).",
613613 },
614614`compact_prompt` {
615615 key: "features.skill_mcp_dependency_install",
616616Type / Values type: "boolean",
617617 description:
618618`string` "Allow prompting and installing missing MCP dependencies for skills (stable; on by default).",
619619 },
620620Details {
621621 key: "features.fast_mode",
622622Inline override for the history compaction prompt. type: "boolean",
623623 description:
624624Key 'Enable Fast mode selection and the `service_tier = "fast"` path (stable; on by default).',
625625 },
626626`default_permissions` {
627627 key: "features.prevent_idle_sleep",
628628Type / Values type: "boolean",
629629 description:
630630`string` "Prevent the machine from sleeping while a turn is actively running (experimental; off by default).",
631631 },
632632Details {
633633 key: "suppress_unstable_features_warning",
634634Name of the default permissions profile to apply to sandboxed tool calls. type: "boolean",
635635 description:
636636Key "Suppress the warning that appears when under-development feature flags are enabled.",
637637 },
638638`developer_instructions` {
639639 key: "model_providers.<id>",
640640Type / Values type: "table",
641641 description:
642642`string` "Custom provider definition. Built-in provider IDs (`openai`, `ollama`, and `lmstudio`) are reserved and cannot be overridden.",
643643 },
644644Details {
645645 key: "model_providers.<id>.name",
646646Additional developer instructions injected into the session (optional). type: "string",
647647 description: "Display name for a custom model provider.",
648648Key },
649649 {
650650`disable_paste_burst` key: "model_providers.<id>.base_url",
651651 type: "string",
652652Type / Values description: "API base URL for the model provider.",
653653 },
654654`boolean` {
655655 key: "model_providers.<id>.env_key",
656656Details type: "string",
657657 description: "Environment variable supplying the provider API key.",
658658Disable burst-paste detection in the TUI. },
659659 {
660660Key key: "model_providers.<id>.env_key_instructions",
661661 type: "string",
662662`experimental_compact_prompt_file` description: "Optional setup guidance for the provider API key.",
663663 },
664664Type / Values {
665665 key: "model_providers.<id>.experimental_bearer_token",
666666`string (path)` type: "string",
667667 description:
668668Details "Direct bearer token for the provider (discouraged; use `env_key`).",
669669 },
670670Load the compaction prompt override from a file (experimental). {
671671 key: "model_providers.<id>.requires_openai_auth",
672672Key type: "boolean",
673673 description:
674674`experimental_use_unified_exec_tool` "The provider uses OpenAI authentication (defaults to false).",
675675 },
676676Type / Values {
677677 key: "model_providers.<id>.wire_api",
678678`boolean` type: "responses",
679679 description:
680680Details "Protocol used by the provider. `responses` is the only supported value, and it is the default when omitted.",
681681 },
682682Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`. {
683683 key: "model_providers.<id>.query_params",
684684Key type: "map<string,string>",
685685 description: "Extra query parameters appended to provider requests.",
686686`features.apps` },
687687 {
688688Type / Values key: "model_providers.<id>.http_headers",
689689 type: "map<string,string>",
690690`boolean` description: "Static HTTP headers added to provider requests.",
691691 },
692692Details {
693693 key: "model_providers.<id>.env_http_headers",
694694Enable ChatGPT Apps/connectors support (experimental). type: "map<string,string>",
695695 description:
696696Key "HTTP headers populated from environment variables when present.",
697697 },
698698`features.codex_hooks` {
699699 key: "model_providers.<id>.request_max_retries",
700700Type / Values type: "number",
701701 description:
702702`boolean` "Retry count for HTTP requests to the provider (default: 4).",
703703 },
704704Details {
705705 key: "model_providers.<id>.stream_max_retries",
706706Enable lifecycle hooks loaded from `hooks.json` or inline `[hooks]` config. type: "number",
707707 description: "Retry count for SSE streaming interruptions (default: 5).",
708708Key },
709709 {
710710`features.enable_request_compression` key: "model_providers.<id>.stream_idle_timeout_ms",
711711 type: "number",
712712Type / Values description:
713713 "Idle timeout for SSE streams in milliseconds (default: 300000).",
714714`boolean` },
715715 {
716716Details key: "model_providers.<id>.supports_websockets",
717717 type: "boolean",
718718Compress streaming request bodies with zstd when supported (stable; on by default). description:
719719 "Whether that provider supports the Responses API WebSocket transport.",
720720Key },
721721 {
722722`features.fast_mode` key: "model_providers.<id>.auth",
723723 type: "table",
724724Type / Values description:
725725 "Command-backed bearer token configuration for a custom provider. Do not combine with `env_key`, `experimental_bearer_token`, or `requires_openai_auth`.",
726726`boolean` },
727727 {
728728Details key: "model_providers.<id>.auth.command",
729729 type: "string",
730730Enable Fast mode selection and the `service_tier = "fast"` path (stable; on by default). description:
731731 "Command to run when Codex needs a bearer token. The command must print the token to stdout.",
732732Key },
733733 {
734734`features.memories` key: "model_providers.<id>.auth.args",
735735 type: "array<string>",
736736Type / Values description: "Arguments passed to the token command.",
737737 },
738738`boolean` {
739739 key: "model_providers.<id>.auth.timeout_ms",
740740Details type: "number",
741741 description:
742742Enable [Memories](https://developers.openai.com/codex/memories) (off by default). "Maximum token command runtime in milliseconds (default: 5000).",
743743 },
744744Key {
745745 key: "model_providers.<id>.auth.refresh_interval_ms",
746746`features.multi_agent` type: "number",
747747 description:
748748Type / Values "How often Codex proactively refreshes the token in milliseconds (default: 300000). Set to `0` to refresh only after an authentication retry.",
749749 },
750750`boolean` {
751751 key: "model_providers.<id>.auth.cwd",
752752Details type: "string (path)",
753753 description: "Working directory for the token command.",
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.profile",
757757 type: "string",
758758`features.personality` description:
759759 "AWS profile name used by the built-in `amazon-bedrock` provider.",
760760Type / Values },
761761 {
762762`boolean` key: "model_providers.amazon-bedrock.aws.region",
763763 type: "string",
764764Details description: "AWS region used by the built-in `amazon-bedrock` provider.",
765765 },
766766Enable personality selection controls (stable; on by default). {
767767 key: "model_reasoning_effort",
768768Key type: "minimal | low | medium | high | xhigh",
769769 description:
770770`features.prevent_idle_sleep` "Adjust reasoning effort for supported models (Responses API only; `xhigh` is model-dependent).",
771771 },
772772Type / Values {
773773 key: "plan_mode_reasoning_effort",
774774`boolean` type: "none | minimal | low | medium | high | xhigh",
775775 description:
776776Details "Plan-mode-specific reasoning override. When unset, Plan mode uses its built-in preset default.",
777777 },
778778Prevent the machine from sleeping while a turn is actively running (experimental; off by default). {
779779 key: "model_reasoning_summary",
780780Key type: "auto | concise | detailed | none",
781781 description:
782782`features.shell_snapshot` "Select reasoning summary detail or disable summaries entirely.",
783783 },
784784Type / Values {
785785 key: "model_verbosity",
786786`boolean` type: "low | medium | high",
787787 description:
788788Details "Optional GPT-5 Responses API verbosity override; when unset, the selected model/preset default is used.",
789789 },
790790Snapshot shell environment to speed up repeated commands (stable; on by default). {
791791 key: "model_supports_reasoning_summaries",
792792Key type: "boolean",
793793 description: "Force Codex to send or not send reasoning metadata.",
794794`features.shell_tool` },
795795 {
796796Type / Values key: "shell_environment_policy.inherit",
797797 type: "all | core | none",
798798`boolean` description:
799799 "Baseline environment inheritance when spawning subprocesses.",
800800Details },
801801 {
802802Enable the default `shell` tool for running commands (stable; on by default). key: "shell_environment_policy.ignore_default_excludes",
803803 type: "boolean",
804804Key description:
805805 "Keep variables containing KEY/SECRET/TOKEN before other filters run.",
806806`features.skill_mcp_dependency_install` },
807807 {
808808Type / Values key: "shell_environment_policy.exclude",
809809 type: "array<string>",
810810`boolean` description:
811811 "Glob patterns for removing environment variables after the defaults.",
812812Details },
813813 {
814814Allow prompting and installing missing MCP dependencies for skills (stable; on by default). key: "shell_environment_policy.include_only",
815815 type: "array<string>",
816816Key description:
817817 "Whitelist of patterns; when set only matching variables are kept.",
818818`features.undo` },
819819 {
820820Type / Values key: "shell_environment_policy.set",
821821 type: "map<string,string>",
822822`boolean` description:
823823 "Explicit environment overrides injected into every subprocess.",
824824Details },
825825 {
826826Enable undo support (stable; off by default). key: "shell_environment_policy.experimental_use_profile",
827827 type: "boolean",
828828Key description: "Use the user shell profile when spawning subprocesses.",
829829 },
830830`features.unified_exec` {
831831 key: "project_root_markers",
832832Type / Values type: "array<string>",
833833 description:
834834`boolean` "List of project root marker filenames; used when searching parent directories for the project root.",
835835 },
836836Details {
837837 key: "project_doc_max_bytes",
838838Use the unified PTY-backed exec tool (stable; enabled by default except on Windows). type: "number",
839839 description:
840840Key "Maximum bytes read from `AGENTS.md` when building project instructions.",
841841 },
842842`features.web_search` {
843843 key: "project_doc_fallback_filenames",
844844Type / Values type: "array<string>",
845845 description: "Additional filenames to try when `AGENTS.md` is missing.",
846846`boolean` },
847847 {
848848Details key: "profile",
849849 type: "string",
850850Deprecated legacy toggle; prefer the top-level `web_search` setting. description:
851851 "Default profile applied at startup (equivalent to `--profile`).",
852852Key },
853853 {
854854`features.web_search_cached` key: "profiles.<name>.*",
855855 type: "various",
856856Type / Values description:
857857 "Profile-scoped overrides for any of the supported configuration keys.",
858858`boolean` },
859859 {
860860Details key: "profiles.<name>.service_tier",
861861 type: "flex | fast",
862862Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "cached"`. description: "Profile-scoped service tier preference for new turns.",
863863 },
864864Key {
865865 key: "profiles.<name>.plan_mode_reasoning_effort",
866866`features.web_search_request` type: "none | minimal | low | medium | high | xhigh",
867867 description: "Profile-scoped Plan-mode reasoning override.",
868868Type / Values },
869869 {
870870`boolean` key: "profiles.<name>.web_search",
871871 type: "disabled | cached | live",
872872Details description:
873873 'Profile-scoped web search mode override (default: `"cached"`).',
874874Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "live"`. },
875875 {
876876Key key: "profiles.<name>.personality",
877877 type: "none | friendly | pragmatic",
878878`feedback.enabled` description:
879879 "Profile-scoped communication style override for supported models.",
880880Type / Values },
881881 {
882882`boolean` key: "profiles.<name>.model_catalog_json",
883883 type: "string (path)",
884884Details description:
885885 "Profile-scoped model catalog JSON path override (applied on startup only; overrides the top-level `model_catalog_json` for that profile).",
886886Enable feedback submission via `/feedback` across Codex surfaces (default: true). },
887887 {
888888Key key: "profiles.<name>.model_instructions_file",
889889 type: "string (path)",
890890`file_opener` description:
891891 "Profile-scoped replacement for the built-in instruction file.",
892892Type / Values },
893893 {
894894`vscode | vscode-insiders | windsurf | cursor | none` key: "profiles.<name>.experimental_use_unified_exec_tool",
895895 type: "boolean",
896896Details description:
897897 "Legacy name for enabling unified exec; prefer `[features].unified_exec`.",
898898URI scheme used to open citations from Codex output (default: `vscode`). },
899899 {
900900Key key: "profiles.<name>.oss_provider",
901901 type: "lmstudio | ollama",
902902`forced_chatgpt_workspace_id` description: "Profile-scoped OSS provider for `--oss` sessions.",
903903 },
904904Type / Values {
905905 key: "profiles.<name>.tools_view_image",
906906`string (uuid)` type: "boolean",
907907 description: "Enable or disable the `view_image` tool in that profile.",
908908Details },
909909 {
910910Limit ChatGPT logins to a specific workspace identifier. key: "profiles.<name>.analytics.enabled",
911911 type: "boolean",
912912Key description: "Profile-scoped analytics enablement override.",
913913 },
914914`forced_login_method` {
915915 key: "profiles.<name>.windows.sandbox",
916916Type / Values type: "unelevated | elevated",
917917 description: "Profile-scoped Windows sandbox mode override.",
918918`chatgpt | api` },
919919 {
920920Details key: "history.persistence",
921921 type: "save-all | none",
922922Restrict Codex to a specific authentication method. description:
923923 "Control whether Codex saves session transcripts to history.jsonl.",
924924Key },
925925 {
926926`hide_agent_reasoning` key: "tool_output_token_limit",
927927 type: "number",
928928Type / Values description:
929929 "Token budget for storing individual tool/function outputs in history.",
930930`boolean` },
931931 {
932932Details key: "background_terminal_max_timeout",
933933 type: "number",
934934Suppress reasoning events in both the TUI and `codex exec` output. description:
935935 "Maximum poll window in milliseconds for empty `write_stdin` polls (background terminal polling). Default: `300000` (5 minutes). Replaces the older `background_terminal_timeout` key.",
936936Key },
937937 {
938938`history.max_bytes` key: "history.max_bytes",
939939 type: "number",
940940Type / Values description:
941941 "If set, caps the history file size in bytes by dropping oldest entries.",
942942`number` },
943943 {
944944Details key: "file_opener",
945945 type: "vscode | vscode-insiders | windsurf | cursor | none",
946946If set, caps the history file size in bytes by dropping oldest entries. description:
947947 "URI scheme used to open citations from Codex output (default: `vscode`).",
948948Key },
949949 {
950950`history.persistence` key: "otel.environment",
951951 type: "string",
952952Type / Values description:
953953 "Environment tag applied to emitted OpenTelemetry events (default: `dev`).",
954954`save-all | none` },
955955 {
956956Details key: "otel.exporter",
957957 type: "none | otlp-http | otlp-grpc",
958958Control whether Codex saves session transcripts to history.jsonl. description:
959959 "Select the OpenTelemetry exporter and provide any endpoint metadata.",
960960Key },
961961 {
962962`hooks` key: "otel.trace_exporter",
963963 type: "none | otlp-http | otlp-grpc",
964964Type / Values description:
965965 "Select the OpenTelemetry trace exporter and provide any endpoint metadata.",
966966`table` },
967967 {
968968Details key: "otel.metrics_exporter",
969969 type: "none | statsig | otlp-http | otlp-grpc",
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 "Select the OpenTelemetry metrics exporter (defaults to `statsig`).",
972972Key },
973973 {
974974`instructions` key: "otel.log_user_prompt",
975975 type: "boolean",
976976Type / Values description:
977977 "Opt in to exporting raw user prompts with OpenTelemetry logs.",
978978`string` },
979979 {
980980Details key: "otel.exporter.<id>.endpoint",
981981 type: "string",
982982Reserved for future use; prefer `model_instructions_file` or `AGENTS.md`. description: "Exporter endpoint for OTEL logs.",
983983 },
984984Key {
985985 key: "otel.exporter.<id>.protocol",
986986`log_dir` type: "binary | json",
987987 description: "Protocol used by the OTLP/HTTP exporter.",
988988Type / Values },
989989 {
990990`string (path)` key: "otel.exporter.<id>.headers",
991991 type: "map<string,string>",
992992Details description: "Static headers included with OTEL exporter requests.",
993993 },
994994Directory where Codex writes log files (for example `codex-tui.log`); defaults to `$CODEX_HOME/log`. {
995995 key: "otel.trace_exporter.<id>.endpoint",
996996Key type: "string",
997997 description: "Trace exporter endpoint for OTEL logs.",
998998`mcp_oauth_callback_port` },
999999 {
10001000Type / Values key: "otel.trace_exporter.<id>.protocol",
10011001 type: "binary | json",
10021002`integer` description: "Protocol used by the OTLP/HTTP trace exporter.",
10031003 },
10041004Details {
10051005 key: "otel.trace_exporter.<id>.headers",
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. type: "map<string,string>",
10071007 description: "Static headers included with OTEL trace exporter requests.",
10081008Key },
10091009 {
10101010`mcp_oauth_callback_url` key: "otel.exporter.<id>.tls.ca-certificate",
10111011 type: "string",
10121012Type / Values description: "CA certificate path for OTEL exporter TLS.",
10131013 },
10141014`string` {
10151015 key: "otel.exporter.<id>.tls.client-certificate",
10161016Details type: "string",
10171017 description: "Client certificate path for OTEL exporter TLS.",
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 {
10201020Key key: "otel.exporter.<id>.tls.client-private-key",
10211021 type: "string",
10221022`mcp_oauth_credentials_store` description: "Client private key path for OTEL exporter TLS.",
10231023 },
10241024Type / Values {
10251025 key: "otel.trace_exporter.<id>.tls.ca-certificate",
10261026`auto | file | keyring` type: "string",
10271027 description: "CA certificate path for OTEL trace exporter TLS.",
10281028Details },
10291029 {
10301030Preferred store for MCP OAuth credentials. key: "otel.trace_exporter.<id>.tls.client-certificate",
10311031 type: "string",
10321032Key description: "Client certificate path for OTEL trace exporter TLS.",
10331033 },
10341034`mcp_servers.<id>.args` {
10351035 key: "otel.trace_exporter.<id>.tls.client-private-key",
10361036Type / Values type: "string",
10371037 description: "Client private key path for OTEL trace exporter TLS.",
10381038`array<string>` },
10391039 {
10401040Details key: "tui",
10411041 type: "table",
10421042Arguments passed to the MCP stdio server command. description:
10431043 "TUI-specific options such as enabling inline desktop notifications.",
10441044Key },
10451045 {
10461046`mcp_servers.<id>.bearer_token_env_var` key: "tui.notifications",
10471047 type: "boolean | array<string>",
10481048Type / Values description:
10491049 "Enable TUI notifications; optionally restrict to specific event types.",
10501050`string` },
10511051 {
10521052Details key: "tui.notification_method",
10531053 type: "auto | osc9 | bel",
10541054Environment variable sourcing the bearer token for an MCP HTTP server. description:
10551055 "Notification method for terminal notifications (default: auto).",
10561056Key },
10571057 {
10581058`mcp_servers.<id>.command` key: "tui.notification_condition",
10591059 type: "unfocused | always",
10601060Type / Values description:
10611061 "Control whether TUI notifications fire only when the terminal is unfocused or regardless of focus. Defaults to `unfocused`.",
10621062`string` },
10631063 {
10641064Details key: "tui.animations",
10651065 type: "boolean",
10661066Launcher command for an MCP stdio server. description:
10671067 "Enable terminal animations (welcome screen, shimmer, spinner) (default: true).",
10681068Key },
10691069 {
10701070`mcp_servers.<id>.cwd` key: "tui.alternate_screen",
10711071 type: "auto | always | never",
10721072Type / Values description:
10731073 "Control alternate screen usage for the TUI (default: auto; auto skips it in Zellij to preserve scrollback).",
10741074`string` },
10751075 {
10761076Details key: "tui.show_tooltips",
10771077 type: "boolean",
10781078Working directory for the MCP stdio server process. description:
10791079 "Show onboarding tooltips in the TUI welcome screen (default: true).",
10801080Key },
10811081 {
10821082`mcp_servers.<id>.disabled_tools` key: "tui.status_line",
10831083 type: "array<string> | null",
10841084Type / Values description:
10851085 "Ordered list of TUI footer status-line item identifiers. `null` disables the status line.",
10861086`array<string>` },
10871087 {
10881088Details key: "tui.terminal_title",
10891089 type: "array<string> | null",
10901090Deny list applied after `enabled_tools` for the MCP server. description:
10911091 'Ordered list of terminal window/tab title item identifiers. Defaults to `["spinner", "project"]`; `null` disables title updates.',
10921092Key },
10931093 {
10941094`mcp_servers.<id>.enabled` key: "tui.theme",
10951095 type: "string",
10961096Type / Values description:
10971097 "Syntax-highlighting theme override (kebab-case theme name).",
10981098`boolean` },
10991099 {
11001100Details key: "tui.keymap.<context>.<action>",
11011101 type: "string | array<string>",
11021102Disable an MCP server without removing its configuration. description:
11031103 "Keyboard shortcut binding for a TUI action. Supported contexts include `global`, `chat`, `composer`, `editor`, `pager`, `list`, and `approval`; context-specific bindings override `tui.keymap.global`.",
11041104Key },
11051105 {
11061106`mcp_servers.<id>.enabled_tools` key: "tui.keymap.<context>.<action> = []",
11071107 type: "empty array",
11081108Type / Values description:
11091109 "Unbind the action in that keymap context. Key names use normalized strings such as `ctrl-a`, `shift-enter`, or `page-down`.",
11101110`array<string>` },
11111111 {
11121112Details key: "tui.model_availability_nux.<model>",
11131113 type: "integer",
11141114Allow list of tool names exposed by the MCP server. description: "Internal startup-tooltip state keyed by model slug.",
11151115 },
11161116Key {
11171117 key: "hide_agent_reasoning",
11181118`mcp_servers.<id>.env` type: "boolean",
11191119 description:
11201120Type / Values "Suppress reasoning events in both the TUI and `codex exec` output.",
11211121 },
11221122`map<string,string>` {
11231123 key: "show_raw_agent_reasoning",
11241124Details type: "boolean",
11251125 description:
11261126Environment variables forwarded to the MCP stdio server. "Surface raw reasoning content when the active model emits it.",
11271127 },
11281128Key {
11291129 key: "disable_paste_burst",
11301130`mcp_servers.<id>.env_http_headers` type: "boolean",
11311131 description: "Disable burst-paste detection in the TUI.",
11321132Type / Values },
11331133 {
11341134`map<string,string>` key: "windows_wsl_setup_acknowledged",
11351135 type: "boolean",
11361136Details description: "Track Windows onboarding acknowledgement (Windows only).",
11371137 },
11381138HTTP headers populated from environment variables for an MCP HTTP server. {
11391139 key: "chatgpt_base_url",
11401140Key type: "string",
11411141 description: "Override the base URL used during the ChatGPT login flow.",
11421142`mcp_servers.<id>.env_vars` },
11431143 {
11441144Type / Values key: "cli_auth_credentials_store",
11451145 type: "file | keyring | auto",
11461146`array<string | { name = string, source = "local" | "remote" }>` description:
11471147 "Control where the CLI stores cached credentials (file-based auth.json vs OS keychain).",
11481148Details },
11491149 {
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. key: "mcp_oauth_credentials_store",
11511151 type: "auto | file | keyring",
11521152Key description: "Preferred store for MCP OAuth credentials.",
11531153 },
11541154`mcp_servers.<id>.experimental_environment` {
11551155 key: "mcp_oauth_callback_port",
11561156Type / Values type: "integer",
11571157 description:
11581158`local | remote` "Optional fixed port for the local HTTP callback server used during MCP OAuth login. When unset, Codex binds to an ephemeral port chosen by the OS.",
11591159 },
11601160Details {
11611161 key: "mcp_oauth_callback_url",
11621162Experimental placement for an MCP server. `remote` starts stdio servers through a remote executor environment; streamable HTTP remote placement is not implemented. type: "string",
11631163 description:
11641164Key "Optional redirect URI override for MCP OAuth login (for example, a devbox ingress URL). `mcp_oauth_callback_port` still controls the callback listener port.",
11651165 },
11661166`mcp_servers.<id>.http_headers` {
11671167 key: "experimental_use_unified_exec_tool",
11681168Type / Values type: "boolean",
11691169 description:
11701170`map<string,string>` "Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`.",
11711171 },
11721172Details {
11731173 key: "tools.web_search",
11741174Static HTTP headers included with each MCP HTTP request. type: 'boolean | { context_size = "low|medium|high", allowed_domains = [string], location = { country, region, city, timezone } }',
11751175 description:
11761176Key "Optional web search tool configuration. The legacy boolean form is still accepted, but the object form lets you set search context size, allowed domains, and approximate user location.",
11771177 },
11781178`mcp_servers.<id>.oauth_resource` {
11791179 key: "tools.view_image",
11801180Type / Values type: "boolean",
11811181 description: "Enable the local-image attachment tool `view_image`.",
11821182`string` },
11831183 {
11841184Details key: "web_search",
11851185 type: "disabled | cached | live",
11861186Optional RFC 8707 OAuth resource parameter to include during MCP login. description:
11871187 'Web search mode (default: `"cached"`; cached uses an OpenAI-maintained index and does not fetch live pages; if you use `--yolo` or another full access sandbox setting, it defaults to `"live"`). Use `"live"` to fetch the most recent data from the web, or `"disabled"` to remove the tool.',
11881188Key },
11891189 {
11901190`mcp_servers.<id>.required` key: "default_permissions",
11911191 type: "string",
11921192Type / Values description:
11931193 "Name of the default permissions profile to apply to sandboxed tool calls. Built-ins are `:read-only`, `:workspace`, and `:danger-no-sandbox`; custom profile names require matching `[permissions.<name>]` tables.",
11941194`boolean` },
11951195 {
11961196Details key: "permissions.<name>.filesystem",
11971197 type: "table",
11981198When true, fail startup/resume if this enabled MCP server cannot initialize. description:
11991199 "Named filesystem permission profile. Each key is an absolute path or special token such as `:minimal` or `:project_roots`.",
12001200Key },
12011201 {
12021202`mcp_servers.<id>.scopes` key: "permissions.<name>.filesystem.glob_scan_max_depth",
12031203 type: "number",
12041204Type / Values description:
12051205 "Maximum depth for expanding deny-read glob patterns on platforms that snapshot matches before sandbox startup. Must be at least `1` when set.",
12061206`array<string>` },
12071207 {
12081208Details key: "permissions.<name>.filesystem.<path-or-glob>",
12091209 type: '"read" | "write" | "none" | table',
12101210OAuth scopes to request when authenticating to that MCP server. description:
12111211 'Grant direct access for a path, glob pattern, or special token, or scope nested entries under that root. Use `"none"` to deny reads for matching paths.',
12121212Key },
12131213 {
12141214`mcp_servers.<id>.startup_timeout_ms` key: 'permissions.<name>.filesystem.":project_roots".<subpath-or-glob>',
12151215 type: '"read" | "write" | "none"',
12161216Type / Values description:
12171217 'Scoped filesystem access relative to the detected project roots. Use `"."` for the root itself; glob subpaths such as `"**/*.env"` can deny reads with `"none"`.',
12181218`number` },
12191219 {
12201220Details key: "permissions.<name>.network.enabled",
12211221 type: "boolean",
12221222Alias for `startup_timeout_sec` in milliseconds. description: "Enable network access for this named permissions profile.",
12231223 },
12241224Key {
12251225 key: "permissions.<name>.network.proxy_url",
12261226`mcp_servers.<id>.startup_timeout_sec` type: "string",
12271227 description:
12281228Type / Values "HTTP proxy endpoint used when this permissions profile enables the managed network proxy.",
12291229 },
12301230`number` {
12311231 key: "permissions.<name>.network.enable_socks5",
12321232Details type: "boolean",
12331233 description:
12341234Override the default 10s startup timeout for an MCP server. "Expose a SOCKS5 listener when this permissions profile enables the managed network proxy.",
12351235 },
12361236Key {
12371237 key: "permissions.<name>.network.socks_url",
12381238`mcp_servers.<id>.tool_timeout_sec` type: "string",
12391239 description: "SOCKS5 proxy endpoint used by this permissions profile.",
12401240Type / Values },
12411241 {
12421242`number` key: "permissions.<name>.network.enable_socks5_udp",
12431243 type: "boolean",
12441244Details description: "Allow UDP over the SOCKS5 listener when enabled.",
12451245 },
12461246Override the default 60s per-tool timeout for an MCP server. {
12471247 key: "permissions.<name>.network.allow_upstream_proxy",
12481248Key type: "boolean",
12491249 description:
12501250`mcp_servers.<id>.url` "Allow the managed proxy to chain to another upstream proxy.",
12511251 },
12521252Type / Values {
12531253 key: "permissions.<name>.network.dangerously_allow_non_loopback_proxy",
12541254`string` type: "boolean",
12551255 description:
12561256Details "Permit non-loopback bind addresses for the managed proxy listener.",
12571257 },
12581258Endpoint for an MCP streamable HTTP server. {
12591259 key: "permissions.<name>.network.dangerously_allow_all_unix_sockets",
12601260Key type: "boolean",
12611261 description:
12621262`memories.consolidation_model` "Allow the proxy to use arbitrary Unix sockets instead of the default restricted set.",
12631263 },
12641264Type / Values {
12651265 key: "permissions.<name>.network.mode",
12661266`string` type: "limited | full",
12671267 description: "Network proxy mode used for subprocess traffic.",
12681268Details },
12691269 {
12701270Optional model override for global memory consolidation. key: "permissions.<name>.network.domains",
12711271 type: "map<string, allow | deny>",
12721272Key description:
12731273 "Domain rules for the managed proxy. Use domain names or wildcard patterns as keys, with `allow` or `deny` values.",
12741274`memories.disable_on_external_context` },
12751275 {
12761276Type / Values key: "permissions.<name>.network.unix_sockets",
12771277 type: "map<string, allow | none>",
12781278`boolean` description:
12791279 "Unix socket rules for the managed proxy. Use socket paths as keys, with `allow` or `none` values.",
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: "permissions.<name>.network.allow_local_binding",
12831283 type: "boolean",
12841284Key description:
12851285 "Permit local bind/listen operations through the managed proxy.",
12861286`memories.extract_model` },
12871287 {
12881288Type / Values key: "projects.<path>.trust_level",
12891289 type: "string",
12901290`string` description:
12911291 'Mark a project or worktree as trusted or untrusted (`"trusted"` | `"untrusted"`). Untrusted projects skip project-scoped `.codex/` layers, including project-local config, hooks, and rules.',
12921292Details },
12931293 {
12941294Optional model override for per-thread memory extraction. key: "notice.hide_full_access_warning",
12951295 type: "boolean",
12961296Key description: "Track acknowledgement of the full access warning prompt.",
12971297 },
12981298`memories.generate_memories` {
12991299 key: "notice.hide_world_writable_warning",
13001300Type / Values type: "boolean",
13011301 description:
13021302`boolean` "Track acknowledgement of the Windows world-writable directories warning.",
13031303 },
13041304Details {
13051305 key: "notice.hide_rate_limit_model_nudge",
13061306When `false`, newly created threads are not stored as memory-generation inputs. Defaults to `true`. type: "boolean",
13071307 description: "Track opt-out of the rate limit model switch reminder.",
13081308Key },
13091309 {
13101310`memories.max_raw_memories_for_consolidation` key: "notice.hide_gpt5_1_migration_prompt",
13111311 type: "boolean",
13121312Type / Values description: "Track acknowledgement of the GPT-5.1 migration prompt.",
13131313 },
13141314`number` {
13151315 key: "notice.hide_gpt-5.1-codex-max_migration_prompt",
13161316Details type: "boolean",
13171317 description:
13181318Maximum recent raw memories retained for global consolidation. Defaults to `256` and is capped at `4096`. "Track acknowledgement of the gpt-5.1-codex-max migration prompt.",
13191319 },
13201320Key {
13211321 key: "notice.model_migrations",
13221322`memories.max_rollout_age_days` type: "map<string,string>",
13231323 description: "Track acknowledged model migrations as old->new mappings.",
13241324Type / Values },
13251325 {
13261326`number` key: "forced_login_method",
13271327 type: "chatgpt | api",
13281328Details description: "Restrict Codex to a specific authentication method.",
13291329 },
13301330Maximum age of threads considered for memory generation. Defaults to `30` and is clamped to `0`-`90`. {
13311331 key: "forced_chatgpt_workspace_id",
13321332Key type: "string (uuid)",
13331333 description: "Limit ChatGPT logins to a specific workspace identifier.",
13341334`memories.max_rollouts_per_startup` },
13351335 ]}
13361336Type / Values client:load
13371337 />
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 1338
2954You can find the latest JSON schema for `config.toml` [here](https://developers.openai.com/codex/config-schema.json).1339You can find the latest JSON schema for `config.toml` [here](https://developers.openai.com/codex/config-schema.json).
2955 1340
2971Use `[features]` in `requirements.toml` to pin feature flags by the same1356Use `[features]` in `requirements.toml` to pin feature flags by the same
2972canonical keys that `config.toml` uses. Omitted keys remain unconstrained.1357canonical keys that `config.toml` uses. Omitted keys remain unconstrained.
2973 1358
29741359| Key | Type / Values | Details |<ConfigTable
29751360| --- | --- | --- | options={[
29761361| `allowed_approval_policies` | `array<string>` | Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `granular`). | {
29771362| `allowed_approvals_reviewers` | `array<string>` | Allowed values for `approvals_reviewer`, such as `user` and `auto_review`. | key: "allowed_approval_policies",
29781363| `allowed_sandbox_modes` | `array<string>` | Allowed values for `sandbox_mode`. | type: "array<string>",
29791364| `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:
29801365| `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`).",
29811366| `features.<name>` | `boolean` | Require a specific canonical feature key to stay enabled or disabled. | },
29821367| `features.browser_use` | `boolean` | Set to `false` in `requirements.toml` to disable Browser Use and Browser Agent availability. | {
29831368| `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",
29841369| `features.in_app_browser` | `boolean` | Set to `false` in `requirements.toml` to disable the in-app browser pane. | type: "array<string>",
29851370| `guardian_policy_config` | `string` | Managed Markdown policy instructions for automatic review. This takes precedence over local `[auto_review].policy`. Blank values are ignored. | description:
29861371| `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`.",
29871372| `hooks.<Event>` | `array<table>` | Matcher groups for a hook event such as `PreToolUse`, `PostToolUse`, `PermissionRequest`, `SessionStart`, `UserPromptSubmit`, or `Stop`. | },
29881373| `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. | {
29891374| `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",
29901375| `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",
29911376| `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:
29921377| `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.",
29931378| `mcp_servers.<id>.identity.command` | `string` | Allow an MCP stdio server when its `mcp_servers.<id>.command` matches this command. | },
29941379| `mcp_servers.<id>.identity.url` | `string` | Allow an MCP streamable HTTP server when its `mcp_servers.<id>.url` matches this URL. | {
29951380| `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",
29961381| `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>",
29971382| `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`.",
29981383| `remote_sandbox_config[].hostname_patterns` | `array<string>` | Case-insensitive host name patterns. Supports `*` for any sequence of characters and `?` for one character. | },
29991384| `rules` | `table` | Admin-enforced command rules merged with `.rules` files. Requirements rules must be restrictive. | {
30001385| `rules.prefix_rules` | `array<table>` | List of enforced prefix rules. Each rule must include `pattern` and `decision`. | key: "remote_sandbox_config",
30011386| `rules.prefix_rules[].decision` | `prompt | forbidden` | Required. Requirements rules can only prompt or forbid (not allow). | type: "array<table>",
30021387| `rules.prefix_rules[].justification` | `string` | Optional non-empty rationale surfaced in approval prompts or rejection messages. | description:
30031388| `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.",
30041389| `rules.prefix_rules[].pattern[].any_of` | `array<string>` | A list of allowed alternative tokens at this position. | },
30051390| `rules.prefix_rules[].pattern[].token` | `string` | A single literal token at this position. | {
30061391 key: "remote_sandbox_config[].hostname_patterns",
30071392Key type: "array<string>",
30081393 description:
30091394`allowed_approval_policies` "Case-insensitive host name patterns. Supports `*` for any sequence of characters and `?` for one character.",
30101395 },
30111396Type / Values {
30121397 key: "remote_sandbox_config[].allowed_sandbox_modes",
30131398`array<string>` type: "array<string>",
30141399 description:
30151400Details "Allowed sandbox modes to apply when this host-specific entry matches.",
30161401 },
30171402Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `granular`). {
30181403 key: "allowed_web_search_modes",
30191404Key type: "array<string>",
30201405 description:
30211406`allowed_approvals_reviewers` "Allowed values for `web_search` (`disabled`, `cached`, `live`). `disabled` is always allowed; an empty list effectively allows only `disabled`.",
30221407 },
30231408Type / Values {
30241409 key: "features",
30251410`array<string>` type: "table",
30261411 description:
30271412Details "Pinned feature values keyed by the canonical names from `config.toml`'s `[features]` table.",
30281413 },
30291414Allowed values for `approvals_reviewer`, such as `user` and `auto_review`. {
30301415 key: "features.<name>",
30311416Key type: "boolean",
30321417 description:
30331418`allowed_sandbox_modes` "Require a specific canonical feature key to stay enabled or disabled.",
30341419 },
30351420Type / Values {
30361421 key: "features.in_app_browser",
30371422`array<string>` type: "boolean",
30381423 description:
30391424Details "Set to `false` in `requirements.toml` to disable the in-app browser pane.",
30401425 },
30411426Allowed values for `sandbox_mode`. {
30421427 key: "features.browser_use",
30431428Key type: "boolean",
30441429 description:
30451430`allowed_web_search_modes` "Set to `false` in `requirements.toml` to disable Browser Use and Browser Agent availability.",
30461431 },
30471432Type / Values {
30481433 key: "features.computer_use",
30491434`array<string>` type: "boolean",
30501435 description:
30511436Details "Set to `false` in `requirements.toml` to disable Computer Use availability and related install or enablement flows.",
30521437 },
30531438Allowed values for `web_search` (`disabled`, `cached`, `live`). `disabled` is always allowed; an empty list effectively allows only `disabled`. {
30541439 key: "hooks",
30551440Key type: "table",
30561441 description:
30571442`features` "Admin-enforced managed lifecycle hooks. Requires a managed hook directory and uses the same event schema as inline `[hooks]` in `config.toml`.",
30581443 },
30591444Type / Values {
30601445 key: "hooks.managed_dir",
30611446`table` type: "string (absolute path)",
30621447 description:
30631448Details "Directory containing managed hook scripts on macOS and Linux. Codex validates that it is absolute and exists before loading managed hooks.",
30641449 },
30651450Pinned feature values keyed by the canonical names from `config.toml`'s `[features]` table. {
30661451 key: "hooks.windows_managed_dir",
30671452Key type: "string (absolute path)",
30681453 description:
30691454`features.<name>` "Directory containing managed hook scripts on Windows. Codex validates that it is absolute and exists before loading managed hooks.",
30701455 },
30711456Type / Values {
30721457 key: "hooks.<Event>",
30731458`boolean` type: "array<table>",
30741459 description:
30751460Details "Matcher groups for a hook event such as `PreToolUse`, `PostToolUse`, `PermissionRequest`, `SessionStart`, `UserPromptSubmit`, or `Stop`.",
30761461 },
30771462Require a specific canonical feature key to stay enabled or disabled. {
30781463 key: "hooks.<Event>[].hooks",
30791464Key type: "array<table>",
30801465 description:
30811466`features.browser_use` "Hook handlers for a matcher group. Command hooks are currently supported; prompt and agent hook handlers are parsed but skipped.",
30821467 },
30831468Type / Values {
30841469 key: "permissions.filesystem.deny_read",
30851470`boolean` type: "array<string>",
30861471 description:
30871472Details "Admin-enforced filesystem read denials. Entries can be paths or glob patterns, and users cannot weaken them with local config.",
30881473 },
30891474Set to `false` in `requirements.toml` to disable Browser Use and Browser Agent availability. {
30901475 key: "mcp_servers",
30911476Key type: "table",
30921477 description:
30931478`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.",
30941479 },
30951480Type / Values {
30961481 key: "mcp_servers.<id>.identity",
30971482`boolean` type: "table",
30981483 description:
30991484Details "Identity rule for a single MCP server. Set either `command` (stdio) or `url` (streamable HTTP).",
31001485 },
31011486Set to `false` in `requirements.toml` to disable Computer Use availability and related install or enablement flows. {
31021487 key: "mcp_servers.<id>.identity.command",
31031488Key type: "string",
31041489 description:
31051490`features.in_app_browser` "Allow an MCP stdio server when its `mcp_servers.<id>.command` matches this command.",
31061491 },
31071492Type / Values {
31081493 key: "mcp_servers.<id>.identity.url",
31091494`boolean` type: "string",
31101495 description:
31111496Details "Allow an MCP streamable HTTP server when its `mcp_servers.<id>.url` matches this URL.",
31121497 },
31131498Set to `false` in `requirements.toml` to disable the in-app browser pane. {
31141499 key: "rules",
31151500Key type: "table",
31161501 description:
31171502`guardian_policy_config` "Admin-enforced command rules merged with `.rules` files. Requirements rules must be restrictive.",
31181503 },
31191504Type / Values {
31201505 key: "rules.prefix_rules",
31211506`string` type: "array<table>",
31221507 description:
31231508Details "List of enforced prefix rules. Each rule must include `pattern` and `decision`.",
31241509 },
31251510Managed Markdown policy instructions for automatic review. This takes precedence over local `[auto_review].policy`. Blank values are ignored. {
31261511 key: "rules.prefix_rules[].pattern",
31271512Key type: "array<table>",
31281513 description:
31291514`hooks` "Command prefix expressed as pattern tokens. Each token sets either `token` or `any_of`.",
31301515 },
31311516Type / Values {
31321517 key: "rules.prefix_rules[].pattern[].token",
31331518`table` type: "string",
31341519 description: "A single literal token at this position.",
31351520Details },
31361521 {
31371522Admin-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",
31381523 type: "array<string>",
31391524Key description: "A list of allowed alternative tokens at this position.",
31401525 },
31411526`hooks.<Event>` {
31421527 key: "rules.prefix_rules[].decision",
31431528Type / Values type: "prompt | forbidden",
31441529 description:
31451530`array<table>` "Required. Requirements rules can only prompt or forbid (not allow).",
31461531 },
31471532Details {
31481533 key: "rules.prefix_rules[].justification",
31491534Matcher groups for a hook event such as `PreToolUse`, `PostToolUse`, `PermissionRequest`, `SessionStart`, `UserPromptSubmit`, or `Stop`. type: "string",
31501535 description:
31511536Key "Optional non-empty rationale surfaced in approval prompts or rejection messages.",
31521537 },
31531538`hooks.<Event>[].hooks` ]}
31541539 client:load
31551540Type / 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