config.toml 深度配置指南
config.toml 是 Codex 的中枢神经系统。它控制模型选择、沙箱策略、审批行为、Shell 环境、TUI 外观、历史记录等几乎所有运行时行为。本文基于官方 Config Basics、Advanced Config、Config Reference、Sample Config 和 Team Config 五份文档,对每个配置域进行全字段精讲。
一、多层配置覆盖体系
Codex 不是只读一个配置文件。它从多个层级加载配置,按 优先级从高到低 依次覆盖:
| 优先级 | 来源 | 说明 |
|---|---|---|
| 1 | CLI flags / --config 覆盖 | 单次运行级别,如 codex --model gpt-5.4 或 codex -c sandbox_workspace_write.network_access=true |
| 2 | Profile 值(--profile <name>) | 命名配置档案,覆盖顶层默认值 |
| 3 | 项目配置 .codex/config.toml | 从项目根到当前工作目录,就近优先;仅在项目受信任时加载 |
| 4 | 用户配置 ~/.codex/config.toml | 个人默认值,所有项目共享 |
| 5 | 系统配置 /etc/codex/config.toml | Unix 系统级默认,通常由管理员设置 |
| 6 | 内置默认值 | Codex 硬编码的出厂设置 |
官方原话:「Use that precedence to set shared defaults at the top level and keep profiles focused on the values that differ.」
1.1 项目配置的信任机制
项目级配置文件 .codex/config.toml 存在安全风险(恶意仓库可能注入危险配置),因此 Codex 只在 项目被标记为受信任时 才加载。如果项目未受信任,Codex 跳过所有 .codex/ 层级,直接回退到用户配置和系统配置。
1.2 项目根检测
Codex 从工作目录向上遍历,找到包含 .git 的目录即为项目根。可自定义:
# 自定义项目根标记文件
project_root_markers = [".git", ".hg", ".sl"]
# 设为空数组 = 将当前工作目录视为项目根,不向上搜索
project_root_markers = []1.3 单次运行覆盖
-c / --config 接受 TOML 格式的键值对,支持点号嵌套:
# 字符串值需要 TOML 引号
codex --config model='"gpt-5.4"'
# 布尔/数值直接写
codex --config sandbox_workspace_write.network_access=true
# 数组值
codex --config 'shell_environment_policy.include_only=["PATH","HOME"]'二、Profiles(配置档案)
Profiles 目前为实验性功能,可能在未来版本中变更或移除。当前仅 CLI 支持,IDE 扩展暂不支持。
Profiles 解决的核心问题:不同项目、不同任务需要不同的模型和策略组合。
2.1 定义与使用
在 config.toml 中定义命名档案,通过 --profile 切换:
# ===== 顶层默认值 =====
model = "gpt-5.4"
approval_policy = "on-request"
model_reasoning_effort = "medium"
# ===== 深度审查档案 =====
[profiles.deep-review]
model = "gpt-5-pro"
model_reasoning_effort = "high"
approval_policy = "never"
# ===== 轻量快速档案 =====
[profiles.lightweight]
model = "gpt-4.1"
approval_policy = "untrusted"
# ===== 本地模型档案 =====
[profiles.local]
model = "deepseek-coder-v3"
model_provider = "ollama"
approval_policy = "on-request"使用方式:
# 命令行指定
codex --profile deep-review
# 或设为默认
profile = "deep-review" # 写在 config.toml 顶层2.2 多项目多模型切换策略
Profile 还可以覆盖 model_catalog_json(模型目录),当顶层和 Profile 同时设置时,Profile 的值优先。
| 场景 | Profile | 模型 | 推理力度 |
|---|---|---|---|
| 日常编码 | (默认) | gpt-5.4 | medium |
| 架构审查 / 安全审计 | deep-review | gpt-5-pro | high |
| 快速原型 / 简单查询 | lightweight | gpt-4.1 | low |
| 离线开发 / 隐私场景 | local | 本地模型 | 取决于模型 |
2.3 Profile 可覆盖的字段
Profile 支持覆盖大多数顶层配置键,包括:model、model_provider、approval_policy、sandbox_mode、service_tier、oss_provider、model_reasoning_effort、plan_mode_reasoning_effort、model_reasoning_summary、model_verbosity、personality、chatgpt_base_url、model_catalog_json。
三、核心模型与推理配置
3.1 模型选择
# 主模型
model = "gpt-5.4"
# 模型提供方(内置:openai / ollama / lmstudio)
model_provider = "openai"
# /review 专用模型(默认使用当前会话模型)
# review_model = "gpt-5.4"
# 服务层级:fast(快速路径)| flex
# service_tier = "flex"3.2 推理控制
# 推理力度:minimal | low | medium | high | xhigh
model_reasoning_effort = "medium"
# Plan 模式专用推理力度
plan_mode_reasoning_effort = "high"
# 推理摘要:auto | concise | detailed | none
model_reasoning_summary = "auto"
# 输出详细度(仅 Responses API 生效):low | medium | high
model_verbosity = "medium"
# 强制启用/禁用推理摘要
# model_supports_reasoning_summaries = true3.3 上下文窗口与压缩
# 手动设置上下文窗口大小(默认自动检测)
# model_context_window = 128000
# 自动压缩触发阈值(token 数)
# model_auto_compact_token_limit = 64000
# 每次工具输出保留的最大 token 数
# tool_output_token_limit = 12000model_context_window = 1050000
model_auto_compact_token_limit = 700000
为什么是 700k(~67%)而不是 900k(~86%)或默认 50%?
这是基于以下多维证据的最佳临界点:
Stanford 论文(Liu et al., 2023, TACL)及 2025-2026 后续研究证实:LLM 对上下文头尾信息召回率 85-95%,中段急剧下降至 76-82%。这是 Transformer 注意力机制的结构性缺陷,GPT-5.4 虽有改善但未根治。上下文越大,中段「盲区」越长。
Reddit r/LocalLLaMA 社区大规模实测(2025-2026):「GPT-5 is like a laser up to about 100k, but starts falling off sooner than Gemini and falls off harder once it does.」GPT-5.4 虽优于 5.2(幻觉率 ↓33%),但超过 ~200k token 后,推理精度和事实准确性仍有可测量的下降。
reasoning_effort = "xhigh" 时,每轮对话的隐藏推理 token 可达 50-100k+。如果压缩阈值设在 900k,仅剩 150k
给下一轮的输入 + 推理 + 输出,极端情况下会触发「Codex ran out of room」错误。700k 阈值留出 350k 余量,足以容纳 xhigh
推理的峰值消耗。
每次 API 调用的成本与输入 token 数近似成正比。900k → 700k 每次请求节省 ~22% 成本。同时,Codex 的压缩会丢失细节(社区反馈:压缩后模型「忘记」先前约定的代码风格、变量命名等),因此不能压得太频繁,但也不能让上下文膨胀到模型注意力退化。
| 阈值 | 窗口占比 | 对比默认 | 评估 |
|---|---|---|---|
| 525k | 50%(默认) | — | ❌ 压缩过频,细节丢失,模型响应偏差 |
| 630k | 60% | +20% | ⚠️ 可用但保守 |
| 700k | 67% | +33% | ✅ 最佳平衡:上下文充裕 + 质量安全区 + xhigh 余量 |
| 800k | 76% | +52% | ⚠️ 接近质量退化区,余量偏紧 |
| 900k | 86% | +71% | ❌ 幻觉风险 ↑,xhigh 余量不足,成本过高 |
700k 相比默认多保留 17% 的有效上下文(175k token),同时将工作区控制在 GPT-5.4 注意力质量的安全范围内,并为 xhigh 推理保留充足余量。
3.4 沟通风格
# 人格风格:friendly | pragmatic | none
personality = "pragmatic"friendly:友善详细,适合学习和探索pragmatic:务实简洁,直击技术要点none:无人格,纯输出
会话中可通过 /personality 命令随时切换。
四、审批策略与沙箱深度配置
4.1 审批策略
# 三档基础策略
approval_policy = "on-request" # untrusted | on-request | never
# 允许 login shell 语义
allow_login_shell = true三档策略对比:
| 策略 | 行为 | 适用场景 |
|---|---|---|
untrusted | 仅已知安全的只读命令自动执行,其余全部需要确认 | 新项目、不信任的代码库 |
on-request | 模型自行判断何时需要征求批准 | 日常开发推荐,平衡效率与安全 |
never | 永不询问,所有操作自动执行 | 高风险,仅建议在完全隔离的环境中使用 |
细粒度审批策略
对于需要更精细控制的场景,可以使用 granular 模式:
approval_policy = { granular = {
sandbox_approval = true, # 沙箱相关操作需要审批
rules = true, # 规则匹配的命令需要审批
mcp_elicitations = true, # MCP 交互需要审批
request_permissions = false, # 权限请求自动拒绝
skill_approval = false # Skill 脚本自动拒绝
} }4.2 沙箱模式
# 三级沙箱
sandbox_mode = "workspace-write" # read-only | workspace-write | danger-full-access| 模式 | 文件访问 | 说明 |
|---|---|---|
read-only | 只读 | 最安全,Codex 无法写入任何文件 |
workspace-write | 工作区可读写 | .git/ 和 .codex/ 自动保护为只读 |
danger-full-access | 完全访问 | 无沙箱,极高风险 |
4.3 workspace-write 沙箱细节
[sandbox_workspace_write]
# 额外可写路径(除工作区外)
writable_roots = ["/Users/YOU/.pyenv/shims"]
# 是否允许子进程访问网络
network_access = false
# 是否将 $TMPDIR 排除出可写范围
exclude_tmpdir_env_var = false
# 是否将 /tmp 排除出可写范围
exclude_slash_tmp = falsewritable_roots 详解
默认情况下 workspace-write 只允许写入当前工作区。某些工具链需要写入工作区之外的路径:
- Python 虚拟环境管理器(pyenv/pipenv)写入
~/.pyenv/shims - Node.js 全局安装写入
~/.npm或~/.nvm - Gradle/Maven 写入
~/.gradle或~/.m2
将这些路径加入 writable_roots 即可解除限制。注意 .git/ 和 .codex/ 始终受保护,即使它们在可写范围内。
network_access 详解
默认 false。关闭网络访问是安全最佳实践:
- 防止恶意代码外泄数据
- 防止 Codex 执行的命令访问不可预期的远程端点
- 需要
npm install、pip install等网络操作时,Codex 会自动请求审批
设置 true 后,沙箱内的所有进程均可自由访问网络。
exclude_tmpdir 详解
默认 false(即 $TMPDIR 和 /tmp 都可写)。某些安全策略要求收紧临时目录访问:
[sandbox_workspace_write]
exclude_tmpdir_env_var = true # 排除 $TMPDIR
exclude_slash_tmp = true # 排除 /tmp收紧后,需要临时文件的工具可能会失败。建议仅在企业安全合规要求下启用。
4.4 Windows 沙箱
[windows]
sandbox = "elevated" # elevated(推荐)| unelevated(无管理员权限时的后备)elevated 使用管理员权限实现更强的进程隔离,是 Windows 原生沙箱的推荐模式。
五、Shell 环境策略深度解析
[shell_environment_policy] 控制 Codex 启动的每个子进程能看到哪些环境变量。核心目标:传递必要变量,同时不泄露密钥。
5.1 三种继承模式
| 模式 | 行为 | 适用场景 |
|---|---|---|
all | 继承所有环境变量,然后应用排除规则 | 默认值,日常开发推荐 |
core | 仅继承核心变量(PATH、HOME 等),其余需显式包含 | 安全敏感项目 |
none | 不继承任何变量,一切从零开始 | 最高安全级别,CI/CD 环境 |
5.2 过滤管道
无论选择哪种继承模式,变量都经过以下过滤管道:
原始环境变量集
│
├─ inherit 决定起始集
│
├─ 默认排除(名称含 KEY/SECRET/TOKEN,大小写不敏感)
│ └─ ignore_default_excludes = true 可跳过此步
│
├─ exclude 模式匹配排除(glob 格式,大小写不敏感)
│
├─ include_only 白名单(非空时,仅保留匹配项)
│
└─ set 显式覆盖(始终胜出)
│
▼
最终传递给子进程的变量集5.3 配置示例
场景 A:日常开发(默认推荐)
[shell_environment_policy]
inherit = "all"
ignore_default_excludes = false # 保留自动过滤 KEY/SECRET/TOKEN
exclude = [] # 不需要额外排除
set = {} # 不需要额外设置场景 B:安全敏感项目
[shell_environment_policy]
inherit = "all"
ignore_default_excludes = false
exclude = ["AWS_*", "AZURE_*", "GCP_*", "DOCKER_*"]
set = { NODE_ENV = "development" }场景 C:最高安全级别(CI/CD)
[shell_environment_policy]
inherit = "none"
set = { PATH = "/usr/bin:/usr/local/bin", HOME = "/tmp/codex", LANG = "en_US.UTF-8" }场景 D:白名单模式
[shell_environment_policy]
inherit = "all"
include_only = ["PATH", "HOME", "LANG", "JAVA_HOME", "MAVEN_HOME"]exclude 的模式是 大小写不敏感的 glob 格式,支持 *、?、[A-Z]。例如 "AWS_*" 会匹配
AWS_ACCESS_KEY_ID、aws_secret_key 等所有变体。
5.4 实验性:Shell Profile 加载
[shell_environment_policy]
experimental_use_profile = false # 实验性:通过用户 shell profile 运行启用后,Codex 会通过用户的 shell profile(.bashrc/.zshrc)运行,确保别名和自定义函数可用。但这也意味着 profile 中的任何副作用都会影响 Codex 的子进程。
六、Feature Flags 全量解析
Feature Flags 是 Codex 的能力开关,分为 Stable(稳定)和 Experimental(实验性)两类。
[features]
# 在此显式设置为 true/false,未设置的保持默认值6.1 Stable 功能
| Feature | 默认 | 说明 |
|---|---|---|
shell_tool | true | 保持默认 shell 命令执行能力。关闭后 Codex 无法运行终端命令 |
shell_snapshot | true | 快照 Shell 环境加速重复命令执行。对频繁 build/test 的流程提速明显 |
multi_agent | true | 启用子代理协作工具(spawn_agent 等),支持多代理并行工作 |
fast_mode | true | 启用 Fast 模式路径(service_tier = "fast"),简单任务快速响应 |
personality | true | 保持 /personality 命令和人格选择控件可用 |
undo | false | 基于 git ghost snapshot 的逐轮撤销。代码变更可随时回滚,安全网 |
unified_exec | true* | 使用统一 PTY-backed exec 工具。*Windows 上默认 false |
enable_request_compression | true | zstd 压缩流式请求体,减少带宽消耗 |
skill_mcp_dependency_install | true | 当 Skill 声明 MCP 依赖时,自动安装并连接 |
prevent_idle_sleep | false | 防止系统在 Codex 运行长任务时休眠 |
6.2 Experimental 功能
| Feature | 默认 | 说明 |
|---|---|---|
apps | false | ChatGPT Apps/Connectors 支持。稳定性未经验证,可能导致意外行为 |
smart_approvals | false | Guardian 子代理审批路由:让一个专门的审查代理决定是否批准操作 |
6.3 Deprecated 功能
| Feature | 说明 |
|---|---|
web_search | 遗留开关,已被顶层 web_search 设置取代 |
web_search_cached | 遗留开关,映射到 web_search = "cached" |
web_search_request | 遗留开关,映射到 web_search = "live" |
6.4 启用方式
# 在 config.toml 中设置
[features]
undo = true
prevent_idle_sleep = true
# 或通过 CLI 临时启用
codex --enable undo --enable prevent_idle_sleep
# CLI 仅支持启用,要禁用需在 config.toml 中设为 false6.5 推荐配置
[features]
shell_snapshot = true # Stable — 加速重复命令
multi_agent = true # Stable — 子代理并行
fast_mode = true # Stable — 简单任务快速响应
shell_tool = true # Stable — 保持 shell 能力
personality = true # Stable — 人格选择
undo = true # Stable — 启用撤销安全网
enable_request_compression = true # Stable — 压缩请求
skill_mcp_dependency_install = true # Stable — Skill MCP 自动安装
# unified_exec = false # Windows 用户设为 false
# apps = false # Experimental — 暂不启用
# smart_approvals = false # Experimental — 暂不启用七、TUI 终端界面配置
[tui] 表控制 Codex 的终端交互体验。
7.1 主题
[tui]
# 语法高亮主题(kebab-case)
theme = "catppuccin-mocha"- 使用
/theme命令在 TUI 中实时预览和保存主题 - 可将自定义
.tmTheme文件放入$CODEX_HOME/themes目录 - 常用主题:
catppuccin-mocha、one-dark、github-dark、solarized-dark
7.2 通知
Codex 有两套通知机制:
内置 TUI 通知:
[tui]
# 桌面通知:布尔值或事件类型过滤列表
notifications = true
# 精细控制:仅在特定事件时通知
# notifications = ["agent-turn-complete", "approval-requested"]
# 通知方式:auto | osc9 | bel
notification_method = "auto"auto:优先使用 OSC 9 通知(终端转义序列),回退到 BEL(\x07)osc9:强制使用 OSC 9 终端通知bel:强制使用 BEL 声音通知
外部通知程序(高级,顶层配置):
# 外部通知程序(argv 数组)
notify = ["python3", "/path/to/notify.py"]外部通知程序接收 JSON 参数,包含 type、thread-id、turn-id、cwd、input-messages、last-assistant-message 等字段。适用于 Webhook、桌面通知器、CI 更新等场景。
7.3 动画与提示
[tui]
# 欢迎屏、加载动画等
animations = true
# 新手提示(深度用户可关闭)
show_tooltips = false
# 交替屏幕控制(auto 在 Zellij 中跳过以保留滚动历史)
# alternate_screen = "auto"7.4 状态栏定制
[tui]
# 底部状态栏显示项(有序列表)
# 默认:["model-with-reasoning", "context-remaining", "current-dir"]
status_line = ["model", "context-remaining", "git-branch"]
# 设为空数组隐藏状态栏
# status_line = []八、历史记录管理
[history]
# 持久化模式:save-all | none
persistence = "save-all"
# 历史文件最大字节数
max_bytes = 104857600 # 100 MiB8.1 持久化行为
save-all:Codex 将完整会话记录保存到$CODEX_HOME/history.jsonlnone:不保存任何历史,会话结束即丢失
8.2 容量控制
当 history.jsonl 超过 max_bytes 上限时,Codex 自动执行:
- 删除最旧的条目
- 压缩文件
- 保留最新的记录
推荐设置 100 MiB(104857600),足够保留大量历史的同时避免磁盘膨胀。
8.3 会话恢复
历史持久化支持 codex resume 恢复上一次会话,在长时间任务中断时非常有用。
九、Web 搜索配置
# 搜索模式:disabled | cached | live
web_search = "cached"| 模式 | 行为 | 安全性 |
|---|---|---|
disabled | 关闭 Web 搜索工具 | 最安全,无外部信息注入 |
cached | 使用 OpenAI 维护的预索引缓存 | 推荐,降低 prompt injection 风险 |
live | 实时抓取最新网页数据 | 数据最新但有注入风险,等同 --search |
注意:使用
--yolo或danger-full-access沙箱时,Web 搜索自动切换为live。
十、子代理配置
[agents]
# 最大并发代理线程数(默认 6)
max_threads = 6
# 最大嵌套深度(根会话 = 0,默认 1)
max_depth = 1
# CSV 批量任务的每个 worker 超时时间(默认 1800 秒)
# job_max_runtime_seconds = 1800角色定义
可以在 [agents] 下定义具名角色,让不同代理使用不同的配置:
[agents.reviewer]
description = "Find correctness, security, and test risks in code."
config_file = "./agents/reviewer.toml"
nickname_candidates = ["Athena", "Ada"]十一、Team Config 与 requirements.toml
11.1 Team Config
Team Config 让团队在仓库中标准化 Codex 配置,无需每人手动设置。将配置文件签入仓库的 .codex 目录:
| 类型 | 路径 | 用途 |
|---|---|---|
| 基础配置 | .codex/config.toml | 设置团队默认的沙箱模式、审批策略、模型、推理力度等 |
| 规则 | .codex/rules/ | 控制 Codex 可以在沙箱外运行哪些命令 |
| 技能 | .codex/skills/ | 团队共享的 Skills |
建议从最高流量的仓库开始部署 Team Config,确保团队在最常使用 Codex 的地方获得一致的行为。
11.2 requirements.toml(管理员强制策略)
requirements.toml 是企业管理员通过 Codex Policies 页面部署的强制约束。它使用与 config.toml 相同的格式,但层级更高 — 用户无法覆盖。
核心功能
- 限制允许的配置值:例如只允许
on-request审批策略 - 限制沙箱模式:禁止
danger-full-access - 限制 Web 搜索:只允许
cached或disabled - 规则强制:要求特定命令必须经过审批
示例
# requirements.toml — 企业标准策略
allowed_web_search_modes = ["disabled", "cached"]
allowed_sandbox_modes = ["workspace-write"]
allowed_approval_policies = ["on-request"]
[rules]
prefix_rules = [
{ pattern = [{ token = "git" }, { any_of = ["push", "commit"] }],
decision = "prompt",
justification = "Require review before mutating remote history." },
]部署模式
- 管理员在 ChatGPT Enterprise 的 Codex Policies 页面创建策略
- 将策略分配给特定用户组
- 配置默认回退策略(未匹配到用户组时生效)
- 如果用户匹配多个组,第一个匹配的规则生效
11.3 完整配置层级总览
requirements.toml(管理员强制,不可覆盖)
│
▼
CLI flags / --config(单次运行覆盖)
│
▼
Profile(命名配置档案)
│
▼
.codex/config.toml(项目级,CWD → 项目根,就近优先)
│
▼
~/.codex/config.toml(用户级)
│
▼
/etc/codex/config.toml(系统级)
│
▼
内置默认值十二、自定义模型提供方
# 指向自定义提供方
model_provider = "proxy"
[model_providers.proxy]
name = "OpenAI using LLM proxy"
base_url = "http://proxy.example.com"
env_key = "OPENAI_API_KEY"
[model_providers.ollama]
name = "Ollama"
base_url = "http://localhost:11434/v1"
[model_providers.azure]
name = "Azure"
base_url = "https://YOUR_PROJECT.openai.azure.com/openai"
env_key = "AZURE_OPENAI_API_KEY"
query_params = { api-version = "2025-04-01-preview" }
wire_api = "responses"简化方式:仅改 base URL
如果只需要将内置 OpenAI 提供方指向代理或数据驻留端点:
# 不需要定义新的 provider,直接覆盖 base URL
openai_base_url = "https://us.api.openai.com/v1"OSS 模式(本地模型)
# 默认本地提供方
oss_provider = "ollama" # 或 "lmstudio"使用 codex --oss 启动时自动选择该提供方。
提供方调优
[model_providers.openai]
request_max_retries = 4 # API 请求最大重试次数(默认 4,上限 100)
stream_max_retries = 10 # 流式连接最大重试次数(默认 5,上限 100)
stream_idle_timeout_ms = 300000 # 流式空闲超时(默认 300000 = 5 分钟)十三、可观测性与遥测
13.1 OpenTelemetry 导出
[otel]
environment = "staging" # 环境标签(默认 "dev")
exporter = "none" # none | otlp-http | otlp-grpc
log_user_prompt = false # 是否记录用户提示词(默认隐藏)HTTP 导出
[otel]
exporter = { otlp-http = {
endpoint = "https://otel.example.com/v1/logs",
protocol = "binary",
headers = { "x-otlp-api-key" = "${OTLP_TOKEN}" }
}}gRPC 导出
[otel]
exporter = { otlp-grpc = {
endpoint = "https://otel.example.com:4317",
headers = { "x-otlp-meta" = "abc123" }
}}13.2 匿名指标
[analytics]
enabled = true # 匿名使用数据(帮助改进 Codex,无 PII)
[feedback]
enabled = true # /feedback 命令十四、其他实用配置
14.1 引用链接
# URI scheme:vscode | vscode-insiders | windsurf | cursor | none
file_opener = "vscode"14.2 指令覆盖
# 额外用户指令(注入在 AGENTS.md 之前)
# developer_instructions = ""
# 覆盖内置基础指令
# model_instructions_file = "/path/to/instructions.txt"
# 覆盖 git co-author 标记
# commit_attribution = "Codex <codex@openai.com>"14.3 AGENTS.md 控制
# AGENTS.md 最大读取字节数(默认 32KB)
project_doc_max_bytes = 32768
# AGENTS.md 缺失时的回退文件名
project_doc_fallback_filenames = []14.4 推理显示
# 隐藏内部推理事件(CI 日志中有用)
hide_agent_reasoning = false
# 显示原始推理内容
show_raw_agent_reasoning = false十五、配置论证:生产力全开最佳实践
本配置的设计目标:彻底释放 GPT-5.4 Codex 的全部潜力,解放双手。
15.1 核心理念
四大原则驱动每一个配置决策:
- 零审批中断:
approval_policy = "never"消除所有确认弹窗 - 最大上下文:1M token 窗口 + 86% 阈值压缩,最大化上下文利用
- 最强推理:
xhigh推理力度,释放模型全部思考能力 - 网络自由:沙箱内直接访问网络,包管理操作无需逐次审批
15.2 模型选择:gpt-5.4 + 中转代理
gpt-5.4 是当前最强 Codex 模型,原生 1M 上下文。通过 codex 中转代理(codex.ai02.cn)加速国内访问,Responses API 协议确保完整功能。gpt-5.4-mini 仅适合轻量查询,全栈工程需要完整模型。
15.3 推理力度:xhigh + high
- 日常编码(
model_reasoning_effort = "xhigh"):全栈开发涉及前后端联调、数据库设计、CI/CD、性能分析等复杂任务,xhigh确保模型投入最大推理资源 - 架构规划(
plan_mode_reasoning_effort = "high"):Plan 模式单独配置,深度分析项目结构的同时控制延迟
15.4 上下文窗口:1M 全开
model_context_window = 1050000:显式声明 ≈1M,确保不被自动检测截断model_auto_compact_token_limit = 700000:在消耗 67% 窗口容量后触发压缩(最佳临界点)- 效果:比默认多 33% 有效上下文,同时避免长上下文幻觉和 xhigh 余量不足
15.5 审批策略:never + Profile 分层
顶层 never 实现全自动执行。通过 Profile 分层管理风险:
auto-max(默认激活):无审批 +workspace-write沙箱,日常开发的最佳平衡review:需审批 +workspace-write,Code Review 等需人工确认的场景- 切换方式:
codex --profile review
15.6 沙箱策略:顶层全开 + Profile 收紧
顶层 danger-full-access 确保无限制能力。默认 Profile auto-max 将沙箱收紧为 workspace-write,解放双手的同时保留基本文件保护(.git/ 和 .codex/ 始终只读)。network_access = true 确保包管理操作无需逐次审批。
15.7 Feature Flags:新旧融合
保留原有稳定功能(shell_snapshot、multi_agent、undo 等),引入新实验性能力:
plan_tool:复杂任务自动分解为子步骤apply_patch_freeform:更灵活的代码修改view_image_tool:支持截图分析和 UI 审查rmcp_client:远程 MCP 服务器连接enable_request_compression = false:关闭 zstd 压缩以确保中转代理兼容性
15.8 Web 搜索与沟通风格
- Web 搜索:
cached预索引缓存降低 prompt injection 风险。需要实时数据时--search临时切换为live - 沟通风格:
pragmatic务实简洁,直击技术要点,减少冗余话术
十六、最终定版配置
#:schema https://developers.openai.com/codex/config-schema.json
# ============================================================================
# Codex 配置文件 — 全栈开发者 · 生产力全开版
# 位置:~/.codex/config.toml
# 目标:解放双手,彻底释放 GPT-5.4 的 1M 上下文与全部推理能力
# 文档:https://developers.openai.com/codex/config-basic
# ============================================================================
# ─────────────────────────── 核心模型选择 ─────────────────────────────────────
# model — 主模型名称
# 可选值:gpt-5.4 | gpt-5.4-mini | gpt-5-pro | gpt-4.1 | 或其他兼容模型
# 默认值:gpt-5.4-mini
# 推荐值:gpt-5.4(全量推理能力,支持 1M 上下文)
model = "gpt-5.4"
# model_provider — 模型服务提供方
# 可选值:openai | codex | ollama | lmstudio | 自定义 provider 名称
# 默认值:openai
# 推荐值:codex(使用中转代理,加速国内访问)
model_provider = "codex"
# profile — 默认激活的配置档案
# 可选值:任意 [profiles.*] 中定义的名称
# 默认值:(无,使用顶层配置)
# 推荐值:auto-max(自动化最大化档案)
profile = "auto-max"
# ─────────────────────────── 推理与输出控制 ───────────────────────────────────
# model_reasoning_effort — 模型推理力度
# 可选值:minimal | low | medium | high | xhigh
# 默认值:medium
# 推荐值:xhigh(释放 GPT-5.4 全部推理能力,适合复杂工程任务)
model_reasoning_effort = "xhigh"
# plan_mode_reasoning_effort — Plan 模式专用推理力度
# 可选值:minimal | low | medium | high | xhigh
# 默认值:(继承 model_reasoning_effort)
# 推荐值:high(架构规划深度推理,同时控制延迟)
plan_mode_reasoning_effort = "high"
# model_reasoning_summary — 推理过程摘要模式
# 可选值:auto | concise | detailed | none
# 默认值:auto
# 推荐值:auto(自动判断是否展示推理摘要)
model_reasoning_summary = "auto"
# model_verbosity — 输出详细度(仅 Responses API 生效)
# 可选值:low | medium | high
# 默认值:medium
# 推荐值:medium(平衡信息密度与可读性)
model_verbosity = "medium"
# ─────────────────────────── 上下文窗口 ──────────────────────────────────────
# model_context_window — 手动设置上下文窗口大小(token 数)
# 可选值:任意正整数(受模型实际限制)
# 默认值:自动检测(GPT-5.4 原生 1,048,576)
# 推荐值:1050000(显式声明 ≈1M,确保不被截断)
model_context_window = 1050000
# model_auto_compact_token_limit — 自动压缩触发阈值(token 数)
# 可选值:任意正整数(应 < model_context_window)
# 默认值:约为上下文窗口的 50%(~525k)
# 推荐值:700000(~67% 窗口 — 最佳临界点,详见 Section 三.3 证据链)
# 注意:900k(86%)经实测会导致 xhigh 推理余量不足 + 长上下文幻觉加深
model_auto_compact_token_limit = 700000
# ─────────────────────────── 沟通风格 ────────────────────────────────────────
# personality — 人格风格
# 可选值:friendly | pragmatic | none
# 默认值:friendly
# 推荐值:pragmatic(务实简洁,直击技术要点)
personality = "pragmatic"
# ─────────────────────────── 审批与沙箱 ──────────────────────────────────────
# approval_policy — 审批策略
# 可选值:untrusted | on-request | never | { granular = {...} }
# 默认值:on-request
# 推荐值:never(彻底解放双手,无需反复确认)
approval_policy = "never"
# allow_login_shell — 允许使用 login shell 语义
# 可选值:true | false
# 默认值:false
# 推荐值:true(确保 shell profile 中的环境变量和别名可用)
allow_login_shell = true
# sandbox_mode — 沙箱隔离级别(顶层全开,Profile 按需收紧)
# 可选值:read-only | workspace-write | danger-full-access
# 默认值:workspace-write
# 推荐值:danger-full-access(配合 Profile 分层使用)
sandbox_mode = "danger-full-access"
# ─────────────────────────── Web 搜索 ────────────────────────────────────────
# web_search — Web 搜索模式
# 可选值:disabled | cached | live
# 默认值:cached
# 推荐值:cached(预索引缓存,降低 prompt injection 风险)
web_search = "cached"
# ─────────────────────────── 文件与 UI ───────────────────────────────────────
# file_opener — 引用链接打开方式
# 可选值:vscode | vscode-insiders | windsurf | cursor | none
# 默认值:none
# 推荐值:vscode(点击引用直接跳转 VS Code)
file_opener = "vscode"
# hide_agent_reasoning — 隐藏内部推理事件
# 可选值:true | false
# 默认值:false
# 推荐值:false(保持可见,便于理解 Codex 决策过程)
hide_agent_reasoning = false
# check_for_update_on_startup — 启动时检查更新
# 可选值:true | false
# 默认值:true
# 推荐值:true(及时获取新功能和安全修复)
check_for_update_on_startup = true
# project_doc_max_bytes — AGENTS.md 最大读取字节数
# 可选值:任意正整数
# 默认值:32768(32 KB)
# 推荐值:32768(默认即可)
project_doc_max_bytes = 32768
# ─────────────────────────── 隐私与兼容性 ────────────────────────────────────
# disable_response_storage — 禁止 OpenAI 存储响应数据
# 可选值:true | false
# 默认值:false
# 推荐值:true(保护代码隐私,不参与训练)
disable_response_storage = true
# windows_wsl_setup_acknowledged — 确认 WSL 环境已配置
# 可选值:true | false
# 默认值:false
# 推荐值:true(Windows 用户跳过 WSL 设置提示)
windows_wsl_setup_acknowledged = true
# suppress_unstable_features_warning — 抑制实验性功能警告
# 可选值:true | false
# 默认值:false
# 推荐值:true(减少干扰,配合 never 策略使用)
suppress_unstable_features_warning = true
# ─────────────────────────── workspace-write 沙箱细节 ─────────────────────────
[sandbox_workspace_write]
# writable_roots — 额外可写路径(除工作区外)
# 可选值:路径字符串数组
# 默认值:[]
# 推荐值:[](按需添加,如 pyenv/npm 全局路径)
writable_roots = []
# network_access — 沙箱内进程是否可访问网络
# 可选值:true | false
# 默认值:false
# 推荐值:true(允许 npm install / pip install 等网络操作,免审批)
network_access = true
# exclude_tmpdir_env_var — 是否将 $TMPDIR 排除出可写范围
# 可选值:true | false
# 默认值:false
# 推荐值:false(保持临时目录可写)
exclude_tmpdir_env_var = false
# exclude_slash_tmp — 是否将 /tmp 排除出可写范围
# 可选值:true | false
# 默认值:false
# 推荐值:false(保持 /tmp 可写)
exclude_slash_tmp = false
# ─────────────────────────── Shell 环境策略 ───────────────────────────────────
[shell_environment_policy]
# inherit — 环境变量继承模式
# 可选值:all | core | none
# 默认值:all
# 推荐值:all(继承所有变量,依赖排除规则过滤敏感信息)
inherit = "all"
# ignore_default_excludes — 是否跳过默认排除规则(KEY/SECRET/TOKEN)
# 可选值:true | false
# 默认值:false
# 推荐值:false(保留自动过滤,防止密钥泄露)
ignore_default_excludes = false
# exclude — 额外排除模式(glob 格式,大小写不敏感)
# 可选值:字符串数组,支持 * ? [A-Z] 通配符
# 默认值:[]
# 推荐值:[](默认排除已足够,按需添加云厂商变量如 "AWS_*")
exclude = []
# set — 显式设置的环境变量(始终优先)
# 可选值:键值对对象
# 默认值:{}
# 推荐值:{}(按需设置 NODE_ENV 等)
set = {}
# ─────────────────────────── Feature Flags ───────────────────────────────────
[features]
# plan_tool — 启用规划工具(任务分解与多步骤规划)
# 可选值:true | false | 默认值:false | 推荐值:true
plan_tool = true
# apply_patch_freeform — 自由格式补丁应用
# 可选值:true | false | 默认值:false | 推荐值:true
apply_patch_freeform = true
# view_image_tool — 图片查看工具(截图分析、UI 审查)
# 可选值:true | false | 默认值:false | 推荐值:true
view_image_tool = true
# shell_snapshot — Shell 环境快照加速重复命令
# 可选值:true | false | 默认值:true | 推荐值:true
shell_snapshot = true
# multi_agent — 子代理协作(spawn_agent 等多代理并行)
# 可选值:true | false | 默认值:true | 推荐值:true
multi_agent = true
# fast_mode — Fast 模式路径(简单任务快速响应)
# 可选值:true | false | 默认值:true | 推荐值:true
fast_mode = true
# shell_tool — Shell 命令执行能力(核心功能)
# 可选值:true | false | 默认值:true | 推荐值:true
shell_tool = true
# personality — 人格选择控件(/personality 命令)
# 可选值:true | false | 默认值:true | 推荐值:true
personality = true
# undo — 基于 git ghost snapshot 的逐轮撤销(安全网)
# 可选值:true | false | 默认值:false | 推荐值:true
undo = true
# skill_mcp_dependency_install — Skill MCP 依赖自动安装
# 可选值:true | false | 默认值:true | 推荐值:true
skill_mcp_dependency_install = true
# rmcp_client — 远程 MCP 客户端支持
# 可选值:true | false | 默认值:false | 推荐值:true
rmcp_client = true
# elevated_windows_sandbox — Windows 提升权限沙箱
# 可选值:true | false | 默认值:false | 推荐值:true
elevated_windows_sandbox = true
# unified_exec — 统一 PTY-backed exec 工具
# 可选值:true | false | 默认值:true(Windows 默认 false)
# 推荐值:false(自定义中转时关闭以提升兼容性)
unified_exec = false
# streamable_shell — 流式 Shell 输出(实验性)
# 可选值:true | false | 默认值:false | 推荐值:false
streamable_shell = false
# enable_request_compression — zstd 压缩流式请求体
# 可选值:true | false | 默认值:true
# 推荐值:false(自定义中转可能不支持 zstd,关闭确保兼容)
enable_request_compression = false
# ─────────────────────────── 配置档案(Profiles)─────────────────────────────
# auto-max:自动化最大化档案(默认激活)
# 无审批 + workspace-write 沙箱:日常开发的最佳平衡
[profiles.auto-max]
approval_policy = "never"
sandbox_mode = "workspace-write"
# review:代码审查档案
# 需要审批确认,适合 Code Review 场景
[profiles.review]
approval_policy = "on-request"
sandbox_mode = "workspace-write"
# ─────────────────────────── 历史记录 ────────────────────────────────────────
[history]
# persistence — 会话历史持久化模式
# 可选值:save-all | none | 默认值:save-all | 推荐值:save-all
persistence = "save-all"
# max_bytes — 历史文件最大字节数
# 可选值:任意正整数 | 默认值:104857600(100 MiB) | 推荐值:104857600
max_bytes = 104857600
# ─────────────────────────── TUI 终端界面 ────────────────────────────────────
[tui]
# notifications — 桌面通知
# 可选值:true | false | 事件类型数组 | 默认值:true | 推荐值:true
notifications = true
# animations — 欢迎屏与加载动画
# 可选值:true | false | 默认值:true | 推荐值:true
animations = true
# show_tooltips — 新手提示
# 可选值:true | false | 默认值:true | 推荐值:false(熟练用户关闭)
show_tooltips = false
# ─────────────────────────── 匿名数据 ────────────────────────────────────────
[analytics]
# enabled — 匿名使用统计
# 可选值:true | false | 默认值:true | 推荐值:true
enabled = true
[feedback]
# enabled — /feedback 命令
# 可选值:true | false | 默认值:true | 推荐值:true
enabled = true
# ─────────────────────────── 通知抑制 ────────────────────────────────────────
[notice]
# hide_gpt5_1_migration_prompt — 隐藏 GPT-5.1 迁移提示
# 可选值:true | false | 默认值:false
# 推荐值:true(已选择 GPT-5.4,无需迁移提醒)
hide_gpt5_1_migration_prompt = true
# ─────────────────────────── Windows 沙箱 ────────────────────────────────────
[windows]
# sandbox — Windows 沙箱模式
# 可选值:elevated | unelevated | 默认值:elevated | 推荐值:elevated
sandbox = "elevated"
# ─────────────────────────── MCP 服务器 ──────────────────────────────────────
[mcp_servers]
# MCP 配置见下一章节
# ─────────────────────────── 模型提供方 ──────────────────────────────────────
[model_providers.codex]
# name — 提供方显示名称
name = "codex"
# base_url — API 端点(中转代理,加速国内访问)
base_url = "https://codex.ai02.cn"
# wire_api — API 协议类型(responses | chat)
wire_api = "responses"
# requires_openai_auth — 是否需要 OpenAI 认证
requires_openai_auth = true