Claude Code 훅(Hooks) — 매번 자동 실행되는 작업 규칙 만들기

생명주기 이벤트에 결정적으로 실행되는 Claude Code 훅을, 이벤트·매처·액션 3요소와 설정·차단·실전 예까지 공식 문서 기준으로 정리했습니다.

Claude Code 훅(Hooks)은 세션의 특정 시점마다 자동으로 실행되는 사용자 정의 규칙입니다. AI가 "기억해서" 하는 게 아니라 조건이 맞으면 매번 셸 명령이 실행되므로 — 저장할 때마다 자동 포맷, 위험한 명령 차단, 테스트 통과 전 커밋 금지 같은 가드레일을 결정적으로 걸 수 있습니다. (기준 시점: 2026년 6월 · 공식: code.claude.com/hooks)

세션 곳곳에서 훅이 자동 실행 SessionStart UserPromptSubmit PreToolUse도구 실행 전 PostToolUse도구 완료 후 Stop 도구 호출마다 반복 대표 이벤트만 표시 — 전체 목록은 /hooks 또는 공식 문서에서 확인 출처: code.claude.com/hooks · 기준 2026.6 · 이벤트 개수는 버전마다 다름

훅이란

훅은 Claude Code 생명주기의 특정 순간에 실행되는, 사용자가 정의한 이벤트 핸들러(보통 셸 스크립트)입니다. 핵심은 "결정적"이라는 점입니다. 모델이 포맷을 하거나 테스트를 돌릴 것을 기억하는지에 의존하지 않고, 조건이 맞으면 매번 실행됩니다. 그래서 팀의 비협상 규칙(non-negotiables)을 거는 데 적합합니다.

3요소: 이벤트 · 매처 · 액션

모든 훅은 세 부분으로 이루어집니다.

  • 이벤트(Event) — 훅이 발동하는 생명주기 순간(예: PreToolUse, PostToolUse, Stop, SessionStart).
  • 매처(Matcher) — 언제 실행할지 좁히는 선택적 필터(예: "Bash" 도구만, "Edit|Write" 작업만).
  • 액션(Action) — 실제로 실행되는 것. 대부분 셸 명령입니다.
훅 = 이벤트 + 매처 + 액션 ① 이벤트언제 실행?PostToolUse ② 매처어떤 도구만?Edit|Write ③ 액션무엇을 실행?prettier --write → 파일을 저장(Write/Edit)할 때마다 자동 포맷 PreToolUse에서 종료코드 2 = 그 도구 실행을 차단(위험 명령 막기) 세부 문법은 공식 문서 기준 · 버전에 따라 다를 수 있음

대표 이벤트

가장 많이 쓰이는 둘은 PreToolUse와 PostToolUse입니다.

  • PreToolUse — 도구 실행 "전". 검증하거나 위험한 작업을 막기에 좋습니다.
  • PostToolUse — 도구 완료 "후". 포맷팅·테스트 같은 정리 작업에 어울립니다(단 이미 실행된 작업을 되돌리지는 못하고 피드백만 줍니다).
  • Stop — Claude가 응답을 끝내려 할 때. 마무리 점검·알림에 씁니다.
  • SessionStart / SessionEnd — 세션 시작·종료 시(준비·정리).

이 외에도 여러 이벤트가 있으며, 전체 목록과 개수는 버전에 따라 다릅니다 — /hooks나 공식 문서에서 확인하세요.

설정과 통신

설정은 두 가지입니다. 인터랙티브 /hooks 명령이 이벤트·매처·명령 선택을 안내해 주거나, ~/.claude/settings.json(전역)·.claude/settings.json(프로젝트)을 JSON으로 직접 편집합니다. 이벤트가 발동하면 Claude Code가 세션 ID·작업 디렉터리·도구 이름·입력 같은 JSON 맥락을 핸들러에 넘깁니다(command 훅은 stdin으로). 핸들러는 이를 보고 행동한 뒤 종료 코드로 결과를 전합니다. PreToolUse 훅이 종료 코드 2로 끝나면 그 도구 실행이 차단됩니다.

실전 예

  • 자동 포맷 — PostToolUse + 매처 "Edit|Write" + prettier --write. 파일을 저장할 때마다 포맷이 맞춰집니다.
  • 위험 명령 차단 — PreToolUse + 매처 "Bash"에서 위험한 패턴을 보면 종료 코드 2로 막습니다.
  • 테스트 게이트 — Stop 훅으로 테스트가 통과해야 마무리되도록 거는 식의 점검.

알아둘 점

  • 핸들러 4종 — command(셸)·prompt·agent·http. 일상 용도 대부분은 command로 충분합니다.
  • 서브에이전트에도 발동 — Claude가 서브에이전트를 통해 도구를 쓰면, 그 도구에도 PreToolUse·PostToolUse 훅이 실행됩니다. 안전 게이트를 우회당하지 않게 해 줍니다.
  • 동기 실행 = 성능 — 각 훅은 동기로 돌아 매칭된 도구 호출에 실행 시간이 더해집니다. 무거운 훅은 세션을 느리게 만들 수 있으니 빠르게 유지하세요.
  • 팀 공유 — 프로젝트 .claude/settings.json에 두면 팀 전체가 같은 가드레일을 공유합니다.

관련 글

고지: 이 글은 Anthropic 공식 Claude Code 문서(code.claude.com·docs.anthropic.com)를 기준으로 작성했습니다. 훅 이벤트의 개수·이름·입력 스키마·종료 코드 동작은 정책과 버전에 따라 달라질 수 있으므로(변동 가능) /hooks와 공식 문서에서 확인하세요. 위험 명령 차단 등 보안용 훅은 보조 안전장치이며 완전한 방어를 보장하지 않습니다. 본 사이트는 Anthropic 공식 사이트가 아닙니다.

이어서 읽어보세요

궁금한 점이 있거나 활용법을 나누고 싶나요?

커뮤니티에서 다른 사용자들과 팁과 노하우를 나눠보세요. 더 많은 가이드도 준비되어 있어요.