포스트

Claude Code 캐시 버그 11종 포렌식 분석, Max 플랜 토큰 10-20배 소모 원인 추적

목차

  1. 개요
  2. 분석 방법론
  3. 확인된 11개 클라이언트 버그
  4. 수치로 본 영향
  5. 의미와 시사점
  6. 결론
  7. Reference

개요

Max 플랜 사용자들이 Claude Code의 토큰이 예상보다 10-20배 빠르게 소진된다고 호소해왔다. ArkNill이 공개한 claude-code-hidden-problem-analysis 저장소는 이 현상을 정책 변경이 아닌 클라이언트 측 구현 버그로 규정하고, 11개 확인 버그와 4개 예비 발견을 정리한 측정 기반 분석 결과이다. 모든 결론은 JSONL 세션 로그와 레이트 리밋 헤더 검사로 검증되었다.

분석 방법론

분석은 단일 사용자 추측이 아닌 다층 검증으로 구성되었다.

cc-relay라는 투명 프록시를 사용해 4월 1일부터 8일 사이 129개 세션, 17,610개 요청을 캡처했다. 532개의 JSONL 파일, 총 158.3 MB의 세션 로그를 자동 스캔으로 분석했다. v2.1.89에서 시작된 회귀를 확인하기 위해 v2.1.68로 다운그레이드한 결과 캐시 적중률이 36%에서 97.6%로 회복되는 것을 재현했다. 15명 이상의 커뮤니티 멤버가 독립 분석으로 동일 이슈를 교차 검증했다.

확인된 11개 클라이언트 버그

캐시 손상 계열

B1 (Sentinel) 버그는 독립 실행 바이너리가 캐시 프리픽스를 손상시켜 캐시 읽기를 약 98%에서 4-17%까지 떨어뜨린다. B2 (Resume) 버그는 --resume 사용 시 전체 컨텍스트가 캐시 없이 재전송되어 재개할 때마다 완전한 캐시 미스를 유발한다. B2a (SendMessage)는 Agent SDK의 resume 함수가 시스템 프롬프트조차 캐시 읽기를 0으로 보고하는 문제이다.

서브에이전트 모델 간 캐시 효율 격차도 큰데, Haiku는 58.1%, Opus는 98.8%로 40 포인트 차이를 보였다.

세션 로그 손상 계열

B8 (Log Duplication) 버그는 확장 사고(extended thinking)가 JSONL 항목을 평균 2.37배, 최대 4.42배 중복 기록한다. B8a (JSONL Corruption)는 동시 도구 실행 시 비원자적 쓰기가 발생해 세션 파일이 영구 손상되고 도구 결과가 누락되는 문제이다.

토큰 인플레이션 계열

10-20배 토큰 소진을 만드는 메커니즘은 여러 갈래로 나뉜다.

확장 사고 토큰은 사용자 할당량에 차감되지만 API 응답의 output_tokens 필드에는 보이지 않아 보이지 않는 비용을 만든다. B5 (Budget Cap)는 도구 결과의 누적 토큰이 200K를 넘으면 조용히 잘려나가는 동작으로, 측정된 이벤트가 72,839건에 달한다. B4 (Microcompact)는 컨텍스트가 조용히 제거되는 현상으로 3,782 이벤트에서 15,998개 항목이 제거되었으며 대화 품질을 저하시킨다. B3 (False Rate Limiter)는 클라이언트 측 로직이 API 호출 0건 상태에서 65개 세션에 걸쳐 151개의 가짜 “Rate limit reached” 에러를 생성하는 문제이다.

수치로 본 영향

각 버그가 만드는 정량 지표는 다음과 같다.

항목측정값
분석된 세션 수129개
분석된 요청 수17,610건
JSONL 파일 수532개
총 데이터 크기158.3 MB
B1 캐시 적중률 하락98% to 4-17%
B8 평균 로그 중복 배수2.37배
B5 트리거 이벤트72,839건
B4 제거된 항목 수15,998개
B3 가짜 rate limit 에러151개
30분 이하 세션 요청당 비용약 0.20달러
5시간 이상 세션 요청당 비용약 0.33달러

레이트 리밋 헤더 분석에서 3,702개 요청 중 100%가 5시간 윈도우에 의해 제한되었으며, 사용량 1% 단위가 9K-16K 토큰 정도만 가시화되는 “이중 5h/7d 윈도우 쿼터 구조”가 드러났다. 요청 비율은 평균 2.72 req/min, 버스트 피크는 60초당 86 req에 달했다. Microcompact의 강도는 메시지 수에 비례해 증가하여 10개 이하 메시지에서는 이벤트당 1.6개 항목이 제거되지만 200개 이상 메시지에서는 6.6개 항목이 제거된다.

커뮤니티 포렌식에서는 18일 JSONL 분석을 통해 64배 예산 감소와 캐시 이슈와 무관한 34-143배 용량 감소도 문서화되었다.

의미와 시사점

이 분석의 핵심은 토큰 인플레이션의 원인이 Anthropic의 정책 변경이 아니라 Claude Code 클라이언트 자체의 구현 결함이라는 점이다. v2.1.92부터 v2.1.97까지 6개 연속 릴리스가 위 버그들에 대한 수정을 포함하지 않았다는 점도 changelog 비교로 확인되었다.

사용자 입장에서 v2.1.68과 같은 이전 버전으로 다운그레이드 시 캐시 적중률이 회복된다는 점은 회귀의 명확한 증거이다. 다만 다운그레이드는 최신 기능 손실을 의미하므로 임시방편일 뿐이다.

JSONL 손상이 원자적 쓰기 누락에서 비롯된다는 점은 동시 도구 실행이 많은 워크플로우, 특히 멀티 에이전트 환경에서 더 심각한 영향을 미칠 수 있다.

결론

Claude Code의 Max 플랜 토큰 소진 가속 현상은 단일 원인이 아니라 11개 이상의 중첩된 클라이언트 버그가 만든 결과이다. 캐시 손상, 세션 로그 중복, 보이지 않는 thinking 토큰, 가짜 rate limiter가 동시에 작동하면서 사용자 체감 비용을 10-20배까지 끌어올렸다. 정량 분석 기반의 이러한 보고서는 단순한 불만 토로와 달리 클라이언트 수정 우선순위 설정에 직접 활용할 수 있는 형태로 정리되어 있다.

Reference