ドキュメント

ドキュメント

CC Switch

CC Switchは、デスクトップアプリからClaude CodeとCodexを複数のプロバイダー間で切り替えます。KunavoはCustom Configurationとして追加します。サービスルート、Bearer認証、Anthropic Messagesネイティブの設定を使い、ローカルルーティングは使いません。

項目は3つ、ドロップダウンは2つです。エンドポイントにhttps://api.kunavo.com、お使いのsk-kn-…キーを入力し、多くのガイドで省略されている設定として、API FormatはAnthropic Messages (Native)のまま、Auth FieldはANTHROPIC_AUTH_TOKENのままにします。KunavoはMessages APIをネイティブに扱うため、Claude Code側ではローカルルーティングは不要です。

CC Switch → Claude Codeタブ → Add provider
Provider Name   Kunavo
API Key         sk-kn-...
API Endpoint    https://api.kunavo.com      <- service root, no /v1, no trailing slash

Advanced Options
  API Format    Anthropic Messages (Native) <- the default; do NOT switch
  Auth Field    ANTHROPIC_AUTH_TOKEN (Default)
エンドポイントにはサービスルートを指定します。/v1は付けず、末尾にスラッシュも付けません。Anthropic形式のクライアントは自ら/v1/messagesを追加します。そのため、この項目はOpenAIの例と異なり、OpenAIでは/v1をベースURLに含めます。詳しくはANTHROPIC_BASE_URLのページをご覧ください。

手順(Claude Codeタブ)

  1. /app/keys でキーを作成してコピーします。キーは一度だけ表示されます。
  2. CC Switchを開き、最上部のClaude Codeタブを選んでプラスボタンをクリックします。プリセットではなく、デフォルトのCustom Configurationを選んだままにします。
  3. Provider Name、API Keyを入力し、API Endpoint = https://api.kunavo.comに設定します。
  4. Advanced Optionsを展開して、API FormatがAnthropic Messages (Native)、Auth FieldがANTHROPIC_AUTH_TOKEN (Default)になっていることを確認します。どちらもデフォルト値です。変更するのではなく、確認することが目的です。
  5. 保存してからActivateします。カードに表示されないのが正しい状態です。Needs Routingマーカーが表示されるのは、プロトコルの変換が必要なプロバイダーだけです。

「Needs Routing」マーカーが表示されない理由

CC Switchのローカルルートは、プロトコル間の橋渡しをします。Claude CodeはAnthropic Messagesリクエストを/v1/messagesに送信します。OpenAI Chat CompletionsまたはResponses APIしか公開していないゲートウェイは、このリクエストに応答できないため、ルートが送信時にリクエストを変換し、応答時に元へ変換します。この変換では、ストリーミングイベント、ツール呼び出し、thinking設定の形式が組み替えられます。機能はしますが、エディターとモデルの間にもう1つの処理が加わります。

KunavoはPOST /v1/messagesを直接提供するため、Claude Code側では変換が不要です。プロバイダーはAnthropic Messages (Native)のままになり、ルートは経由しません。また、同じキーでPOST /v1/chat/completionsとPOST /v1/responsesも提供しているため、以下のCodex側の構成が可能になります。

CC Switchのタブ形式を次のように設定ローカルルーティング
Claude CodeAnthropic Messages (Native)不要
CodexAnthropic Messages (routing required)必須 — ルートが/responsesを/v1/messagesに書き換えます

Codex内でClaudeモデルを実行する

他のプロバイダーガイドでは扱われていない構成です。CodexはOpenAI Responses APIを使用するため、/v1/messagesエンドポイントに直接向けると404が返ります。CC SwitchではCodexをローカルルート経由にして、プロトコルを変換します。CodexタブにはAnthropicのプリセットがないため、ここもCustom Configurationです:

CC Switch → Codexタブ → Add provider
Provider Name      Kunavo
API Key            sk-kn-...
API Request URL    https://api.kunavo.com
Default Model      claude-sonnet-5

Advanced Options
  Upstream Format  Anthropic Messages (routing required)
CC Switchの公式ガイドには、繰り返し注意しておくべき警告があります。一部のプロバイダーはClaude APIの利用をClaude Codeクライアントに限定しているため、そのようなキーをCodex経由で使うとエラーになる場合があります。Kunavoではその制限はありません。同じsk-kn-…キーでMessages APIとResponses APIの両方を利用でき、いずれにもクライアントの許可リストはありません。翻訳を介さずに利用したい場合は、Codex CLIからKunavoネイティブの/v1/responsesエンドポイントに直接接続することもできます。この方法はCodex CLIのページで説明しています。

モデルのマッピング

CC SwitchはClaude Codeの3つのティアを実際のモデルIDに割り当てます。3つすべてとDefault fallback modelを設定してください。そうしないと、一致しないリクエストが元のClaude名のまま送信され、上流でエラーになります。料金はカタログからリアルタイムで取得した、100万トークンあたりの米ドル建て料金(入力/出力)です。

階層モデル IDKunavo 入力 / 出力理由
Haikuclaude-haiku-4-5$0.70 / $3.50Claude Codeがバックグラウンドのサブタスクをここに振り分けます。最も安価なティアが適しています
Sonnetclaude-sonnet-5$1.40 / $7.00編集作業の標準モデル
Opusclaude-opus-5-5$2.80 / $14.00アーキテクチャレベルの変更
そのティアが実際に100万トークンのコンテキストウィンドウに対応している場合を除き、1Mのチェックボックスはオフにしてください。上流が備えていないコンテキスト長を宣言しても、対応範囲が広がるわけではありません。長い会話の途中で失敗するだけです。

アプリのデバッグ前に確認する

リクエストを1組(2件)送れば、失敗の原因がキー、エンドポイント、CC Switchのどれかを特定できます。両方が200を返すなら、残っている問題はフォームのフィールドにあります。ほぼ必ずAuth Fieldか、エンドポイントに含めるべきでない/v1です。

# Settles whether a failure is the key, the endpoint, or CC Switch.
# 200 + a JSON list of model ids means the same key works in the app.
curl -sS https://api.kunavo.com/v1/models \
  -H "Authorization: Bearer sk-kn-..."

# The Anthropic face, which is the one the Claude Code tab actually calls.
curl -sS https://api.kunavo.com/v1/messages \
  -H "Authorization: Bearer sk-kn-..." \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-haiku-4-5","max_tokens":16,
       "messages":[{"role":"user","content":"ping"}]}'

参考情報

CC Switchはgithub.com/farion1231/cc-switchでオープンソースとして公開されています。上記のフィールド名と動作は、同アプリのガイドであるClaude CodeのルーティングガイドとCodexのルーティングガイドに基づいています。どちらも3.17.0以降が対象です。それ以前のバージョンではフォームが異なります。ここに記載したフィールドが見つからない場合は、アプリの「About」画面を確認してください。Kunavo側の仕様は、Messages API、チャット補完、インテグレーションハブで説明しています。

よくある質問

CC Switchでカスタムプロバイダーを追加するには?

Claude Codeタブでプラスボタンをクリックし、デフォルトのCustom Configurationを選んだまま、Provider Name、API Key、API Endpointを入力します。API Endpointは、末尾にスラッシュを付けないゲートウェイのサービスルートです。Kunavoの場合はhttps://api.kunavo.comで、/v1は付けません。次にAdvanced Optionsを開き、API FormatとAuth Fieldの2項目を確認します。プロバイダーが機能するかどうかはこの2項目で決まり、多くの設定ガイドでは省略されています。

KunavoでCC Switchのローカルルーティングを有効にする必要がありますか?

いいえ。ローカルルーティングは、上流がClaude Codeのプロトコルに対応していない場合に、プロトコルを変換するための機能です。Claude Codeの/v1/messagesリクエストをOpenAI ResponsesまたはChat Completionsに変換し、上流がそれらの形式のみを扱う場合に使います。KunavoはAnthropic Messages APIをhttps://api.kunavo.com/v1/messagesでネイティブに提供するため、API FormatはデフォルトのAnthropic Messages (Native)のままにします。プロバイダーカードにはNeeds Routingマーカーが表示されず、リクエストは上流に直接送信されます。Chat Completionsしか提供しないゲートウェイでは、すべてのリクエストにローカルルーティングが必要です。

OpenAIの例とは異なり、API Endpointに/v1を付けないのはなぜですか?

2つの方式が意図的に異なるためです。Anthropic形式のクライアントは自ら/v1/messagesを追加するため、オリジンだけを指定します。つまりhttps://api.kunavo.comです。OpenAI SDKでは、base_urlに/v1まで含める必要があるため、https://api.kunavo.com/v1を指定します。CC SwitchのClaude CodeタブはAnthropic側なので、/v1を付けません。これを逆にするのは、あらゆるクライアントで最もよくある設定ミスです。ANTHROPIC_BASE_URLのページで、両方の形式を説明しています。

Auth FieldをANTHROPIC_API_KEYに設定すべきですか?

いいえ。デフォルトのANTHROPIC_AUTH_TOKENのままにしてください。この設定では、CC SwitchはAuthorization: Bearer <key>を送信します。ANTHROPIC_API_KEYを選ぶと、代わりにx-api-keyヘッダーが送信されます。Kunavoはどちらも問題なく読み取れるため、問題はヘッダーではなく承認です。Claude Codeは対話セッションでANTHROPIC_API_KEYを使う前に、一度だけ承認を求めます。そこでキーの使用が拒否されると、その後は無視されます。キー自体が正しくても認証エラーのように見えます。

CC Switchを通じてCodex内でClaudeモデルを実行できますか?

はい。こちらの使い方は、多くのプロバイダーガイドで説明が省かれています。CodexタブでCustom Configurationを追加し、API Request URLにhttps://api.kunavo.com、Default Modelにclaude-sonnet-5などを指定します。続いてAdvanced OptionsでUpstream FormatをAnthropic Messages (routing required)に設定します。この方向ではCodexがResponses APIを使用し、ルートが/responsesを/v1/messagesに書き換えるため、ローカルルーティングを有効にする必要があります。CC Switch自身のガイドでは、一部のプロバイダーがClaude APIをClaude Codeクライアントに限定しており、そのキーはCodex経由では使えないと警告しています。Kunavoはその制限がなく、同じsk-kn-キーで両方のクライアントから利用できます。

CC Switchのモデルマッピングには、どのモデルIDを入力すればよいですか?

KunavoのカタログIDを使用してください。適切なデフォルトの分け方は、Haikuティアにclaude-haiku-4-5(100万トークンあたり$0.70/$3.50)です。Claude Codeはバックグラウンドのサブタスクをそこに送信するためです。Sonnetティアにはclaude-sonnet-5($1.40/$7.00)、Opusティアにはclaude-opus-5-5($2.80/$14.00)を設定します。Default fallback modelも必ず入力してください。空欄のままにすると、CC Switchは一致しないリクエストを元のClaude名のまま転送し、上流でエラーになります。最新の一覧はGET /v1/modelsで取得できます。

CC SwitchはAPIキーをどこに保存しますか?

クライアントの設定ではなく、CC Switch独自のストアに保存されます。CC Switchはプロバイダーを~/.cc-switch/cc-switch.dbに保存します。ローカルルーティングがクライアントに代わってリクエストを送る場合、~/.claude/settings.jsonに書き込まれるのはローカルルートのアドレスだけで、認証情報にはプレースホルダーが使われます。実際のキーは転送時にルートが挿入します。これはKunavoではなくCC Switchの仕様です。貼り付けたキーと、コミットしようとしているファイルにあるキーが別物だと分かるため、知っておくと役立ちます。