セッション途中でモデルを切り替える方法
Anthropic のモデル設定ガイドでは、セッション中にモデルを変更する方法として /model が挙げられています。/model <alias|name> を実行して即座に切り替えるか、引数なしで /model を実行してピッカーを開きます。ショートカットもあります。Anthropic のキーボードリファレンスによると、macOS では Option+P、Windows および Linux では Alt+P を押すことで、プロンプトを消去せずにモデルを切り替えることができます。
このセッションのみか、全セッションか
ここが意外と知られていない点です。Anthropic は「/model はユーザー設定の model フィールドを書き換えることで、新しいセッションのデフォルトとして選択を保存する」と述べています。一つのタスクを終わらせるためにモデルを選ぶと、次のセッションの開始モデルまで変わってしまう可能性があります。
現在のセッションのみに変更を留めるには、ピッカーを使用します。Anthropic は次のように説明しています。「このセッションのみ切り替えるには、/model でピッカーを開き、モデルの行で s を押してください。」名前を指定して /model と入力するのは、ピッカーで Enter を押すのと同じ動作になり、デフォルトとして保存されます。
起動オプションは動作が異なります。Anthropic は「--model フラグと ANTHROPIC_MODEL 環境変数は、それらを使用して起動したセッションにのみ適用される」と記しています。
切り替え時に引き継がれるもの
会話内容
あなたのメッセージ、Claude の返答、Claude が読み取ったファイル、コマンドの出力はすべてセッション内に保持されます。新しいモデルは同じ会話を受け取ります。Anthropic のプロンプトキャッシュガイドでは、コンテンツは変更されないことが確認されています。切り替えとは、コンテンツが同一であっても、次のリクエストで会話履歴全体を読み直すことを意味します。
メモリファイル
CLAUDE.md、ルール、自動メモリ(auto memory)はセッションのコンテキストの一部であり、特定のモデルに紐付いているわけではありません。これらは古いモデルの時と同様に、新しいモデルでも利用可能です。
モデルを継承するサブエージェント
切り替えの影響はメインの会話以外にも及びます。Anthropic は「/model でモデルを切り替えると、メイン会話のモデルを継承するサブエージェントにもその切り替えが適用される」と述べています。独自の model 設定を持つサブエージェントはその設定を維持します。Claude Code のサブエージェントがメモリを共有しない理由についてのガイドでは、それらのサブエージェントが何を持って開始されるかを解説しています。
新しいモデルに依存するもの
会話内容は同じですが、それを読み取るモデルは異なり、コンテキストウィンドウも異なります。Anthropic によると、Fable モデル、Sonnet 5 以降、Haiku 5.5、Opus 4.7 以降はデフォルトで 1M(100万)ウィンドウで動作しますが、拡張コンテキストのない Sonnet 4.6 や Opus 4.6 は 200K の境界で圧縮(compact)されます。あるモデルのウィンドウに収まっていた長い会話も、別のモデルでは圧縮が必要になる場合があります。Anthropic のフォールバックドキュメントには、「Claude Code は、プライマリモデルよりもコンテキストウィンドウが小さいモデルにはフォールバックしない。要約によって会話の一部が切り捨てられてしまうためである」という原則が示されています。
もう一つ知っておくべきケースがあります。ゲートウェイのエイリアスなど、Claude Code が認識しないモデル ID に切り替えた場合、モデルのウィンドウを判別できず、200K トークンであると想定されます。Claude Code v2.1.316 ではこれに関する警告が追加されました。変更ログには、認識されない ID で /model を使用した際に「警告が表示されず、自動圧縮が 200K コンテキストウィンドウを想定してしまう」問題が修正されたとあります。
再読み込みされるもの
切り替えによって会話が失われることはありませんが、次のターンのコストが変わります。
Claude Code は会話をキャッシュするため、毎ターンですべてを再処理する全額のコストを支払う必要はありません。そのキャッシュはモデルに紐付いています。Anthropic のプロンプトキャッシュガイドには、「各モデルは独自のキャッシュを持つ。/model で切り替えると、コンテンツが同一であっても、次のリクエストはキャッシュヒットなしで会話履歴全体を読み込むことになる」とあります。
短いセッションであれば影響は軽微です。しかし長いセッションでは、新しいモデルでの最初のターンですべてを最初から処理するため、速度が低下し、利用制限をより多く消費する可能性があります。レジューム警告に関するガイドでは、古いセッションに戻った際にも同様の影響があることを解説しています。
Claude Code が事前に確認する場合
切り替えによってウォームキャッシュ(有効なキャッシュ)が破棄される場合、Claude Code は確認を求めます。Anthropic は「ターミナルで /model を実行した際、キャッシュがまだ有効で、かつ新しいモデルが直前のレスポンスを生成したモデルと異なる場合にのみ、Claude Code は切り替えの確認を求める」と述べています。
キャッシュは最後のリクエストまたはレスポンスから一定のキャッシュ寿命の間、有効に保たれます。それを過ぎると失われるキャッシュがなくなるため、「その時間が経過するとキャッシュは期限切れとなり、Claude Code は確認なしで切り替える」ことになります。
エフォート(effort)レベルの変更も同様です。Anthropic は「ほとんどのモデルにおいて、セッション途中でエフォートレベルを変更すると、次のリクエストはキャッシュヒットなしで会話履歴全体を読み込む」としています。
切り替えで利用制限はリセットされない
制限に達したために切り替えを検討している場合は、どの制限かを確認してください。Anthropic のエラーリファレンスには、「セッション制限と週間制限はすべてのモデルで共有されているため、モデルを切り替えてもアクセスは回復しない」とあります。特定のモデルファミリーに適用される制限は別であり、そのファミリー以外のモデルに切り替えることで作業を継続できます。
Claude Code が自動で切り替えるケース
すべてのモデル変更が /model から始まるわけではありません。Anthropic のプロンプトキャッシュガイドにはいくつかのケースが挙げられており、それぞれが「別のモデルが会話を読み取る」という意味で切り替えにあたります。
opusplan
opusplan 設定は計画的な切り替えです。Anthropic はこれを「計画(plan)モード中は opus を使用し、実行(execution)モードでは sonnet に切り替える特殊なモード」と説明しています。キャッシュガイドには「計画モードの切り替えごとにモデルが切り替わり、新しいキャッシュが開始される」と付け加えられています。
モデルを指定したスキル
スキルやコマンドは、フロントマターで独自のモデルを設定できます。セッションのモデルとは異なるモデルが指定されている場合、Anthropic は「そのターンもモデル切り替えとなる」と述べています。これは1ターンのみ持続し、「次のプロンプトではセッションのモデルが再開される」仕組みです。
自動モデルフォールバック
これが発生すると、トランスクリプト(履歴)に通知が表示されます。Fable モデル、Opus 5.5、Sonnet 5.5、Opus 5 は安全分類器(safety classifier)とともに動作しており、サイバーセキュリティや生物学に関するコンテンツがフラグ立てされることがよくあります。フラグが立てられた一部のリクエストについて、Claude Code はフォールバックモデルでリクエストを再実行します。Anthropic は「メインの会話では、トランスクリプトに通知が表示される」と述べています。
スキルのモデルとは異なり、この切り替えは持続します。「フォールバック後、セッションはフォールバックモデルで継続される。元のモデルに戻るには /model を実行する必要がある」のです。
フォールバックは、何か珍しいことを尋ねる前に発生することもあります。Anthropic は、最初の要求には CLAUDE.md の内容や git status などのワークスペースのコンテキストが含まれるため、「セッションの最初のリクエストでトリガーされる可能性がある」と説明しています。あなたのメモリファイルも分類器が読み取る対象の一部です。
確認を求めるように設定することも可能です。/config を実行し、メッセージがフラグ立てされた際のモデル切り替え設定を探し、「Ask each time(毎回確認)」を選択するか、switchModelsOnFlag を false に設定します。これにより、Claude Code はフラグが立てられたリクエストで一時停止し、切り替えるかプロンプトを編集して再試行するかを選択させてくれます。Fable 5.1 が思考ブロックをバインドする方法についてのガイドでは、フォールバックがモデルの以前の推論にどのような意味を持つかを解説しています。
フォールバックチェーン
可用性のためにフォールバックモデルを設定している場合、プライマリモデルが過負荷または利用不可の時に切り替えが発生することがあります。これは一時的なものです。Anthropic は「切り替えは現在のターンのみ持続するため、次のメッセージでは再びプライマリモデルが最初に試行される」と述べています。
すべての切り替えを監視する
モデルの切り替えにはフック(hook)が存在します。Anthropic によると、PreModelSwitch は「あなたやクライアントが要求したモデル切り替えが適用される前に実行される。切り替えのブロック、確認の要求、または切り替え前にコストを表示するために使用できる」とされています。
これはユーザーによる切り替えを対象としており、Claude Code 自身の切り替えは対象外です。「Claude Code は、自動モデルフォールバックやセッション再開時のモデル復元など、自身が行う切り替えに対して PreModelSwitch フックを実行しない」ため、これらは PostModelSwitch にのみ到達します。
クイックリファレンス
- 名前付きの
/model: 即座に切り替え、デフォルトとして保存。 /modelピッカーでs: このセッションのみ切り替え。- 起動時の
--model: そのセッションのみ適用。 opusplan: 計画フェーズと実行フェーズの間で切り替え。model指定のあるスキル: 1ターンのみ切り替え。- 安全フォールバック: 切り替わり、手動で戻すまで維持。
- 可用性フォールバックチェーン: 現在のターンのみ切り替え。
いずれの場合も会話は引き継がれますが、異なるモデルでの最初のターンはキャッシュなしで読み込まれます。
よくある間違い
一つのタスクを終わらせるために切り替え、次のセッションがそのモデルで始まることに驚く。 名前付きの /model はデフォルトを保存します。1セッションのみの場合はピッカーで s を使用してください。
利用制限を回避するために切り替える。 セッション制限と週間制限はモデル間で共有されています。
回答を比較するために頻繁に切り替える。 切り替えのたびにキャッシュなしで会話全体を再読み込みします。比較はフォーク(fork)するか、新しいセッションで行うのが賢明です。
フォールバック通知を見逃す。 安全フォールバックの後、セッションはフォールバックモデルに留まります。通知を確認し、必要に応じて元のモデルに戻してください。
新しいモデルが古いモデルと同じようにセッションを理解していると思い込む。 同じ会話を読みますが、コンテキストウィンドウや、何が重要かという判断基準はモデルごとに異なります。
解決策:意図的にモデルを切り替え、決定事項は会話の外に置く
ステップ 1: 切り替えが一時的か恒久的かを決める
1セッションのみの変更には /model ピッカーで s を押します。デフォルトを変更したい場合のみ、名前付きの /model を使用してください。すべての切り替えを承認制にしたい場合は、PreModelSwitch フックを追加します。
ステップ 2: 自然な区切りで切り替える
タスクの途中ではなく、タスク間で切り替えるようにし、切り替え後の最初のターンは時間がかかることを想定しておきましょう。セッションが長い場合は、切り替える前に圧縮を行うか、短い要約を作成して新しいセッションを開始することを検討してください。これにより、新しいモデルが読み込む量を減らせます。
ステップ 3: セッションの決定事項をすべてのモデルが読める場所に書く
長期セッションで確定した決定事項は、会話の維持や圧縮に依存すべきではありません。リポジトリの規約は CLAUDE.md に記述してください。以前の時点に戻る必要がある場合は、Claude Code セッションの巻き戻しに関するガイドで、どの編集内容が復元されるかを解説しています。
MemoryLake での設定方法
モデルの切り替えでは会話が維持されますが、各モデルはそれを新鮮な状態で読み込み、長い会話はいずれ圧縮されます。一つのセッションを超えて、あるいは他のツールでも重要な決定事項には、どのモデルが読んでいるかや会話の長さに依存しない「居場所」が必要です。
MemoryLake は、これらの決定事項を一つのリストとして管理するためのメモリレイヤーです。Claude Code だけでなく、ChatGPT や Codex など接続している他のアシスタントからも利用可能です。
エントリーはあなた自身の言葉で記述します。Claude Code のセッション、CLAUDE.md ファイル、自動メモリ、またはベンダーのストレージから何かが読み取られたり、書き込まれたり、削除されたりすることはありません。モデルの切り替えは Anthropic が説明する通りの動作を維持します。
ステップ 1: API キーを作成する
サインインし、ダッシュボードからキーを生成します。このキーは MemoryLake ワークスペースに属し、Claude アカウントとは別物です。

ステップ 2: 最初のメモリをアップロードする
解決策のステップ3で挙げた、一つのリポジトリを超えて適用される決定事項(規約、制約、およびその理由)から始めましょう。1エントリーにつき1項目、日付を付けて登録します。

ステップ 3: AI とエージェントを接続する
Claude Code や普段使用している他のアシスタントを接続します。これにより、どのモデルが実行されていても、次のセッションでも、他のツールでも、決定事項が利用可能になります。

実践で何が変わるか
第一の変化は、切り替えに驚かなくなることです。どの切り替えが1ターン限りで、どれがセッション中持続し、どれがデフォルトを変更するのかを把握できるようになります。
第二に、遅くて高コストなターンが減ります。タスクの途中で行き来するのではなく、自然な区切りで切り替え、再読み込みを想定した動きができるようになります。
第三に、決定事項が一つの会話に依存しなくなります。モデルが変わったりセッションが圧縮されたりしても、重要なことはすでに書き留められています。会話に追加すべきでないちょっとした質問については、 /btw に関するガイドでサイドクエスチョンの扱いを解説しています。
Claude Code でのモデル切り替えのベストプラクティス
単発の切り替えにはピッカーで s を押す。 名前付きの /model はデフォルトを保存してしまいます。
タスク間で切り替える。 切り替え後の最初のターンは、キャッシュなしで会話全体を読み込みます。
フォールバック通知がないかトランスクリプトを確認する。 安全フォールバックが発生すると、セッションは新しいモデルに留まります。
フォールバックが気になる場合は「毎回確認(Ask each time)」を選択する。 これにより、切り替えるかプロンプトを編集するかを自分で判断できます。
共有制限を逃れるために切り替えない。 セッション制限と週間制限はモデルをまたいで適用されます。
認識されないモデル ID に注意する。 Claude Code はそれらを 200K ウィンドウと見なします。
決定事項は会話の外に置く。 リポジトリ用には CLAUDE.md を、それ以外には管理されたリストを用意しましょう。
切り替えによって 1M コンテキストエラーが発生した場合は、利用クレジットメッセージに関するガイドで、その意味と圧縮時に会話の何が保持されるかを解説しています。
結論
Claude Code では /model を使用してセッション途中でモデルを切り替えることができ、メッセージ、ファイル読み込み、コマンド出力、メモリファイルなどの会話内容は引き継がれます。各モデルは独自のキャッシュを持っているため、切り替え後の最初のターンは会話全体を再読み込みします。また、ピッカーで s を押さない限り、名前付きの /model はその選択をデフォルトとして保存します。
Claude Code は自動的にも切り替わります。opusplan による計画と実行の切り替え、スキルがモデルを指定した場合の1ターン、フォールバックチェーンでの1ターン、そして安全フォールバック後のセッション継続などです。それぞれの違いを理解し、自然な区切りで切り替えを行い、セッションの決定事項はモデルの読み込み状況に左右されない場所に保管しておきましょう。