<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Session Migration on ICE-ICE-BEAR-BLOG</title><link>https://ice-ice-bear.github.io/ko/tags/session-migration/</link><description>Recent content in Session Migration on ICE-ICE-BEAR-BLOG</description><generator>Hugo -- gohugo.io</generator><language>ko</language><lastBuildDate>Thu, 07 May 2026 00:00:00 +0900</lastBuildDate><atom:link href="https://ice-ice-bear.github.io/ko/tags/session-migration/index.xml" rel="self" type="application/rss+xml"/><item><title>CODEX-R — Claude Code 세션을 Codex CLI로 가져오는 마이크로 스킬</title><link>https://ice-ice-bear.github.io/ko/posts/2026-05-07-codex-r-claude-code-bridge/</link><pubDate>Thu, 07 May 2026 00:00:00 +0900</pubDate><guid>https://ice-ice-bear.github.io/ko/posts/2026-05-07-codex-r-claude-code-bridge/</guid><description>&lt;img src="https://ice-ice-bear.github.io/" alt="Featured image of post CODEX-R — Claude Code 세션을 Codex CLI로 가져오는 마이크로 스킬" /&gt;&lt;h2 id="개요"&gt;개요
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://github.com/thedalbee/codex-r" target="_blank" rel="noopener"
 &gt;&lt;code&gt;thedalbee/codex-r&lt;/code&gt;&lt;/a&gt;은 2026-05-01에 만들어진 별 3개짜리 MIT 라이선스 마이크로 도구다. 한 줄로 요약하면 &lt;strong&gt;&lt;a class="link" href="https://openai.com/codex/" target="_blank" rel="noopener"
 &gt;OpenAI Codex CLI&lt;/a&gt;에 &lt;code&gt;codex -r&lt;/code&gt; 한 명령으로 &lt;a class="link" href="https://www.anthropic.com/claude-code" target="_blank" rel="noopener"
 &gt;Claude Code&lt;/a&gt; 세션을 picker로 골라 import하는 워크플로를 이식한 Markdown 전용 스킬&lt;/strong&gt;이다. 코드는 거의 없고 &lt;a class="link" href="https://github.com/anthropics/skills" target="_blank" rel="noopener"
 &gt;agent-skills&lt;/a&gt; 패턴을 그대로 차용한 SKILL.md 한 장이 본체다. 별 개수보다 흥미로운 건 &lt;strong&gt;누가 왜 이걸 만들었는가&lt;/strong&gt; 라는 질문 쪽이다.&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;graph LR
 User["사용자"] --&gt;|"codex -r"| Wrapper["thin wrapper"]
 Wrapper --&gt; Picker["세션 picker"]
 Picker --&gt;|"~/.claude/projects/**/*.jsonl 스캔"| Claude["Claude Code 세션"]
 Picker --&gt;|"선택"| Import["externalAgentConfig/import"]
 Import --&gt; Ledger["~/.codex/external_agent_session_imports.json"]
 Ledger --&gt;|"codex resume threadId"| Resume["Codex 세션 재개"]&lt;/pre&gt;&lt;h2 id="풀려는-문제"&gt;풀려는 문제
&lt;/h2&gt;&lt;p&gt;Codex CLI 0.128.0이 &lt;code&gt;Added external agent session import&lt;/code&gt;를 넣었지만, 이 기능은 트리거가 까다롭다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;TUI 프롬프트는 &lt;code&gt;external_migration&lt;/code&gt; feature flag가 켜지고 trust onboarding flow에 진입할 때만 뜬다.&lt;/li&gt;
&lt;li&gt;이미 trusted된 프로젝트에서는 평생 그 프롬프트를 못 본다.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/.claude/projects&lt;/code&gt; 폴더가 크면 home-wide 탐지가 느려진다.&lt;/li&gt;
&lt;li&gt;셸 alias가 &lt;code&gt;codex -r&lt;/code&gt;을 진짜 Codex 바이너리로 보내면 &lt;code&gt;unexpected argument '-r'&lt;/code&gt; 에러가 난다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;결과적으로 &lt;strong&gt;기능은 있지만 사용 경로가 보물찾기&lt;/strong&gt;다. CODEX-R는 이 보물찾기를 picker 한 번에 끝내는 thin wrapper로 바꾼다.&lt;/p&gt;
&lt;h2 id="codex-r가-하는-것"&gt;CODEX-R가 하는 것
&lt;/h2&gt;&lt;p&gt;스킬 본체는 SKILL.md 한 장이다. Codex 세션에서 &lt;code&gt;$codex-r&lt;/code&gt;을 부르면 다음 동작을 가르친다.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;codex&lt;/code&gt; thin wrapper 셋업&lt;/li&gt;
&lt;li&gt;Claude Code 세션 picker&lt;/li&gt;
&lt;li&gt;안전 검증 커맨드&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;codex -r &lt;span class="c1"&gt;# picker 열고 선택하면 import&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;codex -r daybreak &lt;span class="c1"&gt;# ~/ws/daybreak 세션만 보기&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;codex -r --cwd ~/ws/kb &lt;span class="c1"&gt;# 특정 디렉토리 세션&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;codex -r --recursive &lt;span class="c1"&gt;# 자식 디렉토리 포함&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;codex -r --all daybreak &lt;span class="c1"&gt;# 전 세션 텍스트 검색&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;codex -r --list --limit &lt;span class="m"&gt;5&lt;/span&gt; &lt;span class="c1"&gt;# 보기만, import 안 함&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;codex -r --dry-run --limit &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="안전-컨트랙트"&gt;안전 컨트랙트
&lt;/h2&gt;&lt;p&gt;저자가 강조한 &lt;strong&gt;딱 하나의 규칙: setup verification은 절대 import 하지 않는다.&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--list&lt;/code&gt;와 &lt;code&gt;--dry-run&lt;/code&gt;은 절대 import 안 함&lt;/li&gt;
&lt;li&gt;import는 사용자가 명시적으로 세션을 선택했을 때만&lt;/li&gt;
&lt;li&gt;기본값은 현재 cwd와 정확히 일치하는 Claude 세션만 노출&lt;/li&gt;
&lt;li&gt;Codex가 나중에 official &lt;code&gt;-r&lt;/code&gt; 지원을 내면 wrapper는 양보하고 물러남&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CODEX-R는 Claude의 settings, &lt;a class="link" href="https://modelcontextprotocol.io/" target="_blank" rel="noopener"
 &gt;MCP&lt;/a&gt; 서버, 플러그인, 스킬은 복사하지 않는다. &lt;strong&gt;순수하게 세션 JSONL만 Codex의 app-server migration API로 import한다.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="동작-원리-codex-내부-api"&gt;동작 원리 (Codex 내부 API)
&lt;/h2&gt;&lt;pre class="mermaid" style="visibility:hidden"&gt;flowchart TD
 A["~/.claude/projects/**/*.jsonl"] --&gt;|"파일 스캔"| B["picker UI"]
 B --&gt;|"사용자 선택"| C["externalAgentConfig/import RPC"]
 C --&gt;|"SESSIONS migration item"| D["Codex app-server"]
 D --&gt;|"externalAgentConfig/import/completed"| E["import ledger 갱신"]
 E --&gt;|"threadId 추출"| F["codex resume threadId"]
 F -.-&gt;|"실패 시"| G["codex resume --all fallback"]&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;Feature flag — &lt;code&gt;external_migration&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Claude session source — &lt;code&gt;~/.claude/projects/**/*.jsonl&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Import RPC — &lt;code&gt;externalAgentConfig/import&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Completion event — &lt;code&gt;externalAgentConfig/import/completed&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Import ledger — &lt;code&gt;~/.codex/external_agent_session_imports.json&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;세션 1개를 SESSIONS migration item으로 import하고, ledger에서 threadId를 읽어 &lt;code&gt;codex resume &amp;lt;threadId&amp;gt;&lt;/code&gt;를 실행하는 흐름이다.&lt;/p&gt;
&lt;h2 id="설치"&gt;설치
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/thedalbee/codex-r.git ~/ws/codex-r
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ln -sfn ~/ws/codex-r ~/.codex/skills/codex-r
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Codex 새 세션에서:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$codex&lt;/span&gt;-r
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;설치 스크립트 없음. 심볼릭 링크 한 줄과 스킬 호출만으로 끝난다.&lt;/p&gt;
&lt;h2 id="의미"&gt;의미
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;공식이 만든 기능을 사용자가 ergonomic 셸로 감싸는 패턴&lt;/strong&gt;의 깨끗한 사례. 0.128.0의 import RPC는 이미 있는데 노출이 부족했고, 사용자가 직접 30줄짜리 thin wrapper로 풀어버렸다.&lt;/li&gt;
&lt;li&gt;Markdown 전용 스킬이라는 형태가 중요하다. &lt;a class="link" href="https://github.com/anthropics/skills" target="_blank" rel="noopener"
 &gt;Anthropic agent-skills&lt;/a&gt; 패턴을 Codex가 그대로 받아들이고 있다는 신호이며, 이 호환성 덕분에 한 사람이 하루 만에 도구를 만들 수 있었다.&lt;/li&gt;
&lt;li&gt;별 3개짜리 마이크로 도구지만, &lt;strong&gt;에이전트 세션 휴대성이 중요해지는 시대의 신호&lt;/strong&gt;다. Claude Code와 Codex 사이의 세션 호환성 문제를 사용자가 직접 풀고 있다는 점에서, 같은 시기에 공유된 &lt;a class="link" href="https://github.com/AutonomousResearchGroup/agentmemory" target="_blank" rel="noopener"
 &gt;agentmemory&lt;/a&gt; 같은 메모리 표준화 시도와 같은 맥락에 있다.&lt;/li&gt;
&lt;li&gt;에이전트 인프라 레이어가 빠르게 표준화 중이다. 모델 회사들이 official 도구를 내기 전에 사용자가 먼저 글루를 짠다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="인사이트"&gt;인사이트
&lt;/h2&gt;&lt;p&gt;이 도구의 의미는 30줄짜리 wrapper에 있지 않고, &lt;strong&gt;그 wrapper가 만들어졌다는 사실 자체&lt;/strong&gt;에 있다. Codex가 import RPC를 추가한 시점과 거의 동시에 사용자가 picker를 직접 만들어 SKILL.md로 묶은 것은, 에이전트 도구 시장이 더 이상 단일 vendor에 묶이지 않는다는 신호다. Claude Code 세션 JSONL이 사실상 휴대 가능한 포맷이 됐고, Codex는 이를 import하는 표준 RPC를 노출했다. 같은 패턴이 메모리, 스킬, MCP 서버에서도 일어나고 있고, agent-skills 같은 표준 덕에 한 사람이 하루 만에 호환 레이어를 짤 수 있게 됐다. 이런 마이크로 도구는 별이 안 늘어도 OK다 — 모델 회사가 official 명령을 내면 wrapper는 조용히 양보하면 그만이다. &lt;strong&gt;결국 진짜 자산은 도구가 아니라 패턴이다.&lt;/strong&gt; 사용자가 만든 thin wrapper가 official 기능보다 먼저 ergonomic을 정의하면, 다음 official 기능은 그 ergonomic을 따라가게 된다.&lt;/p&gt;
&lt;h2 id="참고"&gt;참고
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Repo&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/thedalbee/codex-r" target="_blank" rel="noopener"
 &gt;thedalbee/codex-r&lt;/a&gt; — MIT, 별 3개, 2026-05-01 생성&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/thedalbee/codex-r/blob/main/README.md" target="_blank" rel="noopener"
 &gt;SKILL.md / README.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Related tools&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://openai.com/codex/" target="_blank" rel="noopener"
 &gt;OpenAI Codex CLI&lt;/a&gt; — Codex 0.128.0의 external agent session import가 본 스킬의 토대&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.anthropic.com/claude-code" target="_blank" rel="noopener"
 &gt;Claude Code&lt;/a&gt; — &lt;code&gt;~/.claude/projects/**/*.jsonl&lt;/code&gt;이 import 소스&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/anthropics/skills" target="_blank" rel="noopener"
 &gt;Anthropic agent-skills&lt;/a&gt; — Markdown-only 스킬 패턴의 출처&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://modelcontextprotocol.io/" target="_blank" rel="noopener"
 &gt;MCP (Model Context Protocol)&lt;/a&gt; — 에이전트 표준 레이어&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Background&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/AutonomousResearchGroup/agentmemory" target="_blank" rel="noopener"
 &gt;agentmemory&lt;/a&gt; — 같은 시기 공유된 에이전트 메모리 표준화 시도 (관련 포스트의 다른 항목)&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.claude.com/en/docs/claude-code" target="_blank" rel="noopener"
 &gt;Claude Code 세션 포맷 문서&lt;/a&gt; — JSONL 트랜스크립트 구조&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>