점심을 먹고 돌아왔더니 Claude Code 대화 위에 Compacted while idle, before the prompt cache expired 같은 줄이 붙어 있다면, 버그가 아닙니다. idle compaction이라는 기능입니다. 2.1.299에 터미널에 들어왔고, 2.1.314부터 VS Code와 데스크톱 앱 Code 탭에서도 돕니다.
근거: 공식 문서 settings: idleCompaction, Claude Code CHANGELOG 2.1.299·2.1.302·2.1.314. 2026년 11월 4일에 읽었습니다.
언제 도나
다섯 조건이 모두 맞을 때만 돕니다.
- 세션: 대화형 터미널, VS Code 확장의 채팅 패널, 데스크톱 앱 Code 탭(내 컴퓨터나 SSH에서 도는 세션)
- 자동 압축:
autoCompactEnabled가 켜져 있음 - 캐시: 대화가 1시간짜리 프롬프트 캐시를 쓰고 있음
- 크기: 맥락이 기준(기본 200,000 토큰)을 넘음
- 비운 시간: 마지막 요청 뒤 한 시간쯤 지났고, 그때까지 컴퓨터가 깨어 있음
CHANGELOG 2.1.299는 시점을 “약 54분”으로 적었습니다. 한 시간짜리 캐시가 끝나기 직전입니다.
왜 하나
프롬프트 캐시가 살아 있는 동안은 긴 대화를 다시 보내도 캐시에서 읽습니다. 캐시가 끝난 뒤 말을 걸면 긴 대화 전체를 처음부터 다시 처리합니다. 그래서 캐시가 끝나기 전에 요약을 만들어 두고, 다음 메시지에는 요약만 싣습니다. CHANGELOG 표현으로 “so your next message doesn’t reprocess it all”입니다.
대신 요약이라 세부 내용은 줄어듭니다. 무엇이 남는지는 What survives compaction에 있습니다.
끄는 법
긴 디버깅처럼 원문 그대로의 맥락이 필요하면 끄면 됩니다.
- 터미널에서
/config를 열고 Idle compaction 줄을 바꿉니다(2.1.302 이상). 사용자 설정에 저장되고 바로 적용됩니다. - 또는 settings.json 에 넣습니다(2.1.290 이상).
{
"idleCompaction": false
}
DISABLE_AUTO_COMPACT를 켜면 자동 압축과 함께 꺼집니다.
/config에 줄이 안 보이면, 프로젝트·로컬·관리 설정이나 --settings 플래그가 이 값을 이미 정한 경우입니다. 그 설정 파일에서 바꿔야 합니다.
기준 바꾸기
20만 토큰보다 작은 대화에도 적용하고 싶다면 CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS로 기준을 내립니다. 최저값은 100,000입니다.
{
"env": { "CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS": "150000" }
}
오늘 할 일
/config를 열어 Idle compaction 줄이 어떻게 되어 있는지 확인하세요. 대부분은 켜 둔 채로 두면 됩니다. 비운 사이에 요약된 게 불편했다면 그때 끄면 됩니다.
쇼츠로 보기
이 글은 비치콤버스 쇼츠 No.25의 짝 글입니다. 짧은 주소 beachcombers.co.kr/s/25.