밤샘AI
← 자료실
실수 방지 안전장치

클로드가 .env 같은 파일 못 건드리게 막기

Claude Code · 읽는 데 6분 · 2026-09-30 확인

CLAUDE.md에 '.env는 건드리지 마'라고 써도 그건 부탁이라 100% 지켜진다는 보장이 없어요.

훅은 클로드의 판단과 상관없이 매번 실행돼요. 파일을 고치기 직전(PreToolUse)에 검사해서, 금지 목록이면 막고 이유를 클로드에게 알려 줍니다.

준비jq 설치

  1. 훅 스크립트가 JSON을 읽을 때 jq라는 작은 도구를 써요. 맥은 이렇게 설치해요.
    brew install jq

1단계검사 스크립트 만들기

  1. 프로젝트 안 .claude/hooks/protect-files.sh 로 저장합니다. 막고 싶은 이름은 PROTECTED_PATTERNS 괄호 안에 더하면 돼요.
    #!/bin/bash
    # protect-files.sh
    
    INPUT=$(cat)
    FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')
    
    # Normalize Windows backslash separators so the patterns below match
    FILE_PATH="${FILE_PATH//\\//}"
    
    PROTECTED_PATTERNS=(".env" "package-lock.json" ".git/")
    
    for pattern in "${PROTECTED_PATTERNS[@]}"; do
      if [[ "$FILE_PATH" == *"$pattern"* ]]; then
        echo "Blocked: $FILE_PATH matches protected pattern '$pattern'" >&2
        exit 2
      fi
    done
    
    exit 0

2단계실행 권한 주기

  1. 맥·리눅스에선 실행 권한이 있어야 돌아가요.
    chmod +x .claude/hooks/protect-files.sh

3단계훅 등록

  1. 프로젝트의 .claude/settings.json 에 넣어요. Edit|Write 는 '파일을 고치거나 새로 쓸 때'만 검사하라는 뜻이에요.
    {
      "hooks": {
        "PreToolUse": [
          {
            "matcher": "Edit|Write",
            "hooks": [
              {
                "type": "command",
                "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/protect-files.sh"
              }
            ]
          }
        ]
      }
    }

4단계시험

  1. 클로드에게 '.env 파일에 주석 한 줄 추가해 줘'라고 해 보세요. 고치기 전에 막히고, Blocked: 로 시작하는 이유가 클로드에게 전달되면 성공이에요.

같이 걸어 두면 좋은 훅

긴 대화 요약 뒤 규칙 다시 알려 주기 SessionStart 훅에 matcher를 compact로 두고 echo로 핵심 규칙을 출력하면, 대화가 압축된 뒤에도 그 문장이 다시 들어가요.
고칠 때마다 자동 정리(개발자용) PostToolUse 훅에 Edit|Write로 jq -r '.tool_input.file_path' | xargs npx prettier --write 를 걸면 코드 모양이 늘 맞춰져요.
부탁은 잊혀도 훅은 안 잊어요. 비밀 키 파일 있는 프로젝트라면 오늘 걸어 두고 푹 주무세요 🌙
출처 (2026-09-30 확인)
Claude Code 공식 문서 — Automate actions with hooks — https://code.claude.com/docs/en/hooks-guide
잠 못 자고 모은 AI 소식, 매일 만나 보세요.

자료는 공식 도움말을 직접 확인해 만들고, 날짜를 적어 둡니다. 서비스 화면은 바뀔 수 있어요.