config-reference.md +1515 −2154
6 6
7User-level configuration lives in `~/.codex/config.toml`. You can also add project-scoped overrides in `.codex/config.toml` files. Codex loads project-scoped config files only when you trust the project.7User-level configuration lives in `~/.codex/config.toml`. You can also add project-scoped overrides in `.codex/config.toml` files. Codex loads project-scoped config files only when you trust the project.
8 8
99| Key | Type / Values | Details |For 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).
1010| --- | --- | --- |
1111| `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. |<ConfigTable
1212| `agents.<name>.description` | `string` | Role guidance shown to Codex when choosing and spawning that agent type. | options={[
1313| `agents.max_threads` | `number` | Maximum number of agent threads that can be open concurrently. | {
1414| `approval_policy` | `untrusted | on-request | never` | Controls when Codex pauses for approval before executing commands. `on-failure` is deprecated; use `on-request` for interactive runs or `never` for non-interactive runs. | key: "model",
1515| `apps.<id>.disabled_reason` | `unknown | user` | Optional reason attached when an app/connector is disabled. | type: "string",
1616| `apps.<id>.enabled` | `boolean` | Enable or disable a specific app/connector by id (default: true). | description: "Model to use (e.g., `gpt-5.5`).",
1717| `chatgpt_base_url` | `string` | Override the base URL used during the ChatGPT login flow. | },
1818| `check_for_update_on_startup` | `boolean` | Check for Codex updates on startup (set to false only when updates are centrally managed). | {
1919| `cli_auth_credentials_store` | `file | keyring | auto` | Control where the CLI stores cached credentials (file-based auth.json vs OS keychain). | key: "review_model",
2020| `compact_prompt` | `string` | Inline override for the history compaction prompt. | type: "string",
2121| `developer_instructions` | `string` | Additional developer instructions injected into the session (optional). | description:
2222| `disable_paste_burst` | `boolean` | Disable burst-paste detection in the TUI. | "Optional model override used by `/review` (defaults to the current session model).",
2323| `experimental_compact_prompt_file` | `string (path)` | Load the compaction prompt override from a file (experimental). | },
2424| `experimental_use_freeform_apply_patch` | `boolean` | Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform` or `codex --enable apply_patch_freeform`. | {
2525| `experimental_use_unified_exec_tool` | `boolean` | Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`. | key: "model_provider",
2626| `features.apply_patch_freeform` | `boolean` | Expose the freeform `apply_patch` tool (experimental). | type: "string",
2727| `features.apps` | `boolean` | Enable ChatGPT Apps/connectors support (experimental). | description: "Provider id from `model_providers` (default: `openai`).",
2828| `features.apps_mcp_gateway` | `boolean` | Route Apps MCP calls through the OpenAI connectors MCP gateway (`https://api.openai.com/v1/connectors/mcp/`) instead of legacy routing (experimental). | },
2929| `features.child_agents_md` | `boolean` | Append AGENTS.md scope/precedence guidance even when no AGENTS.md is present (experimental). | {
3030| `features.collaboration_modes` | `boolean` | Enable collaboration modes such as plan mode (stable; on by default). | key: "openai_base_url",
3131| `features.elevated_windows_sandbox` | `boolean` | Enable the elevated Windows sandbox pipeline (experimental). | type: "string",
3232| `features.experimental_windows_sandbox` | `boolean` | Run the Windows restricted-token sandbox (experimental). | description:
3333| `features.multi_agent` | `boolean` | Enable multi-agent collaboration tools (`spawn\_agent`, `send\_input`, `resume\_agent`, `wait`, and `close\_agent`) (experimental; off by default). | "Base URL override for the built-in `openai` model provider.",
3434| `features.personality` | `boolean` | Enable personality selection controls (stable; on by default). | },
3535| `features.powershell_utf8` | `boolean` | Force PowerShell UTF-8 output (defaults to true). | {
3636| `features.remote_models` | `boolean` | Refresh remote model list before showing readiness (experimental). | key: "model_context_window",
3737| `features.request_rule` | `boolean` | Enable Smart approvals (`prefix_rule` suggestions on escalation requests; stable; on by default). | type: "number",
3838| `features.runtime_metrics` | `boolean` | Show runtime metrics summary in TUI turn separators (experimental). | description: "Context window tokens available to the active model.",
3939| `features.search_tool` | `boolean` | Enable `search_tool_bm25` for Apps tool discovery before invoking app MCP tools (experimental). | },
4040| `features.shell_snapshot` | `boolean` | Snapshot shell environment to speed up repeated commands (beta). | {
4141| `features.shell_tool` | `boolean` | Enable the default `shell` tool for running commands (stable; on by default). | key: "model_auto_compact_token_limit",
4242| `features.unified_exec` | `boolean` | Use the unified PTY-backed exec tool (beta). | type: "number",
4343| `features.use_linux_sandbox_bwrap` | `boolean` | Use the bubblewrap-based Linux sandbox pipeline (experimental; off by default). | description:
4444| `features.web_search` | `boolean` | Deprecated legacy toggle; prefer the top-level `web_search` setting. | "Token threshold that triggers automatic history compaction (unset uses model defaults).",
4545| `features.web_search_cached` | `boolean` | Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "cached"`. | },
4646| `features.web_search_request` | `boolean` | Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "live"`. | {
4747| `feedback.enabled` | `boolean` | Enable feedback submission via `/feedback` across Codex surfaces (default: true). | key: "model_catalog_json",
4848| `file_opener` | `vscode | vscode-insiders | windsurf | cursor | none` | URI scheme used to open citations from Codex output (default: `vscode`). | type: "string (path)",
4949| `forced_chatgpt_workspace_id` | `string (uuid)` | Limit ChatGPT logins to a specific workspace identifier. | description:
5050| `forced_login_method` | `chatgpt | api` | Restrict Codex to a specific authentication method. | "Optional path to a JSON model catalog loaded on startup. Profile-level `profiles.<name>.model_catalog_json` can override this per profile.",
5151| `hide_agent_reasoning` | `boolean` | Suppress reasoning events in both the TUI and `codex exec` output. | },
5252| `history.max_bytes` | `number` | If set, caps the history file size in bytes by dropping oldest entries. | {
5353| `history.persistence` | `save-all | none` | Control whether Codex saves session transcripts to history.jsonl. | key: "oss_provider",
5454| `include_apply_patch_tool` | `boolean` | Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`. | type: "lmstudio | ollama",
5555| `instructions` | `string` | Reserved for future use; prefer `model_instructions_file` or `AGENTS.md`. | description:
5656| `log_dir` | `string (path)` | Directory where Codex writes log files (for example `codex-tui.log`); defaults to `$CODEX_HOME/log`. | "Default local provider used when running with `--oss` (defaults to prompting if unset).",
5757| `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. | },
5858| `mcp_oauth_credentials_store` | `auto | file | keyring` | Preferred store for MCP OAuth credentials. | {
5959| `mcp_servers.<id>.args` | `array<string>` | Arguments passed to the MCP stdio server command. | key: "approval_policy",
6060| `mcp_servers.<id>.bearer_token_env_var` | `string` | Environment variable sourcing the bearer token for an MCP HTTP server. | type: "untrusted | on-request | never | { granular = { sandbox_approval = bool, rules = bool, mcp_elicitations = bool, request_permissions = bool, skill_approval = bool } }",
6161| `mcp_servers.<id>.command` | `string` | Launcher command for an MCP stdio server. | description:
6262| `mcp_servers.<id>.cwd` | `string` | Working directory for the MCP stdio server process. | "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| `mcp_servers.<id>.disabled_tools` | `array<string>` | Deny list applied after `enabled_tools` for the MCP server. | },
6464| `mcp_servers.<id>.enabled` | `boolean` | Disable an MCP server without removing its configuration. | {
6565| `mcp_servers.<id>.enabled_tools` | `array<string>` | Allow list of tool names exposed by the MCP server. | key: "approval_policy.granular.sandbox_approval",
6666| `mcp_servers.<id>.env` | `map<string,string>` | Environment variables forwarded to the MCP stdio server. | type: "boolean",
6767| `mcp_servers.<id>.env_http_headers` | `map<string,string>` | HTTP headers populated from environment variables for an MCP HTTP server. | description:
6868| `mcp_servers.<id>.env_vars` | `array<string>` | Additional environment variables to whitelist for an MCP stdio server. | "When `true`, sandbox escalation approval prompts are allowed to surface.",
6969| `mcp_servers.<id>.http_headers` | `map<string,string>` | Static HTTP headers included with each MCP HTTP request. | },
7070| `mcp_servers.<id>.required` | `boolean` | When true, fail startup/resume if this enabled MCP server cannot initialize. | {
7171| `mcp_servers.<id>.startup_timeout_ms` | `number` | Alias for `startup_timeout_sec` in milliseconds. | key: "approval_policy.granular.rules",
7272| `mcp_servers.<id>.startup_timeout_sec` | `number` | Override the default 10s startup timeout for an MCP server. | type: "boolean",
7373| `mcp_servers.<id>.tool_timeout_sec` | `number` | Override the default 60s per-tool timeout for an MCP server. | description:
7474| `mcp_servers.<id>.url` | `string` | Endpoint for an MCP streamable HTTP server. | "When `true`, approvals triggered by execpolicy `prompt` rules are allowed to surface.",
7575| `model` | `string` | Model to use (e.g., `gpt-5-codex`). | },
7676| `model_auto_compact_token_limit` | `number` | Token threshold that triggers automatic history compaction (unset uses model defaults). | {
7777| `model_context_window` | `number` | Context window tokens available to the active model. | key: "approval_policy.granular.mcp_elicitations",
7878| `model_instructions_file` | `string (path)` | Replacement for built-in instructions instead of `AGENTS.md`. | type: "boolean",
7979| `model_provider` | `string` | Provider id from `model_providers` (default: `openai`). | description:
8080| `model_providers.<id>.base_url` | `string` | API base URL for the model provider. | "When `true`, MCP elicitation prompts are allowed to surface instead of being auto-rejected.",
8181| `model_providers.<id>.env_http_headers` | `map<string,string>` | HTTP headers populated from environment variables when present. | },
8282| `model_providers.<id>.env_key` | `string` | Environment variable supplying the provider API key. | {
8383| `model_providers.<id>.env_key_instructions` | `string` | Optional setup guidance for the provider API key. | key: "approval_policy.granular.request_permissions",
8484| `model_providers.<id>.experimental_bearer_token` | `string` | Direct bearer token for the provider (discouraged; use `env_key`). | type: "boolean",
8585| `model_providers.<id>.http_headers` | `map<string,string>` | Static HTTP headers added to provider requests. | description:
8686| `model_providers.<id>.name` | `string` | Display name for a custom model provider. | "When `true`, prompts from the `request_permissions` tool are allowed to surface.",
8787| `model_providers.<id>.query_params` | `map<string,string>` | Extra query parameters appended to provider requests. | },
8888| `model_providers.<id>.request_max_retries` | `number` | Retry count for HTTP requests to the provider (default: 4). | {
8989| `model_providers.<id>.requires_openai_auth` | `boolean` | The provider uses OpenAI authentication (defaults to false). | key: "approval_policy.granular.skill_approval",
9090| `model_providers.<id>.stream_idle_timeout_ms` | `number` | Idle timeout for SSE streams in milliseconds (default: 300000). | type: "boolean",
9191| `model_providers.<id>.stream_max_retries` | `number` | Retry count for SSE streaming interruptions (default: 5). | description:
9292| `model_providers.<id>.wire_api` | `chat | responses` | Protocol used by the provider (defaults to `chat` if omitted). | "When `true`, skill-script approval prompts are allowed to surface.",
9393| `model_reasoning_effort` | `minimal | low | medium | high | xhigh` | Adjust reasoning effort for supported models (Responses API only; `xhigh` is model-dependent). | },
9494| `model_reasoning_summary` | `auto | concise | detailed | none` | Select reasoning summary detail or disable summaries entirely. | {
9595| `model_supports_reasoning_summaries` | `boolean` | Force Codex to send or not send reasoning metadata. | key: "approvals_reviewer",
9696| `model_verbosity` | `low | medium | high` | Control GPT-5 Responses API verbosity (defaults to `medium`). | type: "user | auto_review",
9797| `notice.hide_full_access_warning` | `boolean` | Track acknowledgement of the full access warning prompt. | description:
9898| `notice.hide_gpt-5.1-codex-max_migration_prompt` | `boolean` | Track acknowledgement of the gpt-5.1-codex-max migration prompt. | "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| `notice.hide_gpt5_1_migration_prompt` | `boolean` | Track acknowledgement of the GPT-5.1 migration prompt. | },
100100| `notice.hide_rate_limit_model_nudge` | `boolean` | Track opt-out of the rate limit model switch reminder. | {
101101| `notice.hide_world_writable_warning` | `boolean` | Track acknowledgement of the Windows world-writable directories warning. | key: "auto_review.policy",
102102| `notice.model_migrations` | `map<string,string>` | Track acknowledged model migrations as old->new mappings. | type: "string",
103103| `notify` | `array<string>` | Command invoked for notifications; receives a JSON payload from Codex. | description:
104104| `oss_provider` | `lmstudio | ollama` | Default local provider used when running with `--oss` (defaults to prompting if unset). | "Local Markdown policy instructions for automatic review. Managed `guardian_policy_config` takes precedence. Blank values are ignored.",
105105| `otel.environment` | `string` | Environment tag applied to emitted OpenTelemetry events (default: `dev`). | },
106106| `otel.exporter` | `none | otlp-http | otlp-grpc` | Select the OpenTelemetry exporter and provide any endpoint metadata. | {
107107| `otel.exporter.<id>.endpoint` | `string` | Exporter endpoint for OTEL logs. | key: "allow_login_shell",
108108| `otel.exporter.<id>.headers` | `map<string,string>` | Static headers included with OTEL exporter requests. | type: "boolean",
109109| `otel.exporter.<id>.protocol` | `binary | json` | Protocol used by the OTLP/HTTP exporter. | description:
110110| `otel.exporter.<id>.tls.ca-certificate` | `string` | CA certificate path for OTEL exporter TLS. | "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| `otel.exporter.<id>.tls.client-certificate` | `string` | Client certificate path for OTEL exporter TLS. | },
112112| `otel.exporter.<id>.tls.client-private-key` | `string` | Client private key path for OTEL exporter TLS. | {
113113| `otel.log_user_prompt` | `boolean` | Opt in to exporting raw user prompts with OpenTelemetry logs. | key: "sandbox_mode",
114114| `otel.trace_exporter` | `none | otlp-http | otlp-grpc` | Select the OpenTelemetry trace exporter and provide any endpoint metadata. | type: "read-only | workspace-write | danger-full-access",
115115| `otel.trace_exporter.<id>.endpoint` | `string` | Trace exporter endpoint for OTEL logs. | description:
116116| `otel.trace_exporter.<id>.headers` | `map<string,string>` | Static headers included with OTEL trace exporter requests. | "Sandbox policy for filesystem and network access during command execution.",
117117| `otel.trace_exporter.<id>.protocol` | `binary | json` | Protocol used by the OTLP/HTTP trace exporter. | },
118118| `otel.trace_exporter.<id>.tls.ca-certificate` | `string` | CA certificate path for OTEL trace exporter TLS. | {
119119| `otel.trace_exporter.<id>.tls.client-certificate` | `string` | Client certificate path for OTEL trace exporter TLS. | key: "sandbox_workspace_write.writable_roots",
120120| `otel.trace_exporter.<id>.tls.client-private-key` | `string` | Client private key path for OTEL trace exporter TLS. | type: "array<string>",
121121| `personality` | `none | friendly | pragmatic` | Default communication style for models that advertise `supportsPersonality`; can be overridden per thread/turn or via `/personality`. | description:
122122| `profile` | `string` | Default profile applied at startup (equivalent to `--profile`). | 'Additional writable roots when `sandbox_mode = "workspace-write"`.',
123123| `profiles.<name>.*` | `various` | Profile-scoped overrides for any of the supported configuration keys. | },
124124| `profiles.<name>.experimental_use_freeform_apply_patch` | `boolean` | Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`. | {
125125| `profiles.<name>.experimental_use_unified_exec_tool` | `boolean` | Legacy name for enabling unified exec; prefer `[features].unified_exec`. | key: "sandbox_workspace_write.network_access",
126126| `profiles.<name>.include_apply_patch_tool` | `boolean` | Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`. | type: "boolean",
127127| `profiles.<name>.oss_provider` | `lmstudio | ollama` | Profile-scoped OSS provider for `--oss` sessions. | description:
128128| `profiles.<name>.personality` | `none | friendly | pragmatic` | Profile-scoped communication style override for supported models. | "Allow outbound network access inside the workspace-write sandbox.",
129129| `profiles.<name>.web_search` | `disabled | cached | live` | Profile-scoped web search mode override (default: `"cached"`). | },
130130| `project_doc_fallback_filenames` | `array<string>` | Additional filenames to try when `AGENTS.md` is missing. | {
131131| `project_doc_max_bytes` | `number` | Maximum bytes read from `AGENTS.md` when building project instructions. | key: "sandbox_workspace_write.exclude_tmpdir_env_var",
132132| `project_root_markers` | `array<string>` | List of project root marker filenames; used when searching parent directories for the project root. | type: "boolean",
133133| `projects.<path>.trust_level` | `string` | Mark a project or worktree as trusted or untrusted (`"trusted"` | `"untrusted"`). Untrusted projects skip project-scoped `.codex/` layers. | description:
134134| `review_model` | `string` | Optional model override used by `/review` (defaults to the current session model). | "Exclude `$TMPDIR` from writable roots in workspace-write mode.",
135135| `sandbox_mode` | `read-only | workspace-write | danger-full-access` | Sandbox policy for filesystem and network access during command execution. | },
136136| `sandbox_workspace_write.exclude_slash_tmp` | `boolean` | Exclude `/tmp` from writable roots in workspace-write mode. | {
137137| `sandbox_workspace_write.exclude_tmpdir_env_var` | `boolean` | Exclude `$TMPDIR` from writable roots in workspace-write mode. | key: "sandbox_workspace_write.exclude_slash_tmp",
138138| `sandbox_workspace_write.network_access` | `boolean` | Allow outbound network access inside the workspace-write sandbox. | type: "boolean",
139139| `sandbox_workspace_write.writable_roots` | `array<string>` | Additional writable roots when `sandbox_mode = "workspace-write"`. | description:
140140| `shell_environment_policy.exclude` | `array<string>` | Glob patterns for removing environment variables after the defaults. | "Exclude `/tmp` from writable roots in workspace-write mode.",
141141| `shell_environment_policy.experimental_use_profile` | `boolean` | Use the user shell profile when spawning subprocesses. | },
142142| `shell_environment_policy.ignore_default_excludes` | `boolean` | Keep variables containing KEY/SECRET/TOKEN before other filters run. | {
143143| `shell_environment_policy.include_only` | `array<string>` | Whitelist of patterns; when set only matching variables are kept. | key: "windows.sandbox",
144144| `shell_environment_policy.inherit` | `all | core | none` | Baseline environment inheritance when spawning subprocesses. | type: "unelevated | elevated",
145145| `shell_environment_policy.set` | `map<string,string>` | Explicit environment overrides injected into every subprocess. | description:
146146| `show_raw_agent_reasoning` | `boolean` | Surface raw reasoning content when the active model emits it. | "Windows-only native sandbox mode when running Codex natively on Windows.",
147147| `skills.config` | `array<object>` | Per-skill enablement overrides stored in config.toml. | },
148148| `skills.config.<index>.enabled` | `boolean` | Enable or disable the referenced skill. | {
149149| `skills.config.<index>.path` | `string (path)` | Path to a skill folder containing `SKILL.md`. | key: "windows.sandbox_private_desktop",
150150| `suppress_unstable_features_warning` | `boolean` | Suppress the warning that appears when under-development feature flags are enabled. | type: "boolean",
151151| `tool_output_token_limit` | `number` | Token budget for storing individual tool/function outputs in history. | description:
152152| `tools.web_search` | `boolean` | Deprecated legacy toggle for web search; prefer the top-level `web_search` setting. | "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| `tui` | `table` | TUI-specific options such as enabling inline desktop notifications. | },
154154| `tui.alternate_screen` | `auto | always | never` | Control alternate screen usage for the TUI (default: auto; auto skips it in Zellij to preserve scrollback). | {
155155| `tui.animations` | `boolean` | Enable terminal animations (welcome screen, shimmer, spinner) (default: true). | key: "notify",
156156| `tui.notification_method` | `auto | osc9 | bel` | Notification method for unfocused terminal notifications (default: auto). | type: "array<string>",
157157| `tui.notifications` | `boolean | array<string>` | Enable TUI notifications; optionally restrict to specific event types. | description:
158158| `tui.show_tooltips` | `boolean` | Show onboarding tooltips in the TUI welcome screen (default: true). | "Command invoked for notifications; receives a JSON payload from Codex.",
159159| `tui.status_line` | `array<string> | null` | Ordered list of TUI footer status-line item identifiers. `null` disables the status line. | },
160160| `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. | {
161161| `windows_wsl_setup_acknowledged` | `boolean` | Track Windows onboarding acknowledgement (Windows only). | key: "check_for_update_on_startup",
162162 type: "boolean",
163163Key description:
164164 "Check for Codex updates on startup (set to false only when updates are centrally managed).",
165165`agents.<name>.config_file` },
166166 {
167167Type / Values key: "feedback.enabled",
168168 type: "boolean",
169169`string (path)` description:
170170 "Enable feedback submission via `/feedback` across Codex surfaces (default: true).",
171171Details },
172172 {
173173Path to a TOML config layer for that role; relative paths resolve from the config file that declares the role. key: "analytics.enabled",
174174 type: "boolean",
175175Key description:
176176 "Enable or disable analytics for this machine/profile. When unset, the client default applies.",
177177`agents.<name>.description` },
178178 {
179179Type / Values key: "instructions",
180180 type: "string",
181181`string` description:
182182 "Reserved for future use; prefer `model_instructions_file` or `AGENTS.md`.",
183183Details },
184184 {
185185Role guidance shown to Codex when choosing and spawning that agent type. key: "developer_instructions",
186186 type: "string",
187187Key description:
188188 "Additional developer instructions injected into the session (optional).",
189189`agents.max_threads` },
190190 {
191191Type / Values key: "log_dir",
192192 type: "string (path)",
193193`number` description:
194194 "Directory where Codex writes log files (for example `codex-tui.log`); defaults to `$CODEX_HOME/log`.",
195195Details },
196196 {
197197Maximum number of agent threads that can be open concurrently. key: "sqlite_home",
198198 type: "string (path)",
199199Key description:
200200 "Directory where Codex stores the SQLite-backed state DB used by agent jobs and other resumable runtime state.",
201201`approval_policy` },
202202 {
203203Type / Values key: "compact_prompt",
204204 type: "string",
205205`untrusted | on-request | never` description: "Inline override for the history compaction prompt.",
206206 },
207207Details {
208208 key: "commit_attribution",
209209Controls when Codex pauses for approval before executing commands. `on-failure` is deprecated; use `on-request` for interactive runs or `never` for non-interactive runs. type: "string",
210210 description:
211211Key 'Commit co-author trailer used when `[features].codex_git_commit` is enabled. Defaults to `Codex <noreply@openai.com>`; set `""` to disable.',
212212 },
213213`apps.<id>.disabled_reason` {
214214 key: "model_instructions_file",
215215Type / Values type: "string (path)",
216216 description:
217217`unknown | user` "Replacement for built-in instructions instead of `AGENTS.md`.",
218218 },
219219Details {
220220 key: "personality",
221221Optional reason attached when an app/connector is disabled. type: "none | friendly | pragmatic",
222222 description:
223223Key "Default communication style for models that advertise `supportsPersonality`; can be overridden per thread/turn or via `/personality`.",
224224 },
225225`apps.<id>.enabled` {
226226 key: "service_tier",
227227Type / Values type: "flex | fast",
228228 description: "Preferred service tier for new turns.",
229229`boolean` },
230230 {
231231Details key: "experimental_compact_prompt_file",
232232 type: "string (path)",
233233Enable or disable a specific app/connector by id (default: true). description:
234234 "Load the compaction prompt override from a file (experimental).",
235235Key },
236236 {
237237`chatgpt_base_url` key: "skills.config",
238238 type: "array<object>",
239239Type / Values description: "Per-skill enablement overrides stored in config.toml.",
240240 },
241241`string` {
242242 key: "skills.config.<index>.path",
243243Details type: "string (path)",
244244 description: "Path to a skill folder containing `SKILL.md`.",
245245Override the base URL used during the ChatGPT login flow. },
246246 {
247247Key key: "skills.config.<index>.enabled",
248248 type: "boolean",
249249`check_for_update_on_startup` description: "Enable or disable the referenced skill.",
250250 },
251251Type / Values {
252252 key: "apps.<id>.enabled",
253253`boolean` type: "boolean",
254254 description:
255255Details "Enable or disable a specific app/connector by id (default: true).",
256256 },
257257Check for Codex updates on startup (set to false only when updates are centrally managed). {
258258 key: "apps._default.enabled",
259259Key type: "boolean",
260260 description:
261261`cli_auth_credentials_store` "Default app enabled state for all apps unless overridden per app.",
262262 },
263263Type / Values {
264264 key: "apps._default.destructive_enabled",
265265`file | keyring | auto` type: "boolean",
266266 description:
267267Details "Default allow/deny for app tools with `destructive_hint = true`.",
268268 },
269269Control where the CLI stores cached credentials (file-based auth.json vs OS keychain). {
270270 key: "apps._default.open_world_enabled",
271271Key type: "boolean",
272272 description:
273273`compact_prompt` "Default allow/deny for app tools with `open_world_hint = true`.",
274274 },
275275Type / Values {
276276 key: "apps.<id>.destructive_enabled",
277277`string` type: "boolean",
278278 description:
279279Details "Allow or block tools in this app that advertise `destructive_hint = true`.",
280280 },
281281Inline override for the history compaction prompt. {
282282 key: "apps.<id>.open_world_enabled",
283283Key type: "boolean",
284284 description:
285285`developer_instructions` "Allow or block tools in this app that advertise `open_world_hint = true`.",
286286 },
287287Type / Values {
288288 key: "apps.<id>.default_tools_enabled",
289289`string` type: "boolean",
290290 description:
291291Details "Default enabled state for tools in this app unless a per-tool override exists.",
292292 },
293293Additional developer instructions injected into the session (optional). {
294294 key: "apps.<id>.default_tools_approval_mode",
295295Key type: "auto | prompt | approve",
296296 description:
297297`disable_paste_burst` "Default approval behavior for tools in this app unless a per-tool override exists.",
298298 },
299299Type / Values {
300300 key: "apps.<id>.tools.<tool>.enabled",
301301`boolean` type: "boolean",
302302 description:
303303Details "Per-tool enabled override for an app tool (for example `repos/list`).",
304304 },
305305Disable burst-paste detection in the TUI. {
306306 key: "apps.<id>.tools.<tool>.approval_mode",
307307Key type: "auto | prompt | approve",
308308 description: "Per-tool approval behavior override for a single app tool.",
309309`experimental_compact_prompt_file` },
310310 {
311311Type / Values key: "tool_suggest.discoverables",
312312 type: "array<table>",
313313`string (path)` description:
314314 'Allow tool suggestions for additional discoverable connectors or plugins. Each entry uses `type = "connector"` or `"plugin"` and an `id`.',
315315Details },
316316 {
317317Load the compaction prompt override from a file (experimental). key: "tool_suggest.disabled_tools",
318318 type: "array<table>",
319319Key description:
320320 'Disable suggestions for specific discoverable connectors or plugins. Each entry uses `type = "connector"` or `"plugin"` and an `id`.',
321321`experimental_use_freeform_apply_patch` },
322322 {
323323Type / Values key: "features.apps",
324324 type: "boolean",
325325`boolean` description: "Enable ChatGPT Apps/connectors support (experimental).",
326326 },
327327Details {
328328 key: "features.codex_hooks",
329329Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform` or `codex --enable apply_patch_freeform`. type: "boolean",
330330 description:
331331Key "Enable lifecycle hooks loaded from `hooks.json` or inline `[hooks]` config.",
332332 },
333333`experimental_use_unified_exec_tool` {
334334 key: "features.codex_git_commit",
335335Type / Values type: "boolean",
336336 description:
337337`boolean` "Enable Codex-generated git commits. When enabled, Codex uses `commit_attribution` to append a `Co-authored-by:` trailer to generated commit messages.",
338338 },
339339Details {
340340 key: "hooks",
341341Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`. type: "table",
342342 description:
343343Key "Lifecycle hooks configured inline in `config.toml`. Uses the same event schema as `hooks.json`; see the Hooks guide for examples and supported events.",
344344 },
345345`features.apply_patch_freeform` {
346346 key: "features.memories",
347347Type / Values type: "boolean",
348348 description: "Enable [Memories](https://developers.openai.com/codex/memories) (off by default).",
349349`boolean` },
350350 {
351351Details key: "mcp_servers.<id>.command",
352352 type: "string",
353353Expose the freeform `apply_patch` tool (experimental). description: "Launcher command for an MCP stdio server.",
354354 },
355355Key {
356356 key: "mcp_servers.<id>.args",
357357`features.apps` type: "array<string>",
358358 description: "Arguments passed to the MCP stdio server command.",
359359Type / Values },
360360 {
361361`boolean` key: "mcp_servers.<id>.env",
362362 type: "map<string,string>",
363363Details description: "Environment variables forwarded to the MCP stdio server.",
364364 },
365365Enable ChatGPT Apps/connectors support (experimental). {
366366 key: "mcp_servers.<id>.env_vars",
367367Key type: 'array<string | { name = string, source = "local" | "remote" }>',
368368 description:
369369`features.apps_mcp_gateway` '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.',
370370 },
371371Type / Values {
372372 key: "mcp_servers.<id>.cwd",
373373`boolean` type: "string",
374374 description: "Working directory for the MCP stdio server process.",
375375Details },
376376 {
377377Route Apps MCP calls through the OpenAI connectors MCP gateway (`https://api.openai.com/v1/connectors/mcp/`) instead of legacy routing (experimental). key: "mcp_servers.<id>.url",
378378 type: "string",
379379Key description: "Endpoint for an MCP streamable HTTP server.",
380380 },
381381`features.child_agents_md` {
382382 key: "mcp_servers.<id>.bearer_token_env_var",
383383Type / Values type: "string",
384384 description:
385385`boolean` "Environment variable sourcing the bearer token for an MCP HTTP server.",
386386 },
387387Details {
388388 key: "mcp_servers.<id>.http_headers",
389389Append AGENTS.md scope/precedence guidance even when no AGENTS.md is present (experimental). type: "map<string,string>",
390390 description: "Static HTTP headers included with each MCP HTTP request.",
391391Key },
392392 {
393393`features.collaboration_modes` key: "mcp_servers.<id>.env_http_headers",
394394 type: "map<string,string>",
395395Type / Values description:
396396 "HTTP headers populated from environment variables for an MCP HTTP server.",
397397`boolean` },
398398 {
399399Details key: "mcp_servers.<id>.enabled",
400400 type: "boolean",
401401Enable collaboration modes such as plan mode (stable; on by default). description: "Disable an MCP server without removing its configuration.",
402402 },
403403Key {
404404 key: "mcp_servers.<id>.required",
405405`features.elevated_windows_sandbox` type: "boolean",
406406 description:
407407Type / Values "When true, fail startup/resume if this enabled MCP server cannot initialize.",
408408 },
409409`boolean` {
410410 key: "mcp_servers.<id>.startup_timeout_sec",
411411Details type: "number",
412412 description:
413413Enable the elevated Windows sandbox pipeline (experimental). "Override the default 10s startup timeout for an MCP server.",
414414 },
415415Key {
416416 key: "mcp_servers.<id>.startup_timeout_ms",
417417`features.experimental_windows_sandbox` type: "number",
418418 description: "Alias for `startup_timeout_sec` in milliseconds.",
419419Type / Values },
420420 {
421421`boolean` key: "mcp_servers.<id>.tool_timeout_sec",
422422 type: "number",
423423Details description:
424424 "Override the default 60s per-tool timeout for an MCP server.",
425425Run the Windows restricted-token sandbox (experimental). },
426426 {
427427Key key: "mcp_servers.<id>.enabled_tools",
428428 type: "array<string>",
429429`features.multi_agent` description: "Allow list of tool names exposed by the MCP server.",
430430 },
431431Type / Values {
432432 key: "mcp_servers.<id>.disabled_tools",
433433`boolean` type: "array<string>",
434434 description:
435435Details "Deny list applied after `enabled_tools` for the MCP server.",
436436 },
437437Enable multi-agent collaboration tools (`spawn\_agent`, `send\_input`, `resume\_agent`, `wait`, and `close\_agent`) (experimental; off by default). {
438438 key: "mcp_servers.<id>.scopes",
439439Key type: "array<string>",
440440 description:
441441`features.personality` "OAuth scopes to request when authenticating to that MCP server.",
442442 },
443443Type / Values {
444444 key: "mcp_servers.<id>.oauth_resource",
445445`boolean` type: "string",
446446 description:
447447Details "Optional RFC 8707 OAuth resource parameter to include during MCP login.",
448448 },
449449Enable personality selection controls (stable; on by default). {
450450 key: "mcp_servers.<id>.experimental_environment",
451451Key type: "local | remote",
452452 description:
453453`features.powershell_utf8` "Experimental placement for an MCP server. `remote` starts stdio servers through a remote executor environment; streamable HTTP remote placement is not implemented.",
454454 },
455455Type / Values {
456456 key: "agents.max_threads",
457457`boolean` type: "number",
458458 description:
459459Details "Maximum number of agent threads that can be open concurrently. Defaults to `6` when unset.",
460460 },
461461Force PowerShell UTF-8 output (defaults to true). {
462462 key: "agents.max_depth",
463463Key type: "number",
464464 description:
465465`features.remote_models` "Maximum nesting depth allowed for spawned agent threads (root sessions start at depth 0; default: 1).",
466466 },
467467Type / Values {
468468 key: "agents.job_max_runtime_seconds",
469469`boolean` type: "number",
470470 description:
471471Details "Default per-worker timeout for `spawn_agents_on_csv` jobs. When unset, the tool falls back to 1800 seconds per worker.",
472472 },
473473Refresh remote model list before showing readiness (experimental). {
474474 key: "agents.<name>.description",
475475Key type: "string",
476476 description:
477477`features.request_rule` "Role guidance shown to Codex when choosing and spawning that agent type.",
478478 },
479479Type / Values {
480480 key: "agents.<name>.config_file",
481481`boolean` type: "string (path)",
482482 description:
483483Details "Path to a TOML config layer for that role; relative paths resolve from the config file that declares the role.",
484484 },
485485Enable Smart approvals (`prefix_rule` suggestions on escalation requests; stable; on by default). {
486486 key: "agents.<name>.nickname_candidates",
487487Key type: "array<string>",
488488 description:
489489`features.runtime_metrics` "Optional pool of display nicknames for spawned agents in that role.",
490490 },
491491Type / Values {
492492 key: "memories.generate_memories",
493493`boolean` type: "boolean",
494494 description:
495495Details "When `false`, newly created threads are not stored as memory-generation inputs. Defaults to `true`.",
496496 },
497497Show runtime metrics summary in TUI turn separators (experimental). {
498498 key: "memories.use_memories",
499499Key type: "boolean",
500500 description:
501501`features.search_tool` "When `false`, Codex skips injecting existing memories into future sessions. Defaults to `true`.",
502502 },
503503Type / Values {
504504 key: "memories.disable_on_external_context",
505505`boolean` type: "boolean",
506506 description:
507507Details "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`.",
508508 },
509509Enable `search_tool_bm25` for Apps tool discovery before invoking app MCP tools (experimental). {
510510 key: "memories.max_raw_memories_for_consolidation",
511511Key type: "number",
512512 description:
513513`features.shell_snapshot` "Maximum recent raw memories retained for global consolidation. Defaults to `256` and is capped at `4096`.",
514514 },
515515Type / Values {
516516 key: "memories.max_unused_days",
517517`boolean` type: "number",
518518 description:
519519Details "Maximum days since a memory was last used before it becomes ineligible for consolidation. Defaults to `30` and is clamped to `0`-`365`.",
520520 },
521521Snapshot shell environment to speed up repeated commands (beta). {
522522 key: "memories.max_rollout_age_days",
523523Key type: "number",
524524 description:
525525`features.shell_tool` "Maximum age of threads considered for memory generation. Defaults to `30` and is clamped to `0`-`90`.",
526526 },
527527Type / Values {
528528 key: "memories.max_rollouts_per_startup",
529529`boolean` type: "number",
530530 description:
531531Details "Maximum rollout candidates processed per startup pass. Defaults to `16` and is capped at `128`.",
532532 },
533533Enable the default `shell` tool for running commands (stable; on by default). {
534534 key: "memories.min_rollout_idle_hours",
535535Key type: "number",
536536 description:
537537`features.unified_exec` "Minimum idle time before a thread is considered for memory generation. Defaults to `6` and is clamped to `1`-`48`.",
538538 },
539539Type / Values {
540540 key: "memories.min_rate_limit_remaining_percent",
541541`boolean` type: "number",
542542 description:
543543Details "Minimum remaining percentage required in Codex rate-limit windows before memory generation starts. Defaults to `25` and is clamped to `0`-`100`.",
544544 },
545545Use the unified PTY-backed exec tool (beta). {
546546 key: "memories.extract_model",
547547Key type: "string",
548548 description: "Optional model override for per-thread memory extraction.",
549549`features.use_linux_sandbox_bwrap` },
550550 {
551551Type / Values key: "memories.consolidation_model",
552552 type: "string",
553553`boolean` description: "Optional model override for global memory consolidation.",
554554 },
555555Details {
556556 key: "features.unified_exec",
557557Use the bubblewrap-based Linux sandbox pipeline (experimental; off by default). type: "boolean",
558558 description:
559559Key "Use the unified PTY-backed exec tool (stable; enabled by default except on Windows).",
560560 },
561561`features.web_search` {
562562 key: "features.shell_snapshot",
563563Type / Values type: "boolean",
564564 description:
565565`boolean` "Snapshot shell environment to speed up repeated commands (stable; on by default).",
566566 },
567567Details {
568568 key: "features.undo",
569569Deprecated legacy toggle; prefer the top-level `web_search` setting. type: "boolean",
570570 description: "Enable undo support (stable; off by default).",
571571Key },
572572 {
573573`features.web_search_cached` key: "features.multi_agent",
574574 type: "boolean",
575575Type / Values description:
576576 "Enable multi-agent collaboration tools (`spawn_agent`, `send_input`, `resume_agent`, `wait_agent`, and `close_agent`) (stable; on by default).",
577577`boolean` },
578578 {
579579Details key: "features.personality",
580580 type: "boolean",
581581Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "cached"`. description:
582582 "Enable personality selection controls (stable; on by default).",
583583Key },
584584 {
585585`features.web_search_request` key: "features.web_search",
586586 type: "boolean",
587587Type / Values description:
588588 "Deprecated legacy toggle; prefer the top-level `web_search` setting.",
589589`boolean` },
590590 {
591591Details key: "features.web_search_cached",
592592 type: "boolean",
593593Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "live"`. description:
594594 'Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "cached"`.',
595595Key },
596596 {
597597`feedback.enabled` key: "features.web_search_request",
598598 type: "boolean",
599599Type / Values description:
600600 'Deprecated legacy toggle. When `web_search` is unset, true maps to `web_search = "live"`.',
601601`boolean` },
602602 {
603603Details key: "features.shell_tool",
604604 type: "boolean",
605605Enable feedback submission via `/feedback` across Codex surfaces (default: true). description:
606606 "Enable the default `shell` tool for running commands (stable; on by default).",
607607Key },
608608 {
609609`file_opener` key: "features.enable_request_compression",
610610 type: "boolean",
611611Type / Values description:
612612 "Compress streaming request bodies with zstd when supported (stable; on by default).",
613613`vscode | vscode-insiders | windsurf | cursor | none` },
614614 {
615615Details key: "features.skill_mcp_dependency_install",
616616 type: "boolean",
617617URI scheme used to open citations from Codex output (default: `vscode`). description:
618618 "Allow prompting and installing missing MCP dependencies for skills (stable; on by default).",
619619Key },
620620 {
621621`forced_chatgpt_workspace_id` key: "features.fast_mode",
622622 type: "boolean",
623623Type / Values description:
624624 'Enable Fast mode selection and the `service_tier = "fast"` path (stable; on by default).',
625625`string (uuid)` },
626626 {
627627Details key: "features.prevent_idle_sleep",
628628 type: "boolean",
629629Limit ChatGPT logins to a specific workspace identifier. description:
630630 "Prevent the machine from sleeping while a turn is actively running (experimental; off by default).",
631631Key },
632632 {
633633`forced_login_method` key: "suppress_unstable_features_warning",
634634 type: "boolean",
635635Type / Values description:
636636 "Suppress the warning that appears when under-development feature flags are enabled.",
637637`chatgpt | api` },
638638 {
639639Details key: "model_providers.<id>",
640640 type: "table",
641641Restrict Codex to a specific authentication method. description:
642642 "Custom provider definition. Built-in provider IDs (`openai`, `ollama`, and `lmstudio`) are reserved and cannot be overridden.",
643643Key },
644644 {
645645`hide_agent_reasoning` key: "model_providers.<id>.name",
646646 type: "string",
647647Type / Values description: "Display name for a custom model provider.",
648648 },
649649`boolean` {
650650 key: "model_providers.<id>.base_url",
651651Details type: "string",
652652 description: "API base URL for the model provider.",
653653Suppress reasoning events in both the TUI and `codex exec` output. },
654654 {
655655Key key: "model_providers.<id>.env_key",
656656 type: "string",
657657`history.max_bytes` description: "Environment variable supplying the provider API key.",
658658 },
659659Type / Values {
660660 key: "model_providers.<id>.env_key_instructions",
661661`number` type: "string",
662662 description: "Optional setup guidance for the provider API key.",
663663Details },
664664 {
665665If set, caps the history file size in bytes by dropping oldest entries. key: "model_providers.<id>.experimental_bearer_token",
666666 type: "string",
667667Key description:
668668 "Direct bearer token for the provider (discouraged; use `env_key`).",
669669`history.persistence` },
670670 {
671671Type / Values key: "model_providers.<id>.requires_openai_auth",
672672 type: "boolean",
673673`save-all | none` description:
674674 "The provider uses OpenAI authentication (defaults to false).",
675675Details },
676676 {
677677Control whether Codex saves session transcripts to history.jsonl. key: "model_providers.<id>.wire_api",
678678 type: "responses",
679679Key description:
680680 "Protocol used by the provider. `responses` is the only supported value, and it is the default when omitted.",
681681`include_apply_patch_tool` },
682682 {
683683Type / Values key: "model_providers.<id>.query_params",
684684 type: "map<string,string>",
685685`boolean` description: "Extra query parameters appended to provider requests.",
686686 },
687687Details {
688688 key: "model_providers.<id>.http_headers",
689689Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`. type: "map<string,string>",
690690 description: "Static HTTP headers added to provider requests.",
691691Key },
692692 {
693693`instructions` key: "model_providers.<id>.env_http_headers",
694694 type: "map<string,string>",
695695Type / Values description:
696696 "HTTP headers populated from environment variables when present.",
697697`string` },
698698 {
699699Details key: "model_providers.<id>.request_max_retries",
700700 type: "number",
701701Reserved for future use; prefer `model_instructions_file` or `AGENTS.md`. description:
702702 "Retry count for HTTP requests to the provider (default: 4).",
703703Key },
704704 {
705705`log_dir` key: "model_providers.<id>.stream_max_retries",
706706 type: "number",
707707Type / Values description: "Retry count for SSE streaming interruptions (default: 5).",
708708 },
709709`string (path)` {
710710 key: "model_providers.<id>.stream_idle_timeout_ms",
711711Details type: "number",
712712 description:
713713Directory where Codex writes log files (for example `codex-tui.log`); defaults to `$CODEX_HOME/log`. "Idle timeout for SSE streams in milliseconds (default: 300000).",
714714 },
715715Key {
716716 key: "model_providers.<id>.supports_websockets",
717717`mcp_oauth_callback_port` type: "boolean",
718718 description:
719719Type / Values "Whether that provider supports the Responses API WebSocket transport.",
720720 },
721721`integer` {
722722 key: "model_providers.<id>.auth",
723723Details type: "table",
724724 description:
725725Optional 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. "Command-backed bearer token configuration for a custom provider. Do not combine with `env_key`, `experimental_bearer_token`, or `requires_openai_auth`.",
726726 },
727727Key {
728728 key: "model_providers.<id>.auth.command",
729729`mcp_oauth_credentials_store` type: "string",
730730 description:
731731Type / Values "Command to run when Codex needs a bearer token. The command must print the token to stdout.",
732732 },
733733`auto | file | keyring` {
734734 key: "model_providers.<id>.auth.args",
735735Details type: "array<string>",
736736 description: "Arguments passed to the token command.",
737737Preferred store for MCP OAuth credentials. },
738738 {
739739Key key: "model_providers.<id>.auth.timeout_ms",
740740 type: "number",
741741`mcp_servers.<id>.args` description:
742742 "Maximum token command runtime in milliseconds (default: 5000).",
743743Type / Values },
744744 {
745745`array<string>` key: "model_providers.<id>.auth.refresh_interval_ms",
746746 type: "number",
747747Details description:
748748 "How often Codex proactively refreshes the token in milliseconds (default: 300000). Set to `0` to refresh only after an authentication retry.",
749749Arguments passed to the MCP stdio server command. },
750750 {
751751Key key: "model_providers.<id>.auth.cwd",
752752 type: "string (path)",
753753`mcp_servers.<id>.bearer_token_env_var` description: "Working directory for the token command.",
754754 },
755755Type / Values {
756756 key: "model_providers.amazon-bedrock.aws.profile",
757757`string` type: "string",
758758 description:
759759Details "AWS profile name used by the built-in `amazon-bedrock` provider.",
760760 },
761761Environment variable sourcing the bearer token for an MCP HTTP server. {
762762 key: "model_providers.amazon-bedrock.aws.region",
763763Key type: "string",
764764 description: "AWS region used by the built-in `amazon-bedrock` provider.",
765765`mcp_servers.<id>.command` },
766766 {
767767Type / Values key: "model_reasoning_effort",
768768 type: "minimal | low | medium | high | xhigh",
769769`string` description:
770770 "Adjust reasoning effort for supported models (Responses API only; `xhigh` is model-dependent).",
771771Details },
772772 {
773773Launcher command for an MCP stdio server. key: "plan_mode_reasoning_effort",
774774 type: "none | minimal | low | medium | high | xhigh",
775775Key description:
776776 "Plan-mode-specific reasoning override. When unset, Plan mode uses its built-in preset default.",
777777`mcp_servers.<id>.cwd` },
778778 {
779779Type / Values key: "model_reasoning_summary",
780780 type: "auto | concise | detailed | none",
781781`string` description:
782782 "Select reasoning summary detail or disable summaries entirely.",
783783Details },
784784 {
785785Working directory for the MCP stdio server process. key: "model_verbosity",
786786 type: "low | medium | high",
787787Key description:
788788 "Optional GPT-5 Responses API verbosity override; when unset, the selected model/preset default is used.",
789789`mcp_servers.<id>.disabled_tools` },
790790 {
791791Type / Values key: "model_supports_reasoning_summaries",
792792 type: "boolean",
793793`array<string>` description: "Force Codex to send or not send reasoning metadata.",
794794 },
795795Details {
796796 key: "shell_environment_policy.inherit",
797797Deny list applied after `enabled_tools` for the MCP server. type: "all | core | none",
798798 description:
799799Key "Baseline environment inheritance when spawning subprocesses.",
800800 },
801801`mcp_servers.<id>.enabled` {
802802 key: "shell_environment_policy.ignore_default_excludes",
803803Type / Values type: "boolean",
804804 description:
805805`boolean` "Keep variables containing KEY/SECRET/TOKEN before other filters run.",
806806 },
807807Details {
808808 key: "shell_environment_policy.exclude",
809809Disable an MCP server without removing its configuration. type: "array<string>",
810810 description:
811811Key "Glob patterns for removing environment variables after the defaults.",
812812 },
813813`mcp_servers.<id>.enabled_tools` {
814814 key: "shell_environment_policy.include_only",
815815Type / Values type: "array<string>",
816816 description:
817817`array<string>` "Whitelist of patterns; when set only matching variables are kept.",
818818 },
819819Details {
820820 key: "shell_environment_policy.set",
821821Allow list of tool names exposed by the MCP server. type: "map<string,string>",
822822 description:
823823Key "Explicit environment overrides injected into every subprocess.",
824824 },
825825`mcp_servers.<id>.env` {
826826 key: "shell_environment_policy.experimental_use_profile",
827827Type / Values type: "boolean",
828828 description: "Use the user shell profile when spawning subprocesses.",
829829`map<string,string>` },
830830 {
831831Details key: "project_root_markers",
832832 type: "array<string>",
833833Environment variables forwarded to the MCP stdio server. description:
834834 "List of project root marker filenames; used when searching parent directories for the project root.",
835835Key },
836836 {
837837`mcp_servers.<id>.env_http_headers` key: "project_doc_max_bytes",
838838 type: "number",
839839Type / Values description:
840840 "Maximum bytes read from `AGENTS.md` when building project instructions.",
841841`map<string,string>` },
842842 {
843843Details key: "project_doc_fallback_filenames",
844844 type: "array<string>",
845845HTTP headers populated from environment variables for an MCP HTTP server. description: "Additional filenames to try when `AGENTS.md` is missing.",
846846 },
847847Key {
848848 key: "profile",
849849`mcp_servers.<id>.env_vars` type: "string",
850850 description:
851851Type / Values "Default profile applied at startup (equivalent to `--profile`).",
852852 },
853853`array<string>` {
854854 key: "profiles.<name>.*",
855855Details type: "various",
856856 description:
857857Additional environment variables to whitelist for an MCP stdio server. "Profile-scoped overrides for any of the supported configuration keys.",
858858 },
859859Key {
860860 key: "profiles.<name>.service_tier",
861861`mcp_servers.<id>.http_headers` type: "flex | fast",
862862 description: "Profile-scoped service tier preference for new turns.",
863863Type / Values },
864864 {
865865`map<string,string>` key: "profiles.<name>.plan_mode_reasoning_effort",
866866 type: "none | minimal | low | medium | high | xhigh",
867867Details description: "Profile-scoped Plan-mode reasoning override.",
868868 },
869869Static HTTP headers included with each MCP HTTP request. {
870870 key: "profiles.<name>.web_search",
871871Key type: "disabled | cached | live",
872872 description:
873873`mcp_servers.<id>.required` 'Profile-scoped web search mode override (default: `"cached"`).',
874874 },
875875Type / Values {
876876 key: "profiles.<name>.personality",
877877`boolean` type: "none | friendly | pragmatic",
878878 description:
879879Details "Profile-scoped communication style override for supported models.",
880880 },
881881When true, fail startup/resume if this enabled MCP server cannot initialize. {
882882 key: "profiles.<name>.model_catalog_json",
883883Key type: "string (path)",
884884 description:
885885`mcp_servers.<id>.startup_timeout_ms` "Profile-scoped model catalog JSON path override (applied on startup only; overrides the top-level `model_catalog_json` for that profile).",
886886 },
887887Type / Values {
888888 key: "profiles.<name>.model_instructions_file",
889889`number` type: "string (path)",
890890 description:
891891Details "Profile-scoped replacement for the built-in instruction file.",
892892 },
893893Alias for `startup_timeout_sec` in milliseconds. {
894894 key: "profiles.<name>.experimental_use_unified_exec_tool",
895895Key type: "boolean",
896896 description:
897897`mcp_servers.<id>.startup_timeout_sec` "Legacy name for enabling unified exec; prefer `[features].unified_exec`.",
898898 },
899899Type / Values {
900900 key: "profiles.<name>.oss_provider",
901901`number` type: "lmstudio | ollama",
902902 description: "Profile-scoped OSS provider for `--oss` sessions.",
903903Details },
904904 {
905905Override the default 10s startup timeout for an MCP server. key: "profiles.<name>.tools_view_image",
906906 type: "boolean",
907907Key description: "Enable or disable the `view_image` tool in that profile.",
908908 },
909909`mcp_servers.<id>.tool_timeout_sec` {
910910 key: "profiles.<name>.analytics.enabled",
911911Type / Values type: "boolean",
912912 description: "Profile-scoped analytics enablement override.",
913913`number` },
914914 {
915915Details key: "profiles.<name>.windows.sandbox",
916916 type: "unelevated | elevated",
917917Override the default 60s per-tool timeout for an MCP server. description: "Profile-scoped Windows sandbox mode override.",
918918 },
919919Key {
920920 key: "history.persistence",
921921`mcp_servers.<id>.url` type: "save-all | none",
922922 description:
923923Type / Values "Control whether Codex saves session transcripts to history.jsonl.",
924924 },
925925`string` {
926926 key: "tool_output_token_limit",
927927Details type: "number",
928928 description:
929929Endpoint for an MCP streamable HTTP server. "Token budget for storing individual tool/function outputs in history.",
930930 },
931931Key {
932932 key: "background_terminal_max_timeout",
933933`model` type: "number",
934934 description:
935935Type / Values "Maximum poll window in milliseconds for empty `write_stdin` polls (background terminal polling). Default: `300000` (5 minutes). Replaces the older `background_terminal_timeout` key.",
936936 },
937937`string` {
938938 key: "history.max_bytes",
939939Details type: "number",
940940 description:
941941Model to use (e.g., `gpt-5-codex`). "If set, caps the history file size in bytes by dropping oldest entries.",
942942 },
943943Key {
944944 key: "file_opener",
945945`model_auto_compact_token_limit` type: "vscode | vscode-insiders | windsurf | cursor | none",
946946 description:
947947Type / Values "URI scheme used to open citations from Codex output (default: `vscode`).",
948948 },
949949`number` {
950950 key: "otel.environment",
951951Details type: "string",
952952 description:
953953Token threshold that triggers automatic history compaction (unset uses model defaults). "Environment tag applied to emitted OpenTelemetry events (default: `dev`).",
954954 },
955955Key {
956956 key: "otel.exporter",
957957`model_context_window` type: "none | otlp-http | otlp-grpc",
958958 description:
959959Type / Values "Select the OpenTelemetry exporter and provide any endpoint metadata.",
960960 },
961961`number` {
962962 key: "otel.trace_exporter",
963963Details type: "none | otlp-http | otlp-grpc",
964964 description:
965965Context window tokens available to the active model. "Select the OpenTelemetry trace exporter and provide any endpoint metadata.",
966966 },
967967Key {
968968 key: "otel.metrics_exporter",
969969`model_instructions_file` type: "none | statsig | otlp-http | otlp-grpc",
970970 description:
971971Type / Values "Select the OpenTelemetry metrics exporter (defaults to `statsig`).",
972972 },
973973`string (path)` {
974974 key: "otel.log_user_prompt",
975975Details type: "boolean",
976976 description:
977977Replacement for built-in instructions instead of `AGENTS.md`. "Opt in to exporting raw user prompts with OpenTelemetry logs.",
978978 },
979979Key {
980980 key: "otel.exporter.<id>.endpoint",
981981`model_provider` type: "string",
982982 description: "Exporter endpoint for OTEL logs.",
983983Type / Values },
984984 {
985985`string` key: "otel.exporter.<id>.protocol",
986986 type: "binary | json",
987987Details description: "Protocol used by the OTLP/HTTP exporter.",
988988 },
989989Provider id from `model_providers` (default: `openai`). {
990990 key: "otel.exporter.<id>.headers",
991991Key type: "map<string,string>",
992992 description: "Static headers included with OTEL exporter requests.",
993993`model_providers.<id>.base_url` },
994994 {
995995Type / Values key: "otel.trace_exporter.<id>.endpoint",
996996 type: "string",
997997`string` description: "Trace exporter endpoint for OTEL logs.",
998998 },
999999Details {
10001000 key: "otel.trace_exporter.<id>.protocol",
10011001API base URL for the model provider. type: "binary | json",
10021002 description: "Protocol used by the OTLP/HTTP trace exporter.",
10031003Key },
10041004 {
10051005`model_providers.<id>.env_http_headers` key: "otel.trace_exporter.<id>.headers",
10061006 type: "map<string,string>",
10071007Type / Values description: "Static headers included with OTEL trace exporter requests.",
10081008 },
10091009`map<string,string>` {
10101010 key: "otel.exporter.<id>.tls.ca-certificate",
10111011Details type: "string",
10121012 description: "CA certificate path for OTEL exporter TLS.",
10131013HTTP headers populated from environment variables when present. },
10141014 {
10151015Key key: "otel.exporter.<id>.tls.client-certificate",
10161016 type: "string",
10171017`model_providers.<id>.env_key` description: "Client certificate path for OTEL exporter TLS.",
10181018 },
10191019Type / Values {
10201020 key: "otel.exporter.<id>.tls.client-private-key",
10211021`string` type: "string",
10221022 description: "Client private key path for OTEL exporter TLS.",
10231023Details },
10241024 {
10251025Environment variable supplying the provider API key. key: "otel.trace_exporter.<id>.tls.ca-certificate",
10261026 type: "string",
10271027Key description: "CA certificate path for OTEL trace exporter TLS.",
10281028 },
10291029`model_providers.<id>.env_key_instructions` {
10301030 key: "otel.trace_exporter.<id>.tls.client-certificate",
10311031Type / Values type: "string",
10321032 description: "Client certificate path for OTEL trace exporter TLS.",
10331033`string` },
10341034 {
10351035Details key: "otel.trace_exporter.<id>.tls.client-private-key",
10361036 type: "string",
10371037Optional setup guidance for the provider API key. description: "Client private key path for OTEL trace exporter TLS.",
10381038 },
10391039Key {
10401040 key: "tui",
10411041`model_providers.<id>.experimental_bearer_token` type: "table",
10421042 description:
10431043Type / Values "TUI-specific options such as enabling inline desktop notifications.",
10441044 },
10451045`string` {
10461046 key: "tui.notifications",
10471047Details type: "boolean | array<string>",
10481048 description:
10491049Direct bearer token for the provider (discouraged; use `env_key`). "Enable TUI notifications; optionally restrict to specific event types.",
10501050 },
10511051Key {
10521052 key: "tui.notification_method",
10531053`model_providers.<id>.http_headers` type: "auto | osc9 | bel",
10541054 description:
10551055Type / Values "Notification method for terminal notifications (default: auto).",
10561056 },
10571057`map<string,string>` {
10581058 key: "tui.notification_condition",
10591059Details type: "unfocused | always",
10601060 description:
10611061Static HTTP headers added to provider requests. "Control whether TUI notifications fire only when the terminal is unfocused or regardless of focus. Defaults to `unfocused`.",
10621062 },
10631063Key {
10641064 key: "tui.animations",
10651065`model_providers.<id>.name` type: "boolean",
10661066 description:
10671067Type / Values "Enable terminal animations (welcome screen, shimmer, spinner) (default: true).",
10681068 },
10691069`string` {
10701070 key: "tui.alternate_screen",
10711071Details type: "auto | always | never",
10721072 description:
10731073Display name for a custom model provider. "Control alternate screen usage for the TUI (default: auto; auto skips it in Zellij to preserve scrollback).",
10741074 },
10751075Key {
10761076 key: "tui.show_tooltips",
10771077`model_providers.<id>.query_params` type: "boolean",
10781078 description:
10791079Type / Values "Show onboarding tooltips in the TUI welcome screen (default: true).",
10801080 },
10811081`map<string,string>` {
10821082 key: "tui.status_line",
10831083Details type: "array<string> | null",
10841084 description:
10851085Extra query parameters appended to provider requests. "Ordered list of TUI footer status-line item identifiers. `null` disables the status line.",
10861086 },
10871087Key {
10881088 key: "tui.terminal_title",
10891089`model_providers.<id>.request_max_retries` type: "array<string> | null",
10901090 description:
10911091Type / Values 'Ordered list of terminal window/tab title item identifiers. Defaults to `["spinner", "project"]`; `null` disables title updates.',
10921092 },
10931093`number` {
10941094 key: "tui.theme",
10951095Details type: "string",
10961096 description:
10971097Retry count for HTTP requests to the provider (default: 4). "Syntax-highlighting theme override (kebab-case theme name).",
10981098 },
10991099Key {
11001100 key: "tui.keymap.<context>.<action>",
11011101`model_providers.<id>.requires_openai_auth` type: "string | array<string>",
11021102 description:
11031103Type / Values "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`.",
11041104 },
11051105`boolean` {
11061106 key: "tui.keymap.<context>.<action> = []",
11071107Details type: "empty array",
11081108 description:
11091109The provider uses OpenAI authentication (defaults to false). "Unbind the action in that keymap context. Key names use normalized strings such as `ctrl-a`, `shift-enter`, or `page-down`.",
11101110 },
11111111Key {
11121112 key: "tui.model_availability_nux.<model>",
11131113`model_providers.<id>.stream_idle_timeout_ms` type: "integer",
11141114 description: "Internal startup-tooltip state keyed by model slug.",
11151115Type / Values },
11161116 {
11171117`number` key: "hide_agent_reasoning",
11181118 type: "boolean",
11191119Details description:
11201120 "Suppress reasoning events in both the TUI and `codex exec` output.",
11211121Idle timeout for SSE streams in milliseconds (default: 300000). },
11221122 {
11231123Key key: "show_raw_agent_reasoning",
11241124 type: "boolean",
11251125`model_providers.<id>.stream_max_retries` description:
11261126 "Surface raw reasoning content when the active model emits it.",
11271127Type / Values },
11281128 {
11291129`number` key: "disable_paste_burst",
11301130 type: "boolean",
11311131Details description: "Disable burst-paste detection in the TUI.",
11321132 },
11331133Retry count for SSE streaming interruptions (default: 5). {
11341134 key: "windows_wsl_setup_acknowledged",
11351135Key type: "boolean",
11361136 description: "Track Windows onboarding acknowledgement (Windows only).",
11371137`model_providers.<id>.wire_api` },
11381138 {
11391139Type / Values key: "chatgpt_base_url",
11401140 type: "string",
11411141`chat | responses` description: "Override the base URL used during the ChatGPT login flow.",
11421142 },
11431143Details {
11441144 key: "cli_auth_credentials_store",
11451145Protocol used by the provider (defaults to `chat` if omitted). type: "file | keyring | auto",
11461146 description:
11471147Key "Control where the CLI stores cached credentials (file-based auth.json vs OS keychain).",
11481148 },
11491149`model_reasoning_effort` {
11501150 key: "mcp_oauth_credentials_store",
11511151Type / Values type: "auto | file | keyring",
11521152 description: "Preferred store for MCP OAuth credentials.",
11531153`minimal | low | medium | high | xhigh` },
11541154 {
11551155Details key: "mcp_oauth_callback_port",
11561156 type: "integer",
11571157Adjust reasoning effort for supported models (Responses API only; `xhigh` is model-dependent). description:
11581158 "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.",
11591159Key },
11601160 {
11611161`model_reasoning_summary` key: "mcp_oauth_callback_url",
11621162 type: "string",
11631163Type / Values description:
11641164 "Optional redirect URI override for MCP OAuth login (for example, a devbox ingress URL). `mcp_oauth_callback_port` still controls the callback listener port.",
11651165`auto | concise | detailed | none` },
11661166 {
11671167Details key: "experimental_use_unified_exec_tool",
11681168 type: "boolean",
11691169Select reasoning summary detail or disable summaries entirely. description:
11701170 "Legacy name for enabling unified exec; prefer `[features].unified_exec` or `codex --enable unified_exec`.",
11711171Key },
11721172 {
11731173`model_supports_reasoning_summaries` key: "tools.web_search",
11741174 type: 'boolean | { context_size = "low|medium|high", allowed_domains = [string], location = { country, region, city, timezone } }',
11751175Type / Values description:
11761176 "Optional web search tool configuration. The legacy boolean form is still accepted, but the object form lets you set search context size, allowed domains, and approximate user location.",
11771177`boolean` },
11781178 {
11791179Details key: "tools.view_image",
11801180 type: "boolean",
11811181Force Codex to send or not send reasoning metadata. description: "Enable the local-image attachment tool `view_image`.",
11821182 },
11831183Key {
11841184 key: "web_search",
11851185`model_verbosity` type: "disabled | cached | live",
11861186 description:
11871187Type / Values '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.',
11881188 },
11891189`low | medium | high` {
11901190 key: "default_permissions",
11911191Details type: "string",
11921192 description:
11931193Control GPT-5 Responses API verbosity (defaults to `medium`). "Name of the default permissions profile to apply to sandboxed tool calls. Built-ins are `:read-only`, `:workspace`, and `:danger-no-sandbox`; custom profile names require matching `[permissions.<name>]` tables.",
11941194 },
11951195Key {
11961196 key: "permissions.<name>.filesystem",
11971197`notice.hide_full_access_warning` type: "table",
11981198 description:
11991199Type / Values "Named filesystem permission profile. Each key is an absolute path or special token such as `:minimal` or `:project_roots`.",
12001200 },
12011201`boolean` {
12021202 key: "permissions.<name>.filesystem.glob_scan_max_depth",
12031203Details type: "number",
12041204 description:
12051205Track acknowledgement of the full access warning prompt. "Maximum depth for expanding deny-read glob patterns on platforms that snapshot matches before sandbox startup. Must be at least `1` when set.",
12061206 },
12071207Key {
12081208 key: "permissions.<name>.filesystem.<path-or-glob>",
12091209`notice.hide_gpt-5.1-codex-max_migration_prompt` type: '"read" | "write" | "none" | table',
12101210 description:
12111211Type / Values '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.',
12121212 },
12131213`boolean` {
12141214 key: 'permissions.<name>.filesystem.":project_roots".<subpath-or-glob>',
12151215Details type: '"read" | "write" | "none"',
12161216 description:
12171217Track acknowledgement of the gpt-5.1-codex-max migration prompt. 'Scoped filesystem access relative to the detected project roots. Use `"."` for the root itself; glob subpaths such as `"**/*.env"` can deny reads with `"none"`.',
12181218 },
12191219Key {
12201220 key: "permissions.<name>.network.enabled",
12211221`notice.hide_gpt5_1_migration_prompt` type: "boolean",
12221222 description: "Enable network access for this named permissions profile.",
12231223Type / Values },
12241224 {
12251225`boolean` key: "permissions.<name>.network.proxy_url",
12261226 type: "string",
12271227Details description:
12281228 "HTTP proxy endpoint used when this permissions profile enables the managed network proxy.",
12291229Track acknowledgement of the GPT-5.1 migration prompt. },
12301230 {
12311231Key key: "permissions.<name>.network.enable_socks5",
12321232 type: "boolean",
12331233`notice.hide_rate_limit_model_nudge` description:
12341234 "Expose a SOCKS5 listener when this permissions profile enables the managed network proxy.",
12351235Type / Values },
12361236 {
12371237`boolean` key: "permissions.<name>.network.socks_url",
12381238 type: "string",
12391239Details description: "SOCKS5 proxy endpoint used by this permissions profile.",
12401240 },
12411241Track opt-out of the rate limit model switch reminder. {
12421242 key: "permissions.<name>.network.enable_socks5_udp",
12431243Key type: "boolean",
12441244 description: "Allow UDP over the SOCKS5 listener when enabled.",
12451245`notice.hide_world_writable_warning` },
12461246 {
12471247Type / Values key: "permissions.<name>.network.allow_upstream_proxy",
12481248 type: "boolean",
12491249`boolean` description:
12501250 "Allow the managed proxy to chain to another upstream proxy.",
12511251Details },
12521252 {
12531253Track acknowledgement of the Windows world-writable directories warning. key: "permissions.<name>.network.dangerously_allow_non_loopback_proxy",
12541254 type: "boolean",
12551255Key description:
12561256 "Permit non-loopback bind addresses for the managed proxy listener.",
12571257`notice.model_migrations` },
12581258 {
12591259Type / Values key: "permissions.<name>.network.dangerously_allow_all_unix_sockets",
12601260 type: "boolean",
12611261`map<string,string>` description:
12621262 "Allow the proxy to use arbitrary Unix sockets instead of the default restricted set.",
12631263Details },
12641264 {
12651265Track acknowledged model migrations as old->new mappings. key: "permissions.<name>.network.mode",
12661266 type: "limited | full",
12671267Key description: "Network proxy mode used for subprocess traffic.",
12681268 },
12691269`notify` {
12701270 key: "permissions.<name>.network.domains",
12711271Type / Values type: "map<string, allow | deny>",
12721272 description:
12731273`array<string>` "Domain rules for the managed proxy. Use domain names or wildcard patterns as keys, with `allow` or `deny` values.",
12741274 },
12751275Details {
12761276 key: "permissions.<name>.network.unix_sockets",
12771277Command invoked for notifications; receives a JSON payload from Codex. type: "map<string, allow | none>",
12781278 description:
12791279Key "Unix socket rules for the managed proxy. Use socket paths as keys, with `allow` or `none` values.",
12801280 },
12811281`oss_provider` {
12821282 key: "permissions.<name>.network.allow_local_binding",
12831283Type / Values type: "boolean",
12841284 description:
12851285`lmstudio | ollama` "Permit local bind/listen operations through the managed proxy.",
12861286 },
12871287Details {
12881288 key: "projects.<path>.trust_level",
12891289Default local provider used when running with `--oss` (defaults to prompting if unset). type: "string",
12901290 description:
12911291Key '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.',
12921292 },
12931293`otel.environment` {
12941294 key: "notice.hide_full_access_warning",
12951295Type / Values type: "boolean",
12961296 description: "Track acknowledgement of the full access warning prompt.",
12971297`string` },
12981298 {
12991299Details key: "notice.hide_world_writable_warning",
13001300 type: "boolean",
13011301Environment tag applied to emitted OpenTelemetry events (default: `dev`). description:
13021302 "Track acknowledgement of the Windows world-writable directories warning.",
13031303Key },
13041304 {
13051305`otel.exporter` key: "notice.hide_rate_limit_model_nudge",
13061306 type: "boolean",
13071307Type / Values description: "Track opt-out of the rate limit model switch reminder.",
13081308 },
13091309`none | otlp-http | otlp-grpc` {
13101310 key: "notice.hide_gpt5_1_migration_prompt",
13111311Details type: "boolean",
13121312 description: "Track acknowledgement of the GPT-5.1 migration prompt.",
13131313Select the OpenTelemetry exporter and provide any endpoint metadata. },
13141314 {
13151315Key key: "notice.hide_gpt-5.1-codex-max_migration_prompt",
13161316 type: "boolean",
13171317`otel.exporter.<id>.endpoint` description:
13181318 "Track acknowledgement of the gpt-5.1-codex-max migration prompt.",
13191319Type / Values },
13201320 {
13211321`string` key: "notice.model_migrations",
13221322 type: "map<string,string>",
13231323Details description: "Track acknowledged model migrations as old->new mappings.",
13241324 },
13251325Exporter endpoint for OTEL logs. {
13261326 key: "forced_login_method",
13271327Key type: "chatgpt | api",
13281328 description: "Restrict Codex to a specific authentication method.",
13291329`otel.exporter.<id>.headers` },
13301330 {
13311331Type / Values key: "forced_chatgpt_workspace_id",
13321332 type: "string (uuid)",
13331333`map<string,string>` description: "Limit ChatGPT logins to a specific workspace identifier.",
13341334 },
13351335Details ]}
13361336 client:load
13371337Static headers included with OTEL exporter requests./>
1338
1339Key
1340
1341`otel.exporter.<id>.protocol`
1342
1343Type / Values
1344
1345`binary | json`
1346
1347Details
1348
1349Protocol used by the OTLP/HTTP exporter.
1350
1351Key
1352
1353`otel.exporter.<id>.tls.ca-certificate`
1354
1355Type / Values
1356
1357`string`
1358
1359Details
1360
1361CA certificate path for OTEL exporter TLS.
1362
1363Key
1364
1365`otel.exporter.<id>.tls.client-certificate`
1366
1367Type / Values
1368
1369`string`
1370
1371Details
1372
1373Client certificate path for OTEL exporter TLS.
1374
1375Key
1376
1377`otel.exporter.<id>.tls.client-private-key`
1378
1379Type / Values
1380
1381`string`
1382
1383Details
1384
1385Client private key path for OTEL exporter TLS.
1386
1387Key
1388
1389`otel.log_user_prompt`
1390
1391Type / Values
1392
1393`boolean`
1394
1395Details
1396
1397Opt in to exporting raw user prompts with OpenTelemetry logs.
1398
1399Key
1400
1401`otel.trace_exporter`
1402
1403Type / Values
1404
1405`none | otlp-http | otlp-grpc`
1406
1407Details
1408
1409Select the OpenTelemetry trace exporter and provide any endpoint metadata.
1410
1411Key
1412
1413`otel.trace_exporter.<id>.endpoint`
1414
1415Type / Values
1416
1417`string`
1418
1419Details
1420
1421Trace exporter endpoint for OTEL logs.
1422
1423Key
1424
1425`otel.trace_exporter.<id>.headers`
1426
1427Type / Values
1428
1429`map<string,string>`
1430
1431Details
1432
1433Static headers included with OTEL trace exporter requests.
1434
1435Key
1436
1437`otel.trace_exporter.<id>.protocol`
1438
1439Type / Values
1440
1441`binary | json`
1442
1443Details
1444
1445Protocol used by the OTLP/HTTP trace exporter.
1446
1447Key
1448
1449`otel.trace_exporter.<id>.tls.ca-certificate`
1450
1451Type / Values
1452
1453`string`
1454
1455Details
1456
1457CA certificate path for OTEL trace exporter TLS.
1458
1459Key
1460
1461`otel.trace_exporter.<id>.tls.client-certificate`
1462
1463Type / Values
1464
1465`string`
1466
1467Details
1468
1469Client certificate path for OTEL trace exporter TLS.
1470
1471Key
1472
1473`otel.trace_exporter.<id>.tls.client-private-key`
1474
1475Type / Values
1476
1477`string`
1478
1479Details
1480
1481Client private key path for OTEL trace exporter TLS.
1482
1483Key
1484
1485`personality`
1486
1487Type / Values
1488
1489`none | friendly | pragmatic`
1490
1491Details
1492
1493Default communication style for models that advertise `supportsPersonality`; can be overridden per thread/turn or via `/personality`.
1494
1495Key
1496
1497`profile`
1498
1499Type / Values
1500
1501`string`
1502
1503Details
1504
1505Default profile applied at startup (equivalent to `--profile`).
1506
1507Key
1508
1509`profiles.<name>.*`
1510
1511Type / Values
1512
1513`various`
1514
1515Details
1516
1517Profile-scoped overrides for any of the supported configuration keys.
1518
1519Key
1520
1521`profiles.<name>.experimental_use_freeform_apply_patch`
1522
1523Type / Values
1524
1525`boolean`
1526
1527Details
1528
1529Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`.
1530
1531Key
1532
1533`profiles.<name>.experimental_use_unified_exec_tool`
1534
1535Type / Values
1536
1537`boolean`
1538
1539Details
1540
1541Legacy name for enabling unified exec; prefer `[features].unified_exec`.
1542
1543Key
1544
1545`profiles.<name>.include_apply_patch_tool`
1546
1547Type / Values
1548
1549`boolean`
1550
1551Details
1552
1553Legacy name for enabling freeform apply\_patch; prefer `[features].apply_patch_freeform`.
1554
1555Key
1556
1557`profiles.<name>.oss_provider`
1558
1559Type / Values
1560
1561`lmstudio | ollama`
1562
1563Details
1564
1565Profile-scoped OSS provider for `--oss` sessions.
1566
1567Key
1568
1569`profiles.<name>.personality`
1570
1571Type / Values
1572
1573`none | friendly | pragmatic`
1574
1575Details
1576
1577Profile-scoped communication style override for supported models.
1578
1579Key
1580
1581`profiles.<name>.web_search`
1582
1583Type / Values
1584
1585`disabled | cached | live`
1586
1587Details
1588
1589Profile-scoped web search mode override (default: `"cached"`).
1590
1591Key
1592
1593`project_doc_fallback_filenames`
1594
1595Type / Values
1596
1597`array<string>`
1598
1599Details
1600
1601Additional filenames to try when `AGENTS.md` is missing.
1602
1603Key
1604
1605`project_doc_max_bytes`
1606
1607Type / Values
1608
1609`number`
1610
1611Details
1612
1613Maximum bytes read from `AGENTS.md` when building project instructions.
1614
1615Key
1616
1617`project_root_markers`
1618
1619Type / Values
1620
1621`array<string>`
1622
1623Details
1624
1625List of project root marker filenames; used when searching parent directories for the project root.
1626
1627Key
1628
1629`projects.<path>.trust_level`
1630
1631Type / Values
1632
1633`string`
1634
1635Details
1636
1637Mark a project or worktree as trusted or untrusted (`"trusted"` | `"untrusted"`). Untrusted projects skip project-scoped `.codex/` layers.
1638
1639Key
1640
1641`review_model`
1642
1643Type / Values
1644
1645`string`
1646
1647Details
1648
1649Optional model override used by `/review` (defaults to the current session model).
1650
1651Key
1652
1653`sandbox_mode`
1654
1655Type / Values
1656
1657`read-only | workspace-write | danger-full-access`
1658
1659Details
1660
1661Sandbox policy for filesystem and network access during command execution.
1662
1663Key
1664
1665`sandbox_workspace_write.exclude_slash_tmp`
1666
1667Type / Values
1668
1669`boolean`
1670
1671Details
1672
1673Exclude `/tmp` from writable roots in workspace-write mode.
1674
1675Key
1676
1677`sandbox_workspace_write.exclude_tmpdir_env_var`
1678
1679Type / Values
1680
1681`boolean`
1682
1683Details
1684
1685Exclude `$TMPDIR` from writable roots in workspace-write mode.
1686
1687Key
1688
1689`sandbox_workspace_write.network_access`
1690
1691Type / Values
1692
1693`boolean`
1694
1695Details
1696
1697Allow outbound network access inside the workspace-write sandbox.
1698
1699Key
1700
1701`sandbox_workspace_write.writable_roots`
1702
1703Type / Values
1704
1705`array<string>`
1706
1707Details
1708
1709Additional writable roots when `sandbox_mode = "workspace-write"`.
1710
1711Key
1712
1713`shell_environment_policy.exclude`
1714
1715Type / Values
1716
1717`array<string>`
1718
1719Details
1720
1721Glob patterns for removing environment variables after the defaults.
1722
1723Key
1724
1725`shell_environment_policy.experimental_use_profile`
1726
1727Type / Values
1728
1729`boolean`
1730
1731Details
1732
1733Use the user shell profile when spawning subprocesses.
1734
1735Key
1736
1737`shell_environment_policy.ignore_default_excludes`
1738
1739Type / Values
1740
1741`boolean`
1742
1743Details
1744
1745Keep variables containing KEY/SECRET/TOKEN before other filters run.
1746
1747Key
1748
1749`shell_environment_policy.include_only`
1750
1751Type / Values
1752
1753`array<string>`
1754
1755Details
1756
1757Whitelist of patterns; when set only matching variables are kept.
1758
1759Key
1760
1761`shell_environment_policy.inherit`
1762
1763Type / Values
1764
1765`all | core | none`
1766
1767Details
1768
1769Baseline environment inheritance when spawning subprocesses.
1770
1771Key
1772
1773`shell_environment_policy.set`
1774
1775Type / Values
1776
1777`map<string,string>`
1778
1779Details
1780
1781Explicit environment overrides injected into every subprocess.
1782
1783Key
1784
1785`show_raw_agent_reasoning`
1786
1787Type / Values
1788
1789`boolean`
1790
1791Details
1792
1793Surface raw reasoning content when the active model emits it.
1794
1795Key
1796
1797`skills.config`
1798
1799Type / Values
1800
1801`array<object>`
1802
1803Details
1804
1805Per-skill enablement overrides stored in config.toml.
1806
1807Key
1808
1809`skills.config.<index>.enabled`
1810
1811Type / Values
1812
1813`boolean`
1814
1815Details
1816
1817Enable or disable the referenced skill.
1818
1819Key
1820
1821`skills.config.<index>.path`
1822
1823Type / Values
1824
1825`string (path)`
1826
1827Details
1828
1829Path to a skill folder containing `SKILL.md`.
1830
1831Key
1832
1833`suppress_unstable_features_warning`
1834
1835Type / Values
1836
1837`boolean`
1838
1839Details
1840
1841Suppress the warning that appears when under-development feature flags are enabled.
1842
1843Key
1844
1845`tool_output_token_limit`
1846
1847Type / Values
1848
1849`number`
1850
1851Details
1852
1853Token budget for storing individual tool/function outputs in history.
1854
1855Key
1856
1857`tools.web_search`
1858
1859Type / Values
1860
1861`boolean`
1862
1863Details
1864
1865Deprecated legacy toggle for web search; prefer the top-level `web_search` setting.
1866
1867Key
1868
1869`tui`
1870
1871Type / Values
1872
1873`table`
1874
1875Details
1876
1877TUI-specific options such as enabling inline desktop notifications.
1878
1879Key
1880
1881`tui.alternate_screen`
1882
1883Type / Values
1884
1885`auto | always | never`
1886
1887Details
1888
1889Control alternate screen usage for the TUI (default: auto; auto skips it in Zellij to preserve scrollback).
1890
1891Key
1892
1893`tui.animations`
1894
1895Type / Values
1896
1897`boolean`
1898
1899Details
1900
1901Enable terminal animations (welcome screen, shimmer, spinner) (default: true).
1902
1903Key
1904
1905`tui.notification_method`
1906
1907Type / Values
1908
1909`auto | osc9 | bel`
1910
1911Details
1912
1913Notification method for unfocused terminal notifications (default: auto).
1914
1915Key
1916
1917`tui.notifications`
1918
1919Type / Values
1920
1921`boolean | array<string>`
1922
1923Details
1924
1925Enable TUI notifications; optionally restrict to specific event types.
1926
1927Key
1928
1929`tui.show_tooltips`
1930
1931Type / Values
1932
1933`boolean`
1934
1935Details
1936
1937Show onboarding tooltips in the TUI welcome screen (default: true).
1938
1939Key
1940
1941`tui.status_line`
1942
1943Type / Values
1944
1945`array<string> | null`
1946
1947Details
1948
1949Ordered list of TUI footer status-line item identifiers. `null` disables the status line.
1950
1951Key
1952
1953`web_search`
1954
1955Type / Values
1956
1957`disabled | cached | live`
1958
1959Details
1960
1961Web 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.
1962
1963Key
1964
1965`windows_wsl_setup_acknowledged`
1966
1967Type / Values
1968
1969`boolean`
1970
1971Details
1972
1973Track Windows onboarding acknowledgement (Windows only).
1974
1975Expand to view all
1976 1338
1977You can find the latest JSON schema for `config.toml` [here](https://developers.openai.com/codex/config-schema.json).1339You can find the latest JSON schema for `config.toml` [here](https://developers.openai.com/codex/config-schema.json).
1978 1340
1986 1348
1987## `requirements.toml`1349## `requirements.toml`
1988 1350
19891351`requirements.toml` is an admin-enforced configuration file that constrains security-sensitive settings users can’t override. For details, locations, and examples, see [Admin-enforced requirements](https://developers.openai.com/codex/security#admin-enforced-requirements-requirementstoml).`requirements.toml` is an admin-enforced configuration file that constrains security-sensitive settings users can't override. For details, locations, and examples, see [Admin-enforced requirements](https://developers.openai.com/codex/enterprise/managed-configuration#admin-enforced-requirements-requirementstoml).
1990 1352
1991For ChatGPT Business and Enterprise users, Codex can also apply cloud-fetched1353For ChatGPT Business and Enterprise users, Codex can also apply cloud-fetched
1992requirements. See the security page for precedence details.1354requirements. See the security page for precedence details.
1993 1355
19941356| Key | Type / Values | Details |Use `[features]` in `requirements.toml` to pin feature flags by the same
19951357| --- | --- | --- |canonical keys that `config.toml` uses. Omitted keys remain unconstrained.
19961358| `allowed_approval_policies` | `array<string>` | Allowed values for `approval\_policy`. |
19971359| `allowed_sandbox_modes` | `array<string>` | Allowed values for `sandbox_mode`. |<ConfigTable
19981360| `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`. | options={[
19991361| `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. | {
20001362| `mcp_servers.<id>.identity` | `table` | Identity rule for a single MCP server. Set either `command` (stdio) or `url` (streamable HTTP). | key: "allowed_approval_policies",
20011363| `mcp_servers.<id>.identity.command` | `string` | Allow an MCP stdio server when its `mcp_servers.<id>.command` matches this command. | type: "array<string>",
20021364| `mcp_servers.<id>.identity.url` | `string` | Allow an MCP streamable HTTP server when its `mcp_servers.<id>.url` matches this URL. | description:
20031365| `rules` | `table` | Admin-enforced command rules merged with `.rules` files. Requirements rules must be restrictive. | "Allowed values for `approval_policy` (for example `untrusted`, `on-request`, `never`, and `granular`).",
20041366| `rules.prefix_rules` | `array<table>` | List of enforced prefix rules. Each rule must include `pattern` and `decision`. | },
20051367| `rules.prefix_rules[].decision` | `prompt | forbidden` | Required. Requirements rules can only prompt or forbid (not allow). | {
20061368| `rules.prefix_rules[].justification` | `string` | Optional non-empty rationale surfaced in approval prompts or rejection messages. | key: "allowed_approvals_reviewers",
20071369| `rules.prefix_rules[].pattern` | `array<table>` | Command prefix expressed as pattern tokens. Each token sets either `token` or `any_of`. | type: "array<string>",
20081370| `rules.prefix_rules[].pattern[].any_of` | `array<string>` | A list of allowed alternative tokens at this position. | description:
20091371| `rules.prefix_rules[].pattern[].token` | `string` | A single literal token at this position. | "Allowed values for `approvals_reviewer`, such as `user` and `auto_review`.",
20101372 },
20111373Key {
20121374 key: "guardian_policy_config",
20131375`allowed_approval_policies` type: "string",
20141376 description:
20151377Type / Values "Managed Markdown policy instructions for automatic review. This takes precedence over local `[auto_review].policy`. Blank values are ignored.",
20161378 },
20171379`array<string>` {
20181380 key: "allowed_sandbox_modes",
20191381Details type: "array<string>",
20201382 description: "Allowed values for `sandbox_mode`.",
20211383Allowed values for `approval\_policy`. },
20221384 {
20231385Key key: "remote_sandbox_config",
20241386 type: "array<table>",
20251387`allowed_sandbox_modes` description:
20261388 "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.",
20271389Type / Values },
20281390 {
20291391`array<string>` key: "remote_sandbox_config[].hostname_patterns",
20301392 type: "array<string>",
20311393Details description:
20321394 "Case-insensitive host name patterns. Supports `*` for any sequence of characters and `?` for one character.",
20331395Allowed values for `sandbox_mode`. },
20341396 {
20351397Key key: "remote_sandbox_config[].allowed_sandbox_modes",
20361398 type: "array<string>",
20371399`allowed_web_search_modes` description:
20381400 "Allowed sandbox modes to apply when this host-specific entry matches.",
20391401Type / Values },
20401402 {
20411403`array<string>` key: "allowed_web_search_modes",
20421404 type: "array<string>",
20431405Details description:
20441406 "Allowed values for `web_search` (`disabled`, `cached`, `live`). `disabled` is always allowed; an empty list effectively allows only `disabled`.",
20451407Allowed values for `web_search` (`disabled`, `cached`, `live`). `disabled` is always allowed; an empty list effectively allows only `disabled`. },
20461408 {
20471409Key key: "features",
20481410 type: "table",
20491411`mcp_servers` description:
20501412 "Pinned feature values keyed by the canonical names from `config.toml`'s `[features]` table.",
20511413Type / Values },
20521414 {
20531415`table` key: "features.<name>",
20541416 type: "boolean",
20551417Details description:
20561418 "Require a specific canonical feature key to stay enabled or disabled.",
20571419Allowlist 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. },
20581420 {
20591421Key key: "features.in_app_browser",
20601422 type: "boolean",
20611423`mcp_servers.<id>.identity` description:
20621424 "Set to `false` in `requirements.toml` to disable the in-app browser pane.",
20631425Type / Values },
20641426 {
20651427`table` key: "features.browser_use",
20661428 type: "boolean",
20671429Details description:
20681430 "Set to `false` in `requirements.toml` to disable Browser Use and Browser Agent availability.",
20691431Identity rule for a single MCP server. Set either `command` (stdio) or `url` (streamable HTTP). },
20701432 {
20711433Key key: "features.computer_use",
20721434 type: "boolean",
20731435`mcp_servers.<id>.identity.command` description:
20741436 "Set to `false` in `requirements.toml` to disable Computer Use availability and related install or enablement flows.",
20751437Type / Values },
20761438 {
20771439`string` key: "hooks",
20781440 type: "table",
20791441Details description:
20801442 "Admin-enforced managed lifecycle hooks. Requires a managed hook directory and uses the same event schema as inline `[hooks]` in `config.toml`.",
20811443Allow an MCP stdio server when its `mcp_servers.<id>.command` matches this command. },
20821444 {
20831445Key key: "hooks.managed_dir",
20841446 type: "string (absolute path)",
20851447`mcp_servers.<id>.identity.url` description:
20861448 "Directory containing managed hook scripts on macOS and Linux. Codex validates that it is absolute and exists before loading managed hooks.",
20871449Type / Values },
20881450 {
20891451`string` key: "hooks.windows_managed_dir",
20901452 type: "string (absolute path)",
20911453Details description:
20921454 "Directory containing managed hook scripts on Windows. Codex validates that it is absolute and exists before loading managed hooks.",
20931455Allow an MCP streamable HTTP server when its `mcp_servers.<id>.url` matches this URL. },
20941456 {
20951457Key key: "hooks.<Event>",
20961458 type: "array<table>",
20971459`rules` description:
20981460 "Matcher groups for a hook event such as `PreToolUse`, `PostToolUse`, `PermissionRequest`, `SessionStart`, `UserPromptSubmit`, or `Stop`.",
20991461Type / Values },
21001462 {
21011463`table` key: "hooks.<Event>[].hooks",
21021464 type: "array<table>",
21031465Details description:
21041466 "Hook handlers for a matcher group. Command hooks are currently supported; prompt and agent hook handlers are parsed but skipped.",
21051467Admin-enforced command rules merged with `.rules` files. Requirements rules must be restrictive. },
21061468 {
21071469Key key: "permissions.filesystem.deny_read",
21081470 type: "array<string>",
21091471`rules.prefix_rules` description:
21101472 "Admin-enforced filesystem read denials. Entries can be paths or glob patterns, and users cannot weaken them with local config.",
21111473Type / Values },
21121474 {
21131475`array<table>` key: "mcp_servers",
21141476 type: "table",
21151477Details description:
21161478 "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.",
21171479List of enforced prefix rules. Each rule must include `pattern` and `decision`. },
21181480 {
21191481Key key: "mcp_servers.<id>.identity",
21201482 type: "table",
21211483`rules.prefix_rules[].decision` description:
21221484 "Identity rule for a single MCP server. Set either `command` (stdio) or `url` (streamable HTTP).",
21231485Type / Values },
21241486 {
21251487`prompt | forbidden` key: "mcp_servers.<id>.identity.command",
21261488 type: "string",
21271489Details description:
21281490 "Allow an MCP stdio server when its `mcp_servers.<id>.command` matches this command.",
21291491Required. Requirements rules can only prompt or forbid (not allow). },
21301492 {
21311493Key key: "mcp_servers.<id>.identity.url",
21321494 type: "string",
21331495`rules.prefix_rules[].justification` description:
21341496 "Allow an MCP streamable HTTP server when its `mcp_servers.<id>.url` matches this URL.",
21351497Type / Values },
21361498 {
21371499`string` key: "rules",
21381500 type: "table",
21391501Details description:
21401502 "Admin-enforced command rules merged with `.rules` files. Requirements rules must be restrictive.",
21411503Optional non-empty rationale surfaced in approval prompts or rejection messages. },
21421504 {
21431505Key key: "rules.prefix_rules",
21441506 type: "array<table>",
21451507`rules.prefix_rules[].pattern` description:
21461508 "List of enforced prefix rules. Each rule must include `pattern` and `decision`.",
21471509Type / Values },
21481510 {
21491511`array<table>` key: "rules.prefix_rules[].pattern",
21501512 type: "array<table>",
21511513Details description:
21521514 "Command prefix expressed as pattern tokens. Each token sets either `token` or `any_of`.",
21531515Command prefix expressed as pattern tokens. Each token sets either `token` or `any_of`. },
21541516 {
21551517Key key: "rules.prefix_rules[].pattern[].token",
21561518 type: "string",
21571519`rules.prefix_rules[].pattern[].any_of` description: "A single literal token at this position.",
21581520 },
21591521Type / Values {
21601522 key: "rules.prefix_rules[].pattern[].any_of",
21611523`array<string>` type: "array<string>",
21621524 description: "A list of allowed alternative tokens at this position.",
21631525Details },
21641526 {
21651527A list of allowed alternative tokens at this position. key: "rules.prefix_rules[].decision",
21661528 type: "prompt | forbidden",
21671529Key description:
21681530 "Required. Requirements rules can only prompt or forbid (not allow).",
21691531`rules.prefix_rules[].pattern[].token` },
21701532 {
21711533Type / Values key: "rules.prefix_rules[].justification",
21721534 type: "string",
21731535`string` description:
21741536 "Optional non-empty rationale surfaced in approval prompts or rejection messages.",
21751537Details },
21761538 ]}
21771539A single literal token at this position. client:load
21781540 />
2179Expand to view all