VS Code Copilot Chat の utility model をローカルの LLM に切り替えた話をします。設定ファイルに数行足すだけです。
GitHub Copilot は freeでもcommitメッセージが生成できるので、freeのまま使用してましたが、いつの間にか制限が来てました。commit メッセージを自力で書く時の面倒さが地味に侮れなかったので(AIに染まり始めてる)、ローカルLLMに向けるように設定しました。
VS Code の custom endpoint 設定
VS Code には Language Model の custom endpoint を登録する仕組みがあります。Ctrl+Shift+P でコマンドパレットを開いて「Manage Language Models」を選び、「Add models」→「Custom Endpoint」と進むと設定画面が開きます。内容は chatLanguageModels.json に保存されます。
[ { "name": "homelab", "vendor": "customendpoint", "apiKey": "${input:chat.lm.secret.-44f93762}", "apiType": "chat-completions", "models": [ { "id": "Gemma-4-E4B-it-GGUF", "name": "Gemma-4-E4B-it-GGUF", "url": "https://inference.homelab.otama-playground.com/v1/chat/completions", "toolCalling": true, "vision": true, "maxInputTokens": 128000, "maxOutputTokens": 16000 }, { "id": "Gemma-4-E4B-it-GGUF-nothink", "name": "Gemma-4-E4B-it-GGUF-nothink", "url": "https://inference.homelab.otama-playground.com/v1/chat/completions", "toolCalling": true, "vision": true, "maxInputTokens": 128000, "maxOutputTokens": 16000 }, { "id": "Qwen3.6-35B-A3B-GGUF", "name": "Qwen3.6-35B-A3B-GGUF", "url": "https://inference.homelab.otama-playground.com/v1/chat/completions", "toolCalling": true, "vision": true, "maxInputTokens": 128000, "maxOutputTokens": 16000 }, { "id": "Qwen3.6-35B-A3B-GGUF-nothink", "name": "Qwen3.6-35B-A3B-GGUF-nothink", "url": "https://inference.homelab.otama-playground.com/v1/chat/completions", "toolCalling": true, "vision": true, "maxInputTokens": 128000, "maxOutputTokens": 16000 } ] }]apiKey は VS Code の input 変数で参照していて、初回追加時に入力を求められます。LiteLLM の api key をここに入れておきます。設定後は Copilot Chat のモデル選択に homelab プロバイダーのモデルが並ぶようになります。
utility model の向き先を変える
モデルの用途別割り当ては settings.json に追記します。
"chat.utilitySmallModel": "customendpoint/Gemma-4-E4B-it-GGUF","chat.utilityModel": "customendpoint/Gemma-4-E4B-it-GGUF","chat.planAgent.defaultModel": "Qwen3.6-35B-A3B-GGUF (customendpoint)","inlineChat.defaultModel": "Qwen3.6-35B-A3B-GGUF (customendpoint)","chat.exploreAgent.defaultModel": "Gemma-4-E4B-it-GGUF (customendpoint)"chat.utilitySmallModel と chat.utilityModel が commit メッセージ生成などの軽い処理を担うモデルです。ここを Gemma-4-E4B に向けることで、Copilot の premium クォータを消費しなくなります。
plan agent や inline chat は少し重めのタスクを扱うので Qwen3.6-35Bを当てています。
実際のところ
commit メッセージの品質は premium モデルと比べると若干落ちます。ただ「差分を読んで一行にまとめる」程度の作業は Gemma-4-E4B で十分こなせます。
気になる点が一つあって、初回リクエスト時はモデルを VRAM に載せる時間があるため、数秒待たされることがあります。ウォームアップ後は 1〜2 秒程度になりますが、最初のコミットだけ妙に遅い、という感覚はあります。
LiteLLM に ChatGPT も統合してあるので、utility model を gpt-5.2 や gpt-5.3 に切り替えるという選択肢もあります。ChatGPT サブスクリプション枠なので課金は増えませんし、ウォームアップ問題もありません。ただ Gemma-4-E4B で十分な品質が出ているうちはローカルで完結させたいので、今のところはそのままにしています。
まとめ
chatLanguageModels.json にローカル LLM を登録して、chat.utilityModel を向けるだけで commit メッセージ生成が Copilot のクォータを消費しなくなりました。
Copilot Chatに課金したくないけど、commitメッセージだけ自動生成させたいみたいな方の参考になれば幸いです。









