Config
Design Codex configuration layers, profiles, and safe defaults for team usage.
Written and reviewed by Eric Han · Co-founder & CTO, reopt
Permission and execution changes in 0.163.0
Daybreak defaults on for eligible accounts, superseding the 0.161.0 opt-in guidance below. API-key authenticated codex exec can select a program when the server grants access. Resume restores saved permissions and network approvals while respecting explicit overrides and current managed policy.
/config searches settings, applies supported items live, and indicates changes needing a restart. Follow-up input now steers an active response immediately by default; interrupting a turn also stops Code Mode cells and nested tools. Independent read-only lookups can run in parallel. Patched zsh is no longer bundled and retired shell flags produce migration guidance.
Key takeaways
- Configuration's job is to make the safe path the default path, not to expose every option.
- Layer config by owner: user defaults, repository rules, team policy, and admin policy that cannot be weakened locally.
- Define purpose-built profiles such as
default,review,automation, andrestrictedfor sensitive work. - On review, confirm explicit sandbox and approval defaults, gated high-risk tools, and a migration note whenever config changes.
- Validate named permission profiles with
codex sandbox -P <profile>, inspect effective modes via/debug-config, and include plugin marketplace JSON in supply-chain audits.
Configuration turns team preferences into repeatable behavior. The goal is not to expose every option; it is to make the safe path the default path.
Config Layers
| Layer | Purpose | Owner |
|---|---|---|
| User config | Personal defaults and editor preferences | Developer |
| Repository config | Project rules, commands, and context | Repo owner |
| Team config | Shared policy, model, and permission defaults | Engineering lead |
| Admin policy | Requirements that cannot be weakened locally | Platform or security |
Profile Design
| Profile | Use |
|---|---|
default | Normal development and documentation |
review | Read-heavy code review and analysis |
automation | Non-interactive commands with tight scope |
restricted | Sensitive repositories or production-adjacent work |
Review Checklist
- Are sandbox and approval defaults explicit?
- Are model and reasoning defaults appropriate for cost and quality?
- Are extra read directories intentionally allowed?
- Are high-risk tools disabled or gated?
- Is there a migration note when config changes?
- Can the team validate named permission profiles with
codex sandbox -P <profile>and inspect effective sandbox modes with/debug-config? - Are plugin marketplace JSON outputs included in config and supply-chain audits?
0.145.0 to 0.146.0 Plugin and Proxy Notes
- Include Agent Plugin manifests and workspace publishing in the supply-chain inventory, and re-check marketplace allowlists for additional Amazon Bedrock and Claude Code sources.
- Smoke-test
HTTP_PROXY,HTTPS_PROXY, andNO_PROXYacross auth, plugins, MCP, remote/WebSocket hosts, redirects, and LM Studio rather than assuming one successful path covers all clients. - Remote Code Mode hosts and executor-provided skills/resources expand the effective tool surface;
capture
/plugins,/skills,/mcp, and/debug-configtogether.
0.147.0 to 0.148.0 Configuration Notes
- Migrate new model defaults to GPT-5.6 Sol or Terra, use Luna for explicit repeated work, and plan the ChatGPT-sign-in retirement of GPT-5.4 and GPT-5.4 mini on 2026-08-31.
- Portable Agent Plugins expand the catalog boundary across local, personal, workspace, and remote sources; record source, version, and trust state in supply-chain reviews.
- Codex 0.148.0 adds the built-in
amazon-bedrockprovider with AWS profile and region configuration:
model_provider = "amazon-bedrock"
[model_providers.amazon-bedrock.aws]
profile = "engineering"
region = "us-west-2"0.161.0 to 0.162.0 Configuration Notes
The opt-in example records 0.161.0. Daybreak defaults on for eligible accounts from 0.163.0; the mouse-wheel setting remains applicable.
[features]
# 0.161.0 historical default; eligible accounts default on in 0.163.0. Enables Daybreak controls and automatic Cyber access program selection in the CLI.
cli_daybreak = true
[tui]
# 0.162.0: multiplier for transcript mouse-wheel scrolling. One row per wheel event by default; 3.0 restores the earlier speed.
mouse_scroll_speed = 3.0
# 0.162.0: capabilities for a custom Responses-compatible provider
[model_providers.custom.capabilities]
external_web_access = false
remote_compaction = "v2"features.cli_daybreak: 0.161.0 makes Daybreak in the CLI opt-in. Usecodex --enable cli_daybreakto turn it on for one run.daybreak=truealone is not enough. While it is off, Daybreak controls and indicators are hidden,/daybreakis unavailable, and automatic Cyber routing is omitted, even for saved Daybreak threads. Saved preferences stay intact. Once enabled, routing still requires an eligible ChatGPT sign-in, the OpenAI provider, and advertised model and program support.tui.mouse_scroll_speed: added in 0.162.0 as a multiplier for transcript mouse-wheel scrolling. According to the pull-request description it accepts a finite positive number, and the default movement drops from three rows to one row per wheel event. Set3.0to keep the earlier speed. A value below 1 such as0.5scrolls one row every two events.- Custom provider capabilities: from 0.162.0, custom Responses-compatible model providers configure live web access and remote compaction under
model_providers.<id>.capabilities. According to the pull-request description,external_web_access = falsekeeps hosted web search from reaching the live web, andremote_compactionaccepts"v2"(compaction through the Responses endpoint) or"unsupported"(local compaction). Omitted capabilities keep the provider's existing defaults. - Server defaults win: from 0.162.0, new TUI threads respect the server's model and reasoning-summary defaults while keeping explicit launch overrides. From 0.161.0, implicit client settings no longer overwrite server or saved-thread web-search settings. If the team manages defaults on the server, check whether client configuration still needs to repeat them.
These keys are confirmed from release notes and pull-request descriptions and are not yet in the official config reference as of 2026-10-10.
0.158.0 to 0.160.0 Configuration Notes
Check one removed setting and one approval that is now on by default before upgrading a team standard.
[tui]
# 0.158.0: copy a fullscreen mouse selection on release. auto (default), always, never
copy_on_select = "auto"
# 0.158.0: right-click paste. auto (default, Windows and Linux), on, off
right_click_paste = "auto"
# Removed in 0.159.0. Delete it if it is still present.
# prompt_suggestions = true
[features]
# 0.159.0: off by default. Delivers new input during a model response or a long code-mode call.
instant_interrupt = truetui.prompt_suggestionsremoved: 0.159.0 removed automatic follow-up prompt suggestions together with the setting.--strict-configtreats unrecognized keys as errors, so delete it from team configuration first.- Terminal input approval on by default: 0.158.0 promotes
write_stdin_approvalto stable and enables it by default. Sending terminal input to a command running with elevated permissions goes through approval; runtime-only permission grants do not require a review. instant_interrupt: opt-in in 0.159.0 and enabled by default from 0.163.0. Usecodex --enable instant_interruptto turn it on for one run.- MCP OAuth client secret: from 0.158.0,
mcp_servers.<id>.oauth.client_secret(orcodex mcp add --oauth-client-secret) sets the secret for a pre-registered client. It requires a client ID, and the secret is stored in the server configuration, so check the config file's permissions and sharing scope. - MCP schema budgets:
mcp_servers.<id>.tool_input_schema_max_bytes(5,000 bytes by default) andfeatures.code_mode.tool_input_schema_max_bytes(16,000 bytes by default) adjust when a large MCP tool's input schema is compacted (0.158.0). - Opt-in Guardian capabilities: the 0.160.0 feature flags
guardian_conversation_history_toolsandguardian_root_handoff_contextare off by default. The first lets the Guardian reviewer retrieve earlier user instructions (capped byauto_review.conversation_history_max_output_tokens, about 4,000 tokens by default); the second selects root messages around agent handoffs as review context. .awsprotection: from 0.159.0,.awsunder writable roots is a default protected path alongside.git,.agents, and.codex. Explicit user rules take precedence over this default.- Model default: with
modelunset, CLI 0.159.1 and later use the bundled default GPT-6.1 Sol (GPT-6 Astra in 0.153.4–0.159.0).gpt-6-solandgpt-5.6-*settings keep working.
These keys are confirmed from release notes and pull-request descriptions and are not yet in the official config reference as of 2026-10-07.
0.151.0 to 0.153.0 Configuration Notes
One default changed in this window, so check it before upgrading a team standard.
# 0.152.0: the planning tool is disabled by default. Enable it explicitly if you rely on it.
[tools.update_plan]
enabled = true
[tui]
# 0.153.0: turn off automatic recaps while keeping manual /recap
auto_recap = false
# 0.153.0: replaces the top-level disable_paste_burst, which still works as a fallback
disable_paste_burst = true
# 0.153.0: disabled-by-default experiment. For eligible ChatGPT Plus, Pro, and Pro Lite
# sessions on the Codex backend it enables token-budget context, history notes, and the
# new_context tool. API-key sessions, custom providers, and temporary structured threads
# are excluded.
[features.context_management]
experimental_mode = truetools.update_plan.enabled: from 0.152.0 the planning tool is off by default. Turn it on explicitly if a runbook depends on its output. This is separate from the/planslash command.- Per-tool MCP output limits: from 0.152.0 an individual MCP tool can set
output_token_limit, with consistent truncation across session resumes. - MCP server naming: from 0.152.0 names may contain
:,@,/, and., so package-style names work across CLI commands and authentication. - Optional MCP discovery grace: 0.151.0 makes the tool-discovery grace period for optional MCP servers configurable; separate required and optional server startup policy.
- App-server timeouts: from 0.152.0 clients can configure
thread/shellCommandtimeouts, including deadlines longer than one hour.