Claude Code 작업을 Codex가 감시하게 만들기
Claude Code의 Hook 기능을 활용해 Codex 자동 검증 플로우를 세팅해보았습니다.

Claude Code 똑똑하게 사용하기
- 01Claude Code 작업을 Codex가 감시하게 만들기현재
- 02Codex 검증 스크립트를 Claude Code Skill로 전환하기
- 03소크라테스 봇 만들기 — Why 체인으로 AI에게 내 의도 학습시키기
- 04기획 없이 코딩하는 AI를 멈추는 법 — Planning Gate 만들기
카카오의 은총으로 ChatGPT Pro를 5개월간 사용할 수 있게 되었다.
기존에 OMO(oh-my-opencode)를 사용할 때에는 모델 스위칭이나, 뭐... 여러 에이전트를 각각의 상황에 맞게 사용했었는데.
Antropic의 OAuth 금지라는 철퇴를 맞은 지금은, 개발은 거의 다 Claude Code Max로 하고 있다.
이런 상황에서 넘쳐나는 Codex 토큰을 태울 방법이 뭐가 있을까?
그래서 주워들은 정보값을 바탕으로, Codex에게 Claude의 감시자 역할을 맡겨야겠다고 생각.
Codex가 복잡한 사고를 좀 더 잘한다나, 뭐 그래서.
근데 이걸 또 귀찮게 매번 작업한 거마다 일일이 검증을 요청하기는 싫단 말이지.
Claude의 context를 작업마다 끊고 요청하기도 좀 그렇고.
그렇다고 PR 리뷰어를 맡기기엔, 당장 내가 실험해볼 레포인 블로그 레포는 메인 브랜치 단 하나라서 굳이 브랜치를 분기하고 리뷰어를 추가하고... 이러기엔 꽤나 귀찮았다.
그래서 생각한 것은, Claude가 어떤 작업을 완료하면, context는 살아있고 다음 질문을 기다리고 있는 텀이 있다.
바로 이 텀을 활용한 파이프라인을 만들어보자 였다.
즉, 특정 task가 완료되었을 때 바로 Codex가 한바퀴 시원하게 검사를 해줬으면 좋겠다 싶었음.
그래서 찾아낸 게 Claude Code의 Hook 기능을 활용해서, Stop 이벤트마다 Codex CLI 요청을 보내는 계획을 세워보았다.
사실 귀찮아서 Claude 설정조차 제대로 안 해놓고 생짜 Claude를 써왔는데, 겸사겸사 이 기회에 세팅도 조금 더 해보고자 하는 마음도.
자세한 코드는 블로그 레포를 참고하길 바란다.
세팅 1: 공유 규칙 만들기
핵심 아이디어는 간단하다.
Claude Code가 읽는 CLAUDE.md와 Codex가 읽는 AGENTS.md가 같은 규칙을 공유해야 한다는 것.
Claude는 규칙에 맞춰 코딩하고, Codex는 같은 규칙 기준으로 검증하는 구조.
그래서 규칙 원본을 한 곳에 모아놓는 docs/PROJECT_RULES.md를 만들었다.
프로젝트 루트/
├── CLAUDE.md ← Claude Code가 읽음 (코딩 가이드)
├── AGENTS.md ← Codex가 읽음 (검증 기준)
├── docs/
│ └── PROJECT_RULES.md ← 공유 규칙 원본
└── .claude/
├── settings.json ← Stop 훅 설정
├── hooks/
│ └── codex-verify.sh ← 검증 스크립트
└── commands/
└── sync-rules.md ← 규칙 동기화 커맨드
PROJECT_RULES.md — 규칙 원본
내 블로그 프로젝트(Next.js 16 + Supabase + Vercel)에 맞춘 규칙들.
Supabase를 service_role key로 서버 전용으로만 쓰고 있다는 것, 인증이 Supabase Auth가 아니라 x-admin-secret 헤더 방식이라는 것, 이런 프로젝트 고유의 맥락들을 다 정리해뒀다.
Next.js App Router 규칙(Server/Client Component 구분), TypeScript 규칙(any 금지), 보안 규칙(service_role key 노출 금지) 등등.
CLAUDE.md — Claude Code용
@docs/PROJECT_RULES.md로 규칙 원본을 참조하게 하고, 커맨드(pnpm dev, pnpm typecheck 등)와 작업 방식을 적어뒀다. 핵심은 이 한 줄:
Codex 검증에서 수정 요청이 오면
.codex-review.md를 읽고 지적 사항을 수정할 것
AGENTS.md — Codex 검증용
같은 규칙을 바탕으로, 검증 시 뭘 Critical(🔴)로 잡고 뭘 Warning(🟡)으로 잡을지 기준을 세워놓았다.
예를 들면:
- 🔴 Critical:
lib/supabase.ts를 클라이언트 컴포넌트에서 import, any 타입 사용, service_role key 노출 - 🟡 Warning:
select('*')사용, unstable_cache 누락, Rate limit 없는 공개 POST API
규칙을 바꾸고 싶으면 PROJECT_RULES.md 하나만 수정하면 Claude(코딩)과 Codex(검증) 양쪽에 반영된다.
세팅 2: Stop 훅으로 Codex 자동 실행
.claude/settings.json에 Stop 훅을 걸었다.
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "bash $CLAUDE_PROJECT_DIR/.claude/hooks/codex-verify.sh"
}
]
}
]
}
}
codex-verify.sh가 하는 일은:
git diff HEAD+git ls-files --others로 변경된 파일과 새로 생성된 파일을 모두 수집docs/PROJECT_RULES.md규칙을 로드codex exec로 비대화형 검증 요청- 결과를
.codex-review.md에 저장
억 근데, 안 되잖아
처음에 세팅하고 돌려봤는데... 아무것도 안 나왔다.
확인해보니까 Stop 훅의 동작 방식이 좀 특이하더라:
- Stop 훅의
stdout→ 사용자 터미널에 바로 안 보임 - Stop 훅의
stdout→ Claude에게도 안 보임 - 즉, Codex 결과가 어디에도 제대로 전달이 안 되는 상태
이게 Exit Code 0이면 stdout이 Claude 컨텍스트에 안 들어간다는 거더라.
세팅 3: PASS/FAIL 분기 처리
그래서 전략을 바꿨다. PASS면 조용히 넘어가고, NEEDS FIX면 Claude에게 직접 알려주는 구조.
핵심은 exit code 활용:
- PASS → exit 0 (아무 일도 없었던 것처럼)
- NEEDS FIX → stderr로 메시지 전달 + exit 2 (Claude가 에러로 인지)
# 마지막 VERDICT 줄만 확인 (프롬프트 텍스트 오탐 방지)
LAST_VERDICT=$(echo "$REVIEW" | grep "^VERDICT:" | tail -1)
if [ "$LAST_VERDICT" = "VERDICT: NEEDS FIX" ]; then
echo "Codex 코드 검증 결과 수정이 필요합니다. .codex-review.md를 읽고 지적된 사항을 수정해주세요." >&2
exit 2
fi
이렇게 하니까 실제로 동작했다:
⏺ Codex 지적사항 수정 완료:
- Rate limit 추가: 같은 IP에서 1분 내 10회 초과 요청 시 429 반환
- 마이그레이션 파일 생성 완료
⏺ Ran 1 stop hook
⎿ Stop hook error: Codex 코드 검증 결과 수정이 필요합니다...
⏺ Read .codex-review.md
Claude가 Codex의 피드백을 받아서 자동으로 수정하고, 다시 검증받고... 이 흐름이 자동으로 돌아가도록.
추가로, 처음엔 git diff HEAD만 봤더니 새로 생성된 파일(untracked)을 못 잡아서 Codex가 "마이그레이션 파일 없다"고 계속 지적하는 문제가 있었다.
git ls-files --others로 untracked 파일까지 수집하도록 수정해서 해결.
세팅 4: 규칙 동기화 자동화
한 가지 더 신경 쓴 게 있다.
Claude Code한테 "Supabase Auth 도입해줘" 같은 큰 변경을 시키면, 코드는 바뀌는데 규칙 문서는 옛날 그대로인 문제였다.
그래서 CLAUDE.md에 이 지시를 넣었다:
아키텍처, 기술 스택, 인증 방식, DB 스키마 등이 변경되면 docs/PROJECT_RULES.md와 AGENTS.md도 함께 업데이트할 것
그리고 확실하게 하고 싶을 때를 위한 .claude/commands/sync-rules.md 커스텀 커맨드도 만들어놨다.
Claude Code에서 /sync-rules 치면 현재 코드를 스캔해서 규칙 문서를 현행화해준다.

다 완료해놓으니 이렇게 자기들끼리 떠들고 고친다. PROJECT_RULES도 알아서 고치더라.
다 하고 보니, 앞으로는 plan도 그냥 Codex랑 같이 짜게 해볼까 싶다.
디자인은 Gemini Pro한테 요청해보고.
OMO 사용한다고 가입해놨던 여기저기 토큰이 아까워서라도...
추가로 또 요즘은 프로젝트를 여러 개를 금방금방 만들다 보니, 이런 세팅을 프로젝트마다 만들 생각하니까 귀찮기도 하고해서 앞으로 세팅 자동화도 좀 더 연구해봐야겠다.
결국은 내가 만들고 싶은 건 Claude Code 기반의 opencode 역할을 하는 프롬프트가 아닐까..?
아무튼 오늘도... AI에 뇌를 의탁하는 마크다운 개발자에 한 발짝 더 다가섰다.
comments
loading…