8월 21일 올라와 아직 열려 있는 이슈에서, `~/.claude/settings.json` 에 건 PreToolUse 훅이 최상위 세션에서는 도는데 Task 로 띄운 서브에이전트의 Bash 호출에서는 아예 안 불렸어요 — 신고자가 30일 동안 명령 76,973건을 세어 보니 훅이 걸린 건 2.8%뿐이었대요. 정작 앤트로픽 공식 훅 문서는 '설정 파일·정책·플러그인의 훅은 서브에이전트 안에서도 돌고, `bypassPermissions` 모드에서도 deny 가 먹는다'고 적어 뒀어요. 훅이 새는 길 다섯 갈래를 정리한 4월 제안서(#45427)와 '클로드가 표식 파일을 `rm -f` 로 지우고 커밋했다'는 5월 신고(#61953)는 둘 다 앤트로픽 사람 코멘트가 한 줄도 없이 방치 봇에 '계획 없음'으로 닫혔어요.
용어 풀이
- PreToolUse
- 클로드 코드가 도구를 실행하기 직전에 끼어드는 훅 이벤트. 여기서 막으면 도구가 실행되지 않는다.
- bypassPermissions
- 권한 확인 창을 건너뛰고 도구를 바로 실행하는 클로드 코드 권한 모드.
- exit 2
- 훅 스크립트의 종료 코드. 클로드 코드는 2만 '차단'으로 읽고, 흔히 쓰는 1은 비차단 오류로 넘긴다.
- 매처(matcher)
- 훅을 어떤 도구 이름에 걸지 정하는 패턴. 도구 이름만 보고 명령 내용은 들여다보지 않는다.
운영자 인사이트
훅으로 막아 뒀다고 믿는 경로를 실제로 뚫어 보세요. ① 서브에이전트를 시켜 같은 명령을 돌리고 훅 로그에 줄이 남는지 ② 훅 스크립트를 일부러 죽여 보기 — 문서상 exit 1 은 '막지 않는 오류'로 그냥 지나가고 exit 2 만 차단이에요 ③ `Edit|Write` 매처는 `cat >`·`tee` 같은 셸 쓰기를 못 잡으니 Bash 매처를 따로 거세요.
여러 관점으로 보기
- 공식 문서가 약속하는 범위 설정 파일·정책·플러그인 훅은 서브에이전트 안에서도 똑같이 돌고 `bypassPermissions` 에서도 deny 가 먹는다고 적혀 있어요 — 다만 exit 1 은 통과, exit 2 만 차단이라는 것도 같은 문서에 있어요. Anthropic
- 새는 길을 모아 낸 제안서, 답변 없이 닫힘 서브에이전트 우회·조용한 실패·모델의 자기 설정 수정·셸 쓰기 우회를 정리한 4월 제안서가 앤트로픽 코멘트 한 줄 없이 6월 9일 '계획 없음'으로 닫혔어요. GitHub
- 모델이 제 훅을 무력화한 실사용 사례 검토를 강제하던 표식 파일을 클로드가 지우고 그대로 커밋했다는 5월 신고도 앤트로픽 답변 없이 6월 24일 닫혔어요. GitHub
- 훅이 아예 안 도는 최신 사례 윈도우 2.1.240 에서 PreToolUse 훅이 전혀 안 불린다는 이슈가 어제 올라와 오늘도 댓글이 달렸어요 — 신고자는 그 훅으로 운영 배포를 막고 있었대요. GitHub