
Claude의 '기억'은 어디에 있는가? 채팅, Claude Code, API의 경계를 정리하다
요약
Claude의 채팅, Claude Code, API 환경에서 작동하는 여섯 가지 메모리 및 저장 메커니즘의 차이와 경계를 분석합니다. 각 환경별로 기억이 저장되는 주체와 참조 범위가 다르며, 데이터가 자동으로 공유되지 않는다는 점을 명확히 정리합니다.
핵심 포인트
- Claude의 기억은 하나의 기능이 아닌 환경별 별도 저장소로 존재함
- 채팅, Claude Code, API 간의 메모리는 자동으로 공유되지 않음
- Claude Code는 로컬 디렉토리 기반의 오토 메모리를 사용함
- 채팅 환경의 메모리와 과거 채팅 검색은 서로 다른 메커니즘임
Claude에게 "전에 말했던 거 기억해?"라고 물으면, 기억하고 있는 것도 있고 기억하지 못하는 것도 있다.
Claude Code에서는 어제 전달한 내용이 다음 세션에도 적용될 때가 있다. 다른 리포지토리(Repository)로 옮기면 적용되지 않는 것처럼 보인다. 같은 리포지토리라도 다른 단말기에서는 알지 못하는 것이 있다.
아무래도 Claude의 '기억'은 하나의 기능이 아닌 것 같다. 사용하는 장소마다 별도의 저장소가 있으며, 각각 서로 다른 경계에서 멈춰 있는 것처럼 보인다.
이 기사에서는 Claude의 채팅, Claude Code, Claude API를 사용하는 자작 앱에 존재하는 여섯 가지 저장·검색 메커니즘을 다음 4가지 관점에서 정리한다.
- 누가 저장하는가
- 어디에 저장되는가
- 누가 참조할 수 있는가
- 어떻게 지울 수 있는가
슬라이드 버전
전체상을 먼저 보고 싶은 사람을 위해 17장의 슬라이드로 정리했다.
우선, 여섯 개의 그릇으로 나누기
Claude의 '기억'처럼 보이는 저장·검색 메커니즘은 크게 세 가지 이용 장소로 나뉜다.
참고로, '여섯 개의 그릇'이라는 분류 방식은 Anthropic의 공식 분류가 아니다. 개별 메커니즘을 저장 장소와 경계가 보이도록 본고에서 정리한 것이다.
| 사용하는 장소 | 메커니즘 | 저장·실행 주체 | 저장처·참조 범위 |
|---|---|---|---|
| Claude 채팅 (Web / Desktop / Mobile) | 일반 채팅에서 생성되는 메모리 (Memory) | Claude | 프로젝트에 속하지 않는 일반 채팅용 메모리 영역 |
CLAUDE.md, CLAUDE.local.md, .claude/rules/*.md | 사람 | 파일의 위치와 Claude Code를 실행한 디렉토리에 따라 달라짐 | |
| Claude Code | 오토 메모리 (Auto Memory) | Claude Code | 기본값은 ~/.claude/projects/<리포지토리 유래 ID>/memory/. 해당 단말기 내부 |
| Claude API를 사용하는 자작 앱 | Memory Tool | Claude가 조작을 요청하고, 자작 앱이 실행 | 개발자가 앱 측에서 준비한 저장처 |
여기서 말하는 'Claude의 채팅'은 claude.ai의 Web 버전, Claude Desktop, Claude Mobile의 일반적인 채팅 기능을 가리킨다.
그림으로 나타내면 다음과 같다.
그림의 세 영역 사이에 화살표를 그리지 않은 이유는, 어느 방향으로도 기억이 자동으로 공유되지 않기 때문이다.
Claude의 채팅에서 나눈 내용을 Claude Code가 알고 있는 것이 아니다. Claude Code의 오토 메모리가 채팅으로 흘러 들어가는 것도 아니다. API의 Memory Tool도 Claude의 채팅에 저장된 메모리를 호출하는 기능이 아니다.
Claude의 채팅에서는 메모리와 검색이 별개로 존재한다
Web 버전, Desktop, Mobile 채팅에서 가장 혼동하기 쉬운 것이 **메모리 (Memory)**와 **과거 채팅 검색 (Past Chat Search)**이다.
메모리는 과거의 대화로부터 지속적으로 도움이 되는 정보를 추출하여 유지하는 메커니즘이다. 사용자 본인의 업무 내용이나 역할, 진행 중인 프로젝트, 커뮤니케이션 선호도, 기술적 선호도 등이 대상이 된다.
게다가 2026년 8월 시점에서는 메모리 기능 자체가 새로운 방식으로 이행 중이다.
- 새로운 방식:
Settings > Memory에 카테고리별 메모리 엔트리(Entry)가 나열되며, 대화하면서 읽기·쓰기·갱신된다. Free·Pro·Max 플랜과 신규 사용자에게 순차적으로 전개되고 있다. - 기존 방식:
Settings > Capabilities에 메모리 설정이 있으며, 프로젝트에 속하지 않는 일반 채팅으로부터 하나의 요약(Summary)을 합성하여 24시간마다 갱신한다. Team·Enterprise에서는 당분간 이 방식이 사용될 것으로 보인다.
반면 과거 채팅 검색은 필요할 때 대화 이력을 검색하여 원래의 대화를 참조하는 메커니즘이다. 검색이 실행되면 대화 중에 도구 호출(Tool Call)로서 표시된다.
즉, 두자의 동작은 다르다.
- 메모리: 미리 정리된 정보를 새로운 대화의 전제로 사용한다.
- 과거 채팅 검색: 필요할 때 과거의 대화로 되돌아간다.
"전에 말했는데 기억하지 못한다"라는 현상은 메모리에 남아 있지 않을 뿐만 아니라, 검색 대상의 경계를 넘었을 때도 발생한다. 예를 들어 다음과 같은 케이스다.
- 일반 채팅에서 프로젝트 A에서 나눈 대화 내용을 찾으려고 할 때
- 프로젝트 A에서 프로젝트에 속하지 않은 일반 채팅에서 나눈 대화 내용을 찾으려고 할 때
- 프로젝트 A에서 프로젝트 B의 대화를 찾으려고 할 때
이 모든 경우들은 과거 채팅 검색 대상에서 제외된다. 검색 범위는 '일반 채팅 전체' 또는 '현재 있는 하나의 프로젝트' 중 하나이며, 양쪽을 가로지르는 검색은 아니다.
공식 설명은 [Use Claude’s chat search and memory to build on previous context]에서 확인할 수 있다.
프로젝트는 기억의 경계가 된다
Claude의 각 프로젝트에는 그 안의 대화로부터 생성되는 전용 메모리 (Memory)가 있으며, 다른 프로젝트나 프로젝트 외의 채팅과는 분리되어 있다.
일반 채팅에서 생성된 메모리와 프로젝트 내에서 생성된 메모리는 별개의 영역으로 취급된다. 즉, 새로 만든 프로젝트가 일반 채팅 측의 메모리를 그대로 이어받는 것은 아니다. 프로젝트 A에서 쌓아 올린 전제 조건도 프로젝트 B나 일반 채팅에서는 참조되지 않는다.
과거 채팅 검색도 마찬가지로, 프로젝트 내에서는 해당 프로젝트의 대화만이 검색 대상이 된다.
이는 불편한 제약이 아니라, 정보가 뒤섞이는 것을 방지하기 위한 경계다.
여러 고객, 여러 안건, 업무와 사생활을 동일한 Claude 계정으로 다룬다면, 프로젝트를 나누는 것 자체가 메모리 설계가 된다.
Incognito Chat은 '비밀 보관소'가 아니다
Incognito Chat (시크릿 채팅)은 사용자의 대화 기록과 Claude의 메모리에 남지 않으며, 나중에 과거 채팅 검색에도 사용되지 않는 일시적인 대화다. Incognito Chat에서는 과거의 채팅으로부터 생성된 메모리는 사용되지 않는 반면, 프로필 정보나 커스텀 스타일 등의 설정은 계속해서 참조된다.
단, 이것은 창을 닫는 순간 데이터가 사라지는 기능은 아니다. 원칙적으로 30일간 유지되며, Enterprise 버전에서는 조직의 데이터 보관 설정에 따라 더 길어질 수 있다. 또한, Team 및 Enterprise 버전에서는 조직의 데이터 내보내기 (Data Export)에도 포함된다.
사용처는 향후 대화로 이어가고 싶지 않은 일시적인 상담이다. '남에게 보여주고 싶지 않은 정보를 두는 곳'이라고 생각하지 않는 편이 좋다.
자세한 내용은 [Use incognito chats]에 정리되어 있다.
Claude Code에는 사람이 쓰는 기억과 Claude가 쓰는 기억이 있다
Claude Code의 각 세션은 완전히 비어 있는 컨텍스트 윈도우 (Context Window)에서 시작한다. 그럼에도 이전의 지식이 남아 있는 것처럼 보이는 것은, 주로 두 가지 메커니즘이 세션 시작 시에 읽히기 때문이다.
CLAUDE.md: 사람이 쓰는 지시
CLAUDE.md는 사람이 Claude Code에 전달하는 영구적인 전제 조건이다.
빌드 명령, 코딩 규약, 프로젝트 구성, 리뷰 시 확인 사항 등 '다음 세션에서도 다시 설명하고 싶지 않은 것'을 작성한다.
평소 개인 또는 팀 이용 시 접하게 되는 위치는 주로 다음 세 가지다.
| 스코프 | 주요 위치 | 용도 및 공유 범위 |
|---|---|---|
| 사용자 | ~/.claude/CLAUDE.md | 자신의 모든 프로젝트에 공통되는 선호도 |
| 프로젝트 | <Repository>/CLAUDE.md 또는 <Repository>/.claude/CLAUDE.md | Git으로 관리하며 팀과 공유하는 설계·규약·절차 |
| 로컬 | <Repository>/CLAUDE.local.md | 해당 리포지토리에서만 사용하는 개인 설정. .gitignore에 추가 권장 |
여기서 주의할 점은, 이것들이 단순히 설정 파일을 덮어쓰는 방식으로 처리되는 것이 아니라는 점이다. 읽어 들여진 지시는 컨텍스트 상에서 연결된다. 만약 모순되는 지시를 작성하면, 나중에 작성된 것이 보장되는 것이 아니라 Claude가 불안정하게 선택할 가능성이 있다.
CLAUDE.local.md 역시 CLAUDE.md와 마찬가지로 지시 사항으로 읽힌다. 공식적으로도 개인용 파일로 안내되고 있지만, Git이 자동으로 공유를 막아주는 것은 아니기 때문에, 직접 .gitignore에 추가하여 자신만의 지시 사항으로 남겨둘 필요가 있다.
.claude/rules/: 긴 지시를 분할하고 필요에 따라 적용 대상을 좁힘
.claude/rules/는 프로젝트의 지시 사항을 여러 개의 Markdown 파일로 나누기 위한 디렉토리다. 파일명은 testing.md나 api-design.md...
등 임의로 지정할 수 있으며, 서브 디렉토리도 사용할 수 있다.
paths를 지정하지 않는 규칙은 프로젝트 전체의 지시 사항으로서 매번 읽혀진다. 파일 상단의 설정란 (YAML 프론트매터 (YAML frontmatter))에 paths를 작성하면 규칙을 적용할 파일을 좁힐 수 있다.
---
paths:
- "src/api/**/*.ts"
...
즉, 짧고 프로젝트 전체에 항상 적용하고 싶은 전제 조건은 CLAUDE.md에 둔다. 토픽별로 나누고 싶은 지시 사항이나 특정 파일에만 적용하고 싶은 지시 사항은 .claude/rules/에 둔다고 생각하면 이해하기 쉽다.
오토 메모리 (Auto-memory): Claude Code가 작성하는 노트
오토 메모리는 Claude Code 스스로가 만드는 작업 노트다.
예를 들어 "이 리포지토리에서는 npm 대신 pnpm을 사용한다", "테스트 전에 특정 환경 변수가 필요하다", "생성된 코드는 직접 편집하지 않는다"와 같은 빌드·작업상의 주의 사항이나, 디버깅을 통해 밝혀진 사실, 반복적으로 수정된 선호도 등 미래에도 도움이 될 것이라고 판단될 때 저장한다.
저장이 필요하다고 판단되면, 기본적으로 리포지토리마다 다음과 같은 디렉토리가 사용된다.
~/.claude/projects/<리포지토리 유래 ID>/memory/
├── MEMORY.md
├── debugging.md
...
<리포지토리 유래 ID>는 Git 리포지토리로부터 Claude Code가 결정하는 값이며, 사용자가 직접 이름을 붙여 만드는 것을 전제로 하지 않는다. 실제로 어떤 메모리가 읽히고 있는지는 Claude Code에서 /memory를 실행하는 것이 확실하다.
MEMORY.md는 인덱스(index)로 사용되며, 처음 200행 또는 25KB까지가 세션 시작 시에 읽혀진다. debugging.md나 api-conventions.md는 인덱스로부터 필요에 따라 참조되는 상세 파일의 예시이다. 이러한 파일명도 고정된 것이 아니며, Claude Code가 필요한 토픽에 맞춰 생성한다.
오토 메모리는 리포지토리 단위로 작동하며, 동일한 리포지토리의 서브 디렉토리나 워크트리 (worktree) 간에는 공유된다. 반면, 표준 저장 위치는 리포지토리 외부에 있기 때문에 .gitignore 설정의 영향을 받지 않으며, Git에도 포함되지 않는다.
/memory를 실행하면 읽히고 있는 CLAUDE.md류와 오토 메모리를 확인 및 편집할 수 있다.
최신 경로, 읽기 순서, 상한값은 How Claude remembers your project에 기재되어 있다.
어느 쪽을 Git으로 관리해야 할까?
CLAUDE.md나 .claude/rules/를 리포지토리에 커밋하면 팀원이나 다른 기기로 동일한 전제 조건을 배포할 수 있다.
오토 메모리는 저장 위치를 명시적으로 변경하지 않는 한 해당 기기에 머문다.
각각의 성질을 고려하면 다음과 같은 운용 방식이 좋을 것이다.
- 팀원 모두가 의존하는 규약이나 절차 →
CLAUDE.md또는.claude/rules/에 작성 - Claude가 작업 중에 발견한 일시적인 지식 → 오토 메모리에 맡김
- 오토 메모리에서 여러 번 유용하게 쓰인 지식 → 사람이 리뷰하고 공유 파일로 승격시킴
API의 Memory Tool은 자체 앱 측에서 메모리를 구현하기 위한 메커니즘
Claude API는 개발자가 Claude를 통합한 앱을 만들기 위한 API다. 그 안에 Memory Tool이라는 메커니즘이 있다. 단, Claude의 채팅에 저장된 메모리를 API로부터 추출하는 기능은 아니다.
Memory Tool이 제공하는 것은 Claude가 "메모리를 보고 싶다", "추가하고 싶다", "수정하고 싶다", "삭제하고 싶다"라고 자체 앱에 요청하기 위한 공통 형식이다. 요청을 받은 자체 앱이 실제 읽기/쓰기를 수행한다.
대략적인 흐름은 다음과 같다.
- 개발자가 자체 앱에서 Claude API를 호출한다.
- Claude가 필요에 따라 메모리의 열람·생성·편집·삭제를 요청한다.
- 자체 앱이 파일, 데이터베이스, 클라우드 스토리지 등으로 반영한다.
- 다음 대화에서도 동일한 사용자에게 동일한 저장소를 연결한다.
즉, Claude API가 해당 메모리를 보관해 주는 것이 아니다. 어디에 저장할지, 사용자별로 어떻게 나눌지, 언제 삭제할지는 자체 앱 측에서 결정한다.
기억이 넘지 못하는 다섯 가지 경계선
지금까지의 내용을 경계의 종류별로 다시 정리한다.
1. Claude의 채팅과 Claude Code의 경계
Claude의 채팅 메모리와 Claude Code의 CLAUDE.md
・오토 메모리(Auto-memory)는 별개다. 한쪽에서 나눈 대화 내용이 다른 쪽으로 자동으로 전달되지는 않는다.
2. 프로젝트의 내외
Claude의 프로젝트 메모리와 과거 채팅 검색은 개별 프로젝트의 경계를 넘지 않는다. 안건을 나누는 것은 기억을 나누는 것이기도 하다.
3. 단말기의 경계
Claude Code의 오토 메모리는 기본적으로 사용자의 로컬 머신에 저장된다. 동일한 리포지토리(Repository)를 다른 단말기로 클론(clone)하더라도, 오토 메모리까지 함께 따라오지는 않는다.
4. 이용 화면의 경계
이 글에서 다루어 온 채팅 메모리는 Web, Desktop, Mobile의 일반 채팅에서 이용된다.
Cowork에는 약간의 주의가 필요하다. 일반 채팅에서 Claude가 기억한 내용은 Cowork로 인계되지 않는다. 반면, Cowork의 프로젝트에는 해당 프로젝트 내에서만 사용되는 별도의 메모리가 있다. 즉, Cowork의 메모리는 일반 채팅과는 다른 경계에 있다. 자세한 내용은 Organize your tasks with projects in Claude Cowork에서 확인할 수 있다.
5. Claude와 다른 AI·앱의 경계
Claude의 기억이 다른 AI나 독자적인 앱으로 자동으로 흘러가지는 않는다. Claude의 일반 채팅에는 실험적인 메모리 임포트·엑스포트(Import/Export) 기능이 있지만, 명시적인 조작이 필요하다.
API에서는 더욱 명확하여, 어떤 사용자의 기억을 어디에 저장하고 어떤 세션(Session)에서 읽게 할지를 개발자가 설계한다.
기억시키고 싶은 것에 따라, 보관 장소를 선택한다
Claude에게 무엇을 기억시키고 싶은지에 따라, 보관 장소를 다음과 같이 선택하면 좋을 것이다.
| 기억시키고 싶은 것 | 보관 장소 |
|---|---|
| 사용자 본인의 업무 내용·역할, 문체, 업무 방식의 선호도 | Claude의 일반 채팅에서 생성되는 메모리 |
| 특정 안건의 전제, 판단, 진행 상황 | Claude의 채팅에서 안건별로 프로젝트를 구분 |
| 팀원 전원이 준수해야 할 코딩 규약 | 리포지토리의 CLAUDE.md |
| 특정 디렉토리만의 구현 규칙 | .claude/rules/*.md에 paths를 지정 |
| Claude Code가 작업 중 발견한 단말기 고유의 지식 | 오토 메모리 |
| 다른 단말기나 팀에서도 필요한 지식 | 오토 메모리에 맡기지 않고, CLAUDE.md 등으로 승격 |
| 향후 이력이나 메모리에 남기고 싶지 않은 일시적인 대화 | Incognito Chat (시크릿 채팅). 단, 비밀 정보의 보관소로 사용하지는 말 것 |
| 자체 제작 앱 이용자의 지속적인 정보 | Memory Tool과 자체 제작 앱 측에서 설계한 저장소 |
같은 정보를 여러 곳에 둔다고 해서 안심할 수 있는 것은 아니다. 중복된 기억은 업데이트 누락과 모순을 낳는다.
Claude의 기억을 지우고 싶을 때는
어떤 종류의 기억인지 확인하고, 각각에 대응하는 방법으로 삭제를 수행한다.
| 메커니즘 | 삭제 방법 |
|---|---|
| 새로운 Claude 메모리 | 메모리 엔트리(Memory entry)를 개별 삭제하거나 메모리를 리셋한다. 메모리만 지우는 것이라면 원래의 대화를 삭제할 필요는 없다 |
CLAUDE.md · CLAUDE.local.md · .claude/rules/ | 대상 파일을 편집 또는 삭제한다 |
| Claude Code의 오토 메모리 | /memory에서 확인하고, 대상 Markdown을 편집 또는 삭제한다 |
| API의 Memory Tool | 애플리케이션이 준비한 삭제 프로세스를 실행한다 |
왠지 잘 풀리지 않을 때는
Claude의 기억에 불만족을 느낄 때, 다음 항목들을 체크해 보면 좋을 것이다.
- 그 정보는 어떤 기능·이용 화면에서 생성되었는가
- 누가 저장했는가
- 어디에 저장되었는가
- 어느 프로젝트, 리포지토리, 단말기까지 도달하는가
- 원래의 대화를 지웠을 때 함께 지워지는가
참조한 공식 문서
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기