ワークフロー
Claude Code から Codex へ、コンテキストを失わずにタスクを引き継ぐ
リファクタリングの途中で Claude の上限に達した、あるいは別の意見が欲しい。次のエージェントに渡すべきものと、それを届ける 3 つの方法を紹介します。
簡単な答え
どちらのエージェントも相手のトランスクリプトは読み込まないので、タスクは引き継ぎメモで渡します。中身は目標と最後の指示、計画、変更したファイル、git の状態で、コード自体はディスク上にあります。共通のルールは AGENTS.md にまとめ、作業中の変更はコミットするか git stash create で記録しておき、引き継ぎメモは自分で書くか、hop のようなツールで生成するか、Maude のようなアプリに切り替え時に作らせます。
作業の途中で Claude Code から Codex に切り替えても、最初からやり直す必要はありません。ただし、どちらのエージェントも相手の会話を自分から引き継いではくれません。タスクを渡すのは短い引き継ぎメモです。目標、計画、変更したファイル、git の状態、最後の指示、そしてディスク上のコード。このメモは手で書くことも、小さなツールで生成することも、切り替え時に自動で作ってくれるアプリを使うこともできます。
コーディングエージェント間でタスクを引き継ぐ理由
- 上限に達した。いちばんよくある理由です。リファクタリングの途中で Claude のプランの使用量が尽きたのに、ChatGPT のプランにはまだ余裕がある。リセットを待てば何時間も無駄になり、Codex で一からやり直せばコンテキストが失われます。
- 別の意見が欲しい。あるエージェントがバグの周りで堂々巡りをしている。別のモデルがまっさらなコンテキストで同じコードを読むと、最初のエージェントが見えなくなっていたものに気づくことがよくあります。コミット前に、あるエージェントの差分を別のエージェントにレビューさせるのも手軽です。
- 得意分野が違う。計画には 1 つのエージェント、長く機械的な編集には別のエージェントを使う人や、特定の言語やフレームワークには自分にとって相性の良いエージェントを使う人もいます。どれが何に向いているかはモデルのリリースごとに変わるので、ルールではなく自分の判断として扱ってください。
Codex は Claude Code のセッションを読めるのか
単独では読めません。どちらのエージェントも、完全なトランスクリプトを JSONL ファイルとしてディスクに保存します。Claude Code は ~/.claude/projects/<project>/<session>.jsonl に(Claude Code のドキュメント)、Codex は ~/.codex/sessions/ の下に日付付きの rollout-*.jsonl ファイルとして書き込みます。それぞれ自分のセッションは再開できますが(claude --resume、codex resume)、相手のセッションを読み込む方法はどちらもドキュメント化していません。Claude Code の /import コマンドは、指示ファイル、MCP サーバー、スキルなど、ほかのエージェントの設定を取り込むものです。会話は取り込みません。
新しいエージェントに生のトランスクリプトファイルを読ませることもできます。ただ実際には、引き継ぎメモとしては出来が良くありません。長く、ツールの出力だらけで、新しいエージェントが本当に必要としている「今どこにいて、次に何をするか」が埋もれてしまいます。
渡すべきコンテキスト
| コンテキスト | 重要な理由 | 情報源 |
|---|---|---|
| 目標と最後の指示 | 新しいエージェントは、何をもって「完了」とするかと、直近で何を頼まれたかを知る必要がある | 最後のプロンプトをそのまま |
| 計画/ToDo リスト | すでに範囲が決まった作業を、エージェントが計画し直すのを防ぐ | 引き継ぎ元のエージェントの ToDo リスト |
| 変更したファイル | 編集する前にどこを読むべきかがわかる | トランスクリプト内の編集と git status |
| Git の状態 | ブランチ、HEAD、未コミットの変更。これがないと、新しいエージェントが作業をやり直したり、上書きしてコミットしたりしかねない | git status、git diff --stat |
| 決定事項と行き詰まった方法 | すでに失敗したアプローチを新しいエージェントが繰り返さないように | 最近の会話、または書き起こした要約 |
ビルドコマンドやコードスタイルといったプロジェクトの規約は、引き継ぎメモに入れるべきではありません。それは両方のエージェントがすでに読んでいる指示ファイルに書くものです。
自分でやる:AGENTS.md と CLAUDE.md で指示を共有する
Codex は ~/.codex/ と、git のルートから作業ディレクトリまでの AGENTS.md ファイルから指示を組み立てます(Codex の AGENTS.md ドキュメント)。v2.1.277 以降は Claude Code も AGENTS.md を読みますが、デフォルトでは作業ディレクトリとその上位に CLAUDE.md も CLAUDE.local.md もない場合に限られます(Claude Code のメモリのドキュメント)。両方のエージェントが読めるいちばんシンプルな構成は、共通のルールを AGENTS.md に置き、Claude 専用のルールが必要なら CLAUDE.md の先頭でインポートすることです。
@AGENTS.md
## Claude Code
Use plan mode for changes under src/billing/.
逆方向も可能です。~/.codex/config.toml の project_doc_fallback_filenames 設定を使えば、AGENTS.md がないときに Codex に別のファイル名を読ませられます。
自分でやる:引き継ぎドキュメントと git
切り替える前に、使用量がまだ残っていれば、コンテキストを持っているうちに引き継ぎ元のエージェントにメモを書かせましょう。
Write HANDOFF.md for another coding agent taking over this task:
the goal, what is done, what is in progress or broken, decisions
and dead ends, files touched, and the exact next steps.
Don't change any other file.
次に、コードの状態を明確にします。作業中の変更をブランチにコミットするのがいちばんわかりやすい方法です。コミットしたくない場合は、git stash create を使えば、作業ツリーに手を触れずに、追跡中の未コミットの変更をコミットオブジェクトとして記録できます。次のエージェントがおかしなことをしても、差分を取る基準点になります。同じディレクトリで別のエージェントを起動し、HANDOFF.md を読み、編集前にファイルを読み直すよう指示してください。
自動化するツール
hop(MIT)はこれをコマンド 1 つで行います。Claude Code から Codex へは hop codex、その逆は hop cc です。引き継ぎ元のエージェントのセッションファイルを直接読むので、そのエージェントのクォータが尽きていても動きます。行き詰まった Claude Code のセッション内から ! hop codex を実行することもできます。指示、git のブランチ、最近の会話を、サイズの上限内(デフォルトは 48 KB)で引き継ぎドキュメントに書き出し、新しいターミナルタブで別のエージェントを開きます。似たプロジェクトに cli-handoff や session-handoff があります。
| 方法 | クォータ切れでも使えるか | 切り替えごとの手間 | 会話を引き継げるか |
|---|---|---|---|
| AGENTS.md の共有のみ | はい | なし。ただし引き継げるのは規約で、タスクの状態ではない | いいえ |
| エージェントが書いた HANDOFF.md + git | 引き継ぎ元のエージェントがまだ応答する場合のみ | プロンプト 1 つとコミット | 要約として |
| hop などの CLI | はい | コマンド 1 つ | 最近のターンを、サイズ上限内で |
| 切り替え機能を内蔵したアプリ | はい | ワンタップ | アプリによる |
Maude での引き継ぎの仕組み
Maude はエージェントを自分のサーバーで動かし、セッションは特定のエージェントに縛られません。セッションがアイドル状態なら、スマホから、たとえば Claude Code から Codex(あるいは OpenCode、Grok Build、Antigravity)に切り替えられます。サーバー上のデーモンは、切羽詰まった状態で書かれた要約ではなく、セッション自身の記録から引き継ぎメモを組み立てます。
- 新しいエージェントに対し、作業を引き継ぐこと、ディスク上のファイルが正であること、編集前に読み直すべきことを伝える前置き
- 最後の指示(固定表示)
- 現在の計画または ToDo リスト
- 変更したファイル(エージェントの編集と、git が変更ありと報告するファイルから)
- git の状態:ブランチ、HEAD、短いステータス、diff stat。未コミットの作業も
git stash createでスナップショットを取って ref に保存し、作業ツリーには手を触れません - 最近の会話をそのまま、最大約 120,000 文字まで
- 完全なトランスクリプトへの参照。トランスクリプトは Markdown としてプロジェクトの
.maude/handoff/に書き出され、git statusには表示されません
引き継ぎメモは、新しいエージェントへの次のメッセージの前に付けて送られます。チャットには区切り線が表示され、展開すると実際に何が送られたかをそのまま読めます。引き継ぎメモはセッションの記録から作られるので、引き継ぎ元のエージェントが応答できるかどうかに左右されません。これは、そのエージェントがちょうど上限に達したときにこそ重要です。
元に戻すときは事情が違います。戻る先のエージェントがこのセッションですでに作業していて再開に対応していれば、Maude はそのエージェント自身の会話を再開し、離れていた間に起きたことだけを送ります。完全な引き継ぎメモが再び送られることはありません。
こうした機能を持つアプリは Maude だけではありません。Happier では会話の途中でエンジンを変更でき、新しいエージェントには以前のトランスクリプトを読むためのツールが渡されます。AgentsRoom は、プロバイダーを切り替えるときに、変更されたファイル、セッションのアクティビティ、最後の応答をまとめた引き継ぎの要約を作ります。トレードオフは Maude と Happier の比較で比べています。どのエージェントを組み合わせるかは Claude Code vs Codex vs OpenCode をご覧ください。
よくある質問
Codex は Claude Code のセッションを読めますか?
~/.claude/projects/ の下に JSONL として保存しますが、Codex はそれを読み込みません。タスクは引き継ぎメモで渡します。自分で書くか、hop のようなツールで生成するか、切り替え時にメモを作ってくれるアプリを使います。AGENTS.md と CLAUDE.md は競合しますか?
AGENTS.md を読むのは CLAUDE.md がない場合だけです。1 つのファイルを共有するには、ルールを AGENTS.md に書き、CLAUDE.md の先頭に @AGENTS.md を置きます。Codex は AGENTS.md をネイティブに読みます。作業の途中で Claude の上限に達したら?
エージェントを切り替えると未コミットの変更は失われますか?
git stash create を実行しておけば、次のエージェントがおかしなことをしたときに比較する基準点になります。