running-claude-code-via-litellm-copilot について
running-claude-code-via-litellm-copilotは、Claude CodeのリクエストをローカルのLiteLLMプロキシ経由でGitHub Copilotに転送するための設定・トラブルシューティングスキルです。一時設定と永続設定を扱い、公式ではない回避策として互換性やポリシー上の保証がないことを示します。
主な機能
- 01LiteLLMのGitHub Copilotプロバイダー設定
- 02Claude Code環境変数の設定
- 03一時設定と永続設定の選択
- 04プロキシのリクエスト経路確認
- 05モデルと認証エラーの調査
活用シーン
- 01Claude CodeのリクエストをCopilot経由で転送
- 02Anthropic APIの直接利用を減らす
- 03プロキシ接続やモデルのエラーを診断
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ xixu-me/ skills --skill running-claude-code-via-litellm-copilotインストール後、Claude Code で/running-claude-code-via-litellm-copilotを入力して読み込まれたか確認します。
同梱ファイルreferences/doc-verified-notes.md
詳細
概要
Claude Code の Anthropic 向けクライアント動作を維持しつつ、実際のバックエンド通信をローカルの LiteLLM プロキシに送り、そこから GitHub Copilot に転送する特定の回避策には、このスキルを使用してください。
これは高度な回避策であり、GitHub が公式に保証するワークフローではないものとして扱ってください。技術的な成功を支援しますが、GitHub によるサポート、ポリシー上の承認、長期的な互換性を約束してはいけません。
このスキルはガイダンスを優先しつつ、実行も考慮しています。
- ユーザーが説明だけを求めている場合は、正しく動作する最小限のファイル、コマンド、確認事項を提示します。
- ユーザーが現在のマシンで実際のセットアップ作業を求めている場合は、まず状況を確認し、使用中のシェルと OS に合わせてコマンドを調整します。
~/.claude/settings.jsonやシェルのプロファイルファイルなど、永続的な編集を行う前に一度停止して確認します。
記事に基づく内容と、現在の LiteLLM ドキュメントに照らして補足した内容を説明する必要がある場合は、回答前に references/doc-verified-notes.md を読んでください。
使用する場合
次のいずれかをユーザーが希望している場合、このスキルを使用してください。
- LiteLLM 経由で GitHub Copilot を使い、Claude Code を実行する
- Claude Code のワークフローを維持しながら、Anthropic API への直接支出を抑える
- LiteLLM の GitHub Copilot プロバイダー用にローカルの
config.yamlを作成する ANTHROPIC_BASE_URL、ANTHROPIC_MODEL、またはCLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICを設定する- LiteLLM の起動中に行われる GitHub のデバイス認証について理解する
- モデルの不一致、404 に類似するエラー、LiteLLM にリクエストが届かない問題、GitHub の 401/403 エラーに対処する
次の用途には、このスキルを使用しないでください。
- この回避策が GitHub の利用規約で許可されているかどうかを判断する
- Claude Code と Copilot の組み合わせに関係しない、一般的な LiteLLM アーキテクチャの説明
- Copilot または LiteLLM のコンポーネントを含まない、Anthropic API への直接接続のセットアップ
基本ルール
- 最初に、コンプライアンスに関する注意を簡潔に伝えます。 これはローカルプロキシ経由の回避策であり、GitHub が推奨するワークフローではないことを説明します。また、最新の Copilot の利用規約と制限をユーザー自身が確認する必要があることも伝えます。
- まず、実行に必要な最小構成を優先します。
ユーザーが永続的なセットアップを明示的に希望しない限り、一時的な環境変数とローカルの
config.yamlから始めます。 ANTHROPIC_MODELと LiteLLM のmodel_nameを同一にします。 気の利いた説明よりも、文字列を完全に一致させることが重要です。ANTHROPIC_AUTH_TOKENはローカルのプレースホルダーとして扱います。 Claude Code はローカルで空でない値を必要としますが、これは GitHub Copilot の認証情報ではありません。再利用可能なシークレットとして提示してはいけません。~/.claude/settings.jsonを丸ごと上書きしてはいけません。 必要なenvキーのみをマージし、無関係な設定は保持します。
ワークフロー
1. 事前確認
ユーザーが実際のセットアップ作業を求めている場合は、まず次の点を確認します。
claude --helpが成功するuv --versionまたはpip --versionが成功する- ユーザーが GitHub Copilot にアクセスできる
- LiteLLM で使用するポート(通常は
4000)が利用可能である
ユーザーが手順だけを求めている場合は、コマンドを実行する代わりに前提条件を伝えます。
2. 一時セットアップと永続セットアップの選択
次のルールに従います。
- 一時セットアップ:初回セットアップ、デバッグ、リスクを抑えた試行では、こちらをデフォルトとして優先します
- 永続セットアップ:Claude Code の起動時に毎回プロキシ経由にすることをユーザーが明示的に希望する場合に限ります
永続セットアップの場合は、対象ファイルを確認してから、~/.claude/settings.json にキーをマージします。ファイルの内容を置き換えてはいけません。
3. LiteLLM の config.yaml を作成する
記事の手順を出発点にしつつ、プロバイダー名を LiteLLM のドキュメントに合わせます。
model_list:
- model_name: claude-opus-4.5
litellm_params:
model: github_copilot/claude-opus-4.5
drop_params: true
各フィールドについて説明します。
model_name:Claude Code がリクエストする論理名model:LiteLLM のプロバイダールート。github_copilot/<model>を使用しますdrop_params: true:Copilot に転送する前に、未対応の Anthropic 固有フィールドを削除します
ユーザーが別の Copilot 対応モデルを希望する場合も、同じパターンを維持します。
model_list:
- model_name: <logical-name>
litellm_params:
model: github_copilot/<copilot-model>
drop_params: true
ユーザーがヘッダーの上書きが必要と思われる拒否エラーにすでに遭遇していない限り、デフォルトの手順で追加のヘッダーをハードコードしてはいけません。
4. LiteLLM をインストールして起動する
推奨するインストール方法:
uv tool install "litellm[proxy]"
代替方法:
pip install "litellm[proxy]"
config.yaml があるディレクトリからプロキシを起動します。
litellm --config config.yaml --port 4000
検証中はログが最も手早く確実な情報源となるため、ターミナルを開いたままにするようユーザーに伝えてください。
5. GitHub デバイス認証について説明する
GitHub Copilot プロバイダーへの最初のリクエストが正常に行われる際、LiteLLM がデバイス認証フローを開始することがあります。
- LiteLLM が確認 URL とデバイスコードを表示する
- ユーザーが URL を開いてリクエストを承認する
- LiteLLM が認証情報をローカルに保存し、以降の利用に備える
トークンの保存先は、次の環境変数で任意に変更できます。
GITHUB_COPILOT_TOKEN_DIRGITHUB_COPILOT_ACCESS_TOKEN_FILE
ユーザーがカスタムのトークン保存先を必要としている場合、共有環境を使用している場合、または期限切れや保存場所が不明な認証情報についてトラブルシューティングが必要な場合に限り、これらに言及してください。
6. Claude Code を設定する
一時的な PowerShell セッションの場合:
$env:ANTHROPIC_AUTH_TOKEN = "sk-any-string"
$env:ANTHROPIC_BASE_URL = "http://localhost:4000"
$env:ANTHROPIC_MODEL = "claude-opus-4.5"
$env:CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC = "1"
claude
一時的な Bash または Zsh セッションの場合:
export ANTHROPIC_AUTH_TOKEN="sk-any-string"
export ANTHROPIC_BASE_URL="http://localhost:4000"
export ANTHROPIC_MODEL="claude-opus-4.5"
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
claude
設定を永続化する場合は、以下のキーを ~/.claude/settings.json に追加して統合します。
{
"env": {
"ANTHROPIC_AUTH_TOKEN": "sk-any-string",
"ANTHROPIC_BASE_URL": "http://localhost:4000",
"ANTHROPIC_MODEL": "claude-opus-4.5",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
}
}
既存設定を保持して安全に統合する方法:
- ファイルが存在しない場合は作成する
- ファイルが存在する場合は、関係のないトップレベルキーをすべて保持する
- このワークフローに関係のない既存の
envエントリを保持する - 上記の4つのキーのみを更新する
- JSON の形式が不正な場合は、ファイルを上書きせず、解析エラーを報告して停止する
7. リクエストの経路を検証する
可能であれば、2つのターミナルを使用します。
- ターミナル A で LiteLLM を実行する
- ターミナル B で
claudeを実行する
短いスクリプトやコードレビューの依頼など、小さなプロンプトを1つ送信してから、以下を確認します。
- Claude Code が正常に起動する
- LiteLLM のログに受信リクエストが表示される
- LiteLLM のログに GitHub Copilot のモデルルートが表示される(通常は
github_copilot/<model>)
正常な経路は次のとおりです。
Claude Code -> LiteLLM -> GitHub Copilot -> LiteLLM -> Claude Code
8. トラブルシューティング
Claude Code がモデルが見つからないというエラー、404 に類似したエラーを報告する場合、または LiteLLM がモデルの不存在を示す場合:
ANTHROPIC_MODELとmodel_nameが完全に一致しているか比較する- 大文字と小文字、句読点、ハイフンを確認する
LiteLLM にリクエストがまったく届かない場合:
ANTHROPIC_BASE_URLが http://localhost:4000 を指していることを確認する- LiteLLM がそのポートで引き続き実行されていることを確認する
claudeを起動したのと同じシェルセッションで環境変数を設定したことを確認する- URL が正しいのに応答がない場合は、ローカルのファイアウォールまたはポートの競合を確認する
LiteLLM が GitHub Copilot に到達するものの、401 または 403 の応答が返る場合:
- LiteLLM を再起動して再試行し、デバイス認証フローをもう一度実行する
- GitHub アカウントで引き続き Copilot を利用できることを確認する
- カスタムのトークン保存先に関する環境変数を設定している場合は、意図したファイルを指していることを確認する
高度な代替策:ヘッダーの上書き
この記事では Copilot 形式のヘッダーを明示的に使用しています。現在の LiteLLM ドキュメントでは、GitHub Copilot がプロバイダーとして公開されており、ヘッダーの上書き機能についても説明されています。
明示的な extra_headers を使用するのは、次の場合に限ります。
- 基本的なプロバイダーフローで Copilot には到達するものの、クライアント形式の上書きが必要な場合
- エディター形式のヘッダーを使うと特定の環境で動作が改善するという根拠が、すでにユーザーにある場合
代替策の例:
model_list:
- model_name: claude-opus-4.5
litellm_params:
model: github_copilot/claude-opus-4.5
drop_params: true
extra_headers:
editor-version: "vscode/1.85.1"
editor-plugin-version: "copilot/1.155.0"
Copilot-Integration-Id: "vscode-chat"
user-agent: "GithubCopilot/1.155.0"
これは高度な代替策として提示し、標準的な方法として一律に勧めないでください。
回答に含める項目
このスキルを使って実際のユーザーリクエストに回答する際は、以下を含めてください。
- コンプライアンスに関する簡潔な注意書き
- 正確な
config.yaml、または適用する変更箇所 - シェルに適したコマンド
- 設定が一時的か永続的か
- 検証手順
- 問題が発生した場合に、関連性の最も高いトラブルシューティング項目
安全に関する注意事項
- GitHub がこの回避策を公式にサポートしていると述べないでください。
- ダミーの
ANTHROPIC_AUTH_TOKENが実際の Copilot 認証情報であるかのように示さないでください。 ~/.claude/settings.jsonを丸ごと置き換えることを勧めないでください。- 古いモデル名が現在も必ず利用できるかのように示さないでください。ユーザーが特定のモデルを求めている場合は、
github_copilot/<model>の形式を維持し、Copilot で利用可能なモデルは変更される可能性があると伝えてください。