본문 바로가기

GPT

Codex Mobile 가이드 2편 — Codex Hooks와 Goal Mode 실전 가이드

반응형

 

1편에서 Codex Mobile 설치와 연결을 마쳤다면, 이제 진짜 쓸모 있는 부분이다. Hooks는 에이전트 라이프사이클의 특정 시점에 자동 실행되는 규칙이고, Goal Mode는 목표 하나를 주면 달성될 때까지 멈추지 않는 자율 루프다. 이 두 기능을 Mobile과 결합하면 "내가 자는 동안 Codex가 일하고, 판단이 필요할 때만 폰으로 깨운다"는 워크플로우가 완성된다.


핵심 요약

→ Hooks는 도구 사용 전후, 프롬프트 제출 시, 세션 종료 시 등 Codex 워크플로우의 특정 이벤트에서 실행되는 라이프사이클 자동화 스크립트 — 검증·로깅·시크릿 스캔·커스텀 메모리 추가 가능
→ Goal Mode는 2026년 5월 21일 Codex 앱·IDE 익스텐션·CLI 전체에서 GA(정식 출시) — Appshots·Locked Computer Use와 함께 배포
→ /goal 명령어로 고수준 목표를 지정하면 Codex가 계획→실행→테스트→검토→반복 루프를 목표 달성까지 자율 실행
→ Locked Computer Use — Mac이 잠긴 상태에서도 Codex가 데스크탑 앱 조작 가능 → Codex Mobile로 원격 모니터링하며 Mac 슬립 걱정 없이 장시간 실행
→ 기본 알림 설정: 태스크 완료 또는 승인 필요 시 앱이 백그라운드에 있을 때 알림 발송 — 항상 발송·발송 안 함으로 설정 변경 가능
→ Goal Mode는 Free 플랜도 사용 가능, 단 장시간 지속 실행은 Pro·Business·Enterprise에서 세션 한도가 더 높음
실전 조합: Goal Mode(목표 설정) + Hooks(자동 승인 규칙) + Mobile(판단 필요할 때만 폰 알림) = 진짜 비동기 에이전트 루프


1. Hooks — 에이전트를 신뢰 가능하게 만드는 레이어

Hooks는 에이전트를 단순 유능한 코딩 어시스턴트에서 규제 환경에서도 신뢰할 수 있는 도구로 바꿔준다.

Hooks 이벤트 종류

# Codex Hooks 이벤트 목록

PreToolUse      → 도구(파일 편집·커맨드 실행) 호출 직전
                  → 위험 커맨드 차단, 시크릿 스캔
PostToolUse     → 도구 호출 완료 직후
                  → 결과 로깅, 포맷팅 자동 실행
UserPromptSubmit → 사용자 프롬프트 제출 시
                  → 컨텍스트 주입, 입력 검증
SessionStart    → 세션 시작 시
                  → 프로젝트 컨벤션 자동 주입
SessionStop     → 세션 종료 시
                  → 요약 저장, 슬랙 알림 발송
Notification    → Codex가 알림 발송할 때
                  → 커스텀 알림 채널로 라우팅

Hooks 설정 파일 구조

# ~/.codex/config.toml (사용자 전체 적용)
# 또는 프로젝트/.codex/config.toml (프로젝트 단위 적용)

[[hooks]]
event = "PreToolUse"
script = "~/.codex/hooks/secret-scan.sh"
# → 커맨드 실행 전 시크릿 유출 체크

[[hooks]]
event = "PostToolUse"
script = "~/.codex/hooks/auto-format.sh"
# → 파일 편집 후 자동 포맷팅

[[hooks]]
event = "SessionStop"
script = "~/.codex/hooks/slack-notify.sh"
# → 작업 완료 시 슬랙 알림

Hook 스크립트 — 실전 예시 3가지

예시 1 — 시크릿 스캔 (PreToolUse)

#!/bin/bash
# ~/.codex/hooks/secret-scan.sh
# 도구 실행 전 커맨드에 시크릿이 포함됐는지 검사

TOOL_INPUT="$1"  # Codex가 실행하려는 커맨드

# AWS 키 패턴 감지
if echo "$TOOL_INPUT" | grep -qE 'AKIA[0-9A-Z]{16}'; then
  echo "AWS 키가 커맨드에 노출됨 — 환경 변수 사용 필요" >&2
  exit 2  # exit 2 = 실행 차단 + Codex에 피드백 전달
fi

# .env 파일 외부 복사 시도 감지
if echo "$TOOL_INPUT" | grep -qE 'cp.*\.env'; then
  echo ".env 파일 복사 차단됨" >&2
  exit 2
fi

exit 0  # exit 0 = 정상 통과

예시 2 — 자동 포맷팅 (PostToolUse)

#!/bin/bash
# ~/.codex/hooks/auto-format.sh
# TypeScript 파일 편집 후 자동 prettier 실행

CHANGED_FILE="$1"

if [[ "$CHANGED_FILE" == *.ts || "$CHANGED_FILE" == *.tsx ]]; then
  npx prettier --write "$CHANGED_FILE" 2>/dev/null
  echo "✅ Prettier 자동 적용: $CHANGED_FILE"
fi

exit 0

예시 3 — 세션 완료 시 슬랙·모바일 알림 (SessionStop)

#!/bin/bash
# ~/.codex/hooks/notify-complete.sh
# 작업 완료 시 슬랙 + 폰 푸시 알림

TASK_SUMMARY="$1"
SLACK_WEBHOOK="https://hooks.slack.com/services/YOUR/WEBHOOK/URL"

# 슬랙 알림
curl -s -X POST "$SLACK_WEBHOOK" \
  -H 'Content-type: application/json' \
  -d "{\"text\": \"🤖 Codex 작업 완료\n$TASK_SUMMARY\"}"

# Codex Mobile 알림은 자동으로 오기 때문에 별도 설정 불필요
# 슬랙은 팀 공유용 추가 채널로 활용

exit 0

2. 승인 레벨 설정 — 폰 알림 빈도 조절

Auto 프리셋(--sandbox workspace-write --ask-for-approval on-request)에서 Codex는 워크스페이스 내 파일 읽기·편집·커맨드 실행을 자동으로 처리 — 워크스페이스 외부 파일 편집이나 네트워크 접근이 필요한 커맨드에서만 승인을 요청한다.

# 승인 레벨 4단계 — 폰 알림 빈도와 직결

1. suggest (가장 안전)
   → 모든 변경사항을 제안만, 실행은 사람이 승인
   → 폰 알림 빈도: 매우 높음
   → 적합: 처음 사용하거나 중요 프로덕션 코드

2. auto-edit (권장 시작점)
   → 파일 편집 자동, 커맨드 실행은 승인 필요
   → 폰 알림 빈도: 중간
   → 적합: 일반 개발 작업

3. on-request (Auto 프리셋)
   → 워크스페이스 내 모든 작업 자동, 외부/네트워크만 승인
   → 폰 알림 빈도: 낮음
   → 적합: 신뢰된 프로젝트의 장시간 에이전트

4. never (완전 자율)
   → 승인 없이 모든 작업 실행
   → 폰 알림 빈도: 완료 시에만
   → ⚠️ 주의: 프로덕션 환경엔 비권장
# CLI에서 승인 레벨 설정
codex --approval auto-edit    # 편집 자동, 커맨드 승인
codex --approval on-request   # Auto 프리셋
codex --approval never        # 완전 자율 (주의)

# 실행 중 변경
/permissions                  # 현재 권한 확인 및 변경

3. Goal Mode — 목표 달성까지 멈추지 않는 루프

Goal Mode는 사용자가 영속적인 목표를 설정하고 Codex가 수 시간 또는 수 일에 걸쳐 자율적으로 달성하도록 하는 기능 — 목표가 달성되거나 사용자가 중단을 선택할 때까지 계속 실행된다.

Goal Mode 시작

# Codex 앱 또는 CLI에서
/goal 이 Python 프로젝트를 Pydantic v1에서 v2로 마이그레이션하고
      모든 테스트가 통과할 때까지 계속 수정해줘

# CLI에서
codex
> /goal src/api 디렉터리의 모든 API 엔드포인트에
         입력 검증 로직 추가하고 테스트 커버리지 80% 이상 확보해줘

Goal Mode 내부 루프

# Codex Goal Mode 실행 흐름

/goal 명령 입력
    ↓
[계획 단계]
Codex: 목표 분석 → 하위 태스크 목록 생성
  1. 현재 Pydantic v1 사용 패턴 파악
  2. v2 호환 코드로 변환
  3. 테스트 실행
  4. 실패 시 수정 반복
    ↓
[실행 단계] ← 자율 루프 시작
파일 분석 → 편집 → 테스트 실행
    ↓
테스트 실패
    ↓
원인 파악 → 수정 → 재테스트 ← 자동 반복
    ↓
모든 테스트 통과
    ↓
[목표 달성] → 폰 알림 발송

Goal Mode + Mobile 조합 실전

# 시나리오: 금요일 오후 퇴근 전 Goal 설정

# 1. Mac에서 Goal 시작
/goal 이번 스프린트 백로그의 3개 이슈 (#234, #241, #258) 처리해줘
      각 이슈마다 구현 → 테스트 → 커밋까지 완료

# 2. 퇴근 (Mac은 계속 실행)
→ Codex가 이슈 234 처리 시작

# 3. 저녁 폰 알림
"이슈 #234 완료. #241 진행 중 — 승인 필요"
→ 폰에서 diff 확인 → 승인 탭

# 4. 다음 날 아침 알림
"3개 이슈 모두 완료. 총 47개 파일 수정, 테스트 112개 통과"
→ 출근 전 PR 리뷰만 하면 됨

4. Locked Computer Use + Goal Mode — 완전 방치 실행

Locked Computer Use는 Mac이 잠긴 상태에서도 Codex가 데스크탑 앱을 조작할 수 있게 하는 기능 — Goal Mode와 결합하면 Mac 화면이 꺼져도 에이전트가 계속 실행된다.

# Locked Computer Use 활성화
Codex 앱 → Settings → Connections → "Computer Use" 활성화
→ "Allow when locked" 옵션 체크

# 설정 후 워크플로우
1. Goal 설정 + Locked Computer Use 활성화
2. Mac 화면 잠금 (슬립 방지는 유지)
3. Codex가 잠긴 Mac에서 계속 실행
4. 승인 필요 시 폰 알림 → 폰에서 처리
5. 완전히 자리 비워도 에이전트 작동
⚠️ 보안 주의사항
→ 지역 제약 있음 (일부 국가/워크스페이스 정책에서 제한)
→ 프로덕션 DB·결제 시스템 접근이 있는 환경엔 신중하게
→ Hooks의 PreToolUse 스캔과 함께 사용 권장
→ 샌드박스 설정으로 접근 가능한 디렉터리 제한

5. 알림 최적화 — 폰 알림 피로 없애기

# Mac Codex 앱 알림 설정
Settings → Notifications
├── "When task completes" → ✅ (완료 시 항상 알림)
├── "When approval needed" → ✅ (승인 필요 시 항상 알림)
├── "When app is in focus" → 선택 (Mac 앞에 있을 때도 알림?)
└── Never → ❌ (모바일 연동 의미 없어짐)

# 승인 레벨로 알림 빈도 조절
→ on-request 프리셋: 외부 접근 시에만 알림 (권장)
→ auto-edit: 모든 커맨드마다 알림 (초반에 에이전트 파악할 때 유용)
# 특정 패턴 커맨드 자동 승인 Hook으로 구현
# ~/.codex/hooks/auto-approve-safe.sh
# 안전한 커맨드는 Hook에서 자동 통과 → 폰 알림 안 옴

COMMAND="$1"

# npm test, pytest, cargo test는 자동 통과
if echo "$COMMAND" | grep -qE '^(npm test|pytest|cargo test|go test)'; then
  exit 0  # 자동 승인
fi

# git add, git commit은 자동 통과
if echo "$COMMAND" | grep -qE '^git (add|commit|diff|log|status)'; then
  exit 0
fi

# 나머지는 승인 요청 (폰 알림)
exit 1  # exit 1 = 기본 승인 흐름 유지

6. 실전 추천 설정 조합

# 입문 (에이전트 처음 쓰는 경우)
승인 레벨: auto-edit (파일 편집 자동, 커맨드 승인)
Goal Mode: 짧은 목표부터 (한 파일 리팩토링 수준)
Hooks: 없음 (일단 흐름 파악 먼저)
알림: 승인 필요 + 완료 시

# 중급 (신뢰된 프로젝트)
승인 레벨: on-request (워크스페이스 내 자율)
Goal Mode: 이슈 단위 목표
Hooks: 시크릿 스캔 + 포맷팅
알림: 완료 + 외부 접근 시만

# 고급 (장시간 배치 작업)
승인 레벨: on-request + 안전 커맨드 자동 승인 Hook
Goal Mode: 멀티 이슈 목표 + Locked Computer Use
Hooks: 스캔 + 포맷팅 + 슬랙 알림
알림: 완료 시만 (승인은 Hook이 처리)

✅ 결론

✅ Hooks — 에이전트를 규칙 안에 가두는 가드레일, 프로덕션 환경에서 신뢰성 확보의 핵심
✅ Goal Mode — 목표 달성까지 자율 루프, Mobile과 결합 시 진짜 비동기 개발 워크플로우 완성
✅ Locked Computer Use — Mac 화면 꺼져도 에이전트 실행, 장시간 배치 작업의 필수 설정
✅ 승인 레벨 + Hook 조합 — 폰 알림 빈도를 정밀하게 조절 가능

❌ Goal Mode Free 플랜은 세션 한도로 장시간 실행 제한
❌ Locked Computer Use는 지역·워크스페이스 정책 제약 있음
❌ Hook 스크립트 실수로 모든 커맨드 차단될 수 있음 — 처음엔 exit 0 기본값으로 시작 권장


관련 글

 

반응형