GitHub Actions 受限 Codex 作业
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/run-bounded-codex-jobs-inside-github-actions-for-pr-review-and-repo-maintenance-with-codex-action
技能介绍
解决的问题
Codex 在 CI 里跑不是新鲜事,问题在于怎么把它关进笼子。很多团队直接把 OPENAI_API_KEY 丢给一个 run: codex ... 就上线,结果 CI 里的 Codex 拥有和开发者一样的权限:能写任意文件、能推任意分支、能碰生产配置。一旦 prompt 被仓库里的内容诱导,或者被 PR 中精心构造的 diff 带偏,破坏范围就是整个仓库。
这个技能要解决的,就是在 GitHub Actions 中运行 Codex 做 PR 审查和仓库维护时,显式收紧权限边界——明确 workflow 授予哪些权限、Codex 以什么提示词运行、CI 边界在哪里止步。
如何工作
核心思路是利用 codex-action 把 Codex CLI 的安装和配置封装成一步,同时让工作流的权限策略由你自己定义。关键步骤包括:
- 配置提供方密钥:在 GitHub Secrets 中配置所选模型提供方的 API Key,例如
OPENAI_API_KEY,或走 Azure 时使用AZURE_OPENAI_API_KEY。密钥只存在于 Actions 运行环境,不进入仓库。 - 设定安全策略:在 Linux/macOS 上可以选择不同的 safety-strategy。例如选择
drop-sudo,Codex 运行的后续步骤就无法再调用sudo,这本身就是一个权限降级的硬边界。 - 指定 Responses API Endpoint:
responses-api-endpoint必须是完整 URL,包括查询参数。走 Azure 时形如https://YOUR_PROJECT_NAME.openai.azure.com/...,这决定了 Codex 把请求发往哪里。 - 定义提示词与触发时机:PR 审查场景下绑定
pull_request事件;仓库维护场景下用schedule触发。提示词写进 workflow,Codex 只执行你写的指令,不做无约束的自主发挥。
适用边界与注意点
- 仅限 GitHub Actions:前提是仓库已经使用 GitHub Actions,且有可用的 workflow 文件。这不是本地 CLI 工具,也不是自托管运行器专属。
- 权限收紧是双刃剑:选了
drop-sudo之后,如果后续步骤里有需要sudo的逻辑(比如装某些系统级依赖),会直接失败。需要在设计 workflow 时提前想清楚哪些步骤需要特权、哪些不需要。 - 不要指望 Codex 自己决定边界:安全策略、endpoint、提示词都由你在 workflow 里写死。Codex 不会自己判断"这个操作不该做",边界是 workflow 给的,不是模型悟出来的。
- 上游文档是权威来源:这个技能提取自
openai/codex-action的官方 README,如果参数行为有疑问,先去上游确认,不要凭猜测写 workflow。
使用场景
- PR 合并前自动触发 Codex 审查,用自定义提示词指定审查重点,同时把 workflow 权限限制为仅访问该 PR 涉及的文件
- 每周定时运行仓库维护任务,Codex 批量清理过期 issue 或更新依赖版本,通过 drop-sudo 策略确保后续步骤无法提权
- 团队使用 Azure OpenAI 部署模型,需要在 Actions 里为 Codex 配置完整的 responses-api-endpoint(含查询参数)和 AZURE_OPENAI_API_KEY
- 不想依赖 Codex Cloud 的现成审查能力,用 openai/codex-action 从零搭建自己的 PR 审查 bot,提示词和触发时机完全可控
适合人员
- 在 CI 流水线中集成 AI 代码审查的后端工程师,需要明确 Codex 在 Actions 运行时里能访问哪些资源、能执行哪些操作
- 负责仓库安全的 DevOps 工程师,想把 AI 作业的权限边界(如禁止 sudo、限定 endpoint)以代码形式写进 workflow 并做版本管理
- 使用 Azure OpenAI 作为模型提供方的团队,需要在 GitHub Actions 里同时正确配置 API Key 和完整的 Responses API URL
- 想自建 PR 审查 bot 而非采购 Codex Cloud 服务的开发者,需要了解如何通过自定义提示词和触发事件控制 Codex 行为