Claude Code와 오후 내내 일하다 보면 이런 순간이 옵니다. 아까 말한 내용인데도 처음 듣는 듯 되묻습니다. 이미 내린 결정을 다시 문제 삼기도 합니다. ‘그 얘기 아까 했잖아.’라는 생각이 들고, 화가 치밀어 욕도 하고 싶어집니다.
Claude Code가 고장 난 것은 아닙니다. 대화가 길어지면 내부에서 컨텍스트를 정리하기 시작합니다. 이 과정을 알면 어떤 내용은 남고 어떤 내용은 사라지는지도 이해할 수 있습니다. 그 안에서 무슨 일이 일어나는지 살펴보겠습니다.
이 글에서 다루는 실험과 기능은 Claude Code를 기준으로 합니다. 다만 제한된 컨텍스트 안에서 긴 대화를 다룰 때 중요한 내용을 대화 밖에 남겨야 한다는 원리는 다른 AI 도구를 사용할 때도 참고할 수 있습니다. 구체적인 압축 방식과 명령은 도구마다 다를 수 있습니다.
컨텍스트는 AI가 한 번에 참고할 수 있는 범위다
AI가 한 번에 참고할 수 있는 정보의 범위를 컨텍스트라고 합니다. 사람의 작업 기억과 비슷합니다. Claude Code는 답변을 만들 때 지금까지 나눈 대화를 이 범위 안에서 모두 다시 읽습니다. 컨텍스트에는 사용자가 입력한 프롬프트뿐 아니라 Claude Code가 읽은 파일 본문과 실행한 명령의 출력도 들어갑니다. 파일을 읽을 때마다 그 내용 전체가 쌓이기 때문에 생각보다 빨리 한도에 가까워집니다.
컨텍스트가 차면 두 가지 일이 생깁니다. 먼저 성능이 떨어집니다. 공식 문서에 따르면 컨텍스트 창이 차오를수록 앞서 받은 지시를 "잊기" 시작할 수 있습니다. 압축되기 전부터 앞의 내용을 깜빡이는 첫 번째 이유입니다. 한도에 가까워지면 두 번째 일이 일어납니다. 대화를 요약해 컨텍스트를 줄입니다.
컨텍스트 창의 크기는 모델마다 다릅니다. Fable 5처럼 컨텍스트 창이 100만 토큰인 모델은 자동 압축이 시작되기까지 여유가 큽니다. 그래도 무한하지는 않습니다. 모델이 달라도 기본 원리는 같습니다.
컨텍스트가 차면 대화가 요약된다
한도에 가까워지면 Claude Code가 자동으로 컨텍스트를 정리합니다. 공식 문서에 따르면 이 과정은 두 단계로 진행됩니다. 먼저 오래된 도구 출력을 비웁니다. 그래도 공간이 부족하면 /compact를 실행했을 때와 같은 방식으로 대화를 요약합니다.
대화가 얼마나 짧은 요약으로 바뀌는지 직접 확인해 봤습니다. 이 글에서 소개하는 실험은 모두 2026년 7월 20일 Windows 11에서 진행했습니다. Claude Code v2.1.211을 claude -p 자동 실행(headless)으로 구동해 확인했습니다. 366,915토큰이던 대화는 압축 뒤 3,726토큰짜리 요약으로 바뀌었습니다. 약 100분의 1입니다. 회의로 치면 녹취록 전체를 버리고 한 장짜리 회의록만 남긴 셈입니다.
그렇다고 이전 내용이 모두 사라지는 것은 아닙니다. 처음의 요청과 의도, 다룬 파일, 발생한 오류, 아직 끝나지 않은 작업 같은 내용은 요약에 우선 담깁니다. 다만 모두 남는다고 보장되지는 않습니다. 가장 최근에 주고받은 대화 끝부분은 원문 그대로 남습니다. 방금 한 이야기는 기억하면서 한 시간 전 이야기는 흐릿해지는 이유가 여기에 있습니다.
압축 뒤에 남는 것과 사라지는 것
먼저 확실하게 사라지는 것부터 보겠습니다. 실험에서는 Claude Code가 읽은 파일 본문과 명령 출력이 압축 뒤 컨텍스트에서 빠졌습니다. 모든 세션에서 같은 결과가 나왔고, 사라진 분량은 수십만 토큰에 이르렀습니다. 합리적인 선택이기도 합니다. 컨텍스트의 상당 부분을 차지하는 파일 본문은 내 컴퓨터에 그대로 있으므로 필요할 때 다시 읽을 수 있습니다. 다시 가져올 수 있는 내용부터 덜어내는 셈입니다.
문제는 대화에만 있던 내용입니다. 이런 내용은 다시 가져올 원본이 없습니다. 무엇이 요약에 포함될지는 요약을 만드는 AI 모델의 판단에 달려 있습니다.
Haiku 4.5로 진행한 실험에서는 기억을 확인하려고 임의의 약속 단어를 대화에 넣어 두고, 파일을 계속 읽게 해 자동 압축을 일으켰습니다. 압축 뒤 그 단어는 완전히 사라졌습니다. 여러 차례 물어도 되살리지 못했습니다. 결정의 근거는 일부만 남았고, 지침은 구체적인 내용이 빠진 채 요지만 남았습니다. 미완료 작업만 온전히 유지됐습니다.
반면 Fable 5로 수동 압축한 두 세션에서는 다른 결과가 나왔습니다. 하나는 약 7만 토큰, 다른 하나는 앞서 본 366,915토큰 규모였으며 일부 턴에는 Opus 4.8을 사용했습니다. 두 세션 모두 심어 둔 사실 여덟 가지가 압축 뒤에도 남았습니다. 강한 모델이 만든 요약에서 세부 내용이 잘 유지될 수 있다는 근거는 됩니다. 하지만 언제나 보존된다고 장담할 수는 없습니다. 자동 압축은 사용자가 시점과 조건을 정해 실행하는 것이 아니라, 컨텍스트가 한도에 닿았을 때 실행되기 때문입니다.
파일에 있는 내용은 다시 불러올 수 있다
대화에만 있던 내용은 요약 과정에서 빠질 수 있습니다. 반면 파일에 저장된 내용은 압축 뒤에도 다시 불러올 수 있습니다.
대표적인 예가 CLAUDE.md입니다. 실험한 네 세션 모두 압축 뒤에도 응답 규칙을 지켰고, 그 내용을 물었을 때 정확히 답했습니다. 지침이 요약에 남은 것이 아니라 Claude Code가 CLAUDE.md를 디스크에서 다시 읽었기 때문입니다. 공식 문서에도 압축 뒤 CLAUDE.md를 디스크에서 다시 불러온다고 나와 있습니다.
특정 경로의 파일에만 적용되는 rule은 조금 다릅니다. 압축할 때 이 rule은 요약에서 빠지지만, rule 자체가 없어지는 것은 아닙니다. 해당 경로의 파일을 다시 읽으면 다시 적용됩니다.
압축 전후를 비교하면 다음과 같습니다.
| 대화에 쌓인 내용 | 압축 뒤 상태 |
|---|---|
| 최근 대화 끝부분 | 원문 그대로 유지됨 |
| 처음의 요청과 미완료 작업 | 요약에 우선 포함되지만 보장되지는 않음 |
| 대화에만 있던 세부 내용(약속 단어·결정 이유) | 요약에 포함되거나 빠질 수 있으며, 실제로 사라진 사례가 있었음 |
| Claude Code가 읽은 파일 본문과 명령 출력 | 컨텍스트에서 빠지지만 파일은 다시 읽을 수 있음 |
| CLAUDE.md의 지침 | 디스크에서 다시 불러옴 |
| 특정 경로에 적용되는 rule | 해당 경로의 파일을 다시 읽을 때 재적용됨 |
중요한 내용은 파일에 남긴다
AI와 긴 대화를 이어 갈 때는 중요한 내용을 대화에만 남겨 두지 않는 편이 안전합니다. 작업의 원본을 별도 파일에 기록해 두면 대화가 요약되거나 새 세션을 시작해도 다시 확인할 수 있습니다.
그렇다고 Claude Code에서 모든 내용을 CLAUDE.md에 넣을 필요는 없습니다. 여러 세션에서 계속 지켜야 하는 규칙과 고정된 결정은 CLAUDE.md에 둡니다. 매 세션 다시 읽는 파일이기 때문입니다. 반면 자주 바뀌는 내용은 CLAUDE.md에 넣지 말라고 공식 문서가 명시합니다. 현재 작업의 계획과 진행 상태는 별도 작업 파일에 두는 편이 맞습니다.
작업 파일은 거창할 필요가 없습니다. 공식 문서는 큰 작업을 시작하기 전에 SPEC.md 같은 파일에 스펙을 적고, 새 세션에서 그 파일을 읽은 뒤 작업하는 방식을 권합니다. 저는 해야 할 일을 날짜가 붙은 파일(20260720_1.md 같은)에 적어 폴더에 모아 두고, 세션을 시작할 때마다 해당 파일부터 읽습니다. 어느 방식을 쓰든 원리는 같습니다. 대화가 압축돼도 작업의 원본은 파일에 있으므로 다시 읽을 수 있습니다.
작업을 맡기는 프롬프트도 같은 원리에 맞출 수 있습니다. 파일을 읽고 시작하라고 하는 데서 그치지 않고, 작업하면서 끝낸 항목과 내린 결정, 다음에 할 일을 그 파일에 계속 기록하게 하는 것입니다. 대화 속 계획은 압축 과정에서 흐려질 수 있지만, 작업 파일에 기록한 진행 상태는 다시 확인할 수 있습니다.
dispatch/20260720_1.md를 읽고 계획을 세워 진행해. 항목을 끝낼 때마다 완료로 표시하고, 결정 사항을 이 파일에 기록해.
매번 같은 요청을 적고 싶지 않다면 이 방식을 CLAUDE.md의 상시 지침으로 둘 수도 있습니다. 그러면 압축 뒤에도 지침을 디스크에서 다시 불러옵니다. 공식 문서에서 예로 든 압축 지침도 같은 이유로 CLAUDE.md에 둘 수 있습니다. 이를테면 "압축할 때는 수정한 파일 목록과 테스트 명령을 반드시 남겨라" 같은 문장입니다.
요약에 무엇을 남길지 직접 지정할 수도 있습니다. /compact 뒤에 지시문을 붙이면 그 내용을 중심으로 요약합니다.
현재 컨텍스트가 얼마나 찼는지는 /context로 확인할 수 있습니다. 다른 작업으로 넘어가거나 Claude Code가 앞의 내용을 잘 기억하지 못한다면 계속 이어 가기보다 새로 시작하는 편이 낫습니다. /clear에 이름을 붙이면 지금까지의 세션을 그 이름으로 남기고 새 세션을 엽니다.
보관한 세션은 /resume으로 다시 열어 중단한 시점부터 이어 갈 수 있습니다.
Claude Code가 긴 대화에서 앞선 내용을 잊는 것은 컨텍스트를 관리하는 과정에서 생기는 현상입니다. 컨텍스트가 차면 성능이 떨어질 수 있고, 한도에 가까워지면 대화가 요약됩니다. 대화에만 있던 세부 내용은 이 과정에서 사라질 수 있습니다.
이 글에서 살펴본 압축 방식과 명령은 Claude Code를 기준으로 합니다. 하지만 중요한 내용을 대화에만 맡기지 말아야 한다는 원리는 다른 AI 도구를 사용할 때도 참고할 수 있습니다. Claude Code에서는 여러 세션에서 지켜야 할 규칙을 CLAUDE.md에, 현재 작업의 진행 상태와 결정 사항을 별도 파일에 남기는 편이 안전합니다. 다른 AI 도구를 쓴다면 그 도구가 다시 불러올 수 있는 파일이나 기록 방식을 찾아 두는 편이 좋습니다.
AI와 나누는 대화가 길어질수록 무엇을 기억하게 할지가 아니라, 중요한 내용의 원본을 어디에 남길지를 먼저 정해야 합니다.