直接答案
先确认 Codex 实际读取的 CODEX_HOME 和配置文件,再修复 TOML 语法、字段层级与当前版本支持范围。
这篇内容解决什么问题
解决 Codex config.toml 解析失败、unknown field、duplicate key 和配置未加载。
先确认症状与影响范围
Codex 启动或 strict config 检查报告 TOML 语法、未知字段、重复键或错误类型。另一类症状是命令能启动,但模型、provider 或沙箱设置没有按预期生效。
同一机器可能存在默认 ~/.codex、自定义 CODEX_HOME、命令行覆盖和项目配置。编辑了一个文件不代表当前进程读取的就是它。
- 记录
codex --version与CODEX_HOME,确认实际配置路径。 - 保存完整解析错误,包括字段路径和行列信息。
- 确认字段来自当前版本官方配置参考,而不是旧示例或其他客户端。
常见原因与责任边界
配置错误可分为 TOML 语法、Codex schema、配置层级和覆盖顺序四类。能被通用 TOML parser 读取,不代表字段一定被 Codex 接受。
- 引号、数组、表头或内联表语法错误。
- 同一作用域重复键,或把字段放在错误表下。
- 使用当前 Codex 版本不存在的字段或错误类型。
- 修改了错误的 CODEX_HOME,或被命令行/项目设置覆盖。
按层执行最小诊断
不要先删除整个 ~/.codex。确定路径后备份单个 config.toml,运行严格配置检查;再用忽略用户配置的只读临时命令做对照。
配置含 provider URL 和环境变量名时可以分享脱敏片段,但不得分享 auth.json、Key 值或完整 home 目录。
- 01确认版本与路径记录 CLI 版本和解析后的 CODEX_HOME。
- 02备份配置复制 config.toml 并保留时间戳,不移动认证目录。
- 03严格检查使用 strict config 获取未知字段和类型错误。
- 04隔离对照以只读、临时、忽略用户配置方式确认根因在用户配置层。
CODEX_DIR="${CODEX_HOME:-$HOME/.codex}"
printf 'CODEX_HOME=%s
' "$CODEX_DIR"
codex --version
cp "$CODEX_DIR/config.toml" "$CODEX_DIR/config.toml.bak.$(date -u +%Y%m%dT%H%M%SZ)"
codex exec --strict-config --ephemeral -s read-only -a never '只报告当前模型和沙箱模式。'
codex exec --ignore-user-config --ephemeral -s read-only -a never '只检查仓库入口。'针对根因完成修复
依据当前版本官方配置参考逐个修复错误。先得到最小可解析配置,再一次增加一个 provider 或行为字段,每次都运行 strict config。
- 01恢复最小配置保留必要字段,临时移除无法确认的实验项。
- 02修正层级将字段放到官方参考规定的根级或表中。
- 03逐项恢复每增加一组字段就执行严格检查和只读命令。
- 04记录版本团队示例标注验证过的 Codex CLI 版本和日期。
codex exec --strict-config --ephemeral -s read-only -a never '报告当前 provider、模型、审批和沙箱模式;不要运行命令或修改文件。'
codex doctor --summary验证修复而不是只看一次成功
解析通过后还要确认行为生效:当前 provider、模型、审批与沙箱模式应符合配置,且使用 --ignore-user-config 时结果按预期不同。
- strict config 无未知字段、重复键或类型错误。
- 默认配置与忽略用户配置的对照结果可解释。
- 备份仍可恢复,认证与会话文件未被删除。
安全边界与升级证据
配置诊断不得输出 auth.json、API Key 或环境变量值。provider 配置只保留凭据环境变量名;分享日志前检查路径、URL 查询参数和请求头。
- 不以删除整个 CODEX_HOME 作为第一步。
- 不复制未知来源的实验字段。
- 只读验证使用最低权限和
-a never。
官方来源与核验范围
本文以协议规范和客户端官方文档为事实依据。错误文案、重试头和配置字段可能随服务或客户端版本变化;执行前请核对来源,并对日志与请求样例脱敏。
查看技术核验方法