Appearance
Codex config.toml 配置实战
嘿朋友,今天来聊聊 Codex 的 config.toml 配置。说实话我刚上手的时候也是一团乱麻——命令行参数、项目配置、用户配置全搅在一起,改了半天不知道到底哪个生效。踩了几天坑之后总算理清楚了,这篇把我现在用的套路分享给你。
配置文件这东西,适合放“每次启动都长一样”的运行默认值。任务要求丢提示词里,项目工作约定写 AGENTS.md,可复用流程做成 Skill。config.toml 就是个兜底默认值的地儿,啥都往里塞反而乱。
配置层和优先级
Codex 取值大概按这个顺序来,越靠前越能压住后面的:
- CLI 参数和
--config; - 受信任项目里的
.codex/config.toml,从根到当前目录,离你越近的越优先; --profile选中的用户 Profile;- 用户配置
~/.codex/config.toml; - 系统配置;
- 内置默认值。
有个坑我踩过:项目没被信任的时候,里面 .codex/ 的配置、Hooks 和 Rules 统统跳过,悄无声息地就当不存在。这是安全边界,千万别为了“让配置生效”就去盲目信任一个陌生仓库——我就干过这种蠢事,事后一身冷汗。
好,优先级搞清楚了,下面说怎么配。
一份安全的个人起步配置
先搞定你自己的 ~/.codex/config.toml,这是我目前在用的:
toml
approval_policy = "on-request"
sandbox_mode = "workspace-write"
web_search = "cached"
model_reasoning_effort = "high"
personality = "pragmatic"
[sandbox_workspace_write]
network_access = false逐条唠唠:
- 平时干活默认允许当前工作区写入,够用也不会太受限;
- 需要越界操作的时候它问你一声,不至于悄咪咪干了什么你都不知道;
- 搜索默认走缓存索引,减少直接访问不可信页面,安全一点是一点;
- 命令网络保持关着,需要的时候再临时开;
- 模型和推理档位这些还是受账号、版本和当前模型能力限制,不是写了
high就一定生效。
另外提醒一句:别从网上文章里复制一整份“全参数配置”然后直接贴进去。我见过有人这么干,结果里面混了已经废弃的字段,行为变了都察觉不到。从简开始,需要什么加什么。
项目配置只保存可共享差异
团队仓库里,受信任的项目可以加 .codex/config.toml,把团队一致的东西放进去:
toml
approval_policy = "on-request"
sandbox_mode = "workspace-write"
[sandbox_workspace_write]
writable_roots = ["./docs", "./scripts"]
network_access = false项目配置跟着仓库走,所以得跟代码一起审查。认证信息、模型供应商、个人通知、遥测这些机器级别的设置,别指望项目层能帮你兜底——它兜不住。敏感值更是千万别写进仓库,提上去就是事故。
说到命令行,有时候就临时用一下,没必要动文件。
一次性覆盖用命令行
只读调查,一次性搞定:
bash
codex -c 'sandbox_mode="read-only"' -c 'approval_policy="never"'偶尔需要工作区命令连个网:
bash
codex \
-c 'sandbox_mode="workspace-write"' \
-c 'sandbox_workspace_write.network_access=true'原则很简单:一次性需求别去改永久配置,改来改去迟早把自己绕晕。值按 TOML 解析,字符串引号和 shell 引号都得写对,少一个引号就报错,这个我也被坑过。
如果你发现经常要在几种模式之间切换,那 Profile 就是为你准备的。
用 Profile 管理不同工作模式
比如搞个 ~/.codex/audit.config.toml:
toml
sandbox_mode = "read-only"
approval_policy = "never"
model_reasoning_effort = "high"启动时指定一下就行:
bash
codex --profile auditProfile 特别适合“只读审查”“本地开发”“隔离 CI”这种稳定模式。别为了每个小任务都建一份配置,那样维护起来比不用 Profile 还累。我一开始就犯过这个毛病,建了五六个 profile,后来全删了只剩三个。
配置文件写好了,怎么知道它有没有问题呢?
严格检查配置字段
现在 CLI 支持这个:
bash
codex --strict-config --sandbox read-only "只报告当前配置是否有效,不修改文件"未知字段直接报错,比静默忽略强太多了,升级之后跑一遍心里有底。然后再来一个:
bash
codex doctor --summary跑完 doctor 看看有没有关键配置报错。记得改完配置新开任务,旧任务一般不会完整重载所有启动配置——这个细节不注意的话你会怀疑人生,“明明改了怎么还这样”。
不要在配置中明文保存凭证
MCP 和第三方服务需要 Token 的话,配置里保存环境变量名就行:
toml
[mcp_servers.example]
url = "https://mcp.example.com"
bearer_token_env_var = "EXAMPLE_MCP_TOKEN"千万别这样写:
toml
# 错误示例
authorization = "Bearer real-secret"静态 Header 一不小心就被提交、备份或者打印到日志里去了,防不胜防。优先走环境变量、OAuth 或者系统凭证存储。这块我郑重提醒,因为我真的见过有人把 token 提交到 GitHub 公开仓库的。
常见配置问题
下面这些坑我都踩过,整理出来给你省点时间。
修改后没有生效
新开一个任务试试;检查是不是被 CLI 参数、项目配置或者 Profile 覆盖了;确认一下当前 CODEX_HOME 对不对。
项目配置被忽略
三步排查:仓库被信任了没、文件在正确的 .codex/ 层级下没、TOML 能正常解析不。
网络仍不可用
搜索工具和模型生成命令的网络是不同通道,分开的。把 web_search、沙箱网络、代理、域名策略和系统防火墙都顺一遍。
App 与 CLI 不一致
先对齐 Codex 版本、二进制路径、登录方式和宿主机。远程环境和本地环境不会自动共享所有机器设置,这一点很容易想当然。
配置变更验收
改完配置之后,照着这个 checklist 过一遍:
- [ ] 能解释配置放在哪一层以及为什么。
- [ ]
--strict-config没有未知字段。 - [ ]
codex doctor --summary没有关键配置错误。 - [ ] 通过一个只读任务验证实际权限和搜索行为。
- [ ] 配置和 Git diff 中没有凭证。
下一步
配置搞定了,接下来看看 MCP 怎么配:继续读 Codex MCP 配置与安全实战。