Codex 0.165.0에서 변경된 사항
릴리스 노트의 '새로운 기능' 항목에는 두 가지 memory 관련 항목이 나열되어 있습니다.
- Memory v2가 새로운 프로필의 기본값입니다.
- Codex는 외부 에이전트의 memory를 v2로 가져올 수 있습니다.
이 기능들의 기반이 된 풀 리퀘스트(PR)는 릴리스 노트보다 더 많은 정보를 제공합니다. "Default fresh memory profiles to v2"라는 제목의 첫 번째 PR은 그 이유를 다음과 같이 밝힙니다: "v1 memory 워크스페이스가 없는 프로필은 v2를 사용하기 전에 보존하거나 통합해야 할 기존 context가 없습니다."
두 번째 PR은 이전의 문제점을 설명합니다: "이전에는 외부 에이전트 memory 가져오기가 v1 워크스페이스에만 기록되고 v1 통합만 큐에 추가되어, v2 파이프라인에는 가져온 리소스가 남지 않았습니다."
즉, 이번 릴리스 전까지는 v2 파이프라인을 실행하는 머신이 다른 에이전트에서 memory를 가져와도 해당 memory가 v2에 도달하지 못했습니다. 버전 0.165.0은 이 간극을 메우는 동시에, 이전할 과거 memory가 없는 머신에 대해 v2를 시작점으로 설정합니다.
변경되지 않은 사항
버전에 대해 알아보기 전에, 이번 업데이트가 변경하지 않는 사항을 구분하는 것이 도움이 됩니다.
Memory는 여전히 기본적으로 꺼져 있습니다. Codex 문서는 다음과 같이 명시합니다: "로컬 Codex memory는 기본적으로 꺼져 있습니다." ChatGPT 데스크톱 앱의 설정 > 개인화에서 'Enable Codex memories'를 선택하거나 config.toml의 기능 플래그를 통해 켤 수 있습니다. 버전 변경은 memory가 켜진 후에만 의미가 있습니다.
Memory는 여전히 로컬에 저장됩니다. 문서는 "로컬 Codex 클라이언트는 별도의 로컬 memory 저장소와 제어 기능을 사용한다"고 명시하며, ChatGPT 웹은 대신 ChatGPT memory를 사용한다고 설명합니다. 릴리스 노트에는 이 둘 사이의 연결에 대한 설명이 없습니다.
파일은 여전히 생성된 상태(generated state)입니다. OpenAI의 지침은 변함이 없습니다: "이 파일들을 생성된 상태로 취급하십시오. 문제 해결 시나 Codex 홈 디렉토리를 공유하기 전에 검사할 수는 있지만, 이를 직접 수동으로 편집하는 것을 주요 제어 수단으로 삼지 마십시오."
채팅별 제어는 여전히 동일하게 작동합니다. /memories 명령은 현재 채팅이 기존 memory를 사용할 수 있는지, 그리고 향후 memory에 기여할 수 있는지를 제어하며, "채팅 수준의 선택은 글로벌 memory 설정을 변경하지 않습니다."
머신이 사용하는 memory 버전 확인 방법
Codex와 함께 제공되는 구성 스키마는 이제 버전 설정에 대해 한 문장으로 설명합니다: "memory 파이프라인을 선택합니다. memory가 활성화될 때 새로운 프로필은 v2를 기본값으로 사용하며(dual-write가 명시적으로 비활성화되지 않은 경우), 기존 v1 프로필은 v1을 기본값으로 사용합니다."
풀 리퀘스트는 Codex가 적용하는 정확한 테스트 기준을 제시합니다: "memory가 활성화되어 있고 memories 디렉토리가 없을 때 v2를 선택합니다." 또한 변경하지 않고 유지하는 사항도 나열합니다: "명시적인 memories.version 설정, memories.dual_write = false 옵트아웃, 그리고 기존 워크스페이스나 파일 시스템 확인 오류 시의 v1 기본값은 유지합니다."
쉽게 말해, memory가 켜져 있을 때 Codex는 Codex 홈 디렉토리를 확인합니다.
memories디렉토리가 아직 없는 경우: Codex는 프로필을 새로운 것으로 간주하고 v2를 사용합니다.memories디렉토리가 이미 존재하는 경우: Codex는 v1을 유지하여 이미 구축된 memory를 계속 사용합니다.- 버전을 직접 설정한 경우: Codex는 해당 설정을 존중합니다.
- Codex가 파일 시스템을 확인할 수 없는 경우: v1으로 대체됩니다.
결정 기준은 Codex를 설치한 날짜가 아니라 디렉토리의 존재 여부입니다. 몇 달 전에 설치했더라도 memory를 한 번도 활성화하지 않아 memories 디렉토리가 없다면, memory를 켜는 순간 v2가 적용됩니다.
dual-write의 의미
스키마는 두 번째 설정인 memories.dual_write를 다음과 같이 설명합니다: "v1이 선택된 동안 두 버전을 모두 생성하며, 전환(cutover) 후에는 v2만 단독으로 실행됩니다."
이는 전환 과정을 설명합니다. v1을 사용하는 머신은 v2 memory를 병행하여 구축할 수 있으므로, 나중에 v2로 이동할 때 이미 데이터가 준비되어 있게 됩니다. memories.dual_write를 false로 설정하는 것은 기본값이 존중하는 선택지 중 하나이며, 이 경우 새로운 프로필은 기본적으로 v2로 이동하지 않습니다.
memories.version이나 memories.dual_write 모두 아직 Codex 구성 참조 문서에는 나타나지 않습니다. 두 설정 모두 스키마와 풀 리퀘스트에서 가져온 것이므로, 향후 변경될 수 있는 현재의 동작으로 취급하십시오.
각 버전의 파일 저장 위치
문서화된 위치는 v1 저장소입니다: "주요 memory 파일은 ~/.codex/memories/ 아래에 있으며 요약, 영구 항목, 최근 입력 및 이전 채팅의 지원 근거를 포함합니다."
v2 워크스페이스는 별도의 디렉토리입니다. 가져오기 관련 PR에서는 이를 이름으로 참조합니다: "선택된 리소스를 항상 memories_v2로 가져옵니다." CODEX_HOME을 사용하여 Codex 홈 위치를 변경했다면, 두 디렉토리 모두 ~/.codex 대신 해당 위치 아래에 있게 됩니다.
초기화(reset)와 관련된 작은 변화도 있습니다. PR에 따르면 "존재하지 않는 memory 워크스페이스를 초기화하는 것을 no-op(무작동)으로 만들어 사용하지 않는 v1 디렉토리가 생성되지 않도록" 수정되었습니다. 이제 새로운 머신에서 memory를 초기화해도 Codex가 프로필을 v1으로 오해하게 만드는 빈 memories 폴더가 남지 않습니다.
가져온 Claude Code Memories 저장 위치
Codex의 가져오기(import) 흐름은 다른 에이전트의 설정과 최근 작업 내용을 ChatGPT 데스크톱 앱이나 Codex CLI로 가져옵니다. 가져오기 문서에는 이전 가능한 항목들이 나열되어 있습니다. 지침 파일은 AGENTS.md가 되고, 설정은 config.toml이 되며, memory 행에는 다음과 같이 적혀 있습니다: Claude Code의 프로젝트 memory를 Memories 대상으로 가져옴.
가져오기 PR은 이제 이러한 memory에 어떤 일이 일어나는지 설명합니다.
"선택된 리소스를 항상 memories_v2로 가져옵니다. 또한 v1이 선택되었거나 기존 워크스페이스가 있는 경우 memories도 업데이트합니다."
즉:
- v2 프로필의 경우, 가져온 memory는
memories_v2로 들어갑니다. - v1 프로필의 경우, 양쪽 모두에 들어갑니다. Codex는 현재 사용 중인 파이프라인을 위해
memories에 기록하고, 나중을 위해memories_v2에도 기록합니다.
가져오기 후, Codex는 변경된 각 워크스페이스에 대해 통합(consolidation) 패스를 큐에 추가합니다. PR에 따르면 "업데이트된 각 네임스페이스에 대해 별도로 통합을 인큐(enqueue)"하며, 가져온 memory를 통합하기 위한 지침을 "활성 파이프라인의 출력 형식"에 맞게 조정합니다. 가져온 memory는 원본 파일 그대로 복사되는 것이 아니라, Codex가 자체 memory 형식으로 통합하는 원재료입니다.
동일한 릴리스의 세 번째 PR은 가져오기와 통합 패스가 동시에 동일한 워크스페이스를 변경하는 것을 방지합니다. 대상이 사용 중인 경우 Codex는 "대상이 잠겨 있으면 재시도 가능한 busy 오류를 반환하고, 워크스페이스가 사용 중일 때 통합을 건너뜁니다." 가져오기 시 busy 상태가 보고되면 잠시 기다린 후 다시 실행하십시오. PR의 자체 테스트 결과, 이런 상황에서도 데이터가 절반만 기록되는 일은 발생하지 않음을 확인했습니다.
가져오기가 건드리지 않는 것
가져오기 문서에는 다음과 같이 명시되어 있습니다: "가져오기는 기존 에이전트 설정을 변경하거나 삭제하지 않습니다." Claude Code memory 파일은 원래 위치에 그대로 유지됩니다.
CLI 가져오기에는 계획 시 알아두어야 할 제한 사항도 있습니다. "Codex CLI는 지난 30일 동안의 채팅을 최대 50개까지 가져옵니다." 또한 /import 명령은 "작업이 실행 중이거나, 원격 세션 중이거나, 로컬 앱 서버 데몬에 연결된 동안에는 사용할 수 없습니다." 데스크톱 앱의 설정 > 가져오기에서 자동 업데이트를 켜면 가져온 작업을 원본 에이전트와 동기화 상태로 유지하고 가져오기 기록을 검토할 수 있습니다. 더 광범위한 이동에 대해서는 Claude Code에서 Codex로 마이그레이션 가이드에서 지침, MCP 서버 및 스킬에 대해 다루고 있습니다.
문서에서 아직 언급하지 않은 내용
릴리스 노트, 스키마, PR은 모두 v2를 설명하고 있습니다. 하지만 Codex 문서의 memory 페이지는 여전히 ~/.codex/memories/ 아래의 단일 저장소만 설명합니다.
이로 인해 몇 가지 의문점이 남습니다.
- v2가 memory 품질에 미치는 변화: PR은 v2 파일의 위치와 사용 시점을 설명할 뿐, memory 내용이 어떻게 다른지는 설명하지 않습니다.
- v1 머신이 v2로 이동하는 방법: 스키마에는 전환(cutover)이 언급되어 있지만, 릴리스 노트나 문서 어디에도 언제 어떻게 일어나는지 설명되어 있지 않습니다.
- 데스크톱 앱의 버전 표시 여부: 문서에 설명된 개인화 설정에는 버전에 대한 언급이 없습니다.
문서가 업데이트될 때까지는 Codex 홈의 폴더가 머신이 무엇을 사용하고 있는지 보여주는 가장 직접적인 신호입니다. 이번 릴리스의 또 다른 PR은 앱이 채팅의 memory 요약을 "스레드의 확인된 memory 버전"에서 읽을 수 있는 실험적인 방법을 추가했으며, "다른 버전으로 대체(fallback)"하지 않도록 했습니다. 이는 개발자 인터페이스이지만, 두 버전이 병합되지 않고 분리되어 관리됨을 확인해 줍니다.
사람들이 흔히 하는 실수
업데이트가 memory를 자동으로 켰다고 가정하는 것. 그렇지 않습니다. memory는 직접 활성화하기 전까지는 꺼져 있습니다. 업데이트는 활성화했을 때 어떤 버전을 사용할지를 결정할 뿐입니다.
모든 머신이 v2로 이동했다고 가정하는 것. 기존 memories 디렉토리가 없는 프로필만 v2로 시작합니다. v1 memory가 있는 머신은 기본적으로 v1을 유지합니다.
Codex가 기억하는 내용을 수정하기 위해 memory 파일을 편집하는 것. OpenAI는 이를 생성된 상태로 취급할 것을 권장합니다. 두 개의 워크스페이스가 있는 상황에서 한 폴더를 수동으로 편집해도 활성 파이프라인이 읽는 내용과 다를 수 있습니다.
가져온 memory가 토씨 하나 틀리지 않고 나타나기를 기대하는 것. 가져온 내용은 Codex 자체 형식으로 통합 과정을 거칩니다.
Codex 홈을 새 컴퓨터로 복사하고 동일한 버전을 기대하는 것. 복사한 폴더가 버전을 결정합니다. Codex를 새 컴퓨터로 이동하는 가이드에서 무엇을 가져가야 하는지 확인하세요.
해결책: 버전 확인, 의도적인 가져오기, memory에서 규칙 분리
1단계: memory를 켜기 전후에 Codex 홈 확인하기
CODEX_HOME을 설정하지 않았다면 ~/.codex인 Codex 홈을 열고 어떤 memory 폴더가 있는지 확인하세요. memories 폴더는 v1 워크스페이스를 의미합니다. memories_v2 폴더는 v2를 사용 중이거나 dual-write 또는 가져오기에 의해 생성된 v2 파일이 있음을 의미합니다.
memory를 한 번도 사용하지 않은 머신에서 활성화하려는 경우 v2를 예상하십시오. 당분간 문서화된 v1 동작을 유지하고 싶다면, PR 규칙에 따라 명시적인 memories.version 설정이 존중되지만, 이 키가 아직 구성 참조 문서에 없으므로 의존하기 전에 해당 버전의 릴리스 노트를 확인하세요.
2단계: 가져오기 전에 가져올 내용 검토하기
Claude Code는 자체 자동 memory를 ~/.claude/projects/<project>/memory/ 아래에 일반 마크다운으로 유지하며 MEMORY.md 인덱스를 포함합니다. 가져오기를 실행하기 전에 프로젝트 폴더를 열어 내용을 읽어보세요. 그곳의 오래된 정보는 Codex가 자체 memory로 통합하는 재료가 됩니다.
그다음 필요한 것만 가져오세요. CLI에서는 로컬 세션에서 /import를 실행하고 Claude Code를 선택하세요. 데스크톱 앱에서는 설정 > 가져오기를 엽니다. 워크스페이스가 busy 상태라고 나오면 잠시 후 다시 실행하세요.
대신 ChatGPT 쪽에서 context를 가져오려는 경우, ChatGPT memory를 Codex로 마이그레이션하는 가이드에서 왜 그 경로가 다르게 작동하는지 설명합니다.
3단계: 반드시 적용되어야 하는 규칙은 AGENTS.md에 유지하기
memory 문서는 이에 대해 단호합니다: "필요한 팀 지침은 AGENTS.md나 체크인된 문서에 보관하십시오. memory는 항상 적용되어야 하는 규칙의 유일한 소스가 아니라 도움이 되는 회상 레이어로 취급하십시오."
버전 변경은 이 조언을 점검하기 좋은 시점입니다. 특정 컨벤션이 Codex memory나 Claude Code의 자동 memory에만 존재한다면, 이를 AGENTS.md나 리포지토리 문서에 기록하여 모든 세션과 모든 버전이 동일하게 읽을 수 있도록 하세요. Codex가 AGENTS.md 규칙을 건너뛰는 문제 해결 가이드에서 Codex가 이러한 파일을 찾는 방법을 다룹니다.
MemoryLake에서 설정하기
Codex는 이제 두 개의 로컬 memory 워크스페이스를 가지며, Claude Code는 프로젝트당 자체 memory 폴더를 가집니다. 각 도구는 한 머신에서 해당 도구의 형식으로 memory를 생성합니다. 모든 에이전트가 시작점으로 삼길 원하는 결정사항들은 머신이 어떤 파이프라인을 사용하는지에 의존하지 않는 장소가 필요합니다.
MemoryLake는 이러한 context를 직접 관리하는 하나의 리스트에 유지하고, Codex뿐만 아니라 Claude Code, ChatGPT 등 연결된 다른 어시스턴트에서도 사용할 수 있게 해주는 memory 레이어입니다.
사용자는 자신의 언어로 직접 항목을 작성합니다. ~/.codex/memories/, memories_v2, Claude Code의 자동 memory, 가져온 설정 또는 어떤 벤더의 저장소에서도 내용을 읽거나 쓰거나 삭제하지 않습니다. Codex 자체의 memory는 OpenAI가 설명하는 방식대로 계속 작동합니다.
1단계: API 키 생성
로그인 후 대시보드에서 키를 생성합니다. 이 키는 MemoryLake 워크스페이스에 속하며 ChatGPT 계정이나 Codex 구성과는 별개입니다.

2단계: 첫 번째 memory 업로드
해결책 2단계에서 확인한 내용부터 시작하세요. Claude Code의 memory에서 유지할 가치가 있는 컨벤션, 결정사항, 알려진 함정 등을 업로드합니다. 항목당 하나의 포인트를 작성하고 날짜를 기입하며 적용되는 리포지토리 라벨을 붙입니다.

3단계: AI 및 에이전트 연결
Codex와 사용하는 다른 어시스턴트들을 연결합니다. 머신의 memory 버전이 바뀌거나 도구를 교체해도 신뢰하는 context는 그대로 유지됩니다.

실제적인 변화
첫 번째 차이점은 자신이 어떤 저장소를 보고 있는지 알게 된다는 것입니다. memories 폴더와 memories_v2 폴더는 서로 다르며, 업데이트는 디스크에 이미 무엇이 있는지에 따라 둘 중 하나를 결정합니다.
두 번째는 가져오기가 더 이상 미스터리가 아니라는 점입니다. v1에서는 두 워크스페이스 모두에 들어가고, v2에서는 하나에 들어가며, 어떤 경우든 Codex는 자체 형식으로 이를 다시 작성합니다.
세 번째는 의존하는 규칙이 버전에 따라 이동하지 않는다는 것입니다. 규칙은 AGENTS.md와 문서에 있으며, Codex는 memory 파이프라인에 관계없이 이를 읽습니다. memory가 아닌 채팅 기록을 찾고 있다면, 누락된 Codex 채팅 기록 찾기 가이드에서 해당 위치를 확인하세요.
0.165.0 이후 Codex Memories 모범 사례
Codex 홈에서 memories와 memories_v2를 확인하세요. 폴더가 현재 상태를 말해줍니다.
기존 머신이 v2라고 가정하지 마세요. v1 워크스페이스가 있으면 기본적으로 v1을 유지합니다.
Claude Code의 memory 파일을 가져오기 전에 읽어보세요. 오래된 노트는 오래된 memory가 됩니다.
워크스페이스가 busy 상태라고 보고되면 가져오기를 다시 실행하세요. 재시도할 수 있도록 설계되었습니다.
생성된 파일을 직접 수정하지 마세요. 대신 /memories, 개인화 설정 또는 초기화를 사용하세요.
필수 규칙은 AGENTS.md에 두세요. memory는 회상 레이어일 뿐입니다.
릴리스 노트를 주시하세요. 문서에는 아직 v2가 설명되어 있지 않으므로 릴리스 노트에서 변경 사항이 가장 먼저 나타납니다.
결론
Codex 0.165.0은 기존 v1 memory 워크스페이스가 없는 프로필에 대해 memory v2를 기본값으로 설정하고, Claude Code에서 가져온 memory를 v2로 보냅니다. 이미 v1 memory가 있는 머신은 기본적으로 v1을 유지하며, 가져오기 시 두 워크스페이스 모두에 기록됩니다. memory는 여전히 기본적으로 꺼져 있고, 로컬에 저장되며, 수동으로 편집해서는 안 되는 생성된 파일입니다.
Codex 홈에 어떤 폴더가 있는지 확인하고, 가져오기 전에 Claude Code의 memory를 검토하며, 항상 적용되어야 하는 규칙은 AGENTS.md에 유지하십시오.