カテゴリー / 使い方の基本

Claude Codeのモデルの違い|Opus・Sonnet・Haikuの選び方と切替

この記事の目次

Claude Codeのモデルの違いは、公式のエイリアス定義でそのまま説明されている。opus は複雑な推論向け、sonnet は日常のコーディング向け、haiku は単純なタスク向けの速く効率的なモデルだ。公式ドキュメントでは、Anthropic APIで opus・sonnet・haiku がそれぞれOpus 5.5・Sonnet 5.5・Haiku 5.5を指し、Pro・Max・Team・Enterpriseの既定(default)はOpus 5.5になっている。つまりこれらのプランでは、モデルを指定しなければ既定のOpusで動いており、選ぶ作業の中心は「Sonnetに下げてよい場面」と「Haikuに任せる軽い処理」の見極めになる。切り替えは /model で行い、考える深さの調整は別のつまみであるeffortで行う。

この記事では、モデルごとの役割、既定値、切り替えの保存範囲、effortとの組み合わせ、切り替えで起きることを、公式のモデル設定ページ・コスト管理ページ・プロンプトキャッシュのページの記述にもとづいて整理する。

Claude Codeで選べるモデルは何がどう違うのか?

違いは用途で、opus は複雑な推論、sonnet は日常のコーディング、haiku は単純なタスク向けだ(公式: Model configuration)。Claude Codeの model 設定には、モデル名の代わりにエイリアスを指定できる。エイリアスならバージョン番号を直接指定せずにモデル選択ができる。公式の定義は次のとおりだ。

エイリアス 公式の位置づけ Anthropic APIでの解決先
opus 複雑な推論タスク向けの最新Opus Opus 5.5
sonnet 日常のコーディングタスク向けの最新Sonnet Sonnet 5.5
haiku 単純なタスク向けの速く効率的なHaiku Haiku 5.5
fable 最も難しく長時間かかるタスク向け Fable 5.1(ANTHROPIC_DEFAULT_FABLE_MODEL を設定していない場合。Claude apps gatewayのセッションではFable 5)
opusplan プランモード中は opus、実行時は sonnet 両者の組み合わせ
default モデル指定を解除してアカウントの既定に戻す特別値 プランや提供元による

コストの面では、公式のコスト管理ページが「Sonnetは大半のコーディングタスクをうまくこなし、Opusより安い。Opusは複雑な設計判断や多段の推論のために取っておく」という趣旨で書いている。この記事ではモデルの性能の数値比較はせず、公式が示す用途の違いとして扱う。

エイリアスは時間とともに指す先が変わる

エイリアスは提供元ごとの推奨バージョンを指し、時間とともに更新される。特定のバージョンに固定したい場合は、claude-opus-5-5 のようなフルモデル名を指定するか、ANTHROPIC_DEFAULT_OPUS_MODEL などの環境変数を使う。一部の提供元ではエイリアスがAnthropic APIより古いバージョンを指すことも公式に明記されている。たとえばAmazon BedrockとGoogle CloudのAgent Platformでは、sonnet がSonnet 4.5、haiku がHaiku 4.5を指す。

Fableは既定にならず、課金の扱いが異なる場合がある

fable はClaude Codeで最も高性能なモデル群として案内されているが、どのプランでも既定にはならず、明示的に選ぶ必要がある。また、プランや席種によってはFableの利用がプランの利用枠ではなくusage creditsに課金され、その場合は /model の一覧のFable行に「Requires usage credits」と表示される。モデルを選ぶ前にこの表示を見るのが確認の手順になる。

何も設定しないとどのモデルで動くのか?

公式の default の説明(Model configuration)では、Pro・Max・Team・Enterprise、そしてAnthropic APIの既定はOpus 5.5だ。Microsoft Foundryの既定はSonnet 4.5と、提供元によって異なる。v2.1.280より前はProとTeam StandardがSonnet 5を既定にしていたと公式に記録されている。ProやTeam StandardでSonnetが既定という説明はv2.1.280より前のものだ。ただし提供元によってはいまもSonnetが既定なので、自分の環境に当てはめて読む必要がある。

新しいモデルを使うには対応バージョンが要る

公式によると、Sonnet 5.5はv2.1.284以降、Opus 5.5はv2.1.280以降、Haiku 5.5はv2.1.293以降が必要だ。古いバージョンで指定してエラーになった場合は、まず次のコマンドで更新する。

claude update

更新の手順や確認方法はClaude Codeのアップデート方法にまとめている。

作業ごとにどのモデルを選べばいいのか?

公式のコスト管理ページとモデル設定ページの記述をつなげると、判断の軸は「作業の複雑さがどれだけあるか」と「コストをどれだけ気にするか」の2つになる。

  • 設計判断や多段の推論が要る作業: opus。Pro以上なら既定のままでよい。コスト管理ページも複雑な設計判断と多段推論をOpusの用途に挙げている。
  • 範囲が明確な日常の実装・修正: sonnet。公式は「日常のコーディングタスク向け」と定義し、Opusより安いと書いている。コストを抑えたいときに下げる候補になる。
  • 単純な処理や、サブエージェントに任せる軽い作業: haiku。コスト管理ページは、単純なサブエージェントのタスクにはClaude Codeの設定で model: haiku を指定するよう勧めている。
  • 計画は深く、実装は手早く: opusplan。プランモードでOpusが計画し、実行に移るとSonnetに切り替わる。

opusplan はプランモードと組み合わせて初めて意味を持つ。プランモードそのものの使い方はClaude Codeのプランモードを参照してほしい。サブエージェントのモデル指定の書き方はサブエージェントの使い方で扱っている。

利用枠の残りや上限に当たったときの対処はモデル選びとは別の話なので、Claude Codeの利用制限と料金プランの比較に渡す。

モデルを変えずに深さを調整する方法はあるのか?

ある。effortと呼ばれる設定で、モデルの推論の深さを調整する(公式: Adjust effort level)。公式は「effortが低いほど単純なタスクで応答速度を上げて安く、高いほど複雑な問題で深く推論する」と説明している。モデルを変える前に、まずeffortで足りるかを考えると切り替えの回数を減らせる。

Opus 5.5・Sonnet 5.5・Haiku 5.5で選べるレベルは low・medium・high・xhigh・max の5段階で、この3モデルの既定は medium だ。effortに対応するそれ以外のモデルは、Opus 4.7を除いて high が既定になっている。公式の使い分けは次のとおり。

レベル 公式が示す使いどころ
low 結果を毎回確認する短いやり取り。ブレインストーミング、下書き、リネームのような小さな変更
medium Opus 5.5とSonnet 5.5では、新機能の実装のような範囲が明確な日常の開発作業
high 検証が重要な作業や、既存コードのバグ修正のように端のケースが出やすい作業
xhigh より深い推論。トークン消費は増える
max 手を離して任せたい難題(公式の例は脆弱性探し)。効果が逓減し考えすぎやすいので、広く使う前に試すよう注意書きがある

effortの変更は /effort で行う。引数なしでスライダーが開き、/effort high のようにレベル名を続けると直接設定できる。/model の一覧でも左右の矢印キーでeffortを動かせる。今どのレベルかは /effort status で確認できる。max は環境変数 CLAUDE_CODE_EFFORT_LEVEL で指定しない限り、そのセッションだけに適用される。

注意したいのは、公式が「effortの尺度はモデルごとに調整されており、同じレベル名でもモデル間で同じ値を表さない」と書いている点だ。Sonnetの high とOpusの high は同じ深さではない。

1回だけ深く考えさせたいときは ultrathink

プロンプトのどこかに ultrathink と書くと、セッションのeffort設定を変えずに、そのターンだけ深い推論を求められる。公式によると「think」「think hard」「think more」などの言い回しはキーワードとして扱われず、普通の文章として渡される。なお、Opus 5.5・Sonnet 5.5・Haiku 5.5では思考(thinking)そのものをオフにすることはできない。

モデルはどうやって切り替えて、どこに保存されるのか?

公式(Model configuration)が示すモデル指定の方法は5つあり、上にあるものほど優先される。

  1. セッション中に /model <エイリアスまたはモデル名> を実行する(引数なしの /model で一覧が開く)
  2. 起動時に claude --model <エイリアスまたはモデル名> で指定する
  3. 環境変数 ANTHROPIC_MODEL を設定する
  4. settingsファイルの model 項目に書く
  5. 新規セッションの既定として環境変数 ANTHROPIC_DEFAULT_MODEL を設定する

公式の例では、Opusで起動してからセッション内でSonnetに切り替える。

claude --model opus
/model sonnet

恒久的に指定する場合、公式が示す設定はsettingsファイルの model 項目だ。

{
    "permissions": {
        "allow": ["Bash(npm run lint)"]
    },
    "model": "opus"
}

settingsファイルの場所や優先順位はsettings.jsonの設定ガイドで説明している。

/model は既定として保存される

/model で選んだモデルは、ユーザー設定の model 項目に書き込まれ、次からの新規セッションの既定になる。一覧の中で操作する場合、Enter は切り替えて既定として保存、s はこのセッションだけ切り替えて既定はそのまま、という違いがある。/model sonnet のように直接入力した場合は Enter と同じ扱いで、保存される。

一方、--model と ANTHROPIC_MODEL は、それを付けて起動したセッションにだけ効く。公式は、複数のターミナルで同時に別のモデルを動かしたいなら、/model で切り替えるのではなく、それぞれ --model を付けて起動するよう勧めている。

切り替えはサブエージェントにも及ぶ

/model での切り替えは、メイン会話のモデルを継承するサブエージェントにも反映される。Opusに切り替えてから調査やテスト実行をサブエージェントに任せると、その作業もOpusで動く。カスタムのサブエージェントを小さいモデルのまま使いたい場合は、その定義に model を書いておく。

切り替えたのに反映されないときは何を確認するか?

公式のモデル設定ページの「新しいセッションが選んだモデルと違うモデルで始まる」の項目には、原因が4つ挙げられている。順に確認すると切り分けられる。

  1. 1セッション限定で選んでいた: 一覧で s を押した、--model で起動した、非対話モード(-p)で /model を実行した場合は、保存された既定は変わらない。
  2. 優先度の高い設定がある: プロジェクト設定や管理設定の model、シェルの ANTHROPIC_MODEL、管理者が設定した組織の既定モデルは、起動のたびに再適用される。プロジェクト設定や管理設定がモデルを決めている場合は、起動時のヘッダーにそのファイル名が表示される。
  3. 保存に失敗している: /model は ~/.claude/settings.json に書き込む。このファイルに書き込めないと、選んだモデルはそのセッション限りになり、次の起動では古い値が読まれる。
  4. セッションを再開した: claude --resume や --continue で再開したセッションは、保存時に使っていたモデルを引き継ぐのが基本だ。

ほかに、--model・ANTHROPIC_MODEL・model 設定に書いた値は起動時に検査されないため、打ち間違えると最初のリクエストでエラーになる。組織がモデルを制限している場合、/model で制限対象を指定すると「restricted by your organization’s settings」を含むメッセージで拒否され、現在のモデルのままになる。管理者は availableModels で選べるモデルを絞れるため、一覧に出てこないモデルはこの設定を疑うとよい。

選択後の状態確認として今どのモデルで動いているかは、/status か、設定していればステータスラインで確認できる。ステータスラインの設定はステータスラインの設定方法を参照してほしい。

会話の途中で切り替えると何が起きるのか?

会話履歴は引き継がれるが、プロンプトキャッシュはモデルごとに別だ。公式のキャッシュのページによると、/model で切り替えた直後のリクエストは、内容が同じでも会話履歴全体をキャッシュなしで読み込む。そのため、キャッシュがまだ有効な間にターミナルで /model から別のモデルへ切り替えようとすると、Claude Codeは確認を求める。

opusplan も同じ仕組みで、プランモードを切り替えるたびにモデルが替わり、新しいキャッシュから始まる。切り替えのたびにキャッシュなしで履歴を読み直すことになるので、モデルを変えるなら作業の区切りでまとめて変えるほうが無駄が少ない。

もうひとつ、利用者が切り替えていないのにモデルが替わる場合がある。Opus 5.5やSonnet 5.5には安全のための分類器があり、主にサイバーセキュリティや生物学の内容がフラグ対象になる。フラグされた要求がカテゴリごとのフォールバック先モデルに切り替えられた場合、Claude Codeはその要求をそのモデルで再実行し、会話内に通知を出す。その後のセッションはフォールバック先のモデルで続くため、元に戻すには /model を実行する。

fast mode はモデルの切り替えではない

/fast で切り替えるfast modeは、別のモデルではなく、Opusを速度優先の設定で動かすものだ。公式のfast modeのページによると対応はOpus 5.5・Opus 5・Opus 4.8で、SonnetやHaikuでは使えず、トークン単価は高くなる。サブスクリプションのプランでは利用枠に含まれず、usage creditsでのみ使える。

公式の記述が変わりうる点

ここまでの解決先(Opus 5.5・Sonnet 5.5・Haiku 5.5)や既定モデルは、2026年10月19日に公式ドキュメント(Model configuration)と照合した記述だ。エイリアスは時間とともに新しいバージョンを指すようになり、fast modeはリサーチプレビューとして機能や料金、提供範囲が変わりうると明記されている。プランごとの料金や利用上限、モデル別のトークン単価はこの記事では扱っていない。手元の状況を確かめるなら、使っているバージョンで /model の一覧と /status の表示を見るとよい。

モデル選びのまとめ

Claude Codeのモデルの違いは、公式の定義どおり「複雑な推論はopus、日常のコーディングはsonnet、単純なタスクはhaiku」で整理できる。Pro以上の既定はすでにOpus 5.5なので、迷ったら既定のまま使い、コストを抑えたい日常作業でSonnetに、軽い処理やサブエージェントでHaikuに下げる、という順に考えると判断しやすい。深さはモデルを変える前にeffortで調整でき、1回だけ深い推論を求めるなら ultrathink を使える。

切り替えるときは、/model が既定として保存されること、一覧の s だけがセッション限定であること、切り替え直後はキャッシュが効かないことの3点を押さえ、切り替えた後は /status で切り替えが反映されたかを確かめるとよい。

Claude Code全体の基本から確認したい場合はClaude Codeとはから読むとよい。