Claude 코드 후크를 이용해 재앙을 막는 방법 (코드 포함)
요약
Claude Code의 후크(Hooks) 기능을 활용하여 모델이 실행하는 명령어에 안전장치를 추가할 수 있습니다. 이 기능은 `PreToolUse`와 같은 이벤트별 훅을 통해 위험한 명령어를 사전에 차단하고, 민감 정보 유출을 방지하며, 편집 후 코드 형식을 자동으로 정리하는 데 사용됩니다.
핵심 포인트
- 후크는 모든 액션 전에 실행되어 안전장치 역할을 합니다.
- 코드 2로 종료되면 해당 액션이 차단되고 이유가 Claude에게 전달됩니다.
- 정규 표현식(regex)을 이용해 AWS 키나 GitHub 토큰 등 민감 정보를 감지하고 수정할 수 있습니다.
- PostToolUse 훅은 편집 후 Prettier/Biome 같은 도구를 실행하여 코드 형식을 유지합니다.
Claude Code는 명령어 실행에 매우 능숙합니다. 이것이 바로 잘못된 명령어를 실행할 때 문제가 됩니다. **후크(Hooks)**는 모델이 규칙을 '기억'하는 것에 의존하지 않고, 모든 액션 전에 실행되는 안전장치를 추가할 수 있게 해줍니다.
작동 방식 (30초 만에)
.claude/settings.json파일에서 이벤트별(PreToolUse,PostToolUse,Notification등) 및 도구별(Bash,Write|Edit등)로 설정할 수 있습니다.- 후크는 이벤트를 stdin으로 JSON 형태로 받습니다.
- 만약 후크가 **코드 2(code 2)**로 종료되면, 해당 액션은 차단되고 stderr 텍스트가 이유와 함께 Claude에게 다시 전송됩니다.
1. 파괴적인 명령어 차단하기
.claude/hooks/block-dangerous-commands.sh:
#!/usr/bin/env bash
input="$(cat)"
patterns=(
...
push 패턴에 대한 두 가지 세부 사항: --force([^-]|$)는 --force를 차단하지만, 안전한 강제 푸시 방법인 --force-with-lease는 통과시키고; [^[:space:]"]+는 + 리프스펙(git push origin +main)을 포착합니다. 이는 --force를 입력하지 않고도 강제 푸시가 가능하게 합니다. 또한, git[^;&|]* 접두사는 git -C some/dir push --force와 git reset -q --hard까지 포착합니다.
.claude/settings.json:
{
"hooks": {
"PreToolUse": [
...
chmod +x를 잊지 말고, 다음으로 테스트해 보세요:
echo '{"tool_input":{"command":"git push origin +main"}}' | .claude/hooks/block-dangerous-commands.sh; echo $?
# → 2
실제 세션에서 테스트한 결과: Claude에게 git push --force origin main을 실행하도록 요청했고,
동일한 패턴으로 matcher: "Write|Edit|MultiEdit"와 같은 정규 표현식(regexes)을 사용합니다. 예를 들어, AWS 키인 AKIA[0-9A-Z]{16}, Anthropic 키인 sk-ant-[A-Za-z0-9_-]{20,} 또는 GitHub 토큰인 gh[pousr]_[A-Za-z0-9]{36,} 등이 있습니다. Claude가 키를 작성하려고 할 때, "환경 변수를 사용하고 .env.example에 문서화하세요"라는 메시지를 받으며 스스로 수정합니다.
3. 편집 후 형식 유지 (Format after every edit)
JSON에서 file_path를 읽어와 프로젝트 자체의 Prettier/Biome (node_modules/.bin/prettier)을 실행하는 PostToolUse 훅입니다. 이 훅은 항상 0으로 종료됩니다: 차단하지 않고, 단지 정리만 합니다.
무료 코드 (Free code)
Linux와 macOS에서 27개의 테스트를 거친 훅 1과 2는 MIT 라이선스 하에 GitHub (https://github.com/kailucho/claude-code-hooks-seguridad)에 공개되어 있습니다 (문서는 스페인어, 영어 요약이 상단에 있습니다).
모든 것을 연결하고 싶다면 (If you want it all wired up)
Claude 코드 스타터 키트(Starter Kit for Claude Code) (미국 $9, 비공식)는 세 가지 훅과 알림 기능 훅을 번들로 제공하며, 6가지 스킬(/commit, /pr, /review, /tests, /plan, /debug), React, Node 및 GraphQL용 CLAUDE.md 템플릿, 그리고 권한 프리셋을 포함합니다: https://luijhy.gumroad.com/l/starter-kit-for-claude-code
어떤 다른 명령어를 차단하고 싶으신가요? 댓글로 알려주세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기