Claude Media
「is not a recognized model id」の意味と対処 — Claude Code

「is not a recognized model id」の意味と対処 — Claude Code

Claude Codeで「is not a recognized model id」が出たときの3つの原因と、v2.1.200前後での挙動の違い・優先順位の確認方法をまとめます。

Claude Codeでモデルを切り替えようとすると、Model "..." is not a recognized model id.で止まることがあります。原因はモデルIDの打ち間違い、表示名とIDの取り違え、新しいバージョンでしか使えないエイリアスの3パターンに絞れます。

「is not a recognized model id」の原因 — 3パターン

Model "claud-sonnet-5" is not a recognized model id. Did you mean 'claude-sonnet-5'?

このエラーは、/modelでの切り替えに渡した文字列が、モデルエイリアス(sonnetなど)でも、このClaude Codeバージョンが認識するモデルIDでも、claude-で始まるIDでもないときに出ます。原因は主に3つです。

1つ目は単純なIDの打ち間違いです。上の例のようにclaude-sonnet-5claud-sonnet-5と1文字誤入力するケースが典型です。2つ目はSonnet 5のような表示名とID表記の取り違えで、Claude Codeが期待するのはclaude-sonnet-5という形式のIDです。3つ目は、新しいClaude Codeバージョンでしか認識されないエイリアスを古いバージョンで指定するケースです。

末尾のヒントは、近いエイリアスやモデルIDがあればそれを提案し、該当が無ければRun /model to see available models.という文言になります。

いつ・どこで発生するか — API送信前のローカルチェック

Claude Codeはこのチェックを、APIへリクエストを送る前に、モデル切り替えが要求された時点でローカルに行います。Agent SDKのsetModel()メソッドで設定する場合や、DesktopアプリのようにClaude Code CLIを裏側で動かすアプリからも同じチェックが働きます。

v2.1.200より前はどう違ったか

v2.1.200より前は挙動が異なりました。認識できない文字列でも即座には拒否されず、いったん保存された上で、次回のリクエスト時に別のエラー「There's an issue with the selected model」(後述)として失敗していました。

挙動v2.1.200より前v2.1.200以降
不正なモデルIDの扱いv2.1.200より前保存してから次回リクエストで失敗v2.1.200以降切り替え要求の時点で即座に拒否
出るエラーv2.1.200より前There's an issue with the selected modelv2.1.200以降is not a recognized model id
チェックのタイミングv2.1.200より前API呼び出し後v2.1.200以降API呼び出し前(ローカル)

v2.1.200より前に保存された不正な値は、このチェックでは修復されません。同じ古いIDが何度も出てくる場合は、後述の優先順位に沿って設定箇所を確認します。

対処法

/modelを引数なしで実行すると、アカウントで使えるモデルの一覧からピッカーで選び直せます。エイリアスが新しいバージョンでしか使えない場合は、claude updateでアップデートします。claude-で始まるフルIDは、Claude Codeのバージョンより新しいモデルであってもこのチェックを通過するため、フルIDを使っている限りアップデートは必須ではありません。

同じ古いモデルIDが繰り返し出てくる場合、設定箇所を優先順位順に確認します。

優先順位設定箇所
1設定箇所--modelフラグ
2設定箇所ANTHROPIC_MODEL環境変数
3設定箇所.claude/settings.local.jsonmodelフィールド
4設定箇所プロジェクトの.claude/settings.json
5設定箇所~/.claude/settings.json

古い値を削除すると、Claude Codeはアカウントの既定モデルにフォールバックします。

このチェックが働くのはAnthropic API接続のときだけです。Amazon Bedrock・Google Cloud's Agent Platform・Microsoft FoundryのようなサードパーティのプロバイダーやLLMゲートウェイでは、プロバイダー側がモデル名を独自に定義しているため、Claude Codeは任意の文字列をそのまま通過させます。この場合でも、未認識のモデルIDを使ったリクエスト時に診断行を出力することはあります。

似た名前のエラーとの違い

is not a recognized model idは、モデルを切り替える瞬間のローカルチェックで止まる点が特徴です。似た文言で紛らわしいエラーがいくつかあるので、区別しておきます。

  • There's an issue with the selected model: 設定されているモデル名が認識されない、またはアカウントにアクセス権が無いときに、実際のAPIリクエスト時点で出ます。v2.1.160以降、末尾のヒントは実行面(対話CLI・非対話モード・Agent SDK)ごとに変わります。v2.1.206より前は、claude.aiログインの期限切れも全モデルでこのエラーとして表面化していました
  • Claude Opus is not available with the Claude Pro plan: モデルIDそのものは正しいが、契約プランに含まれていないときに出ます。原因の切り分けはProプランでOpusが使えないときの確認手順にまとめています
  • Model ... is restricted by your organization's settings: 組織の管理コンソールやmanaged settingsのavailableModels許可リストで制限されているときに出ます

いずれもモデル関連のエラーですが、原因が「文字列として認識できない」のか「文字列は正しいが使えない」のかで分かれます。

プロバイダーによってモデルIDの書式が違う

Anthropic API以外を使っている場合、モデルの指定方法自体が異なります。Amazon Bedrockは推論プロファイルのARN、Microsoft Foundryはデプロイ名、Google CloudのAgent Platformはバージョン名を使い、いずれもプロバイダー固有の文字列です。これらのプロバイダーではこのローカルチェックが働かないため、is not a recognized model id自体が出ることはありません。代わりに、プロバイダー側のAPIが受け付けないIDを渡すと、そのプロバイダー独自のエラー形式で失敗します。

opussonnetのようなエイリアスも、接続先のプロバイダーによって解決先のモデルが変わります。

プロバイダーopusの解決先sonnetの解決先
Anthropic APIopusの解決先Opus 5sonnetの解決先Sonnet 5
Amazon Bedrock / Google CloudのAgent Platformopusの解決先Opus 5sonnetの解決先Sonnet 4.5
Microsoft Foundryopusの解決先Opus 4.6sonnetの解決先Sonnet 4.5

同じsonnetという指定でも、プロバイダーによって実際に動くモデルの世代が変わります。ブログ記事やチームの過去のメモに書かれたモデルIDをそのまま使い回すと、投稿された時点のプロバイダー・時期とずれて、このエラーやモデル自体の挙動の違いに行き着くことがあります。

よくあるつまずき

ブログや過去のドキュメントに載っていたモデルIDをそのまま貼り付ける動きはよくある落とし穴です。モデルIDの命名規則はバージョンごとに変わることがあり、古い記事のIDが今のClaude Codeでは認識されないケースがあります。迷ったら/modelのピッカーで実際に選べる候補を確認するほうが確実です。

エイリアスと個別バージョンを混同することも起きがちです。opusはアカウント種別やプロバイダーに応じて解決先が変わる可変のエイリアスで、特定のバージョンを指す固定の文字列ではありません。「先週まで動いていたモデルIDが急に認識されなくなった」という場合、Claude Codeのアップデートでエイリアスの解決先が変わった可能性も含めて確認します。

組織の制限とタイプミスを混同するのも注意点です。管理者がavailableModelsでモデルを制限している場合、ピッカーにはそもそも表示されず、/model <name>で直接指定すると「制限されている」旨のエラーになります。こちらは文字列自体は正しいので、is not a recognized model idとは別の対処が必要です。

よくある質問

エイリアスとフルIDのどちらを使うべきですか

長く使う設定にはエイリアス(sonnetopusなど)が向いています。エイリアスは常に維持された既定モデルを指すため、モデルが引退しても自動で追従します。特定バージョンに固定したい場合はフルIDを使います。

フルIDを使っているのにエラーが出るのはなぜですか

claude-で始まらない、あるいはタイプミスがあるフルIDはこのチェックに通りません。表示名(Sonnet 5など)をそのまま使っていないか確認します。

v2.1.200より前のバージョンでは対処法が違いますか

v2.1.200より前は不正な値がいったん保存されるため、モデル切り替え時ではなく次のリクエストで別のエラーとして表面化します。Claude Codeバージョンの確認・固定・ダウングレード手順を参考に、最新版へのアップデートも検討します。

社内ゲートウェイ経由だとこのチェックは効きませんか

Anthropic API直結以外(Amazon Bedrock・Google Cloud's Agent Platform・Microsoft Foundry・LLMゲートウェイ経由)では、プロバイダーが独自にモデル名を解釈するため、Claude Code側でのローカルチェックは働きません。

fallbackModelの設定は関係ありますか

fallbackModelは過負荷時に別モデルへ自動的に切り替える設定で、モデルIDの認識チェックとは別の仕組みです。過負荷対策としての設定方法はClaude Code fallbackModelで過負荷に備えるにまとめています。

Bedrock・Vertex経由だとこのエラー自体が出ないのはなぜですか

Anthropic APIではモデルIDの形式が固定されているため、Claude Codeがローカルで妥当性を判断できます。一方Bedrock・Google CloudのAgent Platform・Microsoft Foundryは、それぞれ独自の識別子体系(推論プロファイルARN・バージョン名・デプロイ名)を使うため、Claude Code側では「正しい形式かどうか」を判断する基準を持てません。結果として文字列はそのまま素通しになります。

ファミリーエイリアス(opus・sonnet等)が制限されている場合はどうなりますか

組織のavailableModels許可リストで、あるファミリーの全バージョンが制限されている場合のみ/model opusのようなエイリアス指定は拒否されます。一部バージョンだけが許可されている場合は、許可された範囲内の最新バージョンへ自動的に解決されるため、拒否にはなりません。

まとめ

「is not a recognized model id」は、モデル切り替え時にClaude Codeがローカルで行う検証エラーです。原因はタイプミス・表示名との混同・未対応エイリアスの3つに絞られ、/modelでの選び直しかclaude updateで大半は解決します。同じ値が繰り返し出る場合は、--modelフラグから~/.claude/settings.jsonまでの優先順位を順に確認します。モデル名やIDの体系そのものを見直したい場合は、Claudeモデルの移行ガイドも参考になります。

この記事を共有:XはてブLinkedIn