メインコンテンツへスキップ

Claude CodeでOpenRouterとDeepSeekを使う:経路、設定、初回エラー対応

A
12 分で読めますClaude Code

Claude CodeをOpenRouterまたはDeepSeekで使うための経路優先手順。環境変数、モデルID、/status、プロバイダー確認、初回エラーの直し方を整理します。

Claude CodeでOpenRouterとDeepSeekを使う:経路、設定、初回エラー対応

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 docsOpenRouterのClaude Code経路、token、base URL、model naming、provider activity。DeepSeek直結APIがOpenRouter routingと同じ動作をすること。
DeepSeek docsDeepSeekの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を消す

Claude Code、OpenRouter、DeepSeek、proxy経路の環境変数所有者マップ

設定前に、今の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_URLANTHROPIC_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に置きます。

実作業前の確認ループ

Claude Code backend経路を実作業前に確認するループ

確認は後片付けではなく設定の一部です。backend switchが安全なのは、route、credential、model、provider evidenceが同じ方向を示すときだけです。

Step確認するもの通過条件
1. Minimal promptrepoを変更しない小さなprompt。authやtool errorなしで応答する。
2. /statusClaude Codeが見ているaccount、route、model。選んだownerと一致する。
3. Environmentbase URL、token owner、model variable。目的経路の変数だけが残る。
4. Provider activityOpenRouterまたはDeepSeekのactivity/log。同じrequestが正しいprovider ownerに出る。
5. Read-only repo actionconfig説明、scripts確認、harmless command。挙動が正常でファイルを変えない。
6. Rollbackenv varsを消して再起動。以前の既知routeに戻る。

費用、availability、model choiceを理由に切り替えるならprovider activity proofは省略できません。/statusはクライアントの見方、provider activityは実際に誰がrequestを受け取ったかを示します。

初回エラーを分類する

OpenRouterとDeepSeek経路でClaude Codeが失敗したときの初回エラー分類ボード

初回失敗では、設定を増やす前に分類します。多くはownership mismatchです。

症状起きやすい原因最初の修正
401 または 403tokenがbase URL ownerと違う、key期限切れ、別credentialが勝つ。route variablesを消し、1つのtoken ownerだけを設定して再起動。
404、model not found、model mismatchmodel 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を確認します。

#Claude Code#OpenRouter#DeepSeek#開発者ツール#API 設定
Share: