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