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