내 hook은 왜 발동하지 않을까?

아무 말 없이 한 번도 실행되지 않는 hook은 가장 흔한 에이전트 설정 수수께끼 중 하나입니다. Berth로 그 원인을 추적하는 방법을 소개합니다.

1. 이벤트 이름이 맞나요?

Hooks는 특정 라이프사이클 이벤트에 발동합니다(예: 도구 호출 전의 PreToolUse, 호출 후의 PostToolUse). 이벤트 이름이 실제 이벤트와 맞지 않으면 hook은 결코 실행되지 않습니다. Berth는 각 hook이 언제 발동하도록 설정됐는지 보여 줍니다.

2. hooks가 전역으로 꺼져 있나요?

disableAllHooks 설정은 모든 hook을 한 번에 꺼 버립니다. Berth의 헬스 체크가 이를 드러내 줍니다. 가장 먼저 배제하고 넘어가야 할 항목이죠.

3. matcher가 너무 좁나요?

많은 hook은 특정 도구를 겨냥하기 위해 matcher를 사용합니다. matcher가 당신이 쓰는 도구와 맞지 않으면 아무 일도 일어나지 않습니다. 세션의 도구 타임라인에 나온 도구 이름과 matcher를 대조해 보세요.

4. 명령 파일이 존재하나요?

Hook은 명령이나 스크립트를 가리킵니다. 경로가 틀렸거나 파일이 없으면 hook은 실행될 수 없습니다. Berth는 헬스 체크에서 hook의 진입 경로를 검증합니다.

출처

  1. 01
    Claude Code — Hooks 가이드

    1차 자료. hook 이벤트와 라이프사이클.

    https://code.claude.com/docs/en/hooks-guide

  2. 02
    Claude Code — 설정(Settings)

    1차 자료. disableAllHooks를 포함한 settings.json.

    https://code.claude.com/docs/en/settings