Claude Opus 5.5 / Sonnet 5.5 で 400 になる原因 5 つ
2026 年 10 月 12 日時点の情報です。Claude API を呼んでいるコードの model の値だけを claude-opus-5 / claude-sonnet-5 から claude-opus-5-5 / claude-sonnet-5-5 に変えると、特定の実装をしている箇所で HTTP 400 が返ります。原因は公式の移行ガイドに書かれている仕様変更で、5 か所に絞れます。
400 になる 5 か所
| # | 該当する実装 | エラー文の断片 |
|---|---|---|
| 1 | thinking: {"type": "disabled"} を送っている | "thinking.type.disabled" is not supported for this model |
| 2 | tool_choice に any / tool を指定している | tool_choice: type "tool" and "any" are not supported |
| 3 | computer_20251124 / computer_20250124 を使っている | computer ツールのバージョン不一致 |
| 4 | 会話履歴の先頭・途中を書き換えている | 思考ブロックの署名検査で 400 |
| 5 | advisor に Opus 4.x / Sonnet 5 を指定している | advisor 対応モデル外 |
上から順に、実際に遭遇しやすい・影響範囲が広い順です。1 と 2 は実 API で確認済み、3〜5 は公式ガイドの記載です。
1. 思考を切るコードは書き換えが必要
Opus 5 では effort が high 以下のときだけ thinking: {"type": "disabled"} が通りました。Opus 5.5 ではこの逃げ道自体がなくなり、disabled も enabled + budget_tokens も effort に関係なく 400 です。
# Opus 5.5: thinking を書かない。これが adaptive thinking になる
client.messages.create(
model="claude-opus-5-5", max_tokens=16000,
output_config={"effort": "low"}, # 思考量を抑えたいならここを下げる
messages=[...],
)
Sonnet 5.5 には代わりの最低設定があります。前置きの思考をせず、ツール呼び出しの間の短い思考だけ残す between_tools です。
client.messages.create(
model="claude-sonnet-5-5", max_tokens=16000,
thinking={"type": "between_tools"}, # high 以下でのみ有効
output_config={"effort": "high"},
messages=[...],
)
between_tools は effort が xhigh / max だと 400、display や budget_tokens と併記しても 400 です。ツールを使わないリクエストでは思考なしで返るので、数ステップの計算が必要な経路は thinking を省略して adaptive に戻すほうが安全です。
思考を切っていたコードに共通する副作用にも注意してください。max_tokens は思考と本文の合計上限なので、思考なし前提で決めた値のままだと本文が途中で切れます。レスポンスの先頭ブロックも thinking になることがあるため、content[0].text を無条件に読む実装は type で判定する書き方に直す必要があります。
2. 強制ツール呼び出しは auto + strict に置き換える
tool_choice: {"type": "any"} や {"type": "tool", "name": "..."} は、Opus 5.5 / Sonnet 5.5 のどちらでも count_tokens エンドポイントを含めて 400 になります。
# 旧: 強制呼び出し(400)
tool_choice={"type": "tool", "name": "get_weather"}
# 新: auto + strict + プロンプトで指名
tool_choice={"type": "auto"}
tools=[{..., "strict": True}] # additionalProperties: false が必須、1リクエスト20ツールまで
# システムプロンプト側で「get_weather を使ってください」と明示する
目的が JSON の取り出しだけなら、ツールではなく output_config.format の構造化出力に切り替えるほうが単純です。ただし Amazon Bedrock の Sonnet 5.5 には構造化出力(strict を含む)が存在しないため、Bedrock 経路では auto + プロンプト指名 + 自前の入力検証が現実的な落とし所になります。
エラーにはならないが数値が変わる箇所
400 にはなりませんが、見落とすと挙動が変わる点が 2 つあります。
effortの既定値がモデルごとに違う。 Opus 5.5 の既定はmedium(Opus 5 はhigh)なので、effortを指定せずに移行すると思考量が 1 段下がります。Sonnet 5.5 は各段階が再較正されていて、コーディング用途はmedium、一般用途はhighが起点です- Sonnet 4.5(
claude-sonnet-4-5-20250929)は 2026年11月30日に引退します。移行先は Sonnet 5.5 です
このほか、キャッシュの最小単位が 512 トークンに下がった、Priority Tier が Opus 5.5 非対応、拒否カテゴリが増えた(Sonnet 5.5 は cyber / bio / frontier_llm / reasoning_extraction / general_harms)といった変更もあります。詳細と全部のチェック項目は元記事にまとめています。
まとめ
model の文字列だけを変える移行は、上の 5 か所のどれにも該当しなければそのまま動きます。該当するかどうかは、thinking・tool_choice・computer ツール・履歴の書き換え・advisor 指定の有無を見れば判断できます。手元のコードを1つずつ目で追うより、該当箇所を自動で洗い出すほうが早いです。
git clone https://github.com/volvox-ltd/claude5-migration-kit
python claude5-migration-kit/scan.py path/to/your/app --target sonnet-5-5
会話履歴の編集方法、advisor の対応モデル一覧、プロンプトの再調整まで含めた全手順は元記事にあります。
https://zenn.dev/persimmoq/articles/claude-opus-5-5-sonnet-5-5-breaking-changes
動くコードと一緒に、体系的に学びたい方へ
よくある質問
- Q"thinking.type.disabled" is not supported for this model というエラーが出ます
- Opus 5.5 と Sonnet 5.5 ではどちらも thinking: {type: "disabled"} が 400 です。Opus 5.5 は thinking を省略して output_config.effort を下げます。Sonnet 5.5 は thinking: {type: "between_tools"} に置き換えます(effort が high 以下のときだけ使えます)。
- Qtool_choice: any や tool_choice: tool が 400 になります
- Opus 5.5 / Sonnet 5.5 はどちらも強制ツール呼び出しに対応していません。tool_choice: {type: "auto"} にして、ツール側に strict: true を付け、プロンプトで使うツールを名指しします。
- Qmodel だけ書き換えれば移行できますか?
- できません。thinking の指定方法、tool_choice、computer ツールのバージョン、会話履歴の編集方法、advisor に指定できるモデルの5か所で挙動が変わり、該当する実装があれば400になります。既存コードを静的に走査して該当箇所を洗い出すツールを公開しています。
- QSonnet 4.5 はいつ使えなくなりますか?
- 2026年11月30日に引退します。移行先は Sonnet 5.5 です。
Claude API・AI エージェント開発の実践書
『Claude 5 世代 移行ガイド』『Claude Managed Agents 実践ガイド』を Zenn で販売中。全サンプルコードを GitHub で公開、冒頭の章は無料で読めます。
書籍を見る→関連記事
Claude「Invalid signature in thinking block」の直し方
Claude API がマルチターンの途中で『Invalid signature in thinking block』400を返すときの原因と対処をまとめます。履歴の先頭を削ると起きる仕様で、追記のみに直せば防げます。
Claude Haiku 5.5 移行でHTTP 400になる6つの原因と単価が5倍になる条件
Claude Haiku 5.5へmodelだけ書き換えるとbudget_tokensやtemperatureを渡している箇所でHTTP 400になります。実APIで確認した3つのエラーと、入力が10万トークンを超えると単価が5倍になる仕様を、直し方つきでまとめます(2026年10月12日時点)。
Claude Opus 5.5 の Fast mode を実測|速度2.26倍の料金と効く場面
Claude Opus 5.5のFast modeをstandardと交互に5回測りました。平均75.7 tok/sが171.0 tok/sになり2.26倍、料金は2倍です。効く場面・効かない場面と、切り替え時のキャッシュミスやレート制限の注意点をまとめます。
Claude Opus 5.5 / Sonnet 5.5 で 400 になる原因 5 つ
model だけを Opus 5.5 / Sonnet 5.5 に差し替えると HTTP 400 になる 5 つのケースを、thinking.type.disabled や tool_choice の実際のエラー文と直し方で解説します(2026年10月12日時点)。
