Codex

非交互、CI 与 SDK

codex exec、GitHub Actions、Codex GitHub Action、App Server、Codex SDK、Agents SDK 和自动化密钥的安全用法。

Codex 自动化有三条常见路径:

路径适合首选入口
一次性脚本 / CI运行检查、审查 diff、生成补丁codex exec
GitHub ActionsPR review、CI 失败自动修复、发布检查openai/codex-action@v1
产品集成 / 内部平台流式事件、线程、审批、深度集成Codex SDK 或 app-server

#codex exec

最小用法:

codex exec "review the current diff and list only P0/P1 risks"

带权限:

codex exec \
  --sandbox read-only \
  --ask-for-approval never \
  "summarize this repo and identify risky areas"

继续会话:

codex exec "find the likely cause of this failing test"
codex exec resume --last "apply the smallest fix and rerun the test"

非交互模式适合可重复任务。把 prompt 写成文件并纳入版本控制,比在 CI YAML 里堆长字符串更容易维护。

#API key 自动化

CODEX_API_KEY 只用于 codex exec,适合单次自动化:

CODEX_API_KEY="$OPENAI_API_KEY" \
  codex exec --json "triage open bug reports"

不要把 key 暴露给整个 job 的后续步骤。CI 里如果先运行仓库脚本再设置 key,风险更低;如果先把 key 放进环境,依赖安装脚本也可能读到它。

#Passion8 CI

如果 CI 要走 Passion8,用标准 ~/.codex 文件或临时 CODEX_HOME:

export CODEX_HOME="$PWD/.codex-ci"
mkdir -p "$CODEX_HOME"

cat > "$CODEX_HOME/auth.json" << 'EOF'
{
  "OPENAI_API_KEY": "sk-..."
}
EOF

cat > "$CODEX_HOME/config.toml" << 'EOF'
model_provider = "Passion8"
model = "gpt-5.6-sol"
approval_policy = "never"
sandbox_mode = "workspace-write"

[model_providers.Passion8]
name = "Passion8"
wire_api = "responses"
requires_openai_auth = true
base_url = "https://passion8.cc/v1"
EOF

codex exec "run the documented checks and summarize failures"

CI 里不要把 .codex-ci/auth.json 上传为 artifact。

#GitHub Action

OpenAI 官方 Action 会安装 Codex CLI,启动 Responses API proxy,并按配置运行 codex exec。适合在 GitHub Actions 里减少手写安装和密钥处理。

.github/workflows/codex-review.yml
name: Codex review
on:
  pull_request:
    types: [opened, synchronize, reopened]

jobs:
  codex:
    runs-on: ubuntu-latest
    permissions:
      contents: read
    steps:
      - uses: actions/checkout@v5
        with:
          fetch-depth: 0
          persist-credentials: false

      - uses: openai/codex-action@v1
        with:
          openai-api-key: ${{ secrets.OPENAI_API_KEY }}
          prompt-file: .github/codex/prompts/review.md
          sandbox: read-only

安全建议:

  • 限制触发者,避免 fork PR 直接接触 secret
  • checkout 时不要持久化凭据,除非后续步骤需要写回
  • 让 Codex job 只产生 diff 或报告
  • 写 PR 的步骤放在单独 job,不要携带模型 API key
  • 对 issue、PR body、commit message 做 prompt injection 防护

#自动修复 CI

推荐模式:

  1. 主 CI 失败后触发独立 workflow
  2. Checkout 失败 commit
  3. 安装依赖但不暴露模型 key
  4. 运行 Codex 生成 patch
  5. 上传 patch artifact
  6. 另一个 job 应用 patch 并开 PR

这样 OpenAI / Passion8 key 不会出现在拥有写权限的 job 环境里。

#App Server

codex app-server 适合做产品级集成。它通过 JSON-RPC 风格消息管理 thread、turn、stream events、审批和历史。

codex app-server
codex app-server --listen ws://127.0.0.1:4500
codex app-server --listen unix://

WebSocket transport 适合 localhost 或 SSH tunnel。不要在没有认证的情况下暴露到非 loopback 地址。

#Codex SDK

SDK 适合在后端服务或内部工具里调用 Codex,比 shell 包装 codex exec 更容易处理:

  • 长会话
  • 流式事件
  • 结构化输出
  • 审批和工具结果
  • 多 agent 编排

如果只是 CI 里跑一次 review,用 codex exec 或 GitHub Action 更直接。需要产品集成、平台化或复杂 orchestration 时再用 SDK。

#Agents SDK + Codex MCP

Codex 可以作为 MCP server 被其他 agent 调用:

codex mcp-server

典型用途:

  • 一个主 agent 做分派,让 Codex 负责代码实现
  • 多 agent pipeline 中把 Codex 当作“可审查的代码执行者”
  • 用 OpenAI Agents SDK 统一编排 handoff、trace 和 guardrails

保持每个 Codex 子任务范围清晰,并让它在独立工作目录或 worktree 中运行。

#官方参考

Support / 支持

Need help? / 需要帮助?

接入、计费与模型异常可邮件联系;服务可用性以状态页为准。For setup, billing, or model issues, email us. Check the status page for uptime.

也可使用右下角微信 / QQ 客服 · WeChat / QQ support is available at the bottom right