Claude Code가 사용량을 빠르게 소진하는 7가지 버그 — Extra Usage 전환 시 캐시 TTL이 5분으로 강등되는 최악의 버그 포함
I reverse-engineered why Claude Code burns through your usage so fast. 7 bugs that stack on top of each other — and the worst one activates when Extra Usage kicks in
TL;DR Highlight
Claude Code CLI의 7가지 버그는 Extra Usage 전환으로 캐시 TTL을 1시간에서 5분으로 강등해 사용 비용을 2.8배 폭등시킨다.
Who Should Read
Claude Code CLI를 사용하는 개발자, 특히 Max 플랜이나 Extra Usage를 쓰는 구독자. 최근 사용량이 평소보다 빠르게 소진된다고 느끼는 사람에게 필독.
Core Mechanics
- 가장 심각한 버그: cli.js 내부 함수가 Extra Usage 상태를 감지하면 서버에 요청하는 캐시 TTL을 1시간에서 5분으로 자동 강등시킨다. 5분 이상 쉬면 220K 컨텍스트 기준 턴당 비용이 $0.22에서 $0.61로 2.8배 오른다.
- 이 강등은 클라이언트 측에서만 일어난다. 서버는 1시간 TTL 요청을 정상적으로 수락하며, cli.js의 해당 함수를 항상 true를 반환하도록 한 줄 패치하면 서버가 1시간을 준다.
- '죽음의 나선' 구조: 다른 버그들이 플랜 사용량을 빠르게 소진 → Extra Usage 활성화 → 캐시 5분 강등 → 화장실 한 번 다녀오면 풀 리빌드 → Extra Usage 순식간에 고갈 → 5시간 리셋까지 잠금.
- 네이티브 인스톨러 바이너리는 커스텀 Bun 런타임을 포함하는데, 이 런타임이 모든 요청에서 캐시 prefix를 오염시킨다. `npm install`로 설치하면 해결되며, `file $(which claude)` 결과가 ELF 바이너리가 아닌 symlink여야 정상이다.
- v2.1.69~v2.1.90 사이(28일, 20개 버전) 세션 재개 시 특정 첨부 타입이 누락되어 매번 캐시 미스가 발생했다. v2.1.91에서 수정됨.
- Autocompact 기능에 circuit breaker가 없어 실패한 compaction이 무한 재시도됐다. 내부 소스 주석에 1,279개 세션에서 50회 이상 연속 실패한 기록이 남아있었으며, v2.1.89에서 수정됨.
- 클라이언트가 트랜스크립트가 길어지면 실제 API 호출 없이 가짜 rate limit 에러를 생성한다. 응답에 `model: synthetic`, 토큰 0이 찍힌다. 아직 미수정.
- 서버 측 compaction이 세션 중 tool result를 알림 없이 제거해 캐시를 깨뜨린다. 클라이언트에서 패치 불가. 아직 미수정.
Evidence
- WSL에서 Max 20x 플랜을 쓰는 한 사용자가 최근 사용량 소진이 눈에 띄게 빨라졌는데, 네이티브 설치에서 npm 버전으로 전환하자 소진 속도가 정상으로 돌아왔다고 직접 경험을 공유했다.
- 반론으로, 일부 Max 플랜 헤비유저는 몇 달 전과 비교해 사용량에 전혀 변화가 없다고 주장하며 '왜 모두에게 발생하지 않는가'를 물었다. 이에 대해 OP는 버그 1+3+5가 동시에 발생해야 2시간 내 주간 할당량을 소진하는 최악의 상황이 된다고 설명했다.
- 네이티브 인스톨러가 처음 나왔을 때 써보다가 문제가 생겨 npm 버전으로 돌아간 사용자가 있었는데, 그 이후 최근의 이슈들을 전혀 경험하지 않았다는 사례가 댓글에 공유됐다.
- 캐시 관련 분석 도구 링크가 댓글에 공유됐다: `https://github.com/abhiyan-maitri/claude-usage-report` — 프롬프트별 캐시 사용량을 확인할 수 있다.
- 포스트가 Claude로 작성됐다는 점에 대한 비판이 많았다. '이 서브는 봇이 봇을 위해 포스트를 올리는 곳이 됐다'는 냉소적 반응과 함께, Claude Code 팀이 Claude가 생성한 코드를 더 이상 꼼꼼히 검토하지 않기 때문에 이런 버그들이 20개 릴리즈 동안 방치됐다는 비판도 나왔다.
- Anthropic 팀이 비용을 최대한 보조해주고 있는 상황이니, 이 버그들이 수정되면 Anthropic에도 긍정적인 영향이 있을 것이라며 선의를 전제하는 시각도 있었다.
How to Apply
- 네이티브 인스톨러로 Claude Code를 설치했다면 지금 바로 npm으로 재설치하라. `file $(which claude)` 결과가 ELF 바이너리로 나오면 네이티브 버전이다. `npm install -g @anthropic-ai/claude-code`로 전환하면 캐시 prefix 오염 버그(#1)가 해결된다.
- 현재 버전이 v2.1.91 미만이라면 즉시 업데이트하라. 세션 재개 캐시 미스 버그(#2)와 Autocompact 무한 루프 버그(#3)가 각각 v2.1.91, v2.1.89에서 수정됐다.
- Extra Usage 비용 폭증이 우려된다면 cli.js의 캐시 TTL 결정 함수를 항상 1시간을 반환하도록 패치할 수 있다. 단, 업데이트 시 덮어써지므로 업데이트 후 재적용이 필요하다. GitHub issue anthropics/claude-code#43566에 기술적 세부 사항이 있다.
Code Example
# 현재 설치 방식 확인
file $(which claude)
# 결과가 'ELF 64-bit...' → 네이티브 바이너리 (버그 있음)
# 결과가 'symbolic link...' → npm 버전 (정상)
# npm으로 전환
npm install -g @anthropic-ai/claude-code
# 캐시 설정 확인
cat ~/.claude.json | grep -A5 'cachedGrowthBookFeatures'Terminology
관련 논문
Swift로 LLM 학습시키기 Part 1: 행렬 곱셈을 Gflop/s에서 Tflop/s로 끌어올리기
Apple Silicon에서 Swift로 직접 행렬 곱셈 커널을 구현하며 CPU, SIMD, AMX, GPU(Metal)를 단계별로 최적화해 Gflop/s에서 Tflop/s 수준까지 성능을 높이는 과정을 상세히 설명한 글이다. 프레임워크 없이 LLM 학습의 핵심 연산을 밑바닥부터 구현하고 싶은 개발자에게 Apple Silicon의 성능 한계를 체감할 수 있는 드문 자료다.
fsync 없이 로컬 스토리지 엔진을 crash-consistent하게 만든 방법
FractalBits가 fsync 없이 SSD 전용 KV 스토리지 엔진을 구현해 동일 조건 대비 약 65% 높은 쓰기 성능을 달성한 설계 방법을 공유했다. fsync의 메타데이터 오버헤드를 피하기 위해 사전 할당, O_DIRECT, SSD 원자 쓰기 단위 정렬 저널을 조합한 구조가 핵심이다.
Google Chrome, 사용자 동의 없이 4GB AI 모델(Gemini Nano)을 몰래 설치
Google Chrome이 사용자 동의 없이 Gemini Nano 4GB 모델 파일을 자동 다운로드하고, 삭제해도 재다운로드되는 문제가 발견됐다. GDPR 위반 가능성과 수십억 대 기기에 적용될 때의 환경 비용 문제가 제기되고 있다.
OpenAI가 대규모 저지연 Voice AI를 제공하는 방법
OpenAI가 9억 명 이상의 사용자에게 실시간 음성 AI를 제공하기 위해 WebRTC 스택을 어떻게 재설계했는지 설명하는 글로, relay + transceiver 분리 아키텍처의 설계 결정과 trade-off를 상세히 다룬다.
Truncated Decoding Tree의 결정론적 탐색을 통한 효율적인 Test-Time Inference
Self-consistency의 중복 샘플링 낭비를 없애는 결정론적 트리 탐색 디코딩 기법 DLE로 수학/코드 추론 성능과 속도를 동시에 개선
GoModel – Go로 작성된 오픈소스 AI Gateway
OpenAI, Anthropic, Gemini 등 여러 AI 프로바이더를 하나의 OpenAI 호환 API로 묶어주는 Go 기반 오픈소스 AI 게이트웨이로, LiteLLM의 컴파일 언어 대안이다.