Skip to content

モデルエイリアスと 1M コンテキスト

Claude Code のベース URL が api.anthropic.com ではなく shunt を指す場合に、opus、sonnet、fable、および [1m] サフィックスがどのように解決されるか。

Updated View as Markdown

Claude Code は短いエイリアス(opussonnethaikufableopusplan)を、リクエストが shunt に到達する前にクライアント側で解決します。解決に使うテーブルは CLI バイナリに組み込まれており、そのうち 2 つの分岐はセッションの接続方法によって決まります。ANTHROPIC_BASE_URL を shunt に向けると両方の分岐が変わるため、同じ /model opus でも api.anthropic.com に接続した場合とは異なるモデルが選択されることがあります。

shunt はこの選択に影響を与えられません。shunt がリクエストを確認する時点では、すでに選択が完了しているためです。ただし、その結果をリマップすることはできます — 意図した tier を復元するを参照してください。

2 つのゲート

このページで説明する違いは、すべて次の 2 つに起因します。

ゲート 確認内容 shunt 経由での値
デプロイメント種別 セッションがゲートウェイ認証情報を保持している場合は gateway、それ以外は firstParty gateway login では gateway、単純な ANTHROPIC_BASE_URL では firstParty
「本当にファーストパーティか?」 ANTHROPIC_BASE_URL が未設定、またはホストが正確に api.anthropic.com 常に false — shunt は別のホスト

2 番目のゲートは厳密なホスト一致です。api.anthropic.com 以外の base URL はすべてこのゲートを通過できません。パススルー認証情報を使って Anthropic へ直接プロキシする shunt インスタンスも同様です。

エイリアスの解決

opussonnet にはデプロイメントごとのオーバーライドがあります。fablehaiku にはないため、どこでも同じように解決されます。

エイリアス api.anthropic.com ANTHROPIC_BASE_URL 経由の shunt gateway login 経由の shunt
opus claude-opus-5 claude-opus-5 claude-opus-4-7
sonnet claude-sonnet-5 claude-sonnet-5 claude-sonnet-4-6
fable claude-fable-5 claude-fable-5 claude-fable-5
haiku claude-haiku-4-5 claude-haiku-4-5 claude-haiku-4-5

意外なのは gateway の列です。gateway セッションでは opus が 2 リリース前、sonnet が 1 リリース前に固定されます。確認したリリース(2.1.217~2.1.220)ではこの固定値は変わっておらず、変わったのはもう一方の列です。Claude Code 2.1.219 では gateway 以外の opus のデフォルトが Opus 4.8 から Opus 5 に移行しました。そのため、4.8 対 4.7 だった差が 5 対 4.7 に広がり、固定値が目立つようになりました。

Anthropic はサードパーティプロバイダー向けの同等の表(Bedrock、Vertex、Foundry)を公開していますが、gateway の行は記載していないため、この違いは見落としやすくなっています。

[1m] は shunt に到達しない

このサフィックスはクライアント側のヒントであり、モデル id の一部ではありません。Claude Code は送信前にサフィックスを取り除き、代わりに beta ヘッダーでリクエストを表現します。

POST /v1/messages?beta=true
{"model": "claude-opus-5", ...}
anthropic-beta: claude-code-20250219,context-1m-2025-08-07,...

したがって、shunt が通信上で claude-opus-5[1m] を受け取ることはありません。受け取るのは claude-opus-5context-1m-2025-08-07 です。(shunt はルートマッチングと availableModels の適用前に末尾の [1m][1M] も取り除くため、手書きのクライアントからヒントが実際に届いても正しくルーティングされます。)

1M コンテキストは自動的に適用されない

Claude Code は次の順序でコンテキストウィンドウを決定します。明示的な [1m]context-1m beta ヘッダー、そしてこのデプロイメントでモデルがネイティブに 1M かどうかです。最後の確認には api.anthropic.com のホストゲートを通過する必要があります。他の base URL の背後では通過できないため、ネイティブ 1M モデルもデフォルトの 200K にフォールバックします。

選択 api.anthropic.com shunt の背後
opus 1M(ネイティブ) 200K
opus[1m] 1M 1M
fable 1M(ネイティブ) 200K
fable[1m] 1M(冗長なためサフィックスを除去) 1M

Anthropic も同じ制約を明記しています。ANTHROPIC_BASE_URL がゲートウェイを指している場合、Claude Code は 1M 対応を確認できない」extended context)。

shunt の背後では、常にサフィックスを付けるのが実用的なルールです。/model opus[1m]/model fable[1m] のように指定するか、固定値に組み込んでください。

export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-5[1m]'

次の 2 点も知っておくと役立ちます。

  • 確認したどのリリース(2.1.217~2.1.220)でも、短いエイリアスが [1m] を自動適用したことはありません。アップグレード後に 1M が表示されなくなった場合、原因はエイリアス処理の変更ではなく、上記のウィンドウ確認です。
  • claude-fable-5 のカタログエントリには [1m] バリアントがありません。ネイティブに 1M であり、それ以外のバリアントは存在しません。api.anthropic.com に接続している場合、入力した fable[1m] は暗黙的に fable へ短縮されます。shunt の背後では、完全なウィンドウを利用する唯一の方法であるため、サフィックスが維持されます。

ここでは CLAUDE_CODE_MAX_CONTEXT_TOKENS を回避策として使えません。Effort とコンテキストで説明しているように、この設定は claude- で始まらない id にのみ適用されます。

Fable がピッカーから消える

Fable は同じホスト確認によってゲートされています。デプロイメントが firstParty であり、base URL が api.anthropic.com ではない場合、Claude Code は /model からすべての Fable エントリを除外し、設定済みの claude-fable-5 も存在しないものとして報告します。この状態で settings.json"model": "claude-fable-5[1m]" を指定すると、暗黙的に Opus へフォールバックします。

gateway login セッションは対象外であり、Fable を引き続き選択できます。base URL 経由で Fable を使う方法は、ほかに 2 つあります。

# Bypasses the availability check entirely
export ANTHROPIC_DEFAULT_FABLE_MODEL=claude-fable-5

明示的な --model fable/model fable でも解決されます。可用性ゲートが制御するのはピッカーと保存されたデフォルトであり、id の直接解決ではないためです。この挙動は 2.1.217~2.1.220 のすべてで変わっていません。

意図した tier を復元する

shunt はクライアントの選択を変更できませんが、通過するモデルを書き換えることはできます。ユーザーが gateway login を利用しており、opussonnet エイリアスを現在の tier に割り当てたい場合は、固定された id をリマップします。

[[routes]]
model = "claude-opus-4-7"        # what a gateway session sends for `opus`
provider = "anthropic"
upstream_model = "claude-opus-5" # what you want it to actually run

[[routes]]
model = "claude-sonnet-4-6"
provider = "anthropic"
upstream_model = "claude-sonnet-5"

選定した [[models]] エントリは影響を受けません。discovery された id はピッカーからそのまま選択され、エイリアステーブルを通過しません。

バージョン履歴

インストール済みの各 CLI バイナリからエイリアステーブルを抽出し、その結果をリクエストキャプチャと照合して確認しました。

2.1.217 2.1.218 2.1.219 2.1.220
opus(non-gateway) claude-opus-4-8 claude-opus-4-8 claude-opus-5 claude-opus-5
opus(gateway) claude-opus-4-7 claude-opus-4-7 claude-opus-4-7 claude-opus-4-7
sonnet(gateway) claude-sonnet-4-6 claude-sonnet-4-6 claude-sonnet-4-6 claude-sonnet-4-6
カタログ内の claude-opus-5
1M / Fable のホストゲート 同じ 同じ 同じ 同じ

Opus 5 には Claude Code 2.1.219 以降が必要です。2.1.217~2.1.218 では、どのデプロイメントでも opus エイリアスから Opus 5 を利用できません。

Navigation

Type to search…

↑↓ navigate↵ selectEsc close