Claude Code에서 컨텍스트를 효과적으로 관리하는 방법을 소개합니다. 세션을 이어갈지, 되돌릴지, 압축할지, 초기화할지 판단하는 기준과 함께, 서브에이전트가 상위 컨텍스트를 깔끔하게 유지하는 원리도 살펴봅니다.
사용 현황을 한눈에 파악할 수 있는 새로운 슬래시 커맨드 /usage를 출시했습니다. 이 기능은 고객들과 나눈 여러 대화에서 얻은 인사이트를 바탕으로 만들어졌습니다.
이 대화들에서 반복적으로 등장한 주제가 있었는데, 바로 세션 관리 방식이 사용자마다 크게 다르다는 점이었습니다. 특히 Claude Code의 컨텍스트 윈도우가 100만 토큰으로 확장된 이후 이 차이는 더욱 두드러졌습니다.
터미널에서 세션을 하나 또는 두 개만 열어두고 계속 사용하시나요? 아니면 프롬프트마다 새 세션을 시작하시나요? compact, 되감기(rewind), 서브에이전트는 각각 언제 사용하는 게 좋을까요? 잘못된 compact나 불량 세션은 왜 생기는 걸까요?
이 질문들 속에는 생각보다 훨씬 많은 디테일이 숨어 있으며, Claude Code 경험의 질을 크게 좌우합니다. 그리고 그 핵심은 거의 대부분 컨텍스트 윈도우 관리에 달려 있습니다.

컨텍스트 윈도우란 모델이 다음 응답을 생성할 때 한 번에 "볼 수" 있는 모든 정보를 말합니다. 시스템 프롬프트, 지금까지의 대화 내용, 모든 도구 호출과 그 결과, 그리고 읽어들인 파일이 모두 포함됩니다. Claude Code의 컨텍스트 윈도우는 100만 토큰입니다.
안타깝게도 컨텍스트를 많이 사용할수록 성능에 미세한 영향이 생기는데, 이를 흔히 컨텍스트 로트라고 부릅니다. 컨텍스트가 길어질수록 모델의 어텐션(attention)이 더 많은 토큰에 분산되고, 오래되거나 현재 작업과 무관한 내용이 방해 요소로 작용하면서 성능이 저하되는 현상입니다.
컨텍스트 윈도우에는 엄격한 용량 제한이 있습니다. 윈도우가 거의 차면 현재 작업 내용이 자동으로 더 짧은 요약으로 압축되고, 모델은 새로운 컨텍스트 윈도우에서 작업을 이어갑니다. 이 과정을 압축(compaction)이라고 합니다. 물론 직접 수동으로 압축을 실행할 수도 있습니다.

Claude에게 작업을 요청하고 결과를 받았다고 해봅시다. 이제 컨텍스트에는 도구 호출 내역, 출력 결과, 지시사항 등이 쌓여 있고, 다음에 무엇을 할지 생각보다 다양한 선택지가 있습니다.
/rewind (esc esc) — 이전 메시지로 되돌아가 그 시점부터 다시 시도합니다/clear — 방금 얻은 내용을 바탕으로 작성한 브리프를 들고 새 세션을 시작합니다가장 자연스러운 흐름은 그냥 계속 이어가는 것이지만, 나머지 네 가지 선택지는 모두 컨텍스트 관리를 위해 존재합니다.

긴 세션을 유지할지, 새로 시작할지 언제 결정해야 할까요? 기본 원칙은 간단합니다. 새로운 작업이 시작될 때는 세션도 새로 시작하세요.
100만 토큰의 컨텍스트 윈도우 덕분에 풀스택 앱 전체를 처음부터 개발하는 것처럼 더 길고 복잡한 작업도 안정적으로 수행할 수 있게 됐지만, 그렇다고 컨텍스트 로트가 발생하지 않는 건 아닙니다.
물론 기존 컨텍스트의 일부가 여전히 필요한 연관 작업을 이어서 하는 경우도 있습니다. 예를 들어 방금 구현한 기능의 문서를 작성하는 경우가 그렇습니다. 새 세션을 시작할 수도 있지만, 그러면 Claude가 방금 구현한 파일들을 다시 읽어야 해서 시간도 더 걸리고 비용도 올라갑니다.

Claude Code에서 Esc를 두 번 빠르게 누르거나 /rewind를 실행하면 이전 메시지로 되돌아가 그 시점부터 다시 프롬프트를 입력할 수 있습니다. 되돌아간 시점 이후의 메시지는 컨텍스트에서 모두 삭제됩니다.
되감기는 단순히 수정 지시를 내리는 것보다 훨씬 효과적인 경우가 많습니다. 예를 들어 Claude가 파일 다섯 개를 읽고 어떤 방식을 시도했는데 잘 안 됐다고 해봅시다. 이때 본능적으로 "그 방법은 안 됐어, X로 해봐"라고 입력하고 싶어집니다. 하지만 파일 읽기가 끝난 직후로 되감아, 거기서 얻은 정보로 다시 방향을 잡아주는 편이 더 나을 수 있습니다. "접근 방식 A는 쓰지 마. foo 모듈이 그걸 노출하지 않거든. 바로 B로 가."
"summarize from here" 명령이나 /rewind 슬래시 커맨드를 활용하면 Claude가 지금까지의 학습 내용을 요약해 인계 메시지를 작성해줍니다. 마치 무언가를 시도해봤지만 잘 안 됐던 미래의 Claude가 이전 Claude에게 보내는 쪽지 같은 개념입니다.
세션이 길어지면 불필요한 컨텍스트를 정리하는 방법이 두 가지 있습니다. /compact를 사용하거나, /clear으로 완전히 새로 시작하는 것입니다. 비슷해 보이지만 실제 동작 방식은 꽤 다릅니다.
압축(Compact)은 모델에게 지금까지의 대화를 요약하게 한 뒤, 기존 대화 히스토리를 그 요약으로 대체합니다. 손실이 발생하긴 하지만, 직접 뭔가를 작성할 필요가 없고 Claude가 중요한 학습 내용이나 파일을 빠짐없이 담아줄 수 있습니다. 지시사항을 함께 전달해(/compact focus on the auth refactor, drop the test debugging) 방향을 잡아줄 수도 있습니다.

/clear 를 사용하면 직접 중요한 내용을 정리합니다("인증 미들웨어를 리팩토링 중이고, 제약 조건은 X, 관련 파일은 A와 B, 접근 방식 Y는 제외"). 더 손이 가긴 하지만, 그 결과로 만들어지는 컨텍스트는 온전히 내가 결정한 내용으로만 채워집니다.
장시간 세션을 자주 사용한다면 압축 결과가 유독 엉망이었던 경험이 있을 것입니다. 이런 경우를 살펴보면 모델이 작업의 방향을 예측하지 못할 때 불량 압축이 자주 발생한다는 걸 알 수 있습니다.
예를 들어 긴 디버깅 세션 이후 자동 압축이 실행되어 조사 내용이 요약됐는데, 다음 메시지로 "이번엔 bar.ts에서 봤던 다른 경고도 고쳐줘"라고 입력하는 경우가 있습니다.
그런데 세션이 디버깅에 집중되어 있었기 때문에, 그 다른 경고는 요약에서 빠졌을 가능성이 높습니다.
이게 특히 까다로운 이유가 있습니다. 컨텍스트 로트로 인해 압축이 실행되는 시점이 바로 모델 성능이 가장 낮은 순간이기 때문입니다. 100만 토큰 컨텍스트 덕분에 이제는 다음에 할 작업 내용을 설명과 함께 미리 /compact를 실행할 여유가 생겼습니다.
서브에이전트는 작업 결과로 생성되는 중간 출력물이 많고, 나중에 다시 참조할 필요가 없다고 미리 알 수 있을 때 특히 효과적입니다.
Claude가 Agent 도구를 통해 서브에이전트를 실행하면, 서브에이전트는 독립된 새 컨텍스트 윈도우를 가집니다. 필요한 만큼 작업을 수행한 뒤 결과를 정리해 최종 보고서만 상위 컨텍스트로 돌려보냅니다.

Anthropic에서 사용하는 판단 기준은 이렇습니다. 이 도구 출력값 자체가 나중에 필요한가, 아니면 결론만 있으면 충분한가?
Claude Code는 서브에이전트를 자동으로 호출하기도 하지만, 필요에 따라 직접 명시적으로 지시할 수도 있습니다. 예를 들어 이렇게 말할 수 있습니다.
정리
어떤 컨텍스트 관리 기능을 써야 할지 쉽게 판단할 수 있도록, 상황별로 적합한 도구와 그 이유를 정리한 표를 준비했습니다.
여러분이 만들어 나갈 결과물이 기대됩니다.
지금 바로 Claude Code를 시작해보세요.
필자 소개: Thariq Shihipar는 Anthropic의 테크니컬 스태프로 Claude Code 개발을 담당하고 있습니다.