普段は Opus で書いてるが、見積もりだけ Haiku に下げたい等「セッション単位でモデルを切り替えたい」人向け
普段は Opus を使っているが今日のラフ書きセッションだけ Sonnet で軽く回したい、見積もりや要約のために一時的に Haiku に下げたい、新しく出たモデルを settings.json を書き換えずに試したい、といった「今回限りの切り替え」をしたい場面で、立ち上げコマンドの後ろに <code>--model claude-sonnet-4-6</code> のように書き足して起動する
--model は Claude Code を立ち上げるとき、コマンドの後ろに付けて「このセッションだけは違うモデルで動かす」と宣言するための指定です。普段 Opus で書いてるけど、今日のラフ書きセッションだけ Sonnet で軽く回したい、見積もり用に Haiku でざっと走らせたい、みたいな切り替えに使います。
ポイントは「今のセッションだけ」という限定です。次に claude をそのまま立ち上げ直したら、また普段使ってる設定のモデルに戻ります。
噛み砕くと
毎日通勤で乗ってる車があって、その日だけレンタカーを借りるイメージに近いです。明日になればまた自分の車に戻ります。設定ごと永続的に乗り換える話ではなく、その日その時間だけの一時的な切り替えです。
だから「もう Sonnet メインに変えたい」みたいな永続変更には、これは向きません。永続側は別の場所(後述)で設定します。
大事な前提:今のセッションだけの上書きで、終わったら元に戻る
これを誤解すると痛い目を見ます。--model を付けて立ち上げた窓を閉じた瞬間、その指定は消えます。次に普通に claude と打って起動したら、普段使ってる側のモデルに戻ります。
「昨日 --model で Sonnet にしたんだから今日も Sonnet のはず」と思って起動して、なぜか Opus が動いている、というのが典型的な勘違いです。
「今日のセッションだけ Sonnet で書きたい」を例に、実際の手順を見る
普段は Opus でブログ記事を書いていて、今日は下書きだけ Sonnet でざっと回したい、という想定で順に追います。
ステップ1: 普段の設定を確認する
まず自分が「何もしないで claude と打ったらどのモデルが動くか」を把握しておきます。確認はターミナルで設定ファイルを覗くか、いったん普通に立ち上げて画面の表示で見ます。
$ cat ~/.claude/settings.json
{
"model": "opus"
}
この場合「claude と打つと Opus が動く」が普段の状態です。settings.json に何も書いてなくても、Claude Code が決めたデフォルトのモデルが動きます。
ステップ2: 今日だけ違うモデルで起動する
今日のセッションだけ Sonnet にしたいので、立ち上げコマンドの後ろに --model を付けて、その後ろに使いたいモデル名を書き足します。
$ claude --model claude-sonnet-4-6
これで Claude Code が立ち上がります。画面上部に「Sonnet で動いてます」みたいな表示が出るはずです。settings.json に "model": "opus" と書いてあっても、この起動コマンドの指定が勝ちます。後から付けた指定の方が強い、と覚えると分かりやすいです。
ステップ3: そのまま使う
あとは普通に作業します。指示を出して、コードを書かせて、ファイルを編集して、終わったら閉じる。途中で「やっぱり Opus に戻したい」と思ったら、後述の /model で対話中に切り替えられます。
ステップ4: 一度閉じてから、何も付けずに起動し直す
セッションを閉じます。そして翌日、何も考えずに claude とだけ打ちます。
$ claude
このとき動くのは Sonnet ではなく Opus です。settings.json の "model": "opus" が再び効くからです。--model の指定は前のセッションを閉じた時点で消えています。
ここで「あれ、Sonnet になってない」と慌てるのが初心者が踏みやすい罠です。永続的に Sonnet にしたければ settings.json 自体を書き換えるか、後述の ANTHROPIC_MODEL という覚え書きをパソコン側に設定します。
ステップ5: モデル名の書き方は2通りある
後ろに書く名前は2形式あります。エイリアス(短い別名)とフルネームです。
# 短縮名:最新版を自動で選んでくれる
$ claude --model sonnet
$ claude --model opus
# フルネーム:バージョンを固定する
$ claude --model claude-sonnet-4-6
$ claude --model claude-opus-4-7
短縮名は楽ですが落とし穴があります。sonnet や opus は「その時点での最新版」を指すので、新しいバージョンが出た瞬間に自動で切り替わります。「昨日と同じ挙動で動かしたい」「再現性が欲しい」という場面ではフルネーム指定の方が安心です。
ステップ6: 優先順位の落とし穴を実感する
settings.json に "model": "opus" と書いてある状態で、わざと違うモデルを指定して立ち上げてみます。
$ claude --model sonnet
これで動くのは Sonnet です。settings.json が opus と書いてあろうが関係なく、コマンドの後ろに付けた指定が一番強いからです。3つの設定場所には強さの順番があります。
- ① コマンドの後ろに付けた
--model(一番強い) - ②
settings.jsonのmodel - ③
ANTHROPIC_MODEL(パソコンに覚えさせている設定値)
「あれ、設定したのに効かない」と感じたら、たいてい上の方で別の指定が勝っています。
つまり --model は何をしてくれるのか
- やってくれる: 立ち上げ時点で「今回はこのモデルで動け」と一発で固定する。
settings.jsonもANTHROPIC_MODELも上書きしてくれる - やってくれない: 永続的なモデル変更。窓を閉じたら設定は消える
- 意味が薄い場面: 普段使うモデルを根本的に変えたい時。それは
settings.jsonを直接書き換える方が早い
使いどころ3シナリオ(具体題材で再現)
シナリオ1: 料理ブログの大量画像処理スクリプトを書かせる時、見積もりだけ軽いモデルでざっと回したい
レシピ写真300枚をまとめてリサイズ+圧縮するスクリプトを書きたい、と思って立ち上げる時。最終的に動かす本番コードは Opus に丁寧に書かせたいけど、まず「だいたいどんな構造になるか」「Pillow と PIL どっちで書くべきか」みたいなラフ案出しは Sonnet で十分です。
$ claude --model sonnet
> レシピ写真300枚を一括でリサイズ・圧縮するPythonの設計案を出して
ラフ案が固まったら閉じて、本番実装は普段の Opus に戻して回す。この使い分けが --model の本懐です。
シナリオ2: 家計簿アプリの仕様書を読ませて要約だけ Haiku で出したい
家計簿アプリの開発で、20ページくらいの仕様書 PDF を読ませて「まず章ごとの要約だけ欲しい」という場面。要約タスクは Opus でやると過剰で、しかもコストもかさみます。
$ claude --model haiku
> spec.pdf を章ごとに3行で要約して
要約が手元にきたら閉じて、設計の判断や実装相談は普段の Opus に戻る。同じプロジェクトを「タスクの重さ」でモデル切り替えできるのが利点です。
シナリオ3: OSSをcloneした直後、初見で全体構造を読ませる時に最新の Sonnet を試したい
GitHub から既存OSSをcloneしてきて、まず全体の構造を把握したい場面。新しい Sonnet が出たばかりで「噂の新版でコード読解がどれくらい変わったか試したい」みたいな時に、settings.json を書き換えずに一発で試せます。
$ cd ~/projects/cloned-oss
$ claude --model claude-sonnet-4-6
> このプロジェクトの全体構造を読んで、コア部分がどこか教えて
気に入らなければそのまま閉じて何も残らない。気に入ったら settings.json を書き換えて普段使いに昇格させる、という二段構えで試せます。
初心者が踏みやすい落とし穴
- 「セッションごと」と「永続」を混同する。
--modelで立ち上げ直してもまた元に戻る。永続変更はsettings.json側を書き換える - 短縮名(
sonnetやopus)は最新版を自動で追う。新版が出ると挙動が変わる。再現性が欲しいならclaude-sonnet-4-6のようにバージョン付きフルネームを書く /modelスラッシュコマンドと混同する。/modelは会話の途中で切り替えるダイアログを開く。--modelは立ち上げ時に決め打ちする。役割が違う- 「
settings.jsonに opus と書いたから絶対 Opus」と思い込む。コマンドの後ろに--model sonnetを付けたらそっちが勝つ。後から付けた指定の方が強い - 存在しないモデル名を指定して怒られる。タイポや古い名前を書くと起動が拒否される。スペルとバージョン番号を公式の表記と合わせる
--fallback-modelの存在を知らずにエラーで詰まる。指定したモデルが混雑等で使えない時、自動で代替に切り替わってほしい場面は--fallback-modelとセットで指定する- 過去セッションを
/resumeで再開した時、当時の指定が引き継がれているか曖昧。資料を見ながら作業する前に、画面上部の表示で今動いているモデル名を必ず確認する
書き方
claude --model <モデル名 or 短縮名>
やってみるとこうなる
入力
claude --model claude-sonnet-4-6
出力例
Claude Code が指定したモデル(この例では Sonnet 4.6)で起動し、画面上部に動いているモデル名が表示される。セッション中ずっとそのモデルで動き、settings.json に別のモデルが書いてあってもこの起動時指定が勝つ。セッションを閉じれば次回からは普段の設定に戻る
このページに出てきた言葉
- セッション
- Claude Code を1回立ち上げてから閉じるまでの間。1セッション = 1回の窓
- 短縮名
- <code>sonnet</code> <code>opus</code> のような短い別名で、その時点の最新版モデルに自動で読み替えられる
- フルネーム
- <code>claude-sonnet-4-6</code> のようにバージョン番号まで含めた正式な名前。固定したい時はこちらを使う
- settings.json
- Claude Code が起動時に読み込む設定ファイル。普段使うモデルや権限のルールをここに書いておく
- ANTHROPIC_MODEL
- パソコンが起動時に覚えている設定値の1つで、Claude Code が「指定がなければこのモデルを使う」と読みに行く名前
- 上書きの強さ
- コマンドの後ろの <code>--model</code> 指定 → settings.json の model → ANTHROPIC_MODEL の順に強い。後から付けた指定の方が勝つ