Claude Code Bedrock/Vertexで1Mコンテキストを有効化する方法
Amazon BedrockとGoogle Cloud's Agent Platform(旧Vertex AI)のClaude Codeで1Mトークンのコンテキストを使うための、対応モデルと[1m]サフィックスの付け方をまとめます。
Amazon BedrockとGoogle Cloud's Agent Platform(旧Vertex AI)経由のClaude Codeでも、1Mトークンのコンテキストウィンドウは使えます。ただしAnthropic APIに直接つないだときとは条件が違います。プランの使用量クレジットではなく、モデルIDへの[1m]サフィックスが有効・無効を分けます。
対応するのはSonnet 5・Opus 4.6以降・Sonnet 4.6です。Sonnet 5だけは[1m]が不要で常に1Mウィンドウで動き、それ以外のモデルはセットアップウィザードのオプションか、手動でピン留めしたモデルIDへの[1m]付与で切り替えます。この記事では、両プロバイダーでの有効化手順と、つまずきやすい「片方の環境変数だけ[1m]を付け忘れる」というケースの読み方をまとめます。
Bedrock/Vertexの1Mコンテキストは何が違うのか
Anthropic APIに直接つなぐ場合、1Mの条件はモデルとプランで決まります。Opus 4.6はMax・Team・Enterpriseで契約に含まれ、Sonnet 4.6の1Mはどのプランでも使用量クレジットが必要です。このUsage credits requiredエラーが出たときの対処はプラン別に異なります。ただしこのプランチェックが働くのは、Claude CodeがAnthropic APIに直接接続しているときだけです。
1Mが決まる仕組みの違い
Anthropic API直結
モデルとプランの組み合わせを見て、Sonnet 4.6の[1m](ProプランではOpus 4.6も)には使用量クレジットを求めます。Sonnet 5以降・Opus 4.7以降など、標準で1Mのモデルはプランを問いません。
Bedrock / Vertex
ピン留めしたモデルIDに[1m]が付いていれば1M、付いていなければ200Kです。プランやクレジット残高の確認は行われず、請求はAWSアカウントやGCPプロジェクトに発生します。
Sonnet 5は例外で、BedrockでもVertexでも[1m]なしで常に1Mウィンドウです。200K版のSonnet 5はありません。Bedrockの通常のInvoke APIとは別のMantleエンドポイント経由でも同じで、Mantleの選択肢があるのはBedrockだけです。
セットアップウィザードで有効にする
/setup-bedrockまたは/setup-vertexのウィザードでモデルをピン留めする画面には、1Mコンテキストを有効にする選択肢が表示されます。新しく接続を組むなら、ここで有効にするのが一番簡単です。起動条件や認証方式はClaude Code BedrockセットアップとClaude Code Vertex AIセットアップにあるので、初回はそちらを先に確認してください。
手動でピン留めしたモデルに[1m]を付ける
複数ユーザーへの展開では、opusやsonnetのエイリアスを無指定のまま使わず、バージョンをピン留めするのが公式の推奨です。エイリアスはClaude Codeの組み込みデフォルトに解決され、そのデフォルトが最新リリースに遅れていたり、アカウントで有効化されていなかったりするためです。
1Mを有効にするには、ピン留めに使う環境変数のモデルIDの末尾に[1m]を追加します。
# Amazon Bedrock(us.が付いたクロスリージョン推論プロファイルID)
export ANTHROPIC_DEFAULT_OPUS_MODEL='us.anthropic.claude-opus-4-8[1m]'
# Google Cloud's Agent Platform(旧Vertex AI)
export ANTHROPIC_DEFAULT_OPUS_MODEL='claude-opus-4-8[1m]'[1m]を付けられる変数はANTHROPIC_DEFAULT_OPUS_MODEL、ANTHROPIC_DEFAULT_SONNET_MODEL、ANTHROPIC_DEFAULT_FABLE_MODELです。Claude Codeはプロバイダーに送る前にサフィックスを取り除くので、AWSやGCPにはサフィックスなしのモデルIDが渡ります。付けてよいのは、対象モデルが1Mに対応している場合だけです。
/modelから直接指定する場合も同じサフィックスが使えます。
/model opus[1m]
/model sonnet[1m]
/model claude-opus-4-8[1m]付けたのに1Mにならないときの切り分け
BedrockとVertexで見落としやすいのが、[1m]サフィックスは変数単位で読まれるという挙動です。同じモデルを別の変数でサフィックスなしにピン留めしていると、そちらの経路は200Kのままです。「片方のセッションは1Mなのに、もう片方は200Kで圧縮が始まる」という食い違いは、このパターンが原因になり得ます。上から順に確かめてください。
1Mにならないときの確認順
- 1
モデルが対応しているか
対応はSonnet 5・Opus 4.6以降・Sonnet 4.6です。公式は、1Mに対応したモデルにだけ
[1m]を付けるよう求めています。 - 2
実際に使っているエイリアスの変数か
opusで動いているならANTHROPIC_DEFAULT_OPUS_MODEL、sonnetならANTHROPIC_DEFAULT_SONNET_MODELに付いているかを見ます。 - 3
起動時の指定と食い違っていないか
--modelやANTHROPIC_MODELで特定のバージョンを指定した場合も、そのバージョンがピンとして扱われます(詳しくは後述の起動時チェックの節)。ここでも[1m]の有無を揃えます。 - 4
1Mを無効にする設定が入っていないか
CLAUDE_CODE_DISABLE_1M_CONTEXT=1が環境や管理設定に入っていると、Sonnet 5を含めて200Kに固定されます。
opusplan(プランモードでOpusを使う設定)では、ANTHROPIC_DEFAULT_OPUS_MODELに付けた[1m]がプランモードのOpusフェーズにも及びます。同じピンをmodelフロントマターに書いたサブエージェントも同じ扱いなので、フェーズやサブエージェントごとにサフィックスを付け直す必要はありません。
起動時のモデルチェックとの関係
Claude Code起動時、BedrockとVertexでは意図したモデルにアクセスできるかを確認する処理が動きます。ピン留めしたバージョンが組み込みデフォルトより古く、かつ新しいバージョンをアカウントで呼び出せる場合は、ピンの更新を促すプロンプトが出ます。逆にピン留めがなく、既定のモデルがアカウントで使えない場合は、セッション限定で古いバージョンにフォールバックし、通知が出ます。
--modelやANTHROPIC_MODELで特定のSonnet・Opusバージョンを指定してセッションを始めた場合、そのバージョンが該当エイリアスのピンとして扱われ、組み込みデフォルトの可用性チェック自体がスキップされます。Microsoft Foundryにはこの起動時チェックの仕組みがなく、モデルが使えない場合はフォールバックせずエラーになります。
1Mにしたときの圧縮の境界
[1m]の有無は、コンテキストが満杯に近づいたときに自動圧縮が始まる位置にも影響します。公式の既定値は、モデルと接続先で次のように分かれます。
- Sonnet 4.6とOpus 4.6は、
[1m]なしなら200Kの境界で圧縮します - Opus 4.8以降も、Bedrock・Vertex・Microsoft Foundryで200Kウィンドウとして動くときは200Kの境界で圧縮します
- Anthropic APIでネイティブ1MのSonnet 5などは、約967Kトークンで圧縮を始めます
Bedrock・Vertexでどのモデルが1Mのまま動くかは、モデル設定ページの「Pin models for third-party deployments」の記述が基準になります。約967Kという既定値は、公式ではネイティブ1Mのモデル全般の値として示されています。
境界を自分で決めたいときは、/autocompactか起動時の--autocompactで100Kから1Mの範囲を指定できます。手元のv2.1.285のclaude --helpでは次のように表示されました。
claude --autocompact 500k --autocompact <auto|tokens> Auto-compact window size (auto, or
100k–1M tokens)環境変数のCLAUDE_CODE_AUTO_COMPACT_WINDOWは、設定されている間はコマンド・フラグ・設定より優先されます。いずれの場合も、ウィンドウはモデル自体のコンテキストウィンドウで頭打ちになります。200Kのモデルに1Mを指定しても広がらないので、まず[1m]で土台を作ります。
ゲートウェイやカスタムIDで[1m]を使うとき
Claude Codeが解決できないモデルID(独自のゲートウェイ名など)に[1m]が含まれていると、Claude Codeは1Mウィンドウを前提にします。この場合CLAUDE_CODE_MAX_CONTEXT_TOKENSで実際のウィンドウを宣言しても、単独では効きません。CLAUDE_CODE_DISABLE_1M_CONTEXT=1を併用すると、サフィックスなしの同じ綴りとして扱われ、宣言が効くようになります。200Kを超える値を宣言すると、200K上限が強制されないという起動時警告が出ますが、この構成では想定どおりの表示です。
一方、us.anthropic.claude-…-v1:0のようにClaude Codeが既知のモデル名を含むIDは、そのモデルとして解決されます。CLAUDE_CODE_DISABLE_1M_CONTEXTを設定しても、claude-opus-4-8[1m]はOpus 4.8として解決されます。この場合CLAUDE_CODE_MAX_CONTEXT_TOKENSが効くのは、圧縮をすべて止めるDISABLE_COMPACTを併用したときだけです。
無効化して200Kに固定する
コンテキストの上限を組織で固定したい場合は、CLAUDE_CODE_DISABLE_1M_CONTEXT=1で1Mを無効化できます。/modelピッカーから1Mのバリアントが消え、Sonnet 5やFableのようにネイティブで1Mを持つモデルも200Kウィンドウとして扱われます。自動圧縮が有効なら200Kの境界で圧縮が始まり、無効なら200Kを超えた時点でPrompt is too longのコンテキスト上限エラーで止まります。自動圧縮のウィンドウを200K超に設定しても、この固定は外れません。
なおv2.1.223より前は、この設定が200Kに固定していたのはSonnet 5・Opus 4.8・Opus 5のセッションだけでした。古いバージョンが混在する環境では、同じ設定でも効くモデルが違う可能性があります。
まとめ
Bedrock・Vertexでは、プランではなくピン留めしたモデルIDの[1m]が1Mを決めます。複数の変数でピンを持つ構成では、どの変数がどのエイリアスに効くかを一覧にしてから展開すると、ユーザーごとに1Mと200Kが混在する食い違いを避けやすくなります。1Mの分量換算やコスト設計、精度面の注意点はClaude 1Mコンテキストの実務活用に、BedrockでのClaude Code利用料金の仕組みはAWS BedrockのClaude料金は直接APIとどう違うかにあります。