사내에 Claude Code를 OTel로 물려서 사용량 모니터링 하는 곳이라면 이번 업데이트 지나가지 말고 확인하세요. `claude_code.assistant_response` 로그 이벤트가 새로 붙었는데, 여기 모델 응답 텍스트가 통째로 들어갑니다.
문제는 기본값 처리입니다. `OTEL_LOG_ASSISTANT_RESPONSES`를 명시하지 않으면 기존 `OTEL_LOG_USER_PROMPTS` 값을 그대로 따라갑니다. 즉 프롬프트 로깅을 이미 켜둔 배포는 업그레이드하는 순간 응답 본문까지 수집이 시작됩니다. 옵트인처럼 보이지만 실제로는 상속 구조라 조용히 켜지는 케이스입니다.

실무에서 이게 왜 골치냐면, 프롬프트만 로깅하던 팀은 대개 "입력만 남기고 출력은 안 남긴다"는 전제로 데이터 보관 정책이나 마스킹 규칙을 짜둡니다. 그 전제가 업그레이드 한 번에 깨지는 거죠. 응답에는 코드 스니펫, 내부 경로, 가끔 모델이 되뇌는 자격증명 값까지 섞여 나오기 때문에 로그 저장소 접근 범위가 프롬프트만 있을 때와는 다른 등급이 됩니다.
프롬프트는 계속 남기고 응답만 빼려면 `OTEL_LOG_ASSISTANT_RESPONSES=0`을 명시적으로 박아두세요. 상속에 맡기지 말고 두 변수를 항상 짝으로 선언하는 걸 권합니다. 배포 매니페스트에 둘 다 없으면 다음 업그레이드 때 또 흔들립니다.

같이 들어온 `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB=1`도 챙길 만합니다. Bash 툴, hooks, MCP stdio 서버로 프로세스를 띄울 때 그 서브프로세스 환경변수에서 Anthropic·클라우드 자격증명을 제거해줍니다. MCP 서버를 로컬 stdio로 붙여 쓰다 보면 부모 프로세스 환경이 그대로 상속되면서 API 키가 하위 프로세스까지 흘러가는 경우가 있는데, 이걸 막아주는 스위치입니다. 이건 기본 활성이 아니라 직접 켜야 합니다.

정책 관점에서 보면 이번 변경의 핵심은 "응답 로깅이 새로 생겼다"가 아니라 "기존 프롬프트 로깅 설정이 트리거가 된다"는 부분입니다. 업그레이드 릴리스 노트만 훑고 넘어가면 놓치기 딱 좋은 지점이라 로깅 파이프라인 담당자에게 한 번 공유해 두는 걸 추천합니다.
댓글 3
아 안 그래도 요즘 보안 설정 때문에 은근히 신경 쓰였는데 이거 진짜 놓치기 쉬운 부분이네요
아 그럼 업뎃하고 가만히 냅두면 내 코드나 비번 같은 것도 다 로그에 남
헐 이거 생각 없이 업뎃했다가 응답 내용까지 다 털리는 거 아님?