Claude Code 컨텍스트 관리: /compact·/clear 차이
3,000줄짜리 로그를 읽힌 세션에서 /compact를 돌리고, 파일을 다시 읽지 말고 첫 오류의 작업 ID를 물었습니다. “모른다”고 하더라고요. 오류 개수와 줄 번호는 기억하는데, 원문에 있던 ID는 요약에 남아 있지 않았던 거죠.
컨텍스트가 꽉 차도 세션은 끊기지 않습니다. Claude Code가 대화를 요약으로 바꿔(압축) 이어 가니까요.
다만 남는 건 결론에 가깝고 원문의 세부 값은 빠질 수 있습니다. 그래서 새 작업으로 넘어갈 때는 /clear, 많이 읽어야 하는 조사는 서브에이전트, 지금 일을 이어 가며 정리할 때는 /compact 남길 내용을 권합니다.
이 글은 2026년 9월 9일 공식 문서를 기준으로 하고, 압축 전후 수치는 10월 1일 Windows 11 · Claude Code 2.1.286(Sonnet 5.5) 테스트 환경에서 직접 쟀습니다. 압축 뒤 실수를 반복한다는 사례는 공개 이슈를 인용했습니다. 아직 설치 전이라면 Windows에 Claude Code를 설치하는 순서부터 보세요.
확인한 버전·환경
- Claude Code 2.1.286 · Windows 11 · Windows PowerShell 5.1 · 확인일 2026-10-01
- Claude Code 2.1.266 · 확인일 2026-09-09
새 세션도 이미 컨텍스트를 쓰고 있다
컨텍스트 창은 Claude Code가 지금 세션에서 “알고 있는” 모든 것이 담기는 한정된 공간입니다. 아무것도 입력하지 않은 새 세션에도 이런 것들이 먼저 실려요.
- 시스템 프롬프트: 동작·도구 사용·응답 형식 지시. 화면에 보이지 않습니다.
- 자동 메모리(MEMORY.md): 이전 세션에서 Claude가 남긴 메모. 처음 200줄 또는 25KB 중 먼저 닿는 만큼만 읽습니다.
- 환경 정보: 작업 폴더, 플랫폼, 셸, OS 버전, git 저장소 여부.
- MCP 도구 이름: 이름만 먼저 올라가고 전체 스키마는 필요할 때 불러옵니다.
- 스킬 설명: 한 줄 설명만. 본문은 쓸 때 불러옵니다.
- CLAUDE.md 계층: 사용자 전역부터 프로젝트까지. 길수록 세션마다 고정 비용이 커지니 CLAUDE.md를 200줄 안에서 관리하는 방법이 출발점입니다.
아무 대화 없는 새 세션에서 /context를 보니 전체가 이미 26.3k 토큰이었습니다. 그 위로 프롬프트, 읽은 파일, 도구 출력, 경로별 규칙(paths:가 있는 .claude/rules/ 파일), 훅이 돌려준 내용이 쌓이는데, 가장 크게 늘리는 건 파일 읽기예요.
꽉 차면 자동 압축이 대신 정리한다
한도에 다가가면 Claude Code가 알아서 압축하고 세션은 이어집니다. 압축이 시작되는 지점은 모델과 설정에 따라 달라요.
| 조건 | 자동 압축 지점 |
|---|---|
200K로 동작하는 모델(CLAUDE_CODE_DISABLE_1M_CONTEXT=1 포함) |
200K 경계 |
| 1M을 지원하는 모델(예: Sonnet 5) | 모델별 기본값(문서 예시 약 967K) |
CLAUDE_CODE_AUTO_COMPACT_WINDOW 설정 |
그 값(최우선) |
지점을 직접 바꾸려면 /autocompact 500k처럼 입력하거나 claude --autocompact <auto|tokens>로 시작합니다(100K~1M, 2.1.266에서 플래그 확인).
주의:
DISABLE_COMPACT로 압축을 끌 수도 있지만, 그러면 한도에 닿았을 때 세션이 컨텍스트 한도 오류로 멈춥니다.
1M 컨텍스트 모델이면 신경 쓸 일이 없을 것 같지만, 한도가 커질 뿐 압축이 사라지지는 않습니다. 압축이 남기고 지우는 항목도 같고요. 게다가 2.1.299부터는 창이 한참 남아 있어도 자리를 비운 사이에 압축될 수 있습니다.
한 시간 가까이 비워 두면 창이 덜 차도 압축된다
Claude Code 2.1.299에 생긴 유휴 압축(idle compaction)입니다. 긴 대화를 띄워 둔 채 약 54분 동안 요청이 없으면, 1시간짜리 프롬프트 캐시가 만료되기 직전에 미리 압축해 둬요.
캐시가 사라진 긴 대화를 다음 메시지에서 통째로 다시 처리하지 않게 하려는 거라, 다음 메시지는 대화 전체 대신 요약을 보냅니다. 돌아왔을 때 대화에 Compacted while idle, before the prompt cache expired로 시작하는 줄이 있으면 이 압축이 돈 거예요.
기본으로 켜져 있고, 아래 조건이 모두 맞을 때만 돕니다.
- 대화형 터미널 세션이다
- 메인 대화가 1시간 프롬프트 캐시를 쓴다. TTL을 직접 정하지 않았다면 Claude 구독의 플랜 사용량 안에서만 1시간이고, API 키·사용 크레딧·클라우드 제공자는 5분이에요
- Claude Code가 Anthropic에서 기능 플래그를 받아 올 수 있다
- 컨텍스트가 문턱(기본 200,000토큰)에 닿았다
- 마지막 요청 뒤 약 54분이 지났고, 그때 컴퓨터가 깨어 있다
200K 창으로 도는 대화는 기본값에서 200,000토큰에 닿기 전에 자동 압축이 먼저 돌기 때문에, 이 조건에 들려면 문턱을 낮춰야 합니다. 기본값 그대로라면, 1M 모델을 구독 플랜 사용량 안에서 쓰면서 긴 대화를 열어 둔 채 자리를 뜰 때가 이 조건에 맞는 경우예요.
앞에서 본 것처럼 요약에서는 세부 값이 빠질 수 있습니다. 그래서 저는 남겨야 할 ID나 경로가 있는 대화라면 자리를 뜨기 전에 /compact 남길 내용을 직접 돌려 두기를 권합니다. 무엇을 남길지 고른 요약이 되니까요.
끄려면 설정 파일에 이 키를 넣습니다.
{
"idleCompaction": false
}
2.1.302부터는 세션 안에서 /config의 Idle compaction 행으로도 끄고 켤 수 있고, 고른 값은 사용자 설정에 저장돼요. 프로젝트·로컬 설정, 관리형 설정, --settings 플래그 중 하나가 이미 이 키를 정했다면 그 값이 이기므로, 행이 보이지 않으면 그쪽을 고치세요.
문턱은 CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS에 토큰 수로 바꿉니다. 100,000보다 작은 값은 100,000으로 올라가요. DISABLE_AUTO_COMPACT=1로 자동 압축을 끄면 유휴 압축도 함께 꺼지고, 수동 /compact는 그대로 쓸 수 있습니다.
압축 뒤에 남는 것과 빠지는 것
직접 잰 결과부터 보겠습니다. 3,000줄 로그 파일(약 227KB, 97줄마다 ERROR 한 줄)을 통째로 읽혀 ERROR 줄 수를 세게 한 뒤, /context → /compact → /context 순으로 봤습니다.
/context 항목 |
압축 전 | 압축 후 |
|---|---|---|
| 전체(Tokens) | 162.7k / 1m (16%) | 29.7k / 1m (3%) |
| 대화(Messages) | 135.8k | 3.4k |
| 남은 공간(Free space) | 804.3k | 937.3k |
대화 부분이 /compact 한 번에 135.8k에서 3.4k로 줄었습니다. 그다음 파일을 다시 읽지 못하게 하고 세 가지를 물었어요.
| 질문 | 요약이 답한 것 | 원문 |
|---|---|---|
| ERROR 줄 수 | 30 | 맞음 |
| 첫 ERROR의 작업 ID | 모름(97번째 줄이라고만 기억) | job-97 |
| ERROR 문구 | failed: connection reset by peer (retry 3/3) |
맞음 |
한 번의 실행이라 일반화할 수는 없습니다. 그래도 남는 것이 “그때 내린 결론”에 가깝고 원문의 세부 값은 빠질 수 있다는 점은 분명했어요. 압축 뒤에도 써야 할 값이 있다면 /compact 작업 ID와 실패한 줄 번호를 남겨 줘처럼 지시를 붙이세요.
항목마다 압축 뒤 처리도 다릅니다.
| 항목 | 압축 후 |
|---|---|
| 시스템 프롬프트·출력 스타일 | 그대로 |
| 프로젝트 루트 CLAUDE.md, 조건 없는 규칙 | 디스크에서 다시 읽음 |
| 자동 메모리 | 디스크에서 다시 읽음 |
paths: 규칙, 하위 폴더 CLAUDE.md |
그 경로 파일을 다시 읽을 때만 |
| 읽거나 고친 파일 | 최근 고친 순 최대 5개(5,000토큰 넘으면 경로만) |
| 실행했던 스킬 본문 | 스킬당 5,000·전체 25,000토큰까지 |
| 스킬 설명 목록 | 다시 넣지 않음 |
여기서 놓치기 쉬운 게 다시 읽히는 파일은 최대 5개라는 점입니다. 초반에 본 파일이 6번째 이후로 밀려 있었다면 그 내용은 요약 속 문장으로만 남아요.
위 실험에서 5,000토큰을 훌쩍 넘는 로그의 원문이 압축 뒤 대화에 남지 않은 것도 이 규칙과 맞습니다. 압축 뒤에도 늘 살아 있어야 할 규칙은 paths: 조건을 빼고 프로젝트 루트 CLAUDE.md로 옮기세요.
/clear, 서브에이전트, /compact 고르기
셋은 하는 일이 다릅니다.
/clear: 컨텍스트를 비우고 새로 시작합니다. 이전 대화는 지워지지 않고 저장돼/resume으로 돌아갈 수 있습니다./compact: 지금 대화를 요약으로 바꿔 이어 갑니다. 대화의 일부만 압축하려면/rewind에서 메시지를 골라 “여기부터 요약”이나 “여기까지 요약”을 고릅니다.- 서브에이전트: 별도 컨텍스트 창에서 일하고 결과 요약만 메인 대화로 가져옵니다.
서브에이전트가 컨텍스트를 아끼는 원리는 격리입니다. 메인 대화 기록이나 자동 메모리를 받지 않고 Claude가 쓴 위임 메시지로 시작하며, CLAUDE.md와 스킬·MCP 설정은 똑같이 불러와요. 그 안에서 파일 열 개를 읽어도 메인 대화로는 최종 답과 토큰 수·소요 시간 같은 짧은 정보만 돌아옵니다.
다만 서브에이전트가 만능은 아닙니다. 서브에이전트에게 원문을 그대로 옮겨 달라고 하면 절약 효과가 사라지고, 메인 대화가 가벼워지는 것과 비용이 주는 것은 별개예요.
토큰 절약 방법 여덟 가지를 전후로 잰 글에서는 서브에이전트에 맡긴 쪽이 메인 대화는 절반 아래로 가벼웠지만 조사 한 번의 전체 추정 비용은 더 컸습니다. 서브에이전트를 직접 만드는 법은 조사와 검토를 나누는 서브에이전트 만들기에 있습니다.
다른 사람들이 겪은 문제
아래는 공개 GitHub 이슈의 사례입니다. 보고된 버전(2.1.34~2.1.71)은 이 글에서 직접 잰 2.1.286보다 오래됐습니다. 공통된 대비책은 “파일에 적기”입니다.
압축이 잦고, 압축 뒤 이미 고친 실수를 반복한다
YooClid(2026-03-10, 이슈 #32691, Claude Code 2.1.71, macOS)는 2~3시간 세션에서 압축이 3~5회 넘게, 한 번에 30~60초 넘게 걸렸고, 압축 뒤 메모리 파일의 규칙을 잊었다고 보고했습니다.
실거래 데이터 세션에서는 사흘 지난 캐시 값을 실시간 응답 대신 읽어 포지션 금액이 실제보다 약 12배 다르게 계산됐다고 적었습니다.
원인은 확정되지 않은 채 “계획 없음”으로 닫혔습니다. 압축 직후에는 /context로 무엇이 남았는지 보고, 틀리면 위험한 값은 다시 확인하게 하세요.
압축 뒤 실패했던 방법을 다시 시도한다
sanumala(2026-03-01, 이슈 #29890, Claude Code 2.1.63, macOS)는 방법 A가 실패하고 B가 통한다는 것을 확인해 파일에 적어 둬도, 압축 뒤 A를 다시 시도하느라 압축마다 3~5분을 잃었다고 보고했습니다. 이것도 원인 없이 “계획 없음”으로 닫혔습니다.
통한 방법은 압축이 지우지 않는 파일에 적고, /compact 지시로 “B가 통했다”를 요약에 남기게 하세요.
압축 전에 끝난 서브에이전트 결과 파일을 못 찾는다
coreh(2026-02-06, 이슈 #23821, Claude Code 2.1.34, macOS)는 서브에이전트 14개 이상 중 4개의 결과 파일만 압축 뒤에도 읽을 수 있었다고 보고했습니다. 이슈 설명으로는 압축 뒤 예전 작업 ID를 참조하다 “파일 없음”으로 실패합니다.
나중에도 필요한 결과는 별도 파일에 원문 그대로 남기게 하고, 압축 뒤라면 그 서브에이전트를 다시 돌리세요.
압축마다 지식이 사라져 메모리 체계를 직접 만들었다
Haustorium12(2026-03-15, 이슈 #34556)는 하루 12~18시간씩 26일 쓰며 압축을 59번 겪었고, 외부에 적지 않은 정보는 매번 사라져 핵심 요약·주제별 파일·아카이브로 된 3단계 메모리를 직접 만들었다고 보고했습니다.
기본 기능으로 할 수 있는 만큼은, 압축 뒤에도 다시 읽히는 자동 메모리와 CLAUDE.md에 “계속 남아야 할 결론”을 적게 하는 것입니다.
마치며
압축은 세션을 살려 주지만, 살아남는 건 결론이지 원문이 아니었습니다. 작업 ID 하나를 잃어 보니 그게 확실히 보이더라고요. 압축 뒤 다시 읽히는 것은 CLAUDE.md·자동 메모리와 최근 파일 5개까지라, 나중에도 써야 할 ID·경로·수치는 요약에 맡기지 말고 파일에 적어 두는 편이 안전합니다.
다음에 /compact를 쓸 때는 “무엇을 남겨 줘”를 한 줄 붙여 보세요. /context·/compact·/clear 말고 처음에 익혀 두면 좋은 명령과 단축키는 Claude Code 명령어·단축키 글에 모아 뒀어요. 컨텍스트를 줄이는 것이 구독 한도와 API 청구서에 어떻게 함께 듣는지는 비용과 한도 길잡이에 있습니다.
참고한 공식 자료
- Explore the context window — 시작할 때 실리는 항목, 압축이 남기고 지우는 항목 (2026-09-09 확인)
- Manage sessions —
/clear·/compact·/context, 세션 재개·분기 (2026-09-09 확인) - Create custom subagents — 서브에이전트가 별도 컨텍스트에서 시작하는 방식 (2026-09-09 확인)
- Model configuration — 모델별 자동 압축 지점,
/autocompact·환경 변수 (2026-09-09 확인) - Settings reference —
idleCompaction의 조건·끄는 법·문턱 (2026-10-21 확인) - Prompt caching — 요청마다 1시간·5분 TTL이 정해지는 기준 (2026-10-21 확인)
- Claude Code CHANGELOG — 2.1.299의 유휴 압축 추가, 2.1.302의
/config행 추가 (2026-10-21 확인)
인용한 공개 사례
- YooClid, 2026-03-10, Context compaction triggers too frequently and takes too long, disrupting workflow (#32691)
- sanumala, 2026-03-01, Context compaction loses critical working knowledge mid-session (#29890)
- coreh, 2026-02-06, Subagent output files lost after context compaction (#23821)
- Haustorium12, 2026-03-15, Feature Request: Persistent Memory Across Context Compactions (59 compactions, built our own) (#34556)
변경 이력
- 2026-10-21 — Claude Code 2.1.299부터 긴 대화를 약 54분 비워 두면 창이 차지 않아도 압축되는 기능이 더해져, 그 조건과 끄는 법을 자동 압축 절에 더했습니다.
- 2026-10-01 — Windows 11에서 Claude Code 2.1.286으로 /compact 전후의 /context를 직접 재고, 압축 뒤 요약에 남은 것과 빠진 것을 확인한 절을 더했습니다.