첫 Codex 자동화에 코드 수정, 배포, 댓글 작성을 함께 넣으면 실패 지점을 구분하기 어렵습니다. 안전한 파일럿은 입력이 작고, 읽기만 하며, 사람이 정답을 빨리 판별할 수 있어야 합니다. 여기서는 커밋 전 스테이징 diff를 읽어 위험 변경과 빠진 테스트를 JSON으로 정리하는 한 작업만 자동화합니다. 아래 임계값은 Codex 제품 보장이 아니라 운영자가 파일럿에 적용할 수 있는 기준입니다.
파일럿 계약부터 고정합니다
입력: git diff --cached 결과, 최대 30개 파일 2만 줄
출력: 위험도, 근거 파일, 필요한 테스트, 확인 질문을 담은 JSON
허용 행동: 저장소 읽기와 최종 결과 파일 작성만
금지 행동: 소스 수정, 네트워크 호출, 테스트 실행, 커밋·푸시
사람의 역할: 결과를 원본 diff와 대조하고 채택·수정·기각을 기록
공식 Codex 개발자 명령 문서는 codex exec를 사람 상호작용 없이 끝나는 스크립트·CI용 실행으로 설명합니다. --ephemeral은 세션 rollout 파일을 남기지 않고, -o는 마지막 답변을 파일로 쓰며, --output-schema는 최종 응답 구조를 검증합니다. --json은 최종 결과 한 개가 아니라 실행 이벤트의 JSONL 스트림이므로 결과 스키마와 혼동하지 않습니다.
실행은 두 겹으로 막습니다
먼저 래퍼가 입력을 검사합니다. diff가 비었거나 파일·행 수 제한을 넘으면 Codex를 실행하지 않고 BLOCKED_INPUT으로 끝냅니다. .env, 인증서, 자격 증명 경로가 포함돼도 중단합니다. 통과한 입력만 임시 파일로 저장한 뒤 다음처럼 읽기 전용으로 실행합니다.
codex exec --ephemeral --sandbox read-only \
--output-schema review-schema.json \
-o review.json \
"staged.diff를 읽고 위험 변경과 필요한 테스트만 보고하라"
실제 프롬프트에는 허용 입력 파일과 출력 필드를 명시합니다. review-schema.json에는 status, risk_items, missing_tests, questions를 필수로 둡니다. 실행 뒤 래퍼는 종료 코드, JSON 파싱, 필수 필드와 작업 전후 git diff를 다시 검사합니다. turn.completed처럼 보이더라도 도구 거부, 출력 누락, 예상 밖 변경이 있으면 성공으로 계산하지 않습니다.
성공 기준과 즉시 중단 기준
파일럿은 다음 조건을 5회 연속 만족할 때만 다음 단계 후보가 됩니다.
- 출력 스키마 파싱 성공률 100%
- 예상 밖 파일 변경 0건
- 근거 없는 고위험 경고 0건
- 사람이 채택 가능한 결과 5회 중 4회 이상
- 각 위험 항목에 원본 파일 또는 diff 근거가 있음
반대로 비밀 경로 입력, 30개 초과 파일, 출력 스키마 실패, 소스 파일 변경 시도, 필수 근거 누락이 한 번이라도 발생하면 즉시 멈춥니다. 같은 유형의 오탐이 두 번 연속 나오거나 사람이 결과를 재현하지 못해도 자동 재시도하지 않고 프롬프트·스키마·입력 범위를 수정합니다.
범위를 넓히는 순서
첫 관문을 통과해도 바로 workspace-write로 올리지 않습니다. 다음 단계는 읽기 전용 테스트 로그 요약, 그다음 별도 작업공간의 문서 초안처럼 실패 반경이 작은 순서입니다. 댓글 게시, PR 생성, 병합, 배포는 별도 승인 작업으로 분리합니다. 공식 문서가 위험하다고 명시한 --dangerously-bypass-approvals-and-sandbox는 이 파일럿에 필요하지 않습니다.
좋은 자동화는 사람이 사라지는 시스템이 아닙니다. 입력 경계가 기계적으로 검사되고, 모르는 상황에서 멈추며, 사람이 같은 근거로 결론을 재현할 수 있어야 합니다. 이 세 조건이 반복 확인되면 실행 빈도나 입력 규모 중 하나만 늘리고 다시 측정합니다.

