macOS용 Codex 데스크톱 앱에서 임시 채팅을 기존 사이드바 프로젝트로 안전하게 옮기는 Codex 스킬입니다.
| Before | After | |
|
➡️ |
|
Codex에서는 이미 진행 중인 채팅을 프로젝트 폴더로 이동하는 기능을 제공하지 않습니다. 긴 작업을 임시 채팅에서 시작한 뒤 프로젝트를 생성하면, 기존 컨텍스트를 유지한 채 프로젝트 아래로 옮길 방법이 없습니다.
move-codex-thread는 현재 대화를 유지하면서 임시 채팅을 기존 사이드바 프로젝트로 안전하게 옮기기 위해 만들어졌습니다.
- 현재 채팅의
CODEX_THREAD_ID또는 복사한 세션 UUID를 지원합니다. - 사이드바 프로젝트 표시명과 등록된 절대경로를 지원합니다.
- Codex 실행 중에는 상태 파일을 수정하지 않고, 앱이 완전히 종료된 뒤 단발성 LaunchAgent가 작업합니다.
- 적용 전 백업, SHA-256 검증, 원자적 쓰기, 저널, 실패 시 롤백을 사용합니다.
- Codex의 로컬 스키마가 예상과 다르면 추측해서 수정하지 않고 중단합니다.
flowchart TD
request["사용자 이동 요청"] --> inspect["읽기 전용 dry-run"]
inspect --> confirm{"사용자 확인"}
confirm -->|진행| register["단발성 LaunchAgent 등록"]
confirm -->|취소| stop["변경 없이 종료"]
register --> quit["Codex 완전 종료"]
quit --> backup["상태 파일 백업 및 SHA-256 검증"]
backup --> migrate["세션과 프로젝트 연결 정보 이동"]
migrate --> verify{"결과 검증"}
verify -->|성공| reopen["Codex 재실행"]
verify -->|실패| rollback["두 원본 파일 롤백"]
- macOS
/Applications/Codex.app에 설치된 Codex 데스크톱 앱PATH에서python3로 찾을 수 있는 Python 3.9 이상- 이동 대상 폴더가 Codex 사이드바 프로젝트로 이미 등록되어 있어야 함
- OpenAI가 제공하는 공식 이동 API를 사용하는 도구가 아닙니다.
- Codex의 비공식 로컬 상태 스키마에 의존합니다.
- Codex 업데이트로 스키마가 달라지면 fail-closed 방식으로 중단될 수 있습니다.
- 실제 변경을 승인하기 전에 항상 dry-run 결과를 확인하세요.
git clone https://github.com/charliehotel/move-codex-thread.git \
"${CODEX_HOME:-$HOME/.codex}/skills/move-codex-thread"이미 저장소를 다른 위치에 받은 경우 다음 항목을 같은 이름의 스킬 폴더로 복사할 수 있습니다.
SKILL.md
agents/
scripts/
설치 후 새 Codex 채팅에서 스킬이 발견되는지 확인하세요.
현재 열려 있는 채팅을 옮길 때는 세션 ID를 따로 지정하지 않아도 됩니다.
$move-codex-thread 현재 세션을 (예)move-codex-thread 프로젝트로 옮겨줘
스킬은 먼저 읽기 전용 dry-run으로 현재 위치와 대상 프로젝트를 확인합니다. 내용을 확인하고 진행하면 단발성 LaunchAgent를 등록합니다.
안내가 표시된 다음 Cmd+Q로 Codex를 완전히 종료하면 이동이 진행되고, 완료 후 Codex가 한 번 다시 열립니다.
현재 채팅이 아닌 다른 세션도 UUID를 지정해 옮길 수 있습니다.
$move-codex-thread 019ee300-03fd-7363-9d8e-a9ab5f85816a 세션을 (예)move-codex-thread 프로젝트로 옮겨줘
옮길 채팅의 컨텍스트 메뉴에서 세션 ID 복사를 선택해 UUID를 얻습니다.
대상은 사이드바의 프로젝트 표시명 또는 등록된 절대경로로 지정합니다.
Codex가 다시 열리면 임시 채팅이 지정한 프로젝트 아래로 이동한 것을 확인할 수 있습니다.
프로덕션 코드는 Python 표준 라이브러리만 사용합니다. 테스트에는 pytest가 필요합니다.
uv run pytest -q스킬 구조 검증:
python3 /path/to/skill-creator/scripts/quick_validate.py .- 요청 파일에는 세션 내용이 아니라 operation ID와 식별 정보만 기록합니다.
- 성공한 백업과 receipt는 30일간 보존합니다.
- 실패한 백업과 journal은 자동 삭제하지 않습니다.
- 스크립트는 이 스킬이 만든 operation 디렉터리 외부를 정리하지 않습니다.
- 문제 제보 시 실제 세션 UUID, 홈 경로, rollout 내용,
.codex-global-state.json을 공개하지 마세요.



