
follow-up: anthropic quietly switched the default cache TTL from 1 hour to 5 minutes on april 2. here's the data.
핵심 포인트
- 1Anthropic은 4월 2일경 Claude Code의 캐시 TTL(Time-to-Live)을 1시간에서 5분으로 예고 없이 변경했으며, 이는 데이터 분석을 통해 확인되었습니다.
- 2이 변경으로 캐시 bust 빈도가 5배 이상 증가하여 비용이 크게 늘어났고, 긴 작업이나 세션 중간에 컨텍스트를 재구축하는 비용이 증가하는 문제가 발생했습니다.
- 3저자는 이러한 문제를 완화하기 위해 extended context 비활성화를 제안하고, 캐시 만료를 모니터링하며 경고하는 사용자 정의 훅을 공유했습니다.
이 논문은 Claude Code의 캐시 유효 기간(TTL)이 ephemeral_1h_input_tokens에서 ephemeral_5m_input_tokens로 예고 없이 변경된 사실과 그에 따른 재정적, 기능적 영향을 분석합니다.
핵심 방법론:
저자는 자신의 Claude Code 사용 데이터를 분석하여 이 변경 사항을 발견했습니다. 구체적으로, 저자는 1,140개 세션에 걸쳐 로깅된 JSONLs (JSON Lines) 파일을 검사하고 conversations.db를 쿼리했습니다. 각 대화 턴(turn)에서 ephemeral_1h_input_tokens와 ephemeral_5m_input_tokens 중 어떤 캐시 계층이 사용되었는지 기록되었으며, 각 턴에서는 둘 중 하나만 0이 아닌 값을 가졌습니다. 저자는 이 데이터를 날짜별로 집계하여 캐시 계층 사용 분포를 시각화했습니다. 분석 결과, 2024년 3월 1일부터 4월 1일까지는 모든 턴이 ephemeral_1h를 사용했으나, 4월 2일(06:23 UTC ~ 06:55 UTC 사이)에는 두 캐시 계층이 혼합되어 사용되었고, 4월 3일부터는 모든 턴이 ephemeral_5m을 사용했음이 명확히 드러났습니다.
영향 분석:
TTL 변경은 사용자 비용과 시스템 동작에 중대한 영향을 미쳤습니다.
- 비용 증가:
- 캐시 버스트(cache bust) 빈도가 5.1배 증가하여, 변경 전 하루 39회에서 변경 후 하루 199회로 늘어났습니다.
- 일일 비용은 15.54로 증가했습니다.
- 이는 월별 $277.80의 추가 비용을 발생시킬 것으로 예상됩니다.
1h-tier캐시 쓰기 비용이 토큰당 더 높았기 때문에, 캐시 버스트당 비용은 약간 감소했지만, 빈도의 급증이 이를 상쇄하고 전체 비용을 증가시켰습니다.
- 시스템 동작 변화:
- 세션당 "reads per session"과 "redundant reads" (단일 세션에서 동일 파일을 회 읽는 경우)가 TTL 전환 이후 증가하는 경향을 보였습니다. 이는 캐시 만료 시 Claude가 컨텍스트를 잃고 파일을 다시 읽어 컨텍스트를 재구축하려고 시도하기 때문입니다.
- 이러한 재읽기는 대화 기록을 늘리고, 다음 캐시 재구축 비용을 증가시켜 문제가 복합적으로 작용합니다.
- 5분 이상 소요되는 "backgrounded tasks" (예: 긴 tool call, agent 실행)나
/loop,/schedule명령은 캐시를 만료시키며, 작업 완료 후 세션 복귀 시 컨텍스트 재구축을 위해 전체 입력 토큰 비용이 발생합니다.
완화 및 권장 설정:
저자는 이러한 문제를 완화하기 위한 해결책을 제시합니다.
- 캐시 경고 훅(Hooks):
claude-memory플러그인에 다음 훅을 추가하여 캐시 만료를 감지하고 경고합니다:plugins/claude-memory/hooks/cache-warn-stop.pyplugins/claude-memory/hooks/cache-expiry-warn.pyplugins/claude-memory/hooks/cache-warn-3min.sh
/get-token-insights 스킬을 통해 설치하거나 ~/.claude/settings.json에 수동으로 추가할 수 있습니다.CLAUDE_CODE_DISABLE_1M_CONTEXT설정:"env": { "CLAUDE_CODE_DISABLE_1M_CONTEXT": "1" }설정을 통해 컨텍스트를 1M 토큰에서 200k 토큰으로 제한합니다.- 캐시 만료 시 전체 컨텍스트를 재구축해야 하므로, 컨텍스트 크기가 작을수록 재구축 비용이 5배 절감됩니다. 이는 비용 관리 측면에서 가장 큰 영향을 미 미치는 설정입니다.
showClearContextOnPlanAccept설정:"showClearContextOnPlanAccept": true는 plan 모드에서 한 세션에서 계획을 수립하고 다른 세션에서 구현을 계속할 때 유용하다고 언급됩니다.