Claude Sonnet 5.5 に切り替えたら、それまで動いていたコードが400エラーで止まった——2026年9月28日の提供開始直後に、いちばん多く起きているのがこれです。原因はだいたい5つのどれかで、公式ドキュメントに答えが書かれています。上から順に見ていけば数分で切り分けられます。
まず確認:そもそもモデルIDが合っているか
API で使う場合のモデルIDは claude-sonnet-5-5 です。日付サフィックス付きの古い書き方(claude-sonnet-5-...)のままだと、当然ながら 5.5 は呼ばれません。各プラットフォームでのIDは次のとおりです。
プラットフォーム | モデルID |
|---|---|
Claude Platform(Claude API) |
|
Amazon Bedrock |
|
Google Cloud(Vertex AI) |
|
Microsoft Foundry |
|
アプリ(claude.ai)やClaude Code側で「モデル一覧に出てこない」という場合は、API の話ではなく提供の行き渡り方やプランの問題である可能性が高いので、後半の「アプリに出てこないとき」を見てください。
400エラーになる5つの原因
Anthropic は Sonnet 5 で動いていたコードに影響する破壊的変更を5つ挙げています。エラーメッセージからどれかを特定できます。
1. thinking を切っている(いちばん多い)
Sonnet 5 では thinking: {"type": "disabled"} で思考をオフにできました。Sonnet 5.5 ではこれが400(invalid_request_error)になります。エラーメッセージ自体が between_tools を案内してきます。
書き換え先は thinking: {"type": "between_tools"} です。これが Sonnet 5.5 でいちばん低い思考設定で、ベータヘッダーも要りません。ツールを使わないリクエストなら、返ってくるのはテキストだけ(Sonnet 5 の disabled と同じ)になります。
ただし between_tools には条件が3つあります。ここを踏むと、直したつもりでまた400になります。
- effort が
xhighかmaxだと400。low / medium / high でのみ使えます。xhigh や max で動かしたいなら、thinkingを省略するか{"type": "adaptive"}にします - 会話の途中で effort を変えられない。メッセージごとに違う effort を指定すると400になります
- 他のフィールドを一緒に送れない。
display・budget_tokens・block_bindingを添えると400。手動の思考予算({"type":"enabled","budget_tokens":N})も400です
2. ツールの呼び出しを強制している
Sonnet 5.5 は強制的なツール呼び出しに対応していません。tool_choice に {"type":"any"} か {"type":"tool","name":"..."} を指定すると、次のメッセージで400が返ります。
tool_choice: type "tool" and "any" are not supported for this model.
使えるのは auto(既定)と none だけです。トークン数を数えるエンドポイントでも同じ制限がかかります。「スキーマどおりの入力を必ず得たい」という目的で強制していたなら、auto のまま strict tool use(strict: true)を使うか、スキーマを structured outputs 側に移すのが公式の案内です。「テキストで答えずにツールを呼ばせたい」なら、どういうときにそのツールを使うのかをプロンプトに書きます。
3. 別モデルの thinking ブロックを送っている/履歴を書き換えている
thinking ブロックには、それを作ったモデルが記録されるようになりました。Sonnet 5.5 が読めるのは、自分と Sonnet 5・Opus 4.8・Haiku 4.5 とそれ以前のブロックだけで、Opus 5 / Opus 5.5 / Fable / Mythos 系のブロックは読めません。読めないブロックはモデルに届く前に落とされるだけなのでリクエスト自体は成功し、課金もされません(ここは400になりません)。
400になるのはこちらです。2026年8月31日00:00 UTC 以降に作られた API アカウントでは、thinking ブロックより前にあるもの——システムプロンプト、ツール定義、過去メッセージ——が後から変わっていると400になります。会話を「追記のみ」で進めれば起きません。途中で指示を変えたいときは、履歴を書き換えるのではなく会話途中のシステムメッセージを使います。
4. 古いコンピュータ操作ツールを宣言している
Claude API と Google Cloud では、computer_20251124 が400になります。
'claude-sonnet-5-5' does not support tool types: computer_20251124.
使えるのは computer_toolset_20260801 だけです。ベータヘッダーを外し、tools の項目を差し替えます。Amazon Bedrock では古いツールもそのまま受け付けるので、「Bedrock では動くのに Claude API だと落ちる」という食い違いが起きます。
5. advisor ツールの相手に古いモデルを指定している
advisor ツールで Claude Opus 4.8 / Opus 4.7 / Sonnet 5 を助言役に指定すると拒否されます。該当する構成は多くありませんが、心当たりがあれば見てください。
エラーは出ないのに「途中で黙る」とき
400にはならないけれど挙動が変わるものが1つあります。ツール呼び出しの合間にモデルが書くテキストが、thinking ブロックとして返るようになりました。これを画面に流していたアプリは、ツールを使っている間だけ無言になったように見えます。
対処は2つです。display の値を設定してテキストを返させるか、between_tools で前置きの思考をオフにするか。「壊れた」と思ってロールバックする前に、ここを疑ってください。
アプリやClaude Codeのモデル一覧に出てこないとき
API ではなくアプリ側で見当たらない場合、確認するのは次の順です。
- ページを再読み込みする/アプリを再起動する:モデル一覧はセッション開始時に取得されるため、提供開始直後は古い一覧が残ります
- Claude Code を更新する:新しいモデルIDを知らないバージョンだと選択肢に出ません
- プランと組織の設定を確認する:管理者が使えるモデルを制限している場合があります
- サイバー関連の依頼だけ挙動が違う場合:これは不具合ではありません。Sonnet 5.5 はリスクの高いサイバーセキュリティ依頼で目に見える形で Sonnet 5 にフォールバックする仕様です
同じ形のつまずきは Opus 5.5 でも起きています。切り分けの手順はClaude Opus 5.5 が使えないときの確認7点が流用できます。
社内で AI を業務に組み込んでいると、こうしたモデル更新のたびに「どこが壊れたのか」を追う作業が発生します。Mihata ではその部分の伴走支援も行っています。記事の途中で恐縮ですが、よろしければご覧ください。
切り分けチェックリスト
症状 | 疑うところ |
|---|---|
400 で between_tools を案内された | thinking: disabled を送っている |
400 だが between_tools に直した後 | effort が xhigh / max、途中で effort を変更、display などの同時指定 |
tool_choice に関する400 | any / tool を指定している |
過去ログを編集した後だけ400 | 8月31日以降に作ったアカウントでの履歴の書き換え |
Claude API だけ落ちる(Bedrock は動く) | computer_20251124 の宣言 |
エラーなしで途中だけ無言になる | ツール間テキストが thinking ブロック化 |
サイバー系の依頼だけ品質が落ちる | 仕様どおりの Sonnet 5 フォールバック |
モデルそのものの変更点はClaude Sonnet 5.5 の提供開始と変更点に、Opus 5.5 との使い分けはこちらにまとめています。
移行でつまずいている箇所があれば、お気軽にご相談ください。
よくある質問
Claude Sonnet 5.5 で thinking をオフにするにはどうしますか?
thinking: {"type": "between_tools"} を送ります。Sonnet 5 までの {"type": "disabled"} は400エラーになります。ただし between_tools は effort が low / medium / high のときだけ有効で、xhigh や max では400になります。
tool_choice で any を指定すると400になります
Claude Sonnet 5.5 は強制的なツール呼び出しに対応していません。使えるのは auto(既定)と none だけです。スキーマどおりの入力が必要なら strict tool use か structured outputs を使い、ツールを呼ばせたい場合はプロンプトで条件を伝えます。
Bedrock では動くのに Claude API だと400になります
コンピュータ操作ツールの違いが原因である可能性が高いです。Claude API と Google Cloud では computer_20251124 が使えず computer_toolset_20260801 のみ対応ですが、Amazon Bedrock は古いツールも受け付けます。
エラーは出ないのに応答が途中で止まって見えます
ツール呼び出しの合間のテキストが thinking ブロックとして返る仕様変更によるものです。display の値を設定してテキストを返させるか、between_tools で前置きの思考をオフにしてください。
サイバーセキュリティの質問だけ回答の質が落ちます
仕様です。Claude Sonnet 5.5 はリスクの高いサイバー関連の依頼で、目に見える形で Sonnet 5 にフォールバックします。通常のソフトウェア開発でのバグ調査や修正は影響を受けません。