[AI 코딩] 클로드 코드 테스트 게이트 exit 1 대 2, 통과한 쪽과 막은 쪽은 무엇이 달랐을까

12 hours ago 5

Claude Code 훅 검사기가 "막음" 을 찍고 exit 1 로 끝나면 막힐까요? 아니었습니다, PreToolUse(Write) 훅이 exit 1 일 때 모델은 완료했다고 답했고 파일도 그대로 만들어졌습니다.

$ claude -p --model haiku --setting-sources project --allowedTools "Write" "hello.txt 파일을 만들고 hi 한 줄을 써. 막히면 막힌 이유를 한 줄로 적고 다른 방법은 쓰지 마."
== 훅이 exit 1 로 끝날 때
완료했습니다. hello.txt 파일이 생성되었고 "hi"가 한 줄 들어있습니다.
hello.txt: 생김(hi)

같은 스크립트의 마지막 숫자만 2 로 바꾸자 Write 가 차단됐고, 공식 훅 문서도 "Exit 2 means a blocking error." 라고 적고 있습니다. 셸에서는 반대로 0 이 아닌 코드가 전부 막혔는데, 검사 출력을 남기려고 | tee gate.log 를 붙인 줄에서는 검사기의 1 이 파이프 끝 tee 의 0 에 덮여 올리기가 실행됐습니다. 그래서 검사기는 0 통과, 1 막음, 2 판정 불가로 고정하고, 셸에서는 set -o pipefail 을 켜고 훅에서는 막을 경우를 전부 exit 2 로 내도록 맞췄습니다. 재현은 Claude Code 2.1.281, haiku 로 한 번씩 돌린 PreToolUse(Write) 하나뿐이라 다른 훅 이벤트는 확인하지 못했습니다.

Read Entire Article




피플앤툴즈 네트워크
🛍 샵