MemoryLake
すべての記事に戻る
Tutorial2026年8月4日·9 分で読了

コンテキストを失わずにClaude CodeからCodexへ移行する方法(2026年)

Claude CodeからCodexへの移行を検討しているなら、まずは良いニュースからお伝えしましょう。Codexにはインポーターが搭載されており、多くの人が予想する以上のデータを移行できます。`/import` を実行すると、指示ファイル、MCPサーバー、スキルとプラグイン、フックとスラッシュコマンド、サブエージェント、および過去30日間の最大50件のチャットが取り込まれます。これはゼロからの再構築ではありません。

しかし、計画を立てる上で注意すべきなのは、その移行範囲の境界線です。30日より古いデータは移行されません。また、Claude Codeではなく通常のClaudeのチャットデータは一切インポートできません。そして、そもそもファイルに保存されていなかった知識、例えば「それを試したらステージング環境が壊れた」といった蓄積された経験は、ソースが存在しないためインポーターで移行することはできません。

このガイドでは、具体的に何が移行されるのか、残りのデータを手動で移行する方法、そして次の移行(どちらの方向であっても)がもはや「移行作業」ではなくなるようなセットアップ方法について解説します。

実際に移行されるもの

Codexのインポーターは、移行元としてClaude Codeをサポートしています。CLIでは /import を実行し、デスクトップアプリでは Settings → Import に進み、フローに従います。

Codexのドキュメントによると、インポートの対象は以下の通りです:

  • AGENTS.md ファイル
  • settings.json および config.toml
  • 指示ファイルとMCPサーバーの設定
  • スキルとプラグイン
  • プロジェクトフォルダとメモリ
  • 過去30日間のチャットセッション
  • フックとスラッシュコマンド
  • サブエージェント

リストと同様に、ドキュメントに記載されている制限事項も重要です:

  • 過去30日間の最大 50件のチャット まで。
  • 「通常のClaudeチャットデータはインポートできません」 — これはClaude Codeのインポーターであり、Claude自体のインポーターではありません。
  • /import コマンドは「タスクの実行中、リモートセッション中、またはローカルのアプリサーバーデーモンに接続されている間は利用できません」。
  • インポートされたプラグインは再認証が必要になる場合があります。

さらに、移行の残りの部分を左右する2つの事実があります。

Codexは `CLAUDE.md` ではなく `AGENTS.md` を読み込みます。 AGENTS.md は、Cursor、Jules、Amp、Factoryも読み込むオープンなフォーマットです。そのため、移行は書き換えというよりも、ほとんど名前の変更だけで済みます。内容は変更されずにそのまま引き継がれ、ファイル名とロードパスだけが異なります。Codexはこれらのファイルをレイヤー化します。まずCodexのホームディレクトリ(~/.codex/AGENTS.md、または設定している場合は $CODEX_HOME/AGENTS.md)の下にあるグローバルなファイル、次にリポジトリのルート、そしてルートから作業中のディレクトリまでの間にあるディレクトリの順です。ファイルはルートから下に向かって連結され、競合が発生した場合は現在のディレクトリに最も近いファイルが優先されます。

Codexには独自のメモリ機能がありますが、デフォルトではオフになっています。 メモリは、「以前のチャットからの要約、永続的なエントリ、最近の入力、および裏付けとなる証拠」を ~/.codex/memories/ 内のローカルファイルとして保存します。有効にするには、config.toml[features] の下で memories = true と設定するか、デスクトップアプリの Settings → Personalization → Enable memories で設定します。これはプロジェクトごとではなくグローバルであり、セッションをまたいで維持されます。依存する前に、ドキュメントに記載されている注意事項を読んでおく価値があります。メモリは「チャット終了直後に更新されない場合がある」、Codexは「アクティブなセッションや短時間のセッションをスキップする」、レート制限に近づくと生成が一時停止する、そしてドキュメントには、メモリにシークレットを保存すべきではなく、ファイルを生成された状態として扱うべきであると明記されています。

したがって、Codexは完全に白紙の状態から始まるわけではありません。ただ、Claude Codeの内部で構築してきた作業コンテキストとは、メモリの形状が異なるだけです。

手動での移行

ステップ 1: 指示ファイルの移動と分割

インポーターがまだ AGENTS.md を生成していない場合は、CLAUDE.mdAGENTS.md にリネームします。内容が完全にプロバイダーに依存しないものであれば、シンボリックリンクを作成することで、両方のツールを並行して実行しながら1つのファイルを読み込ませることができます。もしClaude固有のマーカー(Claude Code独自のコマンド、フック、またはファイル規約への参照)が含まれている場合は、シンボリックリンクを作成するのではなく、ファイルをコピーしてそれらの部分を書き換えてください。そうしないと、どちらかのツールが混乱することになります。

次に、Codexのレイヤー化のメリットを活かすために、スコープごとに分割します:

  • マシン全体の設定(コミットスタイル、デフォルト言語、希望する対話方法など)は ~/.codex/AGENTS.md に配置します。
  • リポジトリのルール(ビルドコマンド、テストの実行方法、ディレクトリ規約、絶対に触れてはならないものなど)は、リポジトリルートの AGENTS.md に配置します。
  • サブシステム固有の詳細(このパッケージは異なるlint設定を使用する、このサービスには独自のデプロイパスがあるなど)は、そのディレクトリの AGENTS.md に配置します。

ルートに1つの長いファイルを置くことも可能ですが、それではすべてのサブディレクトリでのすべてのセッションが、すべてのルールの処理コストを支払うことになります。

ステップ 2: インポーターが届かない部分の再構築

30日間、50チャットの制限から外れる部分について、短時間で意図的な確認を行います:

  • 過去の決定事項。 重要だったと記憶しているClaude Codeのセッションをざっと見直し、トランスクリプトではなく「結論」を書き留めます。「非同期バージョンは3月に二重課金が発生したため、リトライラッパーは同期のままにする」といった1行のメモが、半日の作業を救うことになります。
  • 行き止まり(不採用になったアプローチ)。 すでに除外したアプローチは、失うと最も高くつく知識です。なぜなら、新しいエージェントはそれを喜んで再提案し、解決済みの問題を再び議論することになるからです。
  • MCPサーバー。 設定は移行されますが、認証は移行されない場合があります。そのサーバーに依存するセッションを信頼する前に、再接続して各サーバーが実際に稼働しているか確認してください。
  • フック、スラッシュコマンド、サブエージェント。 これらは移行されますが、Claude Codeのセマンティクスに基づいて書かれています。無害な対象に対して、それぞれ一度実行してみてください。

1時間ほど時間を確保してください。これを行うかどうかで、移行が「スムーズに完了した」と感じられるか、それとも2週間ほど「機能が低下した」と感じるかの違いが生まれます。

より良い方法:どちらのツールでも使える単一のメモリレイヤー

ここで、少し耳の痛い話をしなければなりません。あなたはいずれまた、この移行作業を行うことになるでしょう。Codexのインポーターが存在するのは、人々が常にエージェント間を移動しており、この業界の進化が止まらないからです。プロジェクトの知識が、たまたまその時使っているエージェントの内部に存在している場合、ツールを切り替えるたびに手動での再構築コストが発生し、そのツールのエクスポート期間外にあるデータはすべて失われます。

Codex Memoriesは実用的であり、有効にする価値があります。しかし、その性質を理解しておく必要があります。それは1台のマシン上の1つのツールであり、オプトイン方式で、プロジェクトごとではなくグローバルであり、自分で執筆するものではなく自動生成される状態です。Claude CodeやCursor、あるいはチームメンバーがそれを読み取ることはできません。

代替案は、知識を両方のツールの外部に保持することです。MemoryLake は、エージェントが MCP または API を介して接続するメモリレイヤーです。これにより、30日間の制限によって保持するデータが左右されることはなくなり、Claude CodeとCodexを並行して実行するために2つの異なるコンテキストを維持する必要もなくなります。

ステップ 1: APIキーの作成

キーを生成し、約30秒で最初のリクエストを送信できます。

MemoryLakeのAPIキーを作成する
MemoryLakeのAPIキーを作成する

ステップ 2: 最初のメモリをアップロードする

永続的な資料を投入します。アーキテクチャのメモ、上記のステップ2で作成した決定ログ、APIコントラクト、ランブック、および何度も説明し直している図などです。ドキュメント、画像、その他のファイルもすべて対象となります。

MemoryLakeに最初のメモリをアップロードする
MemoryLakeに最初のメモリをアップロードする

ステップ 3: AIとエージェントを接続する

Codex、Claude、OpenClaw、その他のエージェントに、MCPまたはAPI経由でアクセスを許可します。これにより、両方のエージェントが同じメモリから読み取るようになり、AGENTS.md は肥大化し続ける知識のゴミ捨て場ではなく、本来の得意分野である「ルール」の記述に専念できるようになります。

MCP経由でAIとエージェントを接続する
MCP経由でAIとエージェントを接続する

実践においてこれがもたらす変化

即座に現れる効果は、AGENTS.md ファイルの肥大化が止まることです。これらのファイルの多くが肥大化しているのは、指示(「コミット前に必ず make lint を実行する」)と知識(「ウェブフックの署名検証は verify.ts にあり、レガシーパスはまだ2社のお客様向けに有効である」)という2つの役割を同時に担っているためです。指示はファイルに記述すべきです。知識はクエリ可能なレイヤーに置くべきです。なぜなら、知識は毎週増え続けるものであり、900行にも及ぶプロンプトの前文を手動でメンテナンスしたい人などいないからです。

2つ目の効果は、次のツール変更時に現れます。知識がすでに両方のエージェントの外部に存在している場合、移行作業は「考古学的な発掘プロジェクト」ではなく、単なる「設定タスク」になります。新しいエージェントを同じメモリに向けるだけで、そのまま作業を継続できます。

また、多くの人が意図的に行っているように、両方のエージェントを併用している場合、1つの共有メモリがあれば同期の問題は完全に解消されます。そうでない場合、同じ真実の2つのバージョンを維持することになり、最悪のタイミングでそれらが乖離していることに気づくことになります。同じような状況は、複数のエージェントが作業を共有する際に共有メモリが存在しない場合にも必ず発生します。

2つのエージェントを併用するためのベストプラクティス

ルールと知識を意図的に分離する

何かをコピーする前に、1つの問いを持って CLAUDE.md を読んでみてください。「これはエージェントが常に従うべき指示か、それともシステムに関する事実か?」 指示は AGENTS.md に送ります。事実はメモリレイヤーに送ります。この1つの切り分けを行うだけで、どれだけプロンプトを調整するよりも出力の品質が向上します。

Codex Memoriesを有効にするが、それだけに依存しない

これは作業スタイルや繰り返しのセットアップにおいて本当に便利です。ただし、ドキュメントに記載されている挙動を忘れないでください。チャットの終了から反映が遅れることがあり、短いセッションはスキップされ、1台のマシンにローカルに保存されます。記録としてではなく、あくまで利便性のための機能として扱ってください。

削除する前に検証する

実際のデバッグセッションを含め、Codexで丸1週間作業を完了するまでは、Claude Codeの設定をそのまま残しておいてください。移行の抜け漏れは、最初の1時間では決して見つかりません。移行されたと思い込んでいたものが初めて必要になったときに明らかになります。Codexを使い始めた後になぜCodexがプロジェクトのコンテキストを忘れてしまうのか、そして再び切り替えることにした場合にClaude Codeに戻る逆ルートがどのように機能するのかを事前に知っておく価値はあります。

結論

Claude CodeからCodexへの移行は、現在最も手厚くサポートされている移行の1つです。/import によって、指示、設定、MCPサーバー、スキル、フック、スラッシュコマンド、サブエージェント、および1ヶ月分のチャットが移行され、CLAUDE.md から AGENTS.md への移行は書き換えではなく単なるリネームで済みます。節約できた労力は、インポーターが触れない部分、つまり決定事項、不採用になったアプローチ、およびその背景にある理由の整理に費やしましょう。

そして、その作業を一度きりで済むようにしてください。どちらのツールも重要な部分においてはステートレスであり、メモリをそれぞれの内部に閉じ込めています。そして、半年後にはまた別の試す価値のあるエージェントが登場しているはずです。使用しているエージェントの外部に存在するメモリレイヤーこそが、次の切り替えを再構築ではなく単なる設定変更に変え、指示ファイルがすべての知識を忘却するための場所へと徐々に変化していくのを防ぎます。もし、コンテキストを何度も説明し直すのを完全にやめたいのであれば、その習慣を解決する方法があります。

よくある質問

CodexはCLAUDE.mdを読み込みますか?

いいえ。Codexは、Cursor、Jules、Amp、Factoryでも使用されているオープンなフォーマットである AGENTS.md を読み込みます。インポーターが自動的に作成しなかった場合は、ファイル名を変更してください。内容は変更されずにそのまま引き継がれ、ファイル名とロードパスだけが異なります。

Codexの `/import` はClaude Codeから具体的に何を移行しますか?

AGENTS.md ファイル、settings.json および config.toml、指示ファイルとMCPサーバーの設定、スキルとプラグイン、プロジェクトフォルダとメモリ、フックとスラッシュコマンド、サブエージェント、および過去30日間のチャットセッション(最大50件)です。Claude Codeではなく通常のClaudeのチャットデータはインポートできず、一部のプラグインは移行後に再認証が必要になります。

なぜ今すぐ /import を実行できないのですか?

ドキュメントに記載されている制限事項として、/import はタスクの実行中、リモートセッション中、またはローカルのアプリサーバーデーモンに接続されている間は利用できません。タスクを完了またはキャンセルし、ローカルセッションから実行してください。

Codexにはセッションをまたぐメモリ機能がありますか?

はい、オプトイン機能として存在します。メモリは ~/.codex/memories/ 内にローカルファイルとして保存され、セッションをまたいで維持されますが、デフォルトではオフになっています(config.toml[features] の下で memories = true と設定するか、Settings → Personalization で設定します)。これらはプロジェクトごとではなくグローバルであり、チャット終了直後に更新されない場合があり、短時間のセッションはスキップされ、シークレットを保存すべきではありません。

Claude CodeとCodexの両方を使い続けるべきですか?

多くの人がそうしています。それぞれ得意なことが異なり、Codexのオーケストレーションモデル(ローカル、クラウドタスク、SDK経由のCI、IDE、Slack)は、セッション中心のツールではカバーできない領域をカバーします。両方を併用するコストは、コンテキストの乖離(ドリフト)です。MCPまたはAPIを介して両方が読み取る単一のメモリレイヤーを維持することで、そのコストを排除できます。

次の移行時にコンテキストを失わないようにするにはどうすればよいですか?

プロジェクトの知識をツール固有のファイルから、特定のエージェントに所有されないレイヤーへと移動させます。APIキーを作成し、何度も説明し直している資料をアップロードし、MCP経由でエージェントを接続します。そうすれば、ツールの変更は3ヶ月分の決定事項を再構築することではなく、設定の参照先を変更することを意味するようになります。そもそも、Claude Codeがセッション間でプロジェクトのコンテキストを忘れてしまうのも、これと同じ原理によるものです。