Claude Code✓ 공식 문서로 확인10월 23일 수집
클로드 코드 도구 호출을 막은 규칙·훅·샌드박스를 safety_event로 확인하는 법
클로드 코드 v2.1.307부터 OpenTelemetry 로그에 claude_code.safety_event 이벤트가 나온다. 도구 호출을 거절하거나 승인을 물은 쪽이 권한 규칙인지 훅인지, auto 모드 분류기나 샌드박스인지를 category 값으로 가린다. 무인 실행이 어디서 왜 멈췄는지 찾을 때 쓴다.
- 텔레메트리를 켜고 로그 이벤트를 내보낸다. 이 이벤트를 따로 켜는 설정은 없고, 다른 이벤트와 함께 나간다.
export CLAUDE_CODE_ENABLE_TELEMETRY=1
export OTEL_LOGS_EXPORTER=console
claude
event.name이safety_event인 기록에서category와decision을 본다. 자주 나오는 값은 이렇다.
permission_rule,managed_policy는 거부·확인 권한 규칙이다. 어느 설정에서 왔는지는rule_source에 있다.hook은PreToolUse나PermissionRequest훅이 걸린 경우다.auto_mode_block은 auto 모드 분류기가 막은 경우다.safety_check는 작업 디렉터리 밖을 읽거나 쓰는 것 같은 내장 점검이다. 점검 이름은circuit_breaker에 나온다.sandbox_network는 샌드박스 네트워크 프록시가 연결을 거절한 경우로, 거절 횟수가sandbox_violation_count에 찍힌다.
- safety_event에는 명령, 파일 경로, 호스트 이름이 없다. 막힌 명령까지 보려면 도구 상세 로그를 켜고 같은
tool_use_id의tool_decision이벤트에서tool_parameters를 읽는다. 이 설정을 켜면 Bash 명령과 파일 경로가 로그에 남으니 로그가 어디로 가는지 먼저 확인한다.
export OTEL_LOG_TOOL_DETAILS=1
-p 실행에 --permission-prompt-tool도 --permission-prompts none도 주지 않았다면, 답할 사람이 없어 거절된 호출은 safety_event를 남기지 않는다. 그때는 decision이 reject, source가 config인 tool_decision 이벤트를 찾는다.
출처