Claude Code Hooks 6 이벤트 시스템 (UserPromptSubmit / PreToolUse / PostToolUse / Stop / SessionStart / Notification)
Concept (개념)aiverifiedFri May 01

Claude Code Hooks 6 이벤트 시스템 (UserPromptSubmit / PreToolUse / PostToolUse / Stop / SessionStart / Notification)

별칭: Hooks 6 Events · Claude Code Hooks 시스템 · 6 이벤트 훅

#hooks#claude-code#harness#settings-json#generalized#hrn

요약

entity/claude-code결정론적 가드레일 1급 메커니즘 — settings.json6 이벤트 Hook 시스템. 프롬프트 입력·도구 호출 전·도구 호출 후·턴 종료·세션 시작·알림 6 시점에서 외부 스크립트 호출 → 통과·차단·수정 결정. 본 강의 03 HRN 의 term/stop-hook상위 개념.

상세

6 이벤트 표

이벤트발화 시점입력용도
UserPromptSubmit사용자 입력 직후사용자 프롬프트입력 검증 — 금지 패턴·정책 위반
PreToolUse도구 호출 직전도구 이름 + 파라미터파라미터 검증 — API 시그니처·PII·권한
PostToolUse도구 호출 직후도구 응답응답 후처리 — PII 스크러빙·로깅
Stop종료 시전체 세션감사 로깅 — request_id, masked_payload, response_hash
SessionStart세션 시작 시환경 정보컨텍스트 주입 — CLAUDE.md, 환경 변수
Notification시스템 알림 시알림 메시지외부 통지 — 슬랙/이메일/HITL 트리거

차단 메커니즘

// 통과
process.exit(0);

// 차단
console.error(JSON.stringify({
  decision: "block",
  reason: "구체적 사유"
}));
process.exit(2);

settings.json 매처 시스템

{
  "hooks": {
    "PreToolUse": [
      { "matcher": "Write|Edit",
        "hooks": [{ "type": "command", "command": "node .claude/hooks/api-validator.js" }] },
      { "matcher": "Bash|WebFetch",
        "hooks": [{ "type": "command", "command": "node .claude/hooks/pii-masker.js" }] }
    ],
    "Stop": [{
      "matcher": ".*",
      "hooks": [{ "type": "command", "command": "node .claude/hooks/audit-logger.js" }]
    }]
  }
}
  • matcher = 정규식. 어떤 도구에 대해 hook 을 발동할지 결정.
  • command = 외부 실행 파일. exit code 로 통과 / 차단 신호.

concept/multi-layer-guardrail 와의 매핑

이벤트가드레일 층
UserPromptSubmit2 (조직 가치) + 3 (팀 컨벤션)
PreToolUse1 (시스템 진실) + 4 (PII)
PostToolUse4 (응답 PII 스크러빙)
Stop감사
SessionStart컨텍스트 주입
NotificationHITL

다른 도구의 등가물

도구등가 메커니즘
CursorRun on Stop / Pre-execution scripts
GitHub CopilotPre-commit hooks + custom instructions
GenericGit hooks + CI pipeline

방법론

강의 활용 (03 HRN lesson/hrn-verification-loop 심화):

  1. 6 이벤트 표 (3분): 시점 + 입력 + 용도.
  2. settings.json 코드 시연 (2분): 실제 매처 매핑.
  3. 차단 메커니즘 (1분): exit code 2 + JSON.
  4. 가드레일 매핑 (1분): concept/multi-layer-guardrail 의 4층이 6이벤트로 어떻게 분배되는지.

주의사항

  • 이벤트 종류는 시점에 따라 변동: Claude Code 버전 업그레이드 시 이벤트 추가·이름 변경 가능. 강의 시점 기준 확인.
  • 외부 스크립트 의존성: hooks 가 외부 실행 파일 을 호출 → Node.js / Python 등 환경 필요.
  • 속도 비용: 매 hook 마다 프로세스 spawn → 시간 비용. 가벼운 검증 권장.
  • 무한 루프 방지: hook 이 도구 호출을 트리거하면 재귀 발생 가능 — 안전장치 필요.
  • 단일 vs 체인: 한 매처에 여러 hook 등록 가능 — 체인 실행. 모두 통과해야 통과.