개발 공부중

VS Code에서 Codex를 쓰다가 보관한 채팅 다시 복원하는 방법 본문

카테고리 없음

VS Code에서 Codex를 쓰다가 보관한 채팅 다시 복원하는 방법

개발자 leelee 2026. 8. 10. 22:32

 

VS Code에서 Codex를 사용하다 보면 채팅 목록에서 보관(Archive) 버튼을 누를 때가 있다.

문제는 보관 버튼을 누르는 순간 해당 대화가 일반 채팅 목록에서 사라지는데,

VS Code Codex에서는 보관된 채팅 목록을 화면에서 바로 확인하거나 복원하는 메뉴를 찾기 어려웠다.

 

처음에는 대화가 삭제된 줄 알았지만 확인해보니 실제 채팅 데이터는 그대로 남아 있었다.

이번 글에서는 직접 해본 Codex 보관 채팅 복원 방법을 정리했다.


1. Codex 채팅은 어디에 저장될까?

Windows 환경에서 Codex 관련 데이터는 사용자 폴더 아래의 .codex 폴더에 저장된다.

C:\Users\사용자명\.codex
 

내 환경에서는 다음과 같은 구조였다.

C:\Users\user\.codex
├─ sessions
├─ archived_sessions
├─ state_5.sqlite
└─ ...
 

여기서 중요한 폴더는 두 개다.

sessions
 

현재 사용 중인 일반 채팅 세션이 저장되는 곳이다.

반면:

archived_sessions
 

보관 처리한 채팅의 .jsonl 파일이 이동하는 곳이다.


2. 보관 버튼을 누르면 어떻게 될까?

Codex 채팅 우측의 보관 버튼을 누르면 해당 채팅은 일반 채팅 목록에서 사라진다.

실제 채팅 파일은 삭제되지 않고:

C:\Users\user\.codex\archived_sessions
 

로 이동했다.

즉:

일반 채팅
.codex\sessions
        ↓
     보관
        ↓
.codex\archived_sessions
 

형태다.

하지만 여기서 한 가지 중요한 점이 있었다.

Codex는 단순히 .jsonl 파일 위치만 보고 채팅의 보관 여부를 판단하는 것이 아니었다.


3. .jsonl 파일만 sessions로 옮기면 안됨

처음에는 단순하게 보관된 .jsonl 파일을:

archived_sessions
 

에서:

sessions\2026\08\07
 

로 직접 옮기면 나올 거라고 생각했다.

 

그런데 VS Code를 재실행해도 채팅 목록에 나타나지 않았다.

원인을 확인해보니 Codex에서는 대략 다음 두 가지 정보가 같이 관리되고 있었다.

1. 실제 대화 내용
   → .jsonl 파일

2. 채팅의 상태 정보
   → state_5.sqlite 등의 내부 상태 데이터
 

즉 실제 파일은 sessions에 있어도 내부적으로 여전히:

archived = 1
 

상태라면 Codex는 해당 대화를 보관된 채팅이라고 판단해서 목록에서 숨긴다.

따라서 파일을 직접 옮기는 방식은 추천하지 않는다.


4. 올바른 복원 방법

가장 좋은 방법은 Codex 자체의:

unarchive
 

명령을 사용하는 것이다.

이 명령을 사용하면 채팅 파일 이동과 내부 보관 상태 변경을 Codex가 함께 처리한다.


5. VS Code 완전히 종료하기

먼저 열려 있는 VS Code 창을 전부 종료한다.

VS Code 내부 터미널이 아니라 Windows 시작 메뉴에서 PowerShell을 별도로 실행하는 것을 추천한다.

Codex 프로세스가 실행 중인 상태에서 변경하면 세션 상태가 충돌할 가능성이 있기 때문이다.


6. 최근 보관된 채팅 확인하기

PowerShell에서 다음 명령을 실행한다.

Get-ChildItem "$env:USERPROFILE\.codex\archived_sessions" |
    Sort-Object LastWriteTime -Descending |
    Select-Object Name, LastWriteTime
 

그러면 최근 보관한 .jsonl 파일부터 확인할 수 있다.

예를 들어:

rollout-2026-08-07T15-19-59-019fdae0-e322-7a33-bbae-5ea4ec9aefb8.jsonl
 

같은 파일이 나타난다.

파일명의 뒤쪽:

019fdae0-e322-7a33-bbae-5ea4ec9aefb8
 

이 값이 Codex 세션 ID다.

나중에 unarchive 명령에서 이 값을 사용한다.


7. Codex 실행 파일 찾기

내 환경에서는 단순히:

codex
 

라고 실행했더니 다음 오류가 발생했다.

CommandNotFoundException
 

VS Code Codex 확장은 설치되어 있었지만 codex.exe가 Windows PATH에 등록되어 있지는 않았기 때문이다.

Codex 실행 파일은 VS Code 확장 폴더 안에 있었다.

다만 확장 프로그램이 업데이트될 때마다 폴더 버전이 달라질 수 있으므로 경로를 직접 고정해서 사용하는 것보다 PowerShell로 가장 최근 설치된 Codex 실행 파일을 찾는 방법이 편하다.

다음 명령을 실행한다.

 
$codexExe = Get-ChildItem "$env:USERPROFILE\.vscode\extensions\openai.chatgpt-*\bin\windows-x86_64\codex.exe" |
    Sort-Object LastWriteTime -Descending |
    Select-Object -First 1 -ExpandProperty FullName
 

그리고 제대로 찾았는지 확인한다.

 
$codexExe
 

정상이라면 다음과 비슷한 경로가 출력된다.

C:\Users\user\.vscode\extensions\openai.chatgpt-26.803.41515-win32-x64\bin\windows-x86_64\codex.exe
 

확장 버전에 따라 숫자는 달라질 수 있다.


8. 보관된 채팅 복원하기

이제 앞에서 확인한 세션 ID를 사용한다.

& $codexExe unarchive <세션ID>
 

예를 들어 내가 테스트한 채팅의 세션 ID는:

019fdae0-e322-7a33-bbae-5ea4ec9aefb8
 

이었기 때문에 다음과 같이 실행했다.

 
& $codexExe unarchive 019fdae0-e322-7a33-bbae-5ea4ec9aefb8
 

정상적으로 처리되자 다음 메시지가 출력됐다.

Unarchived session 테스트 채팅 확인 (019fdae0-e322-7a33-bbae-5ea4ec9aefb8).
 

이 메시지가 나오면 복원 작업이 완료된 것이다.


9. 실제 파일도 이동됐는지 확인

복원 후 실제 .jsonl 파일도 확인해봤다.

일반 세션 폴더:

 
Test-Path -LiteralPath "C:\Users\user\.codex\sessions\2026\08\07\rollout-2026-08-07T15-19-59-019fdae0-e322-7a33-bbae-5ea4ec9aefb8.jsonl"
 

결과:

True
 

반대로 보관 폴더:

 
Test-Path -LiteralPath "C:\Users\user\.codex\archived_sessions\rollout-2026-08-07T15-19-59-019fdae0-e322-7a33-bbae-5ea4ec9aefb8.jsonl"
 

결과:

False
 

즉 Codex의 unarchive 명령이 자동으로:

archived_sessions
        ↓
sessions\2026\08\07
 

로 파일까지 옮겨준 것을 확인했다.


10. VS Code에서 채팅 확인

마지막으로 VS Code를 다시 실행한다.

Codex 패널에서 시계 모양의 이전 대화 버튼을 누르면 복원한 채팅이 다시 목록에 표시된다.

내 경우:

테스트 채팅 확인
 

이라는 채팅이 정상적으로 다시 나타났다.


정리

다음에 Codex 채팅을 실수로 보관했다면 아래 순서만 기억하면 된다.

1. VS Code 완전히 종료

2. archived_sessions에서 보관된 jsonl 확인

3. 파일명에서 세션 ID 확인

4. 현재 설치된 codex.exe 찾기

5. codex.exe unarchive <세션ID> 실행

6. VS Code 재실행

7. 이전 대화 목록에서 확인
 

핵심 명령만 다시 정리하면 다음과 같다.

 
# 최근 보관 채팅 확인
Get-ChildItem "$env:USERPROFILE\.codex\archived_sessions" |
    Sort-Object LastWriteTime -Descending |
    Select-Object Name, LastWriteTime
 
 
# Codex 실행 파일 찾기
$codexExe = Get-ChildItem "$env:USERPROFILE\.vscode\extensions\openai.chatgpt-*\bin\windows-x86_64\codex.exe" |
    Sort-Object LastWriteTime -Descending |
    Select-Object -First 1 -ExpandProperty FullName
 
 
# 보관 해제
& $codexExe unarchive <세션ID>
 

주의사항

.jsonl 파일을 임의로 sessions 폴더로 옮기는 것은 추천하지 않는다.

파일 위치
+
Codex 내부 archived 상태
 

두 정보가 서로 달라지면 실제 파일은 존재하는데도 VS Code Codex 채팅 목록에서는 계속 보이지 않을 수 있다.

또한:

state_5.sqlite
 

파일을 직접 수정하는 것도 피하는 것이 좋다.

가능하면 Codex에서 제공하는:

unarchive
 

명령을 이용해 복원하는 것이 가장 안전하다.

이번 문제를 해결하면서 알게 된 점은 프로그램의 데이터 파일이 존재한다고 해서 프로그램이 그 데이터를 활성 상태로 인식하는 것은 아니라는 것이다. Codex처럼 실제 파일과 별도의 상태 정보를 함께 관리하는 프로그램에서는 두 상태가 일치해야 정상적으로 목록에 표시된다.

참고: 위 방법은 내가 사용 중인 Windows + VS Code Codex 환경에서 직접 보관/복원 테스트를 진행해 정상 동작을 확인한 방법이다. Codex 확장 버전에 따라 저장 구조나 경로는 이후 변경될 수 있다.

 

Comments