Claude CodeでOpenRouterやDeepSeekを使うときは、最初にコマンドではなく経路を決めます。OpenRouterを使うなら、ゲートウェイ、モデル一覧、プロバイダー経路、利用履歴の所有者はOpenRouterです。DeepSeek直結を使うなら、Anthropic-compatible endpoint、トークン、モデルID、利用履歴の所有者はDeepSeekです。プロキシやrouterを使うなら、API形状、ログ、費用、データ経路を先に証明する実験経路として扱います。
| 経路 | 向いている状況 | テスト前にそろえるもの |
|---|---|---|
| OpenRouter経路 | OpenRouterにgateway、provider routing、モデル一覧、activityを任せたい。 | OpenRouterのbase URL、OpenRouter token、OpenRouterモデル名、OpenRouter activity。 |
| DeepSeek直結経路 | Claude CodeからDeepSeekのAnthropic-compatible APIへ直接送りたい。 | DeepSeekのbase URL、DeepSeek token、DeepSeek model ID、DeepSeek側activity。 |
| proxy/router経路 | 3rd-party adapter、ローカルgateway、チームrouterを検証したい。 | base URL、token、model mapping、log、data handling、cost proofを同じownerで説明できる。 |
本物のrepo taskに入る前に、/status、provider log、小さなcanary promptが同じownerを示すか確認します。1回のテストではbase URLもcredential ownerもmodel ownerも1つだけです。ずれたら追加設定を入れる前に戻します。
経路を決めてから環境変数を書く
よくある失敗は、Claude Codeに特別な秘密コマンドが足りないことではありません。OpenRouterのbase URLにDeepSeek tokenを合わせる、DeepSeekのmodel IDを指定しながら古いAnthropicログインが勝つ、proxyがHTTPだけ受けてもClaude Codeが期待するAnthropic API形状を保てない、という所有者の混在です。
2026-07-03時点の確認では、責任範囲は次のように分けるのが安全です。
| Owner | 担当するもの | 証明しないもの |
|---|---|---|
| Anthropic Claude Code docs | クライアント動作、環境変数名、settings、/status、gateway境界。 | すべての第三者モデルやproxyがAnthropicにサポートされること。 |
| OpenRouter docs | OpenRouterのClaude Code経路、token、base URL、model naming、provider activity。 | DeepSeek直結APIがOpenRouter routingと同じ動作をすること。 |
| DeepSeek docs | DeepSeekのAnthropic-compatible endpoint、model ID、mapping、ignored-field caveats。 | OpenRouter provider routingやproxy経路が有効であること。 |
| proxy/router project | 自分のadapter、log、cost、data path、compatibility claim。 | Claude Code公式サポート、provider cost、tool behaviorの保証。 |
OpenRouter cookbookはOpenRouterをgateway ownerにする場合の資料です。DeepSeekのcoding-agent資料はDeepSeek直結をownerにする場合の資料です。AnthropicのClaude Code資料はクライアント境界を定義します。3つを混ぜるのではなく、選んだ経路のownerに合わせて使います。
古いcredentialを消す

設定前に、今のshellに別経路の変数が残っていないか見ます。secretは出さず、存在だけ確認します。
test -n "$ANTHROPIC_AUTH_TOKEN" && echo "ANTHROPIC_AUTH_TOKEN is set"
test -n "$ANTHROPIC_API_KEY" && echo "ANTHROPIC_API_KEY is set"
test -n "$ANTHROPIC_BASE_URL" && echo "ANTHROPIC_BASE_URL is set"
test -n "$ANTHROPIC_MODEL" && echo "ANTHROPIC_MODEL is set"
予想外の出力が出たら、shell profile、.env loader、IDE terminal、devcontainer、CI secret、.claude/settings.local.jsonのどこから来たか確認します。さらにexportを重ねると、一時的には動いても、あとで誰が勝ったのか説明できません。
きれいなテストでは一度消します。
unset ANTHROPIC_AUTH_TOKEN
unset ANTHROPIC_API_KEY
unset ANTHROPIC_BASE_URL
unset ANTHROPIC_MODEL
そのshellからClaude Codeを起動します。確認したshellと起動したshellが違うと、テスト結果は経路証明になりません。
OpenRouter経路の設定
OpenRouter経路では、OpenRouterがgateway ownerです。tokenはOpenRouter、base URLはOpenRouter、model selectorはOpenRouterの現在の表記、activity proofもOpenRouter上で確認します。
一時的なshellテストは次の形です。
export ANTHROPIC_BASE_URL="https://openrouter.ai/api"
export ANTHROPIC_AUTH_TOKEN="$OPENROUTER_API_KEY"
unset ANTHROPIC_API_KEY
claude
/status
共有文書にはplaceholderだけを書き、実keyを貼りません。大事なのは、ANTHROPIC_BASE_URL、ANTHROPIC_AUTH_TOKEN、model selectorが同じOpenRouter経路に属していることです。
最初のproofは小さくします。新しいClaude Code sessionを開き、/statusを見て、ファイルを変更しないcanary promptを送り、OpenRouter activityに同じrequest、model、provider routeが出ることを確認します。合わない場合はmodel名を替える前にrouteを作り直します。
DeepSeek直結経路の設定
DeepSeek直結では、Claude CodeのAnthropic-compatible requestをDeepSeek APIへ直接送ります。endpoint、token、model ID、compatibility caveats、activity proofはDeepSeekが所有します。
shell-scoped testはこうなります。
export ANTHROPIC_BASE_URL="https://api.deepseek.com/anthropic"
export ANTHROPIC_AUTH_TOKEN="$DEEPSEEK_API_KEY"
export ANTHROPIC_MODEL="deepseek-v4-pro[1m]"
claude
/status
DeepSeek docsにはdeepseek-v4-flashのようなcoding-agent model optionもあります。ただしmodel IDは固定資産ではありません。availability、suffix、web-search behavior、mapping、priceは変わるため、チーム手順に入れる前に再確認します。
OpenRouter logはDeepSeek直結のproofではありません。OpenRouter-owned routeがDeepSeek providerを使った可能性を示すだけです。DeepSeek直結ではDeepSeek endpoint、DeepSeek model ID、DeepSeek activityを同時に見ます。
settings.localで漂流を防ぐ
shell exportは1回のcanaryには向いていますが、数日後に再開すると経路が見えなくなります。繰り返す実験では、commitされないlocal settingsに経路を置くほうが監査しやすくなります。
DeepSeek直結の形です。
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
"ANTHROPIC_AUTH_TOKEN": "$DEEPSEEK_API_KEY",
"ANTHROPIC_MODEL": "deepseek-v4-flash"
}
}
OpenRouterでもownerをそろえます。
{
"env": {
"ANTHROPIC_BASE_URL": "https://openrouter.ai/api",
"ANTHROPIC_AUTH_TOKEN": "$OPENROUTER_API_KEY",
"ANTHROPIC_MODEL": "openrouter-model-id-from-current-docs"
}
}
これをそのまま共有settingsに入れないでください。.claude/settings.local.jsonがignoreされていることを確認し、token、private base URL、個人のprovider選択はlocal scopeに置きます。
実作業前の確認ループ

確認は後片付けではなく設定の一部です。backend switchが安全なのは、route、credential、model、provider evidenceが同じ方向を示すときだけです。
| Step | 確認するもの | 通過条件 |
|---|---|---|
| 1. Minimal prompt | repoを変更しない小さなprompt。 | authやtool errorなしで応答する。 |
2. /status | Claude Codeが見ているaccount、route、model。 | 選んだownerと一致する。 |
| 3. Environment | base URL、token owner、model variable。 | 目的経路の変数だけが残る。 |
| 4. Provider activity | OpenRouterまたはDeepSeekのactivity/log。 | 同じrequestが正しいprovider ownerに出る。 |
| 5. Read-only repo action | config説明、scripts確認、harmless command。 | 挙動が正常でファイルを変えない。 |
| 6. Rollback | env varsを消して再起動。 | 以前の既知routeに戻る。 |
費用、availability、model choiceを理由に切り替えるならprovider activity proofは省略できません。/statusはクライアントの見方、provider activityは実際に誰がrequestを受け取ったかを示します。
初回エラーを分類する

初回失敗では、設定を増やす前に分類します。多くはownership mismatchです。
| 症状 | 起きやすい原因 | 最初の修正 |
|---|---|---|
401 または 403 | tokenがbase URL ownerと違う、key期限切れ、別credentialが勝つ。 | route variablesを消し、1つのtoken ownerだけを設定して再起動。 |
404、model not found、model mismatch | model IDが別経路のもの、またはcatalogが古い。 | 現在のroute ownerからmodel IDを取り直し、provider activityを見る。 |
| provider dashboardが静か | requestが期待したproviderに届いていない。 | ANTHROPIC_BASE_URL、shell source、古いauth、proxyを確認。 |
| Claude Codeが固まる、toolが変 | proxy互換が部分的、headersやtool callsが保たれていない。 | 文書化されたrouteに戻し、proxyは単体で検証。 |
| 費用が別の場所に出る | route ownerとbilling ownerを混ぜている。 | /statusとprovider activityを再確認。 |
| free/unlimited経路が落ちる | provider evidenceでそのclaimが証明されていない。 | route、model、limitsのproofがそろうまで未検証として扱う。 |
復旧は単純に戻すのが速いです。
unset ANTHROPIC_AUTH_TOKEN
unset ANTHROPIC_API_KEY
unset ANTHROPIC_BASE_URL
unset ANTHROPIC_MODEL
claude
/status
既知状態に戻ったあと、1つのbranchだけを追加します。OpenRouterならOpenRouterのbase URL、token、model、activityだけを見ます。DeepSeek directならDeepSeek endpoint、token、model ID、activityだけを見ます。branchをまたいだ修正は証明を壊します。
Cost、data、supportのstop rule
最初に約束すべきなのは安さではなく証明可能性です。price、free tier、provider priority、web-search charge、model availability、rate limitはすぐ変わります。free forever、unlimited、works with any modelのようなclaimは、現在のowner proofがない限りチーム手順にしません。
| Stop rule | 理由 |
|---|---|
| 未検証proxyへsensitive codeを送らない | prompt、file、tool outputを誰が記録するか不明です。 |
| provider proofなしのcost claimを信じない | OpenRouterとDeepSeekのpriceやavailabilityは変わります。 |
| non-Claude routeをAnthropic公式サポートと言わない | AnthropicはClaude Code client boundaryを持つだけです。 |
| tokenやprivate base URLをcommitしない | shared settingsはsecret storageではありません。 |
| provider activity proof前にreal editsを走らせない | agentがファイルを変える前にrollback pathが必要です。 |
本当に知りたいのがgateway選定なら、gateway比較を先にします。CLI導入ならinstall手順を先にします。別productでDeepSeekを使う話なら、そのproduct routeをClaude Code gateway設定に混ぜません。
よくある質問
Claude CodeはOpenRouterとDeepSeekを使えますか?
使えます。ただし1つのsession内で混ぜないことが条件です。OpenRouter owner、DeepSeek direct owner、proxy ownerのいずれかにbase URL、token、model、activity proofをそろえます。
DeepSeekはOpenRouter経由と直結のどちらがよいですか?
OpenRouterのprovider routing、dashboard、model catalog、gateway behaviorが必要ならOpenRouterです。DeepSeekのAnthropic-compatible endpoint、DeepSeek model ID、DeepSeek-side activityが必要なら直結です。良い経路は、repo、cost boundary、support ownerを証明できる経路です。
設定はどこに置くべきですか?
一時canaryはshell variablesです。繰り返すlocal experimentはignore済みの.claude/settings.local.jsonです。provider token、private base URL、個人routeをshared settingsへ入れないでください。
/statusだけで十分ですか?
十分ではありません。/statusはclient-side checkです。実作業前にはenvironment checkとOpenRouterまたはDeepSeekのprovider activityを合わせます。
freeやunlimitedの経路は使ってよいですか?
現在のprovider routeが証明した場合だけです。free tier、unlimited、priority、pricingはvolatile factです。手順にはproof date、owner、rollback pathを残します。
model nameが何度も失敗する理由は何ですか?
model IDが別経路のものかもしれません。OpenRouter model name、DeepSeek direct model ID、Anthropic model aliasは交換できません。routeを消し、1つのownerで現在のdocsを確認します。
