Claude Code で時々 400 エラーになる問題を修正しました
Claude Code の利用中に API Error: 400 Invalid request が時々表示される問題がありました。2026 年 9 月 5 日に修正済みです。ご不便をおかけし申し訳ありません。
とくに ANTHROPIC_SMALL_FAST_MODEL に deepseek-v4-flash を指定していた場合に発生していました。
症状
会話そのものは正常に進むのに、次のエラーが不定期に表示されていました。
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "Invalid request"
}
}
Claude Code では API Error: 400 Invalid request と表示されます。
同じ操作でもエラーになったりならなかったりしました。 実測では 35 回に 1 回程度の頻度です。
エラーが出るのは Claude Code が裏側で行う短い処理で、会話の応答そのものではありません。そのため「作業は進むのにエラーだけ流れる」という形になっていました。
原因の見当がつきにくく、設定を見直しても解消しなかった方にはお手数をおかけしました。
影響範囲
対象は、出力の上限(max_tokens / max_completion_tokens / max_output_tokens)に 1 または 2 を指定したリクエストです。
| リクエスト | 影響 |
|---|---|
| 出力上限に 1 または 2 を指定 | 失敗することがありました |
| 出力上限に 3 以上を指定 | 影響ありません |
| 出力上限を指定しない | 影響ありません |
通常の利用でこれほど小さい上限を指定することはまずありません。Claude Code は会話の要点を判定する内部処理で max_tokens: 1 を送るため、この条件に該当していました。
会話の応答は上限を大きく取るため、影響を受けていません。「エラーは出るが作業は続く」という形になっていたのはこのためです。
原因
deepseek-v4-flash は複数の GPU に処理を分散していますが、そのうち一部だけが極端に小さい出力上限を受け付けない状態でした。
出力上限として 1 を指定した場合、受け付ける GPU に当たれば成功し、受け付けない GPU に当たれば 400 で失敗します。どの GPU に振り分けられるかは実行のたびに変わるため、「たまに失敗する」「再送すると通る」という形で現れていました。
エラーには失敗した項目名が付いていなかったため、どのパラメータが原因かを Claude Code の表示から判別できませんでした。この点も切り分けを難しくしていました。
対応
出力上限に 1 または 2 が指定された場合、HAI 側で 3 として扱うようにしました。どの GPU に振り分けられても結果が変わりません。
この扱いは全モデル共通です。特定のモデルだけの対処にすると、GPU の構成を変えたときに同じ問題が別のモデルで再発するためです。
出力上限を指定していないリクエストに、HAI が上限を付けることはありません。指定を省略した場合の挙動はこれまでどおりです。
この仕様はドキュメントにも明記しました。
課金への影響
失敗したリクエストは課金されていません。
課金は完了したリクエストの usage のみを対象としています。このエラーはモデルが応答を生成する前に発生しているため、トークンは消費されていません。
修正後は、出力上限に 1 を指定した場合でも最大 3 トークンまで生成されます。deepseek-v4-flash の出力単価は 100 万トークンあたり 75 円のため、増加分は 1 リクエストあたり 0.0002 円未満です。
お客様側の対応
必要な変更はありません。
モデル ID・エンドポイント・API キー・単価はいずれも変更していません。
export ANTHROPIC_BASE_URL=https://hai-api.hcloud.ltd
export ANTHROPIC_AUTH_TOKEN=hai_...
export ANTHROPIC_MODEL=kimi-k3
export ANTHROPIC_SMALL_FAST_MODEL=deepseek-v4-flash
ANTHROPIC_SMALL_FAST_MODEL には、これまでどおり低価格の deepseek-v4-flash を推奨します。