Codex GitHub Action 会安装 Codex CLI,并按工作流指定的权限运行 codex exec。第一版应只读审查,不自动改 PR。

  • 仓库已启用 GitHub Actions。
  • OpenAI API Key 已保存为 GitHub Actions Secret,例如 OPENAI_API_KEY
  • 团队已确认 API 成本、允许读取的代码范围和报告保留策略。

创建 .github/codex/prompts/review.md 前,先让 Codex 根据项目规则拟稿。提示词应固定基线、关注点、输出格式,并明确只读。

``markdown

审查当前 Pull Request 相对基线分支的 diff。

只报告可证明的正确性、安全性、兼容性和测试缺口。

不要修改文件。每个发现给出严重程度、文件位置、触发条件和影响。

`

把提示词提交到仓库,方便审查其变化。

`yaml

name: Codex pull request review

on:

pull_request:

types: [opened, synchronize, reopened]

jobs:

review:

runs-on: ubuntu-latest

permissions:

contents: read

steps:

  • uses: actions/checkout@v5
  • with:

    ref: refs/pull/${{ github.event.pull_request.number }}/merge

    fetch-depth: 0

    persist-credentials: false

  • name: Run Codex
  • id: codex

    uses: openai/codex-action@v1

    with:

    openai-api-key: ${{ secrets.OPENAI_API_KEY }}

    prompt-file: .github/codex/prompts/review.md

    output-file: codex-output.md

    `

此任务只有 contents: read,不能写仓库或 PR。需要发评论时,建议拆成第二个任务,只给它 pull-requests: write,并传递已经脱敏的最终文本。

来自 Fork 的 PR 默认拿不到常规 Secret,这是安全边界,不要改用高权限事件绕过。对不受信任代码使用人工批准、无 Secret 的检查,或在合并后分支运行受控审查。

首次启用时确认:Action 版本、Checkout 的 ref、实际 diff、API 调用失败处理、报告大小和 Markdown 转义。不要让模型输出直接成为可执行脚本。

  • 401:检查 Secret 名称与 API Key 状态,不打印 Key。
  • 审查范围不完整:fetch-depth 应允许找到基线历史。
  • Action 能写仓库:收紧 permissions 并关闭持久化凭据。
  • Fork PR 没有 Secret:这是预期保护,不要用 pull_request_target 直接执行不受信任代码。
  • 评论重复:用固定标记更新旧评论,或首版只上传报告。
  1. Workflow 使用固定主版本 openai/codex-action@v1
  2. 2. Checkout 不持久化凭据,审查任务只有只读权限。

    3. API Key 只存在于 GitHub Secret。

    4. Fork PR 安全边界有明确处理方式。

    5. 首版只生成审查结果,不自动改代码或合并。

    官方参考:https://developers.openai.com/codex/github-action`

    下一篇看:用 Codex 做 PR 与代码审查。