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
直接执行不受信任代码。 - 评论重复:用固定标记更新旧评论,或首版只上传报告。
- Workflow 使用固定主版本 openai/codex-action@v1
。
2. Checkout 不持久化凭据,审查任务只有只读权限。
3. API Key 只存在于 GitHub Secret。
4. Fork PR 安全边界有明确处理方式。
5. 首版只生成审查结果,不自动改代码或合并。
官方参考:https://developers.openai.com/codex/github-action`
下一篇看:用 Codex 做 PR 与代码审查。