에이전트에게 "무엇을 해야 하는지"를 가르치는 것은 프롬프트의 몫이지만, "특정 시점에 반드시 무엇이 일어나게 만드는지"는 프롬프트로 보장할 수 없습니다. 모델은 지시를 따를 수도, 잊을 수도 있기 때문입니다. Hooks는 바로 이 빈틈을 메우는 결정론적 제어 장치입니다. Claude Code의 생명주기 중 정해진 이벤트가 발생할 때마다 사용자가 정의한 명령을 실행해, 도구 호출을 검사·차단·수정하거나 정책을 강제할 수 있습니다.
시험은 Hooks를 단순한 "자동화 편의 기능"이 아니라 신뢰성 아키텍처의 핵심 결정 도구로 다룹니다. 즉 "포맷팅을 자동화하려면 어떤 훅을 쓰는가"보다 "위험한 작업을 모델의 협조 없이 막아야 할 때 왜 PreToolUse가 정답인가"를 묻습니다. 어떤 이벤트가 차단을 지원하고 어떤 이벤트는 사후 관찰만 가능한지, 종료 코드와 JSON 출력이 어떻게 다르게 동작하는지를 구분하는 것이 합격의 분기점입니다.
이 장을 마치면 다음을 할 수 있습니다.
- Claude Code의 주요 Hook 이벤트와 그 생명주기를 설명하고, 각 이벤트가 차단 가능한지 사후 관찰 전용인지 구분할 수 있다.
- settings.json에서 matcher와 명령형·HTTP 훅을 구성하고, stdin JSON 입력을 파싱해 의도한 제어를 수행할 수 있다.
- 종료 코드 2 기반 차단과 구조화된 JSON 출력(permissionDecision, decision/reason, updatedInput)의 차이를 설명하고 상황에 맞게 선택할 수 있다.
- "왜 이 이벤트가 정답인가"를 묻는 의사결정 문제에서 PreToolUse·PostToolUse·Stop·UserPromptSubmit 등을 올바르게 매핑할 수 있다.
| 절 | 제목 |
|---|---|
| 01 | Hook의 종류와 생명주기 |
| 02 | 이벤트 기반 제어 흐름 |