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