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 任务,先不要写文件。

要求:

  1. 默认只读。
  2. 2. 固定基线和审查范围。

    3. 使用最小权限和超时。

    4. 密钥只来自 CI Secret。

    5. 保存脱敏报告,不上传源码、环境变量或用户配置。

    6. 失败时返回非零退出码。

    7. 说明成本、并发和回滚方式。

    `

    确认方案后再创建 workflow。首次上线建议只生成报告,不自动改代码、不自动合并。

    第 5 步:防止本机配置污染 CI

    Section titled “第 5 步:防止本机配置污染 CI”

    需要可复现环境时,可使用 --ignore-user-config,并明确决定是否加载项目规则。启用的必需 MCP 服务初始化失败时,应让任务失败,不要静默跳过关键依赖。

    • CI 一直等待:设置平台超时,并检查网络与认证。
    • stdout 无最终结果:查看退出码和 stderr,不要吞掉错误流。
    • 结果每次差异很大:固定提示词、范围、配置和依赖版本。
    • 意外修改文件:保持只读沙盒,并在结束时检查 Git 状态。
    • Secret 泄露到日志:立即撤销密钥,清理日志并改为 Secret 注入。
    1. 本地只读 codex exec 成功且 Git 状态未被改变。
    2. 2. CI 明确沙盒、超时、范围和退出码策略。

      3. 密钥未写入仓库或日志。

      4. 机器可读事件和人工报告都能留存。

      5. 首版自动化不会自动提交、推送或合并。

      官方参考:https://developers.openai.com/codex/noninteractive`

      下一篇看:使用 Codex GitHub Action