MemoryLake
모든 글로 돌아가기
Tutorial2026년 8월 6일·11 분 소요

컨텍스트 손실 없이 ChatGPT Memory를 Codex로 마이그레이션하는 방법 (2026)

여러분은 ChatGPT에게 자신이 일하는 방식을 가르치는 데 1년을 보냈습니다. ChatGPT는 여러분의 스택, 여러분이 주장하는 컨벤션, 사용을 거부하는 프레임워크, 설명이 아닌 diff를 원한다는 사실까지 알고 있습니다. 그러다 실제 업무를 Codex로 옮기면, 첫날에는 Codex가 이 중 아무것도 알지 못합니다.

이에 대한 직접적인 답변은 다음과 같습니다. 이를 위한 가져오기 도구(importer)는 없습니다. Codex는 다른 코딩 에이전트에서 설정, 프로젝트, 최근 채팅을 가져오는 `/import` 명령어를 제공하지만, 2026년 8월 현재 ChatGPT 일반 사용자용 앱은 읽어올 수 있는 소스에 포함되어 있지 않습니다. ChatGPT memory는 사용자가 직접 읽어내어 Codex가 실제로 로드하는 지침으로 다시 작성하고, Codex가 찾는 특정 파일에 배치해야 합니다. 어디에 무엇이 들어가는지 안다면 30분이면 끝나는 작업이며, 이 글에서 그 과정을 단계별로 설명합니다.

첫 번째 질문 아래에는 두 번째 질문이 숨어 있습니다. 바로 다음에 도구를 바꿀 때 이 작업을 또 하고 싶은가 하는 점입니다. 마지막 섹션에서 이 내용을 다룹니다.

실제로 전송되는 것

이동하려는 대상이 무엇인지 정확히 짚고 넘어갈 가치가 있습니다. '나의 ChatGPT memory'는 세 가지 서로 다른 요소로 구성되어 있으며, 각각 마이그레이션 방식이 다르기 때문입니다.

저장된 memory 항목은 데이터가 아니라 콘텐츠로 전송됩니다. 이는 ChatGPT가 축적한 짧은 사실들(선호도, 기술 스택, 진행 중인 프로젝트 등)입니다. OpenAI가 2026년 6월 4일에 발표한 memory 개편에 따라, 이제 사용자가 보게 되는 것은 이전의 단순한 저장 항목 목록이라기보다는 읽기 쉬운 memory 요약 페이지에 가깝습니다. 어느 쪽이든 읽을 수 있으며, 이를 읽는 것이 곧 내보내기(export) 메커니즘입니다. Codex가 사용할 수 있는 파일을 제공하는 문서화된 원클릭 경로는 존재하지 않습니다.

Custom instructions는 거의 그대로 전송됩니다. ChatGPT의 custom-instructions 블록에 넣은 내용은 이미 모델에 대한 지시 사항으로 작성되어 있습니다. 이는 아주 약간의 편집만으로 AGENTS.md에 매핑됩니다. 주로 코딩 동작이 아닌 채팅 동작을 설명하는 부분을 삭제하는 작업입니다.

채팅 기록은 전송되지 않으며, 대부분 전송할 필요도 없습니다. Codex의 /import는 지원하는 에이전트에서만 최근 채팅을 가져올 수 있으며, 이마저도 로컬 세션 데이터에 한합니다. 웹 전용 기록은 어디서도 가져올 수 없습니다. ChatGPT 스레드는 그대로 유지됩니다. 이는 생각보다 큰 손실이 아닙니다. 1년 동안의 스레드에 담긴 지속적인 지식은 결국 한 페이지 분량의 컨벤션이며, 여러분은 이제 그 페이지를 작성하려는 참이기 때문입니다.

프로젝트 파일 및 업로드 파일은 전송되지 않습니다. ChatGPT Project에 첨부한 모든 파일은 해당 Project에 그대로 남습니다. 문서가 업무에 중요하다면, 코딩 에이전트가 접근할 수 있는 곳(리포지토리 내부 또는 memory 레이어)에 존재해야 합니다.

전혀 이동하지 않는 한 가지는 선호도 뒤에 숨겨진 이유입니다. ChatGPT는 여러분이 작은 단위의 커밋을 원한다는 것은 알지만, 그것이 2025년의 롤백 사고 때문이라는 것은 모릅니다. 여러분이 기록해 두지 않는 한 Codex도 알지 못할 것입니다. 이를 기록할 가치가 있는지는 판단의 영역이지만, 두 번 이상 다시 설명해야 했던 일이라면 대개 기록해 두는 것이 좋습니다.

수동 마이그레이션

1단계: ChatGPT memory를 읽어내고 분류하기

Settings → Personalization → Memory를 열고 거기에 무엇이 있는지 확인하세요. 계정이 최신 memory 시스템을 사용 중이라면 ChatGPT가 사용자에 대해 종합한 내용을 설명하는 memory 요약 페이지가 표시되고, 그렇지 않다면 저장된 memory 목록이 표시됩니다. 둘 다 읽을 수 있으며, 이것이 제공되는 유일한 내보내기 방법입니다.

그런 다음 채팅창에서 다음과 같이 모든 내용을 작성해 달라고 요청하세요. "Write out everything you remember about me and how I work, verbatim, one item per line, no commentary." (나와 내가 일하는 방식에 대해 기억하는 모든 내용을 한 줄에 하나씩, 주석 없이 그대로 작성해 주세요.) 이를 임시 파일에 복사합니다. 설정 페이지를 읽는 것과 병행하여 이 작업을 수행하세요. 두 내용이 일치하지 않는 경우가 많으며, 그 차이점을 아는 것이 도움이 됩니다.

이제 가지고 있는 정보를 다음 세 가지 버킷으로 분류하세요.

  • 지속적이고 이식 가능한 정보 — 기술 스택, 컨벤션, 도구, 원하는 출력 형식, 절대 하지 말라고 지시한 사항 등. 이 자료들이 AGENTS.md가 됩니다.
  • 프로젝트 특정 정보 — 특정 코드베이스에만 해당하는 내용. 이는 글로벌 설정이 아니라 해당 리포지토리에 속해야 합니다.
  • 둘 다 아님 — 선호하는 채팅 방식을 설명하는 모든 내용과, 모델이 학습한 것이 아니라 추론한 내용. 과감히 버리세요. memory 항목에는 출처가 표시되지 않으므로, 실제로 본인이 말한 기억이 없는 내용은 새로운 도구로 가져가게 될 추측성 데이터일 뿐입니다. 이는 단조롭고 출처가 없는 memory 항목이 저장되는 방식으로 인한 결과이며, 마이그레이션은 이러한 불필요한 비용을 지불하지 않을 수 있는 자연스러운 기회입니다.

첫 번째 버킷의 내용을 명령형 문장으로 다시 작성하세요. ChatGPT memory는 주로 "사용자는 TypeScript strict mode를 선호함"과 같이 사용자에 대한 관찰 결과로 표현되는 경향이 있습니다. 반면 Codex는 지시 사항을 읽습니다. "TypeScript strict mode를 사용하세요. 에러를 무시하기 위해 any를 추가하지 마세요"는 에이전트가 따를 수 있는 형태로 변환된 동일한 사실입니다.

2단계: Codex가 실제로 찾는 위치에 배치하기

Codex는 AGENTS.md를 읽습니다. CLAUDE.md나 ChatGPT의 custom instructions는 읽지 않습니다. Claude Code에서 넘어오셨다면 이 이동의 반대 방향 과정을 통해 이미 알고 계실 수도 있습니다.

조회는 계층적으로 이루어집니다. Codex 홈 디렉터리(~/.codex/AGENTS.md 또는 이동한 경우 $CODEX_HOME), 리포지토리 루트, 중간 디렉터리, 그리고 현재 작업 디렉터리 순입니다. 파일은 위에서 아래로 병합되며, 충돌이 발생하면 더 가까운 파일이 우선 적용됩니다. 따라서:

  • 글로벌 선호도 — 기본 언어 설정, 출력 스타일, 모든 작업에 공통으로 적용되는 사항 — 는 ~/.codex/AGENTS.md에 들어갑니다.
  • 리포지토리 컨벤션은 리포지토리 루트의 AGENTS.md에 들어가며, 팀원들도 적용받을 수 있도록 커밋합니다.
  • 하위 프로젝트의 특이 사항은 해당 하위 디렉터리의 AGENTS.md에 들어갑니다.

각 파일은 짧게 유지하세요. 범위 내의 모든 내용은 매 작업마다 컨텍스트에 로드되므로, 2,000단어짜리 글로벌 파일은 모든 요청마다 영구적으로 지불해야 하는 비용이 됩니다. 문서가 아니라 지시 사항을 작성하세요.

그 다음 Codex 자체의 memory 기능 사용 여부를 결정하세요. Codex memories는 기본적으로 비활성화되어 있습니다. 데스크톱 앱의 Settings → Personalization에서 "Enable memories"를 토글하거나, ~/.codex/config.toml[features] 섹션에 memories = true를 추가하여 활성화할 수 있습니다. EEA, 영국, 스위스에서는 해당 설정을 활성화한 후에만 Codex가 memories를 사용하거나 생성합니다. 두 부분을 독립적으로 조정할 수 있습니다.

```toml [features] memories = true

[memories] generate_memories = true # 새 세션에서 memory 추출 use_memories = true # 향후 세션에 memory 주입 ```

활성화되면 Codex는 스레드 간에 안정적인 선호도, 반복되는 워크플로, 기술 스택, 프로젝트 컨벤션, 알려진 함정 등을 전달하며, 요약, 지속적인 항목, 최근 입력 및 지원 증거를 ~/.codex/memories/ 아래에 저장합니다. 데스크톱 앱 또는 TUI에서 /memories를 사용하여 특정 채팅이 이를 읽거나 기여할 수 있는지 제어할 수 있습니다.

이 기능은 켤 만한 가치가 있습니다. 또한 공식적인 주의 사항이 전체 상황을 대변하므로 이것이 무엇인지 명확히 해둘 필요가 있습니다. memory 생성은 활성화되어 있거나 수명이 짧은 세션은 건너뛰고, 남은 rate-limit 비율이 구성된 임계값 아래로 떨어지면 일시 중지되며, 채팅이 끝난 후 즉시 업데이트되지 않을 수 있습니다. 이 파일들은 생성된 상태이므로 직접 편집해서는 안 됩니다. 생성된 memory 필드에서 비밀 정보(secrets)는 가려지지만, 공유하기 전에 파일을 검토하는 것이 좋습니다. 그리고 이 저장소는 해당 장치에 로컬로 저장되며 프로젝트 전반에 글로벌하게 적용됩니다. 리포지토리별로 범위가 지정되지 않으며 어디에도 동기화되지 않습니다.

즉, 다음 장치를 설정하거나, 업무용 노트북에서 Codex를 열거나, 다른 에이전트에 작업을 맡길 때 1단계를 다시 수행해야 함을 의미합니다.

더 나은 방법: 두 도구 모두에서 사용할 수 있는 단일 Memory 레이어

위의 마이그레이션은 질문하신 내용에 대한 올바른 답변입니다. 또한 여러분 중 일부는 올해 벌써 세 번째로 이 작업을 하고 계실 것입니다.

수동 방식이 실제로 무엇인지 주목해 보세요. 한 제품의 독점 저장소에서 지식을 추출하고, 이를 두 번째 제품의 파일 형식으로 수동 변환한 다음, 두 도구 모두 읽을 수 없는 제3의 장소에 사본을 남겨둔 것입니다. 다음번이라고 해서 이 과정이 더 쉬워지지는 않습니다. 지식은 지속되는 것이며, 도구는 계속해서 바뀝니다.

대안은 해당 지식을 두 도구 외부에서 유지하고 각 도구가 이를 읽을 수 있도록 하는 것입니다. MemoryLake는 어시스턴트 밑에 위치하는 memory 레이어입니다. 문서, 결정 사항, 컨벤션을 한 번만 입력하면 Codex, Claude, OpenClaw 등이 동일한 저장소에서 이를 읽어옵니다. 도구 전환은 마이그레이션이 아니라 단순한 설정 변경이 됩니다.

공평하게 비교하자면, AGENTS.md는 memory 레이어가 가지지 못한 확실한 장점이 있습니다. 일반 텍스트이고, 리포지토리에 상주하며, 풀 리퀘스트에서 검토할 수 있고, 팀원들이 자동으로 상속받습니다. 리포지토리 컨벤션에는 계속해서 이 방식을 사용하세요. 그것이 이 방식의 강점입니다. memory 레이어는 리포지토리 형태가 아니며 도구마다 매번 다시 입력할 필요가 없는, 축적된 지식을 위한 것입니다.

1단계: API 키 생성하기

키를 생성하고 약 30초 만에 첫 번째 요청을 보내보세요. 설정 파일 내에 인라인으로 작성하기보다는 환경 변수나 비밀 관리자(secret manager)에 보관하는 것이 좋습니다. 설정 파일은 바로 이러한 마이그레이션 과정에서 장치 간에 복사되기 쉽기 때문입니다.

MemoryLake API 키 생성하기
MemoryLake API 키 생성하기

2단계: 첫 번째 memories 업로드하기

방금 한 시간 동안 수동으로 추출한 지식이 담긴 문서, 이미지, 파일을 업로드하세요. 컨벤션 문서, 아키텍처 결정 사항, 클라이언트 브리프, 런북 등이 이에 해당합니다. 가능하면 요약본보다는 원본 소스를 업로드하는 것이 좋습니다. 요약본은 세부 정보가 소리 없이 사라지기 쉬운 또 다른 요인이기 때문입니다.

MemoryLake에 첫 번째 memories 업로드하기
MemoryLake에 첫 번째 memories 업로드하기

3단계: AI 및 에이전트 연결하기

Claude, Codex, OpenClaw 및 기타 AI 에이전트가 MCP 또는 API를 통해 memory에 접근할 수 있도록 하세요. Codex는 MCP 서버를 지원하므로 코드를 다시 작성할 필요 없이 설정 항목만 추가하면 됩니다. 그러면 다른 에이전트나 API를 기반으로 구축한 모든 서비스에서 동일한 저장소에 접근할 수 있습니다. MCP 클라이언트가 없는 ChatGPT를 함께 사용하는 경우, API를 통해 필요한 정보를 검색하여 프롬프트나 워크플로에 주입하면 됩니다.

MCP를 통해 AI 및 에이전트 연결하기
MCP를 통해 AI 및 에이전트 연결하기

실제 업무에서의 변화

첫 번째 차이점은 새로운 도구를 사용하는 첫날부터 나타납니다. 아무것도 모르는 에이전트 대신, "재시도(retries)에 대해 무엇을 결정했지?"라는 질문에 답할 수 있는 에이전트를 얻게 됩니다. 결정 사항이 내보낼 수 없는 스레드가 아니라 저장소에 들어있기 때문입니다.

두 번째는 여러 장치 간의 차이입니다. Codex memories는 설계상 로컬 및 장치별로 제한되지만, memory 레이어는 그렇지 않습니다. 개인 노트북과 회사 데스크톱이 동일한 지식을 공유하므로, 선호도를 매번 다시 설정해야 하는 번거로움이 사라집니다.

세 번째는 발전 방향입니다. 현재 생태계의 솔직한 실상은 사용자가 별도로 설정하지 않는 한 Codex가 세션 간에 프로젝트 컨텍스트를 잊어버린다는 점이며, 경쟁 도구들도 약간씩 다른 파일 형식을 사용할 뿐 마찬가지입니다. 지식이 한곳에 머무르게 되면, Codex와 Claude Code를 동시에 실행하더라도 동일한 컨벤션의 사본을 두 개씩 유지 관리할 필요가 없어집니다.

전환을 위한 모범 사례

지침(instructions)과 지식(knowledge)을 분리하여 마이그레이션하세요

AGENTS.md는 규칙을 위한 것입니다. 짧고 명령형이며 모든 작업에 로드됩니다. 반면 memory 레이어는 지식을 위한 것입니다. 문서, 결정 사항, 이력 등 매번 로드하기에는 너무 길고 잃어버리기에는 너무 가치 있는 자료들입니다. 이 둘을 섞으면 모든 요청마다 비용이 많이 들면서도 여전히 불완전한, 비대해진 지침 파일이 생성됩니다.

Codex memories를 켜되, 이를 아카이브로 취급하지 마세요

이 기능을 활성화하면 반복 작업이 확실히 줄어듭니다. 다만 문서화된 동작 방식에 맞춰 기대치를 조정하세요. 단일 장치에 로컬로 저장되고, 프로젝트별이 아닌 글로벌로 적용되며, 짧은 세션은 건너뛰고, rate limit에 도달하면 일시 중지되고, 채팅이 끝난 직후에는 최신 상태가 아닐 수 있으며, 직접 편집해서는 안 되는 생성된 상태입니다. 이는 작업의 기록이 아니라 작업을 돕는 편의 레이어일 뿐입니다.

추출 작업은 한 번에 제대로 하세요

기억나는 중요한 열 가지 사항만 마이그레이션하고 나머지는 자연스럽게 다시 쌓이도록 두고 싶은 유혹이 생길 수 있습니다. 하지만 자연스럽게 다시 쌓이지 않습니다. 향후 두 달 동안 여러 프롬프트에서 산발적으로 다시 설명해야 할 뿐입니다. 전체 memory 페이지를 읽고, 분류하고, 한 번에 작성하세요. memory 레이어를 유지하는 경우, 이번 단계가 이 작업을 수행하는 마지막 기회가 될 것입니다.

무조건 전부 복사하지 말고, 이전할 내용을 검토하세요

어시스턴트가 사용자에 대해 "기억"하는 내용 중 일부는 사용자가 직접 말한 내용과 동일한 형식으로 저장된 추론 결과입니다. 이 목록을 새 도구에 그대로 복사하면 이러한 추측성 데이터가 영구 설정으로 굳어지게 됩니다. 각 줄을 읽으며 본인이 실제로 말한 내용이 맞는지 자문해 보세요.

결론

OpenAI가 자사의 일반 사용자용 앱이 아닌 경쟁사의 코딩 에이전트를 위한 가져오기 도구를 구축했기 때문에, ChatGPT에서 Codex로 이동하는 것은 수동 작업입니다. memory를 읽어내고, 지속적인 정보와 프로젝트 범위 정보로 분류하고, 명령형으로 다시 작성하여 Codex가 실제로 로드하는 AGENTS.md 계층 구조에 배치하세요. 이왕 하는 김에 기본적으로 비활성화되어 있고 로컬 및 글로벌 범위로 적용되지만 충분히 가치 있는 Codex memories도 활성화해 보세요.

신중하게 결정해야 할 부분은 지식이 도구 내부에 머무를지, 아니면 도구 밑에 머무를지 여부입니다. 도구 종속적인 memory는 다음번 도구 전환 시나 새로운 장치를 설정할 때마다 이 마이그레이션을 다시 수행해야 함을 의미합니다. 두 도구 모두 읽을 수 있는 memory 레이어를 사용하면 지식이 도구 선택보다 더 오래 지속되며, 이 분야의 변화 속도를 감안할 때 이것이 더 안전한 선택입니다.

자주 묻는 질문

Codex는 ChatGPT에서 직접 가져올 수 있나요?

아니요. Codex의 /import는 Claude Code 설정, 프로젝트, 최근 채팅을 가져오는 것으로 문서화되어 있으며, v0.145(2026년 7월 21일 출시)에서는 Cursor까지 지원이 확장되었습니다. ChatGPT 일반 사용자용 앱은 지원되는 소스가 아닙니다. 또한 가져오기는 단방향으로 진행되므로 Codex에서 변경한 사항은 다시 전파되지 않으며, 웹 전용 세션 기록은 전혀 가져올 수 없고 로컬 세션 데이터만 가져올 수 있습니다.

Codex는 memories를 어디에 저장하며, 프로젝트별로 저장되나요?

기본적으로 Codex 홈 디렉터리 아래의 ~/.codex/memories/에 저장됩니다. 프로젝트별이 아닌 글로벌로 적용되므로, 한 리포지토리에서 생성된 memories가 다른 리포지토리에서도 나타날 수 있습니다. 또한 해당 장치에 로컬로 저장되므로 두 번째 컴퓨터는 빈 상태로 시작합니다.

Codex memories를 직접 활성화해야 하나요, 아니면 자동으로 활성화되나요?

직접 활성화해야 합니다. 로컬 Codex memories는 기본적으로 비활성화되어 있습니다. 데스크톱 앱의 Settings → Personalization에서 "Enable memories"를 토글하거나, ~/.codex/config.toml[features] 아래에 memories = true를 설정하세요. EEA, 영국, 스위스에서는 해당 설정을 활성화한 후에만 Codex가 memories를 사용하거나 생성합니다.

Codex가 저의 CLAUDE.md나 ChatGPT custom instructions를 읽을 수 있나요?

둘 다 읽을 수 없습니다. Codex는 AGENTS.md를 읽으며, Codex 홈 디렉터리부터 리포지토리 루트를 거쳐 작업 디렉터리까지 계층적으로 확인하고 더 가까운 파일이 우선 적용됩니다. CLAUDE.md 파일의 내용은 대개 그대로 전송해도 무방하지만, 파일 이름과 로드 경로가 변경됩니다.

공유 리포지토리에 AGENTS.md를 커밋해도 안전한가요?

리포지토리 컨벤션의 경우 안전하며, 팀원들이 이를 상속받도록 하는 것이 원래 목적입니다. 대신 개인적인 선호도는 ~/.codex/AGENTS.md에 보관하고, 두 파일 모두에 자격 증명 정보(credentials)를 넣지 마세요. 참고로 Codex는 생성된 memory 필드에서 비밀 정보를 가려주지만, 공유하기 전에 해당 파일을 검토할 것을 권장합니다. 공개를 염두에 두고 작성된 파일이 아니기 때문입니다.

Codex 대신 Claude Code로 이동하는 경우는 어떻게 되나요?

동일한 형태이지만 대상 파일이 다릅니다. 1단계의 지식 추출 과정은 동일하며 배치 위치만 변경됩니다. Claude Code 버전의 마이그레이션 가이드에서 파일이 들어갈 위치를 다루고 있으며, 두 도구를 모두 사용하게 될 것으로 예상된다면 MCP를 통해 공유 memory 레이어를 연결하는 방법을 한 번만 설정해 두는 것이 좋습니다.