任意のモデルをClaude Codeにつなぐ:Gemini、GPT、Grok
ANTHROPIC_BASE_URLと9routerで、任意のモデルをClaude Codeにつなぐ方法です。Gemini、Codex、Grokを同じハーネスで動かし、実際の制限と利用規約も整理します。
著者 Ailton Carvalho · AIと自動化 · 2026年10月6日 · 11 分で読めます
要点
別のモデルを Claude Code につなぐとは、ハーネス(インターフェース、ツール、スキル、フック、MCP)を残し、答える頭脳だけを差し替えることです。API のエンドポイントを、呼び出しを翻訳するルーターに向けます。Claude Code が話すプロトコルは Anthropic API のひとつだけですが、変数 ANTHROPIC_BASE_URL で別のアドレスを受け付けます。9router のようなオープンソースのルーターがそのアドレスで待ち受け、リクエストを Gemini、GPT/Codex、Grok やその他のプロバイダ向けに変換し、Claude Code が期待する形式で応答を返します。ハーネスはそのまま、変わるのはモデルだけです。すでにターミナルで仕事をしていて、コードを読むためにより安いモデルを使いたい人、またはツールを覚え直さずに別のベンダーのセカンドオピニオンがほしい人向けです。Anthropic がサポートする経路ではなく、向こう側のモデルが Claude でないとき、CLI の機能の一部は当てはまらなくなります。
1. ハーネスとモデルは別物
Claude Code を毎日使う人は、全体を「Claude」と呼びがちです。実際には層が二つあります。ハーネスはターミナル上のプログラムです。ファイルを読み書きし、コマンドを実行し、スキルを読み込み、フックを発火し、MCP サーバーと会話し、セッションの履歴を保持します。モデルは、そのすべてをターンごとにどう扱うかを、ネットワークの向こう側で決める側です。
ハーネスは、誰が答えているかを知りません。Anthropic Messages 形式のリクエストを組み立て、あるアドレスへ送り、ストリーミングのイベントが返るのを待ちます。公式ドキュメントは、ANTHROPIC_BASE_URL がゲートウェイを指しているとき、Claude Code は「treats the gateway as the Claude API and can't tell which upstream you forward to」と述べています。相手が見えないことが、差し替えを可能にしています。
だから、設定にかけた手間は無駄になりません。プロジェクトのルール、すでに接続した MCP サーバー(まだ一つも接続していないなら、Claude CodeとCursorのMCPのガイドが基本を扱います)、検証のフックはそのままです。変わるのは、考える側の品質、費用、スタイルです。
タイトルの「任意」についての注記です。ここでいう任意は、ルーターが対応する任意のプロバイダです。9router の README は、APIキーでつながるプロバイダを 40 以上挙げていて、その中に OpenAI、Anthropic、Gemini、xAI があります。その一覧の外では翻訳はなく、魔法もありません。
2. ルーターが間に入る仕組み
流れは三つの部品です。
- Claude Code は、互換ガイドが説明する通り、ANTHROPIC_BASE_URL に設定したアドレスの /v1/messages へリクエストを送ります。
- ルーターはそれを受け取り、要求されたモデル ID を読み、プロバイダを選び、本文をそのプロバイダの形式(Gemini、OpenAI、xAI)に変換します。
- 応答は Anthropic 形式のイベントに変換されて戻り、Claude Code は何も変わらなかったかのようにターンを続けます。
9router はこれをローカルで行います。自分のマシンか VPS の上で、プロバイダを登録し、Claude Code が使うキーを発行するための Web ダッシュボードが付きます。README によれば、プロジェクトは MIT ライセンスで、料金は取らず、支払いは各プロバイダに直接です。ダッシュボードが表示するコストの数字は比較用の見積もりであり、請求書ではありません。
ルーターを挟まない代替もあります。Anthropic 自身が、Amazon Bedrock、Google Cloud Agent Platform、Microsoft Foundry 経由で Claude を提供しています。これらが公式バックエンドです。ただし、どれも Claude のモデルを配信します。ハーネスの中で Gemini や Grok を動かすのが目的なら、それを解決する部品はルーターだけで、保守は自分が引き受けます。
3. 9routerをインストールする
README には二つの経路があります。npm の場合、Node.js 20 以上です。
npm install -g 9router
9router
Docker の場合、データはホームディレクトリのフォルダに永続化します。
docker run -d --name 9router -p 20128:20128 \
-v "$HOME/.9router:/app/data" \
-e DATA_DIR=/app/data decolua/9router:latest
どちらでも、ダッシュボードは http://localhost:20128/dashboard で開きます。デフォルトのポートは 20128 です。VPS で動かすなら、このポートをインターネットに出さないでください。ルーターは localhost だけを待ち受け、ダッシュボードには SSH トンネルで入ります。ルーターのキーを持つ人は、そこに登録されたすべてのプロバイダのクレジットを使えます。
先に進む前に、ダッシュボードで二つ確認します。エラーなく開いたこと、そして 9router 自身のアクセスキーを発行する選択肢があることです。Claude Code に入れるのは、Gemini や xAI のキーではなく、このキーです。
4. プロバイダを登録する
ダッシュボードでは、各プロバイダが自分の認証情報で入ります。どれも安全な経路は、従量課金の APIキーです。
- Gemini: Google のコンソールで Gemini API のキーを発行し、9router の Gemini プロバイダに貼ります。公式の価格表には無料枠と有料枠があります。顧客の仕事には有料枠を使います。
- Grok: xAI の APIキーで入り、トークン単位で請求されます。xAI のキーがなければ、ルーターに Grok はありません。
- Codex と GPT: Codex のドキュメントは二つのログインを説明しています。「Sign in with ChatGPT for subscription access」と APIキーで、OpenAI は APIキーを「at standard API rates」で請求します。使うのは APIキーです。
コンシューマ向けサブスクリプションを使わない理由
9router の README は、サブスクリプションへの OAuth ログイン(ChatGPT/Codex、Claude Code ほか)を用意しています。技術的には動きます。契約上は別の話です。Google Antigravity の追加条項は、はっきりこう書いています。「Using third party software, tools, or services to access the Service (e.g. using OpenClaw with Antigravity OAuth) is a breach of this Agreement」。そして Antigravity と Gemini CLI のアカウント停止または解約を定めています。OpenAI 側では、Codex の認証ドキュメントが ChatGPT ログインの対応先を列挙しています。デスクトップアプリ、Codex CLI、IDE 拡張です。サードパーティのルーターはその一覧にありません。
実務上の結論です。ルーターにつないだコンシューマ向けサブスクリプションは、プロバイダの規約に違反し、アカウントを失うことがあります。従量課金の APIキーが、疑いのない経路です。トークンごとに公表価格があるので、請求は予測できます。
5. 分離したランチャーでClaude Codeを向ける
普段の Claude Code には触らないでください。設定ディレクトリを分けた、別インスタンスを起動するランチャーを作ります。公式ドキュメントは、まさにこのために CLAUDE_CONFIG_DIR を説明しています。デフォルトの ~/.claude を置き換え、「Useful for running multiple accounts side by side」です。ログイン、設定、履歴、プラグインは分かれ、互いに混ざりません。
~/bin/claude-roteado として保存し、実行権限を付けます。
#!/usr/bin/env bash
export CLAUDE_CONFIG_DIR="$HOME/.claude-roteado"
export ANTHROPIC_BASE_URL="http://localhost:20128"
export ANTHROPIC_AUTH_TOKEN="$(cat "$HOME/.config/9router.key")"
exec claude "$@"
このファイルの三つの細部です。
- ANTHROPIC_BASE_URL はポートのルートを指します。Claude Code が /v1/messages を自分で足します。互換ガイドがそう示しています。9router の README は config.json の例で /v1 エンドポイントに触れています。リクエストが重複したパスに落ちるなら、ここで調整します。
- ANTHROPIC_AUTH_TOKEN は、9router のダッシュボードで発行したキーを運び、Authorization ヘッダーに Bearer 接頭辞付きで送られます。キーは自分のユーザーだけが読めるファイルに置き、スクリプトにもバージョン管理にも書きません。
- サブスクリプションは経路の外です。 公式ドキュメントは、ゲートウェイの認証情報が有効なとき、リクエストは claude.ai のログインを使わず、プランの上限も適用されないと説明しています。請求は、ゲートウェイが転送する認証情報の所有者に行きます。この場合は、登録した各プロバイダです。
複数のエージェント向けにプロジェクトのルールを保っているなら、Rulesync:Claude Code、Codex、Cursorのルールをひとつのソースで管理するが、指示を重複させない方法を示しています。ここでの問題は別です。同じ CLAUDE.md を異なるモデルが読むようになり、長いルールを同じ規律で守るとは限りません。
同じ経路でエージェントに ERP、ストア、銀行を読ませたいなら、それはオーダーメイドの連携(MCP、Webhook、キュー)です。システムの内容と自動化したいことをお知らせください。
6. 変数かエイリアスでモデルを選ぶ
モデル ID は、ルーターがプロバイダを決めるためのものです。README は接頭辞付きの形式を示していて、Codex の例が cx/ です。ダッシュボードのモデル一覧から正確な ID をコピーしてください。名前を作らないでください。
セッション全体を一つのモデルで走らせるなら、起動時に ID を渡します。モデル設定のドキュメントが順序を挙げています。セッション内の /model、起動時の --model、ANTHROPIC_MODEL、設定の model フィールドです。
claude-roteado --model "<id-copiado-do-painel>"
いちばん楽なのは、エイリアスを割り当て直すことです。変数 ANTHROPIC_DEFAULT_OPUS_MODEL、ANTHROPIC_DEFAULT_SONNET_MODEL、ANTHROPIC_DEFAULT_HAIKU_MODEL が、opus、sonnet、haiku の向き先を決めます。ランチャーにこれを足します。
export ANTHROPIC_DEFAULT_OPUS_MODEL="<id-claude-no-painel>"
export ANTHROPIC_DEFAULT_SONNET_MODEL="<id-codex-no-painel>"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="<id-gemini-flash-no-painel>"
これで /model sonnet は Codex を呼び、/model haiku は Gemini Flash を呼びます。ドキュメントによれば、haiku エイリアスはバックグラウンドのタスクのモデルでもあるので、セッションのタイトルと内部の要約はいちばん安いモデルに行きます。サブエージェントについては、CLAUDE_CODE_SUBAGENT_MODEL がデフォルトを決めます。メインのセッションは一つのモデルで考え、検索のサブエージェントは別のモデルで動きます。
セレクタの細部です。ゲートウェイの自動モデル検出が残すのは、「claude」または「anthropic」を含む ID だけです。Gemini や Grok の ID は、それだけでは /model に出ません。メニューに入れるには、ID を ANTHROPIC_CUSTOM_MODEL_OPTION に、読みやすい名前を ANTHROPIC_CUSTOM_MODEL_OPTION_NAME に使います。
7. どのモデルがいつ割に合うか
意味のある分け方は、仕事の種類によるもので、ブランドへの忠実さではありません。
- 安い読み取りには Gemini Flash。 リポジトリを洗う、モジュールを要約する、関数がどこから呼ばれるかを探す、長いログを説明する。入力トークンが多く、判断は少ない仕事で、下の表では Flash の入力価格がいちばん低いです。
- スクリプトとセカンドオピニオンには Codex。 移行スクリプト、足りないテスト、Claude が書いた diff のレビュー。別のベンダーは違う間違え方をするので、同じモデルが見逃すバグを拾えます。
- 一般的な推論の代替としての Grok。 オープンな問題で答えを比べたいときに使います。
- 文章と重いリファクタリングには Claude。 多くのファイルにまたがる変更、テスト付きのリファクタリング、ツールを長く使う仕事です。ハーネスは Claude を中心に設計されていて、effort、適応的 thinking、キャッシュがドキュメントどおりに動くのはこの場合だけです。
100 万トークンあたりの価格です。2026年10月7日に読んだ公式ページによります。
| モデル | 入力(US$) | 出力(US$) | 出典 |
|---|---|---|---|
| Gemini 3.8 Flash(有料枠、2026年12月31日まで) | 0.75 | 3.75 | Gemini API pricing |
| Gemini 3.1 Pro Preview(プロンプト 200k トークンまで) | 2.00 | 12.00 | Gemini API pricing |
| grok-4.7(プロンプト 200k トークン未満) | 2.00 | 6.00 | xAI Docs, Models |
| grok-4.7(プロンプト 200k トークン以上) | 4.00 | 12.00 | xAI Docs, Models |
| APIキーによる Codex | OpenAI API の標準料金 | OpenAI API の標準料金 | OpenAI Codex Docs |
Google のページ自体が、2027年1月1日からの Flash の価格改定をすでに告知しています。予算を確定する前に、各ベンダーの価格ページを確認してください。記事の表はすぐに古くなります。
8. 実際の限界
最初の限界はサポートです。公式ドキュメントは単刀直入で、Anthropic は「doesn't endorse, maintain, or audit third-party gateway products, and doesn't support routing Claude Code to non-Claude models through any gateway」としています。壊れたら、問題は自分とルーターのプロジェクトのものです。
次に、挙動として何が変わるかです。互換ガイドと環境変数のページによります。
- effort と thinking は別のベンダーには当てはまらない。 effort のレベルが載っているのは Claude モデルだけです。認識できない ID に対しても、Claude Code は適応的推論と effort を送り、上流が拒否することがあります。effort が拒否されると、CLI は effort なしでリクエストをやり直します。実際には /effort は飾りになります。
- プロンプトキャッシュはルーター次第。 cache_control がそのまま届かないとき、エラーはありません。各ターンがキャッシュなしの入力として請求されます。最初の数日は、プロバイダのダッシュボードで使用量を見てください。
- 仮定されるコンテキストウィンドウ。 未知の ID では、Claude Code は 200K トークンと仮定します。モデルのウィンドウが違うなら、CLAUDE_CODE_MAX_CONTEXT_TOKENS で知らせてください。そうしないと、コンパクションが違うタイミングで起きます。
- オフになる機能。 ANTHROPIC_BASE_URL が Anthropic の外にあると、MCP のツール検索はデフォルトでオフになり、Remote Control は v2.1.196 以降無効です。MCP サーバーが多いと、すべてのツールが一度に読み込まれ、コンテキストがより速く埋まります。
- 公式モデルに依存する機能。 自動権限モードの分類器、fast mode(確認が api.anthropic.com へ直接行く)、長いツール使用の連鎖は、Claude 向けに設計されています。別のモデルでは失敗するか、挙動が違うことがあります。ルーティングしたインスタンスでは手動の権限を使います。
- 指示の遵守は一様ではない。 フックとスキルは動き続けますが、正しいスキルを呼ぶか、CLAUDE.md を守るか、適切な時点で止まるかはモデルの判断です。小さく、見直せるタスクから始めてください。
最後に、利用規約です。すでにセクション 4 で扱いました。従量課金の APIキーを使うルーターは、各プロバイダの契約の中に残ります。コンシューマ向けサブスクリプションのログインを使うルーターは、残らないことがあります。
エージェントにそのまま渡せるプロンプト
下のテキストを、すでに使っている Claude Code に貼り付けてください。9router をインストールし、普段のインストールには触らずに、この記事の分離したランチャーを作り、ダッシュボードで各プロバイダのキーを登録するような、あなた自身の手順で止まります。< > の項目は書き換えるか、聞かれたときに答えてください。
ローカルのルーター経由で、ほかのモデルを Claude Code につなぎます。次の手順を順番どおりに実行してください。
私のデータ:インストール方法 <MODE>(npm または docker)、プロバイダ <PROVIDERS>(gemini、xai、
openai)、ダッシュボードのモデル一覧からコピーした ID:<OPUS_ID>、<SONNET_ID>、<HAIKU_ID>。
ルール:
- 9router のキーも、どのプロバイダのキーも、表示しない、読み上げない、チャットに貼らない、
スクリプトに書かないこと。ルーターのキーは ~/.config/9router.key だけに置き、読めるのは私だけ。
- 従量課金の APIキーを使うこと。コンシューマ向けサブスクリプションの OAuth ログインを
ルーターにつなげないこと。
- ~/.claude と、普段の claude コマンドには触らないこと。コマンドは実行前に見せること。
1. 前提:claude --version。npm なら node -v が 20 以上。docker なら docker --version を確認。
2. npm のインストール:npm install -g 9router のあと 9router。
docker のインストール:docker run -d --name 9router -p 20128:20128
-v "$HOME/.9router:/app/data" -e DATA_DIR=/app/data decolua/9router:latest
3. ネットワーク:VPS ではポート 20128 をインターネットに出さない。localhost だけにし、
SSH トンネルでダッシュボードを開く方法を説明すること。
4. ダッシュボード:http://localhost:20128/dashboard を開き、各プロバイダをその APIキーで登録し、
9router 自身のアクセスキーを発行するよう、私に頼むこと。
5. ルーターのキー:権限 600 の空の ~/.config/9router.key を作り、エディタでキーを貼るよう私に
頼むこと。中身は読まず、ファイルが空でないことだけを確認する(test -s)。
6. ランチャー:実行権限付きで ~/bin/claude-roteado を作り、次の行を入れること。
#!/usr/bin/env bash
export CLAUDE_CONFIG_DIR="$HOME/.claude-roteado"
export ANTHROPIC_BASE_URL="http://localhost:20128"
export ANTHROPIC_AUTH_TOKEN="$(cat "$HOME/.config/9router.key")"
export ANTHROPIC_DEFAULT_OPUS_MODEL="<OPUS_ID>"
export ANTHROPIC_DEFAULT_SONNET_MODEL="<SONNET_ID>"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="<HAIKU_ID>"
exec claude "$@"
リクエストが重複した /v1 パスに落ちたら、ANTHROPIC_BASE_URL を調整すること。
7. 調整:モデルのコンテキストウィンドウが 200K 以外なら、CLAUDE_CODE_MAX_CONTEXT_TOKENS を足すこと。
名前に "claude" がない ID を /model に出すには、ANTHROPIC_CUSTOM_MODEL_OPTION と
ANTHROPIC_CUSTOM_MODEL_OPTION_NAME を使うこと。
8. リマインド:ルーティングしたインスタンスでは手動の権限。effort、fast mode、Remote Control は
そこでは当てはまらない。最初の数日は各プロバイダのダッシュボードで使用量を見ること。
最終確認:claude-roteado --model "<SONNET_ID>" を実行し、短い質問を送るよう私に頼むこと。
応答が返ったこと、リクエストが 9router のダッシュボードに出ること、/model sonnet と
/model haiku が私が選んだ ID を指していることを、私と確認すること。そのあと
ls ~/.claude-roteado を実行して設定が分かれていることを証明し、普段のコマンドで
claude --version を実行すること。
3点が確認できるまで、終わったと言わないこと。
よくある質問
Claude CodeでGeminiは使えますか?
使えます。9router のように、Anthropic Messages 形式を Gemini API に翻訳するルーター経由です。Claude Code は ANTHROPIC_BASE_URL でルーターを指し、ルーターがあなたの APIキーで Gemini を呼びます。Anthropic はこの構成をサポートしません。
ANTHROPIC_BASE_URLとは何ですか?
Claude Code が使う API のエンドポイントを変える環境変数です。公式ドキュメントは、プロキシやゲートウェイ経由でリクエストを流す用途として説明しています。そばにゲートウェイの認証情報がないと、保存済みの claude.ai ログインが有効な認証情報のままです。
Gemini、OpenAI、xAIのAPIは支払う必要がありますか?
安全な経路を進むなら、はい。9router はフリーソフトウェアで、料金は取りません。消費した分を各プロバイダに支払います。Gemini の価格ページには無料枠がありますが、顧客のコードには有料枠が適切です。
ChatGPTやGeminiのサブスクリプションをルーターで使えますか?
ルーターは受け付けますが、プロバイダの契約は受け付けないことがあります。Google Antigravity の規約は、同社の OAuth を使うサードパーティソフト経由のアクセスを違反と呼び、停止のリスクがあります。OpenAI は、自社の Codex クライアント向けに ChatGPT ログインを文書化しています。APIキーを使ってください。
別のモデルでもeffortとthinkingは動きますか?
Claude のときのようには動きません。ドキュメントが effort のレベルを載せているのは Claude モデルだけで、別のベンダーの上流はそれらのフィールドを拒否することがあります。拒否を受けると、Claude Code は effort なしでやり直します。
これでClaude Codeの本体のインストールは壊れますか?
壊れません。専用の CLAUDE_CONFIG_DIR を持つランチャーを使う場合です。ログイン、設定、履歴、プラグインは別のディレクトリにあり、本体のインスタンスは Anthropic と直接話し続けます。
まとめ
Claude Code の価値はハーネスにあり、ハーネスは誰が答えているかを知りません。ANTHROPIC_BASE_URL、9router のようなルーター、分離したランチャーがあれば、Gemini、Codex、Grok が同じスキル、フック、MCP の流れに入ります。代償は、ルーターの保守を引き受けること、effort、キャッシュが効くという確実さ、いくつかの機能を失うこと、そして APIキーを使って規約の中に留まることです。必要なのが、ERP、ストア、銀行を読むエージェントなら、それは AI エージェントとターミナル自動化を含むオーダーメイドの連携(MCP、Webhook、キュー)です。システムの内容と自動化したいことをお知らせください。