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