Claude Code 훅이 안 돌 때 확인할 것
훅을 넣었는데 아무 일도 없다면, 어딘가의 disableAllHooks나 회사 정책이 막고 있을 수 있습니다. 어디서 꺼졌는지 찾는 순서.
1. /hooks로 불러왔는지 보기
Claude Code에서 /hooks를 입력하면 설정된 훅을 읽기 전용으로 보여 주고, 훅마다 출처(사용자·프로젝트·로컬 설정, 플러그인, 현재 세션)를 붙입니다. 훅을 고르면 실제로 실행할 명령과 정의된 곳이 보입니다. 내 훅이 목록에 없다면 다른 파일에 넣었거나 막혀 있는 것입니다.
2. disableAllHooks는 ‘마지막에 남은 값’
"disableAllHooks": true는 훅을 지우지 않고 모두 끕니다. Claude Code는 설정 우선순위를 거친 뒤 남은 값을 읽기 때문에, 프로젝트의 .claude/settings.json에 있는 false가 사용자 설정의 true를 이깁니다. 반대로 프로젝트나 .claude/settings.local.json에 true가 있으면 그 프로젝트에서는 내 사용자 훅도 돌지 않습니다. 훅 하나만 끄는 스위치는 없습니다.
볼 곳: ~/.claude/settings.json(모든 프로젝트), .claude/settings.json(프로젝트·커밋됨), .claude/settings.local.json(프로젝트·내 컴퓨터만), 회사 관리 설정. 한 번만 끄고 싶다면 --settings '{"disableAllHooks": true}'로 실행하면 프로젝트·로컬 설정보다 앞섭니다.
3. 회사 관리 설정
관리 설정에 allowManagedHooksOnly가 있으면 사용자·프로젝트·로컬·플러그인 훅이 막힙니다(관리 설정의 enabledPlugins로 강제로 켠 플러그인 훅은 예외). strictPluginOnlyCustomization으로 훅을 잠그면 플러그인·관리 설정의 훅만 돌고 내 설정 파일의 훅은 돌지 않습니다. 관리자가 넣은 훅은 사용자·프로젝트·로컬의 disableAllHooks로 끌 수 없습니다.
확인: /status의 Setting sources 줄에 Enterprise managed settings가 있으면 관리자에게 이 설정을 물어보세요.
4. 그래도 조용하다면
셸에서 claude --debug로 새 세션을 시작하거나(셸을 쓰지 않으면 새 세션에서 먼저 /debug), 기록에서 훅 실행을 찾습니다. 대부분의 사건에서 훅의 표준 출력은 대화가 아니라 디버그 기록에만 남고, 0이 아닌 종료 코드는 stderr 첫 줄만 보여 줍니다. 대화에 … hook error가 보이면 대개 스크립트 경로가 틀린 것 같은 막지 않는 실패입니다. 셸 프로필이 찍는 글자가 섞이면 훅의 JSON 출력이 무시될 수 있습니다.
Lidnight로
Lidnight는 Claude Code 훅이 어디서 꺼졌는지(관리·로컬·프로젝트·사용자 설정, 관리 훅만 허용 포함) 원인과 함께 주황으로 알리고, 대시보드 › AI 구성에서 플러그인과 MCP 서버가 실제로 켜졌는지·차단됐는지·이 프로젝트에서 꺼 뒀는지 보여 줍니다. 읽기만 하고 disableAllHooks는 바꾸지 않습니다. Lidnight 훅을 연결할 때는 설정 파일을 먼저 백업하고 Lidnight 항목만 더하며, 끄면 그 항목만 뺍니다.
확인: 2026-11-07, Claude Code 문서 ‘Hooks reference’(code.claude.com/docs/en/hooks) 기준. 바뀌었을 수 있으니 문서를 확인하세요.
Lidnight 무료로 써 보기
Apple Silicon Mac · macOS 13 이상. 받으면 뚜껑 닫기 5회(최대 14일)까지 Pro 기능을 모두 써 볼 수 있고 결제 정보는 필요 없습니다. Pro는 한 번 결제(1대 $9.99 · 3대 $14.99), 14일 안 환불.