실제로 전송되는 것
이동하려는 대상이 무엇인지 정확히 짚고 넘어갈 가치가 있습니다. '나의 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)에 보관하는 것이 좋습니다. 설정 파일은 바로 이러한 마이그레이션 과정에서 장치 간에 복사되기 쉽기 때문입니다.

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

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

실제 업무에서의 변화
첫 번째 차이점은 새로운 도구를 사용하는 첫날부터 나타납니다. 아무것도 모르는 에이전트 대신, "재시도(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 레이어를 사용하면 지식이 도구 선택보다 더 오래 지속되며, 이 분야의 변화 속도를 감안할 때 이것이 더 안전한 선택입니다.