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