<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Analysis on ICE-ICE-BEAR-BLOG</title><link>https://ice-ice-bear.github.io/ko/tags/analysis/</link><description>Recent content in Analysis on ICE-ICE-BEAR-BLOG</description><generator>Hugo -- gohugo.io</generator><language>ko</language><lastBuildDate>Fri, 03 Apr 2026 00:00:00 +0900</lastBuildDate><atom:link href="https://ice-ice-bear.github.io/ko/tags/analysis/index.xml" rel="self" type="application/rss+xml"/><item><title>Claude Code 캐시 버그 실측 분석: 7가지 버그와 그 영향</title><link>https://ice-ice-bear.github.io/ko/posts/2026-04-03-claude-code-cache-analysis/</link><pubDate>Fri, 03 Apr 2026 00:00:00 +0900</pubDate><guid>https://ice-ice-bear.github.io/ko/posts/2026-04-03-claude-code-cache-analysis/</guid><description>&lt;img src="https://ice-ice-bear.github.io/" alt="Featured image of post Claude Code 캐시 버그 실측 분석: 7가지 버그와 그 영향" /&gt;&lt;h2 id="개요"&gt;개요
&lt;/h2&gt;&lt;p&gt;2026년 4월 1일, Claude Code Max 20 플랜($200/월)을 사용하던 한 개발자가 평범한 코딩 세션에서 70분 만에 사용량 100%를 소진하는 경험을 했다. JSONL 로그 분석 결과 cache read 비율이 평균 36.1%(최저 21.1%)에 불과했다 — 정상이라면 90% 이상이어야 한다.&lt;/p&gt;
&lt;p&gt;이것이 &lt;a class="link" href="https://github.com/ArkNill/claude-code-cache-analysis" target="_blank" rel="noopener"
 &gt;ArkNill/claude-code-cache-analysis&lt;/a&gt; 레포지토리가 탄생한 배경이다. 개인 디버깅에서 시작해 커뮤니티 기반 체계적 분석으로 발전한 이 프로젝트는, 프록시(cc-relay)를 통한 실측 데이터로 &lt;strong&gt;5개 레이어에 걸친 7가지 버그&lt;/strong&gt;를 확인했다.&lt;/p&gt;
&lt;h2 id="배경-70분-만에-소진된-플랜"&gt;배경: 70분 만에 소진된 플랜
&lt;/h2&gt;&lt;p&gt;v2.1.89 standalone 바이너리에서 캐시 read 비율이 급락했다. 즉각적인 workaround로 v2.1.68(npm)로 다운그레이드하자 cache read가 &lt;strong&gt;97.6% 평균&lt;/strong&gt;(119 entries)으로 즉시 회복 — 회귀가 v2.1.89에서 발생했음이 확인됐다.&lt;/p&gt;
&lt;p&gt;이후 &lt;code&gt;ANTHROPIC_BASE_URL&lt;/code&gt; 환경 변수를 이용한 투명 모니터링 프록시(cc-relay)를 구성해 요청별 데이터를 수집하기 시작했다. 91개 이상의 관련 GitHub 이슈에서 같은 현상을 보고한 다른 사용자들과 함께, 퍼즐 조각들을 하나의 구조화된 분석으로 통합했다.&lt;/p&gt;
&lt;h2 id="7가지-확인된-버그-v2191-기준"&gt;7가지 확인된 버그 (v2.1.91 기준)
&lt;/h2&gt;&lt;pre class="mermaid" style="visibility:hidden"&gt;flowchart TD
 A["Claude Code 요청"] --&gt; B{"버전 확인"}
 B --&gt;|"v2.1.89 standalone"| C["B1: Sentinel &amp;lt;br/&amp;gt; 캐시 prefix 손상 &amp;lt;br/&amp;gt; → 4-17% cache read"]
 B --&gt;|"--resume 사용"| D["B2: Resume &amp;lt;br/&amp;gt; 전체 컨텍스트 재전송 &amp;lt;br/&amp;gt; → 20x 비용"]
 B --&gt;|"v2.1.91"| E["캐시 정상 95-99%"]
 E --&gt; F{"추가 버그 확인"}
 F --&gt; G["B3: False RL &amp;lt;br/&amp;gt; 가짜 Rate Limit 에러"]
 F --&gt; H["B4: Microcompact &amp;lt;br/&amp;gt; tool 결과 조용히 삭제"]
 F --&gt; I["B5: Budget Cap &amp;lt;br/&amp;gt; 200K 집계 제한 &amp;lt;br/&amp;gt; → 1-41자로 잘림"]
 F --&gt; J["B8: Log Inflation &amp;lt;br/&amp;gt; JSONL 중복 항목 &amp;lt;br/&amp;gt; → 2.87x 부풀림"]&lt;/pre&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;버그&lt;/th&gt;
 &lt;th&gt;동작&lt;/th&gt;
 &lt;th&gt;영향&lt;/th&gt;
 &lt;th&gt;v2.1.91 상태&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;B1&lt;/strong&gt; Sentinel&lt;/td&gt;
 &lt;td&gt;Standalone 바이너리가 캐시 prefix 손상&lt;/td&gt;
 &lt;td&gt;4-17% cache read (v2.1.89)&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;수정됨&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;B2&lt;/strong&gt; Resume&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;--resume&lt;/code&gt;이 전체 컨텍스트를 캐시 없이 재전송&lt;/td&gt;
 &lt;td&gt;재시작당 20x 비용&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;수정됨&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;B3&lt;/strong&gt; False RL&lt;/td&gt;
 &lt;td&gt;클라이언트가 가짜 에러로 API 호출 차단&lt;/td&gt;
 &lt;td&gt;즉각적인 &amp;ldquo;Rate limit reached&amp;rdquo;, API 호출 0건&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;미수정&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;B4&lt;/strong&gt; Microcompact&lt;/td&gt;
 &lt;td&gt;세션 중간에 tool 결과가 조용히 삭제&lt;/td&gt;
 &lt;td&gt;컨텍스트 품질 저하&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;미수정&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;B5&lt;/strong&gt; Budget Cap&lt;/td&gt;
 &lt;td&gt;tool 결과 200K 집계 제한&lt;/td&gt;
 &lt;td&gt;이전 결과가 1-41자로 잘림&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;미수정&lt;/strong&gt; (MCP만 우회 가능)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;B8&lt;/strong&gt; Log Inflation&lt;/td&gt;
 &lt;td&gt;Extended thinking이 JSONL 항목 중복&lt;/td&gt;
 &lt;td&gt;2.87x 로컬 토큰 부풀림&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;미수정&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Server&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;피크 시간 제한 강화 + 1M 빌링 버그&lt;/td&gt;
 &lt;td&gt;실효 쿼터 감소&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;의도적 설계&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="핵심-버그-상세-분석"&gt;핵심 버그 상세 분석
&lt;/h2&gt;&lt;h3 id="b1-sentinel-버그-수정됨"&gt;B1: Sentinel 버그 (수정됨)
&lt;/h3&gt;&lt;p&gt;Standalone 바이너리는 단일 ELF 64비트 실행 파일(~228MB, 내장 Bun 런타임)로 배포된다. 이 바이너리에는 &lt;code&gt;cch=00000&lt;/code&gt;으로 캐시 prefix를 교체하는 Sentinel 메커니즘이 포함되어 있었고, 이것이 캐시 prefix를 손상시켰다.&lt;/p&gt;
&lt;p&gt;npm 패키지(&lt;code&gt;cli.js&lt;/code&gt;, ~13MB, Node.js 실행)에는 이 로직이 없어 버그에 면역이었다.&lt;/p&gt;
&lt;p&gt;v2.1.91에서 &lt;code&gt;stripAnsi&lt;/code&gt;가 &lt;code&gt;Bun.stripANSI&lt;/code&gt;를 통해 라우팅되도록 변경되면서 Sentinel 격차가 닫혔다. &lt;strong&gt;현재 npm과 standalone은 동일하게 84.7% cold-start cache read를 달성한다.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="b2-resume-버그-수정됨"&gt;B2: Resume 버그 (수정됨)
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;--resume&lt;/code&gt; 플래그 사용 시 전체 컨텍스트가 캐시 없이 billable input으로 재전송됐다. 재시작당 최대 20x 비용이 발생하는 심각한 버그였다. v2.1.91에서 transcript chain break fix가 적용됐지만, &lt;strong&gt;&lt;code&gt;--resume&lt;/code&gt; 및 &lt;code&gt;--continue&lt;/code&gt; 사용 자체를 피하는 것을 권장한다.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="b3-false-rate-limiting-미수정"&gt;B3: False Rate Limiting (미수정)
&lt;/h3&gt;&lt;p&gt;클라이언트 측에서 실제 API 호출 없이 &amp;ldquo;Rate limit reached&amp;rdquo; 에러를 생성한다. 151개 항목 / 65개 세션에서 측정됐다. API를 전혀 호출하지 않으면서 마치 서버 제한에 걸린 것처럼 동작한다.&lt;/p&gt;
&lt;h3 id="b4--b5-microcompact와-budget-cap-미수정"&gt;B4 &amp;amp; B5: Microcompact와 Budget Cap (미수정)
&lt;/h3&gt;&lt;p&gt;세션 중간에 tool 결과가 조용히 삭제되는 현상(327건 감지)과, 200K 집계 제한으로 이전 파일 읽기 결과가 1-41자로 잘리는 현상이 함께 작동한다. &lt;strong&gt;약 15-20회 tool 사용 후 이전 컨텍스트가 사실상 사라진다고 볼 수 있다.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="cache-ttl-버그-아님"&gt;Cache TTL (버그 아님)
&lt;/h3&gt;&lt;p&gt;13시간 이상 유휴 상태 후 재개 시 350K 토큰 캐시가 완전 재구성된다. 캐시 write 비용은 $3.75/M, read는 $0.30/M — 12.5x 차이다. 5-26분의 짧은 유휴는 96%+ 캐시를 유지한다. 이것은 버그가 아닌 설계(5분 TTL)지만 알아두어야 할 사항이다.&lt;/p&gt;
&lt;h2 id="npm-vs-standalone-v2190-벤치마크"&gt;npm vs Standalone: v2.1.90 벤치마크
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;지표&lt;/th&gt;
 &lt;th&gt;npm&lt;/th&gt;
 &lt;th&gt;Standalone&lt;/th&gt;
 &lt;th&gt;승자&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;전체 cache read %&lt;/td&gt;
 &lt;td&gt;86.4%&lt;/td&gt;
 &lt;td&gt;86.2%&lt;/td&gt;
 &lt;td&gt;동률&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;안정 세션&lt;/td&gt;
 &lt;td&gt;95-99.8%&lt;/td&gt;
 &lt;td&gt;95-99.7%&lt;/td&gt;
 &lt;td&gt;동률&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Sub-agent cold start&lt;/td&gt;
 &lt;td&gt;79-87%&lt;/td&gt;
 &lt;td&gt;47-67%&lt;/td&gt;
 &lt;td&gt;npm&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Sub-agent warmed (5+ req)&lt;/td&gt;
 &lt;td&gt;87-94%&lt;/td&gt;
 &lt;td&gt;94-99%&lt;/td&gt;
 &lt;td&gt;동률&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;전체 테스트 사용량&lt;/td&gt;
 &lt;td&gt;Max 20의 7%&lt;/td&gt;
 &lt;td&gt;Max 20의 5%&lt;/td&gt;
 &lt;td&gt;동률&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;v2.1.91에서는 sub-agent cold start 격차도 닫혀 &lt;strong&gt;양쪽 모두 동일하게 84.7%를 달성한다.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="anthropic의-공식-입장"&gt;Anthropic의 공식 입장
&lt;/h2&gt;&lt;p&gt;Lydia Hallie(Anthropic)는 4월 2일 X(트위터)에 다음과 같이 게시했다:&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&amp;ldquo;피크 시간 제한이 더 엄격해졌고 1M 컨텍스트 세션이 더 커졌습니다. 몇 가지 버그를 수정했지만, 과금 초과는 없었습니다.&amp;rdquo;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;권장 사항으로는 Sonnet을 기본으로 사용, effort level 낮추기, 재개 대신 새 세션 시작, &lt;code&gt;CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000&lt;/code&gt; 설정 등을 제시했다.&lt;/p&gt;
&lt;p&gt;분석팀의 측정 데이터는 캐시 버그 수정에는 동의하지만, Anthropic이 언급하지 않은 5개의 추가 메커니즘을 식별했다.&lt;/p&gt;
&lt;h2 id="지금-당장-할-수-있는-것"&gt;지금 당장 할 수 있는 것
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;v2.1.91로 업데이트&lt;/strong&gt; — 최악의 캐시 회귀가 수정됨&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;npm과 standalone 모두 v2.1.91에서 동일&lt;/strong&gt; — 어느 쪽이든 괜찮음&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;--resume&lt;/code&gt;과 &lt;code&gt;--continue&lt;/code&gt; 사용 금지&lt;/strong&gt; — 전체 컨텍스트가 billable input으로 재전송됨&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;주기적으로 새 세션 시작&lt;/strong&gt; — 200K tool 결과 한도(B5) 때문에 15-20회 tool 사용 후 이전 파일 읽기가 조용히 잘림&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;/dream&lt;/code&gt;과 &lt;code&gt;/insights&lt;/code&gt; 피하기&lt;/strong&gt; — 조용히 사용량을 소진하는 백그라운드 API 호출&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-jsonc" data-lang="jsonc"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// ~/.claude/settings.json — 자동 업데이트 비활성화
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;env&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;DISABLE_AUTOUPDATER&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="마치며"&gt;마치며
&lt;/h2&gt;&lt;p&gt;이 분석은 개인적인 디버깅에서 시작해 커뮤니티 기반의 체계적 조사로 발전한 좋은 사례다. &lt;code&gt;ANTHROPIC_BASE_URL&lt;/code&gt;을 이용한 투명 프록시라는 단순한 도구로, 91개 이상의 GitHub 이슈가 공유하는 현상의 근본 원인을 측정 데이터로 뒷받침했다.&lt;/p&gt;
&lt;p&gt;캐시 버그(B1, B2)는 v2.1.91에서 수정됐지만, 나머지 5개 버그는 여전히 활성 상태다. Max 플랜 사용자라면 위의 실용적 대응법을 적용하고, 새로운 버전 출시 시 DISABLE_AUTOUPDATER로 검증된 버전을 유지하는 전략이 유효하다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;원본 레포: &lt;a class="link" href="https://github.com/ArkNill/claude-code-cache-analysis" target="_blank" rel="noopener"
 &gt;ArkNill/claude-code-cache-analysis&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>