claude code で max_tokens のエラーが出続ける
Claude Code でプロンプトを送信すると何を書いても、どんなコマンドを実行してもレスポンスがこうなる。
❯ /init
⎿ API Error: 400 {"type":"error","error":{"type":"invalid_request_error","message":"max_tokens: 200001 > 64000,
which is the maximum allowed number of output tokens for
claude-opus-4-5-20251101"},"request_id":"req_XXXXXXXXXXXXXXXX"}
例外は /status コマンドなどトークンを消費しなそうなコマンドのみ。
Claude Code のバージョンを 2.1.2 までダウングレードすると事象が解消する。
原因はこの設定が環境変数に入っていたこと。この設定値が上限オーバーのようで、LLM をたたくときにエラーになる。
"MAX_THINKING_TOKENS": "200000"
自分は settings.json にいつからか入れたままあまり精査されず残っていた。
おそらく v2.1.7 で入ったこちらの修正の影響と思われる。
Fixed context window blocking limit being calculated using the full context window instead of the effective context window (which reserves space for max output tokens)
コンテキストウィンドウのブロック制限が、有効なコンテキストウィンドウ(最大出力トークンのスペースを予約する)ではなく、完全なコンテキストウィンドウを使用して計算されていた問題を修正しました。
https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md#217
Claude Code のバージョンが古いと Opus4.6 が使えないようなのでちゃんと調べたらすぐ分かった。