codex exec 是 Codex 的非交互模式,适合脚本、预合并检查和计划任务。自动化必须比手工对话更严格地限制权限与输出。
先在本地跑通一个只读任务,再把它放进 CI,并让失败能被机器和人同时看懂。
在项目根目录运行:
``bash
codex exec --ephemeral "只读总结仓库结构并列出 3 个高风险区域,不要修改文件"
`
正常情况下,进度写到 stderr,最终消息写到 stdout。--ephemeral 不保存本次会话 rollout 文件。
默认使用只读沙盒。确实需要修改工作区时再显式使用:
`bash
codex exec --sandbox workspace-write "完成任务并运行项目已有检查"
`
danger-full-access 只适用于受控、隔离、一次性的运行器。不要在包含生产凭据或共享工作区的 Runner 上启用。
`bash
codex exec --json "只读检查本次 diff" > codex-events.jsonl
`
--json 输出 JSON Lines 事件流,脚本应检查进程退出码和 turn.failed / error 事件,而不是只判断文件是否非空。最终报告仍应保留给人工阅读。
`markdown
请为当前仓库设计一个最小 codex exec CI 任务,先不要写文件。
要求:
- 默认只读。
- CI 一直等待:设置平台超时,并检查网络与认证。
- stdout 无最终结果:查看退出码和 stderr,不要吞掉错误流。
- 结果每次差异很大:固定提示词、范围、配置和依赖版本。
- 意外修改文件:保持只读沙盒,并在结束时检查 Git 状态。
- Secret 泄露到日志:立即撤销密钥,清理日志并改为 Secret 注入。
- 本地只读 codex exec
成功且 Git 状态未被改变。
2. 固定基线和审查范围。
3. 使用最小权限和超时。
4. 密钥只来自 CI Secret。
5. 保存脱敏报告,不上传源码、环境变量或用户配置。
6. 失败时返回非零退出码。
7. 说明成本、并发和回滚方式。
`
确认方案后再创建 workflow。首次上线建议只生成报告,不自动改代码、不自动合并。
第 5 步:防止本机配置污染 CI
Section titled “第 5 步:防止本机配置污染 CI”
需要可复现环境时,可使用 --ignore-user-config,并明确决定是否加载项目规则。启用的必需 MCP 服务初始化失败时,应让任务失败,不要静默跳过关键依赖。
2. CI 明确沙盒、超时、范围和退出码策略。
3. 密钥未写入仓库或日志。
4. 机器可读事件和人工报告都能留存。
5. 首版自动化不会自动提交、推送或合并。
官方参考:https://developers.openai.com/codex/noninteractive`
下一篇看:使用 Codex GitHub Action。