Claude Code Hooks로 위험 명령을 실행 전에 차단하는 법 | DAKER 커뮤니티
Claude Code Hooks는 특정 생명주기 시점에 shell command, HTTP endpoint, LLM prompt를 자동 실행하는 가드레일이다. 2026년 7월 6일 기준 공식 문서는 Hooks를 알림, 자동 포맷, 실행 전 검증, 명령 차단에 사용할 수 있다고 설명한다. 오늘은 Memory나 프롬프트로 부탁하는 수준을 넘어, PreToolUse 훅으로 위험 명령을 실행 전에 걸러내는 방법을 정리한다.
한 줄 요약: Claude Code Hooks는 “잘 지켜줘”라는 요청을 “실행 전에 검사하라”는 자동 규칙으로 바꾸는 장치다.

위험 명령을 실행 전 JSON 입력 검사로 막는 흐름

Memory는 맥락 제공, Hooks는 실행 시점 가드레일
Claude Code Hooks는 어떤 문제를 해결할까?
Hooks는 Claude Code가 도구를 쓰는 순간에 팀 규칙을 자동으로 적용한다. 공식 문서는 Hooks를 포맷 실행, 사용자 입력 대기 알림, 세션 시작 맥락 주입, 실행 전 명령 차단 같은 용도로 안내한다. 즉 “이 명령은 조심해”라고 프롬프트에 쓰는 것보다 한 단계 더 운영적인 통제 지점을 제공한다.
문제 상황: Memory는 기억하지만 강제하지 않는다
CLAUDE.md와 auto memory는 Claude Code가 대화 시작 시 읽는 맥락이다. 공식 문서는 이 메모리가 enforced configuration이 아니라 context라고 설명한다. 그래서 “운영 DB에 write 명령 금지”처럼 반드시 지켜야 하는 규칙은 Memory에만 맡기면 부족하고, 실행 시점에 차단하는 PreToolUse 훅을 함께 둬야 한다.
핵심 개념: PreToolUse는 실행 전 입력을 검사한다
PreToolUse 훅은 도구가 실행되기 전에 호출된다. 예를 들어 Bash 도구에 들어온 명령을 JSON 입력으로 받아 읽고, rm -rf, 운영 DB write, 승인되지 않은 배포 명령처럼 팀이 금지한 패턴을 검사할 수 있다. 문제가 있으면 훅이 차단 신호를 반환하고, 안전한 명령이면 그대로 통과시킨다.
단계별 사용법: 위험 명령 차단 훅은 어떻게 시작하나?
먼저 금지할 행동을 문장으로 적는다. 예: 운영 DB write, secret 파일 출력, main 브랜치 직접 배포.
그 행동이 어떤 도구와 명령 패턴에서 나타나는지 좁힌다. 예: Bash의 psql, rm, cat 명령.
settings.json의 hooks 블록에 PreToolUse 규칙을 추가한다.
검사 스크립트는 stdin의 JSON 입력을 읽고 위험 패턴을 판단하게 만든다.
허용 사례와 차단 사례를 각각 한 번씩 실행해 로그와 차단 메시지를 확인한다.
짧은 예시: 팀 규칙을 두 층으로 나누기
리뷰 방식, 보고 형식, 선호하는 테스트 순서는 CLAUDE.md나 Skills에 둔다. 반면 “.env 파일 내용을 출력하지 않는다”, “운영 DB에 update/delete를 실행하지 않는다”, “승인 전 배포 명령을 실행하지 않는다”는 Hooks와 권한 설정으로 둔다. 이렇게 나누면 Claude Code가 더 잘 이해해야 할 규칙과 반드시 시스템이 막아야 할 규칙이 분리된다.
Memory와 Hooks는 어떻게 비교하면 좋을까?
Memory/CLAUDE.md: 프로젝트 맥락, 팀 선호, 반복 설명을 시작 시점에 제공한다.
Skills: 반복 업무 절차를 명령어처럼 패키징한다.
Hooks: 실행 전후 시점에 자동 검증, 알림, 차단, 로깅을 수행한다.
권한 설정: 어떤 도구와 파일에 접근할 수 있는지 기본 경계를 만든다.
팀 적용 체크리스트: 훅을 너무 크게 만들지 않으려면?
처음에는 가장 위험한 행동 1개만 차단한다.
차단 메시지는 “왜 막혔는지”와 “대신 무엇을 해야 하는지”를 같이 알려준다.
정규식만 믿지 말고 허용 테스트와 차단 테스트를 함께 만든다.
개인 로컬 편의 훅과 팀 공통 훅을 분리한다.
차단 로그가 너무 많아지면 규칙을 업무별로 쪼갠다.
관련 DAKER 글은 어디서 이어서 보면 좋을까?
팀 규칙의 기본 경계를 먼저 세우려면 Claude Code 상세 사용법 48: 설정과 권한을 팀 규칙으로 고정하기를 함께 보자. 비밀 파일 접근을 더 좁히고 싶다면 Claude Code sandbox.credentials: 비밀 파일 읽기부터 막는 보안 설정이 직접 연결된다. 문제가 반복될 때 설정 디버깅 루프를 만들고 싶다면 Claude Code 상세 사용법 18: /loop와 설정 디버깅 루프도 이어서 확인할 수 있다.
공식 출처 기준으로 확인한 내용은?
작성 기준일은 2026년 7월 6일이다. 확인한 공식 문서는 Anthropic Claude Code의 Hooks guide, Hooks reference, Memory 문서다. 공개 본문에는 워크스페이스 정책에 따라 외부 URL을 직접 노출하지 않았으며, 기능 설명은 공식 문서가 설명한 hook lifecycle과 memory의 한계 안에서만 정리했다.
자주 묻는 질문
Hooks를 쓰면 Claude Code가 더 느려지나요?
훅이 실행되는 만큼 약간의 시간이 추가될 수 있다. 그래서 처음에는 위험도가 높은 도구와 명령에만 좁게 적용하는 편이 좋다.
PreToolUse 훅은 모든 실수를 막을 수 있나요?
아니다. 훅은 정의한 패턴과 검사 로직 안에서만 동작한다. 위험 행동 목록을 계속 갱신해야 한다.
개인 설정과 팀 설정 중 어디에 훅을 둬야 하나요?
팀 전체가 반드시 지켜야 하는 규칙은 공유 설정으로 관리하고, 알림 같은 개인 편의 기능은 개인 설정에 두는 것이 안전하다.
Memory에 이미 금지 규칙을 적었는데 Hooks가 꼭 필요한가요?
반드시 막아야 하는 행동이라면 필요하다. Memory는 맥락이고, Hooks는 실행 시점의 자동 검사에 가깝다.
오늘은 팀에서 가장 위험한 명령 하나만 골라 PreToolUse 차단 후보로 적어보고, 그 명령이 실제로 어디서 발생하는지부터 확인해보자.