VS Code拡張でサードパーティプロバイダーを使う設定 — Bedrock/Vertex/Foundry
Claude CodeのVS Code拡張をBedrock/Vertex/Foundry経由で使う設定です。環境変数がシェルからGUIパネルに届かない落とし穴も扱います。
はじめに
Claude CodeのVS Code拡張機能は、既定でAnthropicのAPIに直接接続します。Amazon Bedrock、Google Cloud's Agent Platform(旧Vertex AI)、Microsoft Foundryのいずれかで使うには、ログインプロンプトを止めたうえでプロバイダー別の環境変数を渡します。
つまずきの大半は環境変数が拡張機能のプロセスに届いていないことで起きます。この記事は設定の最短手順と、繋がらないときの切り分け、プロバイダー経由にすると拡張機能で何が変わるかを扱います。
前提条件
プロバイダーごとに、Claude Code側の設定を始める前に済ませておく準備が異なります。
- Amazon Bedrock: AWSアカウントとBedrockの利用有効化、対象Claudeモデルへのアクセス許可、IAM権限
- Google Cloud's Agent Platform: 課金有効なGCPプロジェクト、Agent Platform APIの有効化、Model GardenでのClaudeモデルへのアクセス申請
- Microsoft Foundry: Azureサブスクリプション、Foundryリソースの作成権限、Claudeモデルのデプロイ
いずれも各プロバイダー側の管理コンソールで行う準備で、Claude Code固有の作業ではありません。拡張機能側の要件はVS Code 1.94.0以降です。拡張機能そのものの基本操作はClaude Code VS Code拡張機能の使い方にあります。
設定は3ステップで終わる
拡張機能をプロバイダーに繋ぐ流れ
- 1
Disable Login Promptを有効にする
VS Codeの設定(
Cmd+,/Ctrl+,)で「Claude Code login」を検索し、Disable Login Promptにチェックを入れます。vscode://settings/claudeCode.disableLoginPromptを開けば、この項目に直接移動できます。拡張機能全般の設定項目はVS Code拡張機能の設定項目ガイドにあります。 - 2
プロバイダーの環境変数を ~/.claude/settings.json に書く
手で書く方法と、対話式ウィザードに書かせる方法があります。詳細は次の節です。書き先を
~/.claude/settings.jsonにすると、拡張機能とCLIが同じ設定を共有します。 - 3
/status で接続先を確かめる
Google Cloud's Agent PlatformとMicrosoft Foundryのドキュメントでは、
/statusのAPI provider行にプロバイダー名が出るかどうかで判定します。
環境変数を書く: 手動とウィザード
3プロバイダーの最小構成は次のとおりです。
| プロバイダー | 有効化する変数 | 認証方式 |
|---|---|---|
| Amazon Bedrock | 有効化する変数CLAUDE_CODE_USE_BEDROCK=1 + AWS_REGION(プロファイルにリージョンがあれば省略可) | 認証方式AWSプロファイル / アクセスキーとシークレット / Bedrock APIキー / 環境内の既存認証情報 |
| Google Cloud's Agent Platform | 有効化する変数CLAUDE_CODE_USE_VERTEX=1 + CLOUD_ML_REGION + ANTHROPIC_VERTEX_PROJECT_ID | 認証方式Application Default Credentials / サービスアカウントキー / 環境内の既存認証情報 |
| Microsoft Foundry | 有効化する変数CLAUDE_CODE_USE_FOUNDRY=1 + ANTHROPIC_FOUNDRY_RESOURCE(またはBASE_URL) | 認証方式APIキー / Microsoft Entra ID / ベアラートークン |
BedrockとGoogle Cloud's Agent Platformには対話式のセットアップウィザードがあります。ログインプロンプトで「3rd-party platform」を選ぶか、サインイン済みなら /setup-bedrock または /setup-vertex を実行すると起動します。結果は env ブロックに自動で保存されるので、変数を自分でexportする必要はありません。
CLAUDE_CODE_USE_BEDROCK=1 を設定するまで /setup-bedrock はコマンドメニューに表示されません。メニューに出なくても、名前を最後まで入力すれば実行できます。/setup-vertex も同じで、CLAUDE_CODE_USE_VERTEX=1 を設定するまで隠れます。
Microsoft Foundryにウィザードはなく、環境変数を手動で設定する経路だけです。Foundryの設定手順にはデプロイ名を控えておく工程があり、その名前をモデル変数に使います。
ウィザードの書き込み先は ~/.claude/settings.json です(CLAUDE_CONFIG_DIR を設定していれば $CLAUDE_CONFIG_DIR/settings.json)。手で書くなら次の形になります。
{
"env": {
"CLAUDE_CODE_USE_BEDROCK": "1",
"AWS_REGION": "us-east-1"
}
}ウィザードを試すにはターミナルで claude を実行します。VS Codeの統合ターミナルで claude を動かすには、拡張機能同梱のCLIとは別にスタンドアロンのCLIが必要です。拡張機能のチャットパネルは同梱のCLIを使います。
claudeCLIでは繋がるのに拡張機能で繋がらないとき
症状は「ターミナルの claude はBedrockに繋がるのに、チャットパネルでは繋がらない」という形で現れます。原因の候補は、環境変数がどこに書かれているかです。
シェルの export が効くのは、そのシェルから起動したプロセスです。VS Codeの拡張機能ドキュメントも、シェルの環境変数がVS Codeに引き継がれていない場合があるとし、ターミナルから code . で起動する方法を挙げています。引き継ぎに頼らず、値は settings.json の env に置くのが安全です。
settings.json の env には、シェルとの優先関係にも決まりがあります。同じ変数がシェルと env の両方にあると、ほとんどのセッションで env の値が使われます。Claude Codeが各エントリをプロセスの環境変数へ書き込み、シェルから引き継いだ値を置き換えるためです。
例外もあります。Claude Desktopアプリやセルフホスト環境のランナーがセッションを開始する場合は、そちらが組み立てた起動環境が優先されます。起動環境がすでに設定している変数は、設定ファイルの env の値が無視されます。無視された変数はデバッグログに出ます。
もう1つの置き場所が、VS Codeの claudeCode.environmentVariables 設定です。拡張機能から起動するClaudeプロセスに環境変数を渡せます。ただし公式の表には「共有したい設定はClaude Codeの設定を使う」と注記があります。
切り分けは /status から始めます。Google Cloud's Agent Platformのドキュメントによると、API provider 行が表示されなければ、環境変数がプロセスに届いていません。表示されていれば、GCP project、Default region、Model の各行で解決された値を確かめられます。Foundryでは API provider 行に Microsoft Foundry とリソース名(またはベースURL)が出ます。
設定を試す前にCLI側で確かめる(v2.1.285で確認)
~/.claude/settings.json を編集する前に、別ファイルの env で動作を試す方法があります。CLIの --settings は設定ファイルのパスかJSON文字列を受け取ります。設定リファレンスによると、--settings 経由の env も起動時に適用されます。
claude --version
# 2.1.285 (Claude Code)
claude --help | grep -A1 -- "--settings"
--settings <file-or-json> Path to a settings JSON file or a JSON
string to load additional settings from--bare のヘルプには「3P providers (Bedrock/Vertex/Foundry) use their own credentials」とあります。Anthropic認証をAPIキー限定にする最小モードでも、サードパーティプロバイダーはそれぞれの認証情報を使います。これはターミナルのCLIで試す手段で、拡張機能のチャットパネルの挙動を保証するものではありません。
環境変数を消したのに古い設定が残る
設定ファイルの env は値を上書きできますが、変数を削除できません。使わない変数を無効にするには、値を空文字列にします。たとえばシェルのプロファイルが CLAUDE_CODE_USE_VERTEX をexportしていて手を入れられないなら、env に "CLAUDE_CODE_USE_VERTEX": "" と書きます。Claude Codeはプロバイダー選択の判定でこれを未設定として扱います。ただしサブプロセスには空文字列が引き継がれます。
プロバイダー経由にすると拡張機能で変わること
サードパーティプロバイダーで変わる点
使えなくなる機能
claude.aiアカウントを前提にする機能は提供されません。プラン使用量のバー、音声入力、クラウドセッションのWebタブが該当します。
サインアウト
メニューにサインアウトが出ません(v2.1.277以降)。過去の
/loginによるclaude.aiのサインインが残っていても使われず、リクエストにも付きません。フィードバック送信
「Report a problem」の内容は送信されません。ダイアログが事前に知らせ、ローカルの
~/.claude/feedback-bundles/にアーカイブとして保存します。APIキーやトークンのパターンは伏せ字になります(v2.1.284以降)。使用量の表示
プランの上限ではなく、そのセッション自身のコストとトークン使用量が出ます(v2.1.277以降)。CLIの
/usageのSessionブロックと同じ合計です。
接続先の切り替えは、拡張機能が動かしCLIが自動で接続する ide という名前のローカルMCPサーバーとは別の仕組みです。使えなくなる機能の一覧に、diffビューアや @ メンションは入っていません。この内蔵サーバーの設計はIDE内蔵MCPサーバーのセキュリティモデルで扱っています。
チームに配布するときはモデルのバージョンを固定する
個人利用ならエイリアスの sonnet や opus のままで動きます。組織に配る場合は、エイリアスがClaude Codeの組み込みの既定値に解決される点が問題になります。プロバイダーごとに用意された変数を env に書いておくと、全員が同じモデルで動きます。
エイリアスのまま配るか、固定するか
エイリアスのまま
組み込みの既定値に解決されます。Bedrockのドキュメントによると、ANTHROPIC_DEFAULT_OPUS_MODEL が無いと opus はOpus 5.5に、ANTHROPIC_DEFAULT_SONNET_MODEL が無いと sonnet はSonnet 4.5に解決されます。既定値が新しいモデルに変われば、その分だけ利用者の環境の動作も変わります。
固定する
env に ANTHROPIC_DEFAULT_OPUS_MODEL='us.anthropic.claude-opus-4-8' のような具体的なモデルIDを書きます。Bedrockの例は us. の推論プロファイル接頭辞付きで、別のリージョン接頭辞やアプリケーション推論プロファイルを使う場合は書き換えます。
起動時のモデル確認はプロバイダーで異なります。BedrockとGoogle Cloud's Agent Platformには「Startup model checks」の節があり、起動時に使う予定のモデルへアクセスできるかを確かめます。未固定でアクセスできない場合は、そのセッションだけ古いバージョンかSonnetへフォールバックし、通知を出します。フォールバックは保存されません。
固定済みのモデルが現行の既定より古く、新しいほうへアクセスできるときは、ピンの更新を促されます。承諾すると新しいモデルIDがユーザー設定に書き込まれ、Claude Codeが再起動します。断ると、次に既定のバージョンが変わるまで覚えています。Bedrockで固定先がアプリケーション推論プロファイルのARNのときは、管理者が管理するものとして更新の提案が出ません。Bedrock経由の料金の違いはAWS BedrockのClaude料金は直接APIとどう違うかで扱っています。
Microsoft Foundryには起動時のモデル確認がありません。既定のモデルが自分のアカウントで使えなければ、起動はできてもリクエストが失敗します。Foundryの opus エイリアスは、Foundryのドキュメントによると ANTHROPIC_DEFAULT_OPUS_MODEL が無ければOpus 4.6に解決されます。設定するIDはAzureで付けたデプロイ名に合わせます。デプロイ作成時は「自動的に最新へ更新」を避け、特定のモデルバージョンを選ぶのがドキュメントの指示です。
よくある質問
環境変数に書いたAPIキーやトークンはリポジトリに含めても大丈夫ですか
含めない運用が一般的です。env の値は設定ファイルに平文で残り、Claude Codeが起動するすべてのサブプロセスに渡ります。設定リファレンスは、API資格情報には apiKeyHelper を使うよう案内しています。個人用の認証情報は共有されない ~/.claude/settings.json に置き、リポジトリの .claude/settings.json には書かない運用が安全です。
JetBrainsプラグインでも同じ設定が使えますか
~/.claude/settings.json はターミナル、VS Code拡張機能、JetBrainsプラグイン、デスクトップアプリが共通で読む設定ファイルです。env に書いたプロバイダー設定はJetBrainsでも使われます。Disable Login PromptはVS Code拡張機能の設定項目です。
まとめ
個人で試すだけなら、モデルはエイリアスのままでも動きます。チームに配るなら、env にモデルIDを固定し、資格情報は apiKeyHelper に逃がす構成にすると、全員の動作が揃い、鍵の漏れも防げます。