codex exec 在 CI 中能分析代码却不产生修改,先检查沙箱:非交互模式默认只读。需要它生成补丁或修改工作区时,明确传入 --sandbox workspace-write,并确保启动目录是已检出的 Git 仓库。
最小可写命令怎么写
codex exec \
--sandbox workspace-write \
-C "$GITHUB_WORKSPACE" \
"运行测试,修复失败项,只修改必要文件,然后重新运行测试"workspace-write 只允许写当前工作区,不等于控制整台 runner。不要因一次失败就改用 --yolo 或 danger-full-access;只有外部已严格隔离且任务确实需要时,才扩大权限。旧脚本里的 --full-auto 已是兼容参数,新流水线应直接声明沙箱。
仍然不改文件,查这三个位置
- 仓库检查失败:确认 checkout 成功,再检查
pwd和git status。安全的非仓库临时目录可使用--skip-git-repo-check。 - 命令需要交互批准:CI 无法弹出新的审批窗口,需要临时授权的动作会失败并返回错误。应提前设定沙箱和审批策略。
- 提示词只要求分析:明确写出“修改文件、运行验证、保留 diff”。结束后检查 Git diff 或生成 patch artifact,不要只看最终文字。
让流水线拿到可解析结果
需要消费完整事件流时使用 JSONL:
codex exec --json "检查仓库并给出风险列表" > codex-events.jsonl只需要最终回答时,用 -o 写到文件;需要固定字段时配合 --output-schema。认证也要缩小暴露范围:只在执行 codex exec 的步骤注入 CODEX_API_KEY,不要让整个 job、依赖脚本或不受信任代码读取密钥。