こんにちは、「Copilot Chat のエージェントから Web 検索させたいけど、別途 API キーを管理したくない…なら GitHub Copilot CLI を呼び出せばよくない?(安定運用のためにラッパーも作った)」と思い立ったアーキテクトのやまぱんです 😎
補足コメントや質問、いいね、拡散、ぜひお願いします 🥺!
間違っていたら 優しく 教えてください!
TL;DR
-
GitHub Copilot CLI は
web_searchをネイティブで使える(追加の検索 API / キーを用意しなくてもよい) - それを Copilot Chat(エージェント)から呼び出す運用にすると、「Web 検索して」だけで CLI を動かせる
- すぐ試すなら インストラクションに CLI コマンドをべた書き、安定運用なら ラッパースクリプト
- ラッパー実装(PowerShell / Python): aktsmm/gh-copilot-cli-web-search-tools
-
quick(速度重視)/research(品質重視)で使い分け、モデル別ベンチマークも公開
この記事でやること
GitHub Copilot CLI の web_search を、Copilot Chat(エージェント)から"スクリプトとして"使う方法を整理します。
VS Code の Copilot Chat 単体では、環境やポリシー次第で Web 検索が使えないことがあります。そこで Copilot CLI 側の web_search を呼び出す、という発想です。
この記事では、次の 2 パターンを扱います。
-
まず試す: インストラクションに CLI コマンドをべた書き(ラッパー不要)
-
安定運用: ラッパースクリプト化(モード・モデル・出力形式を固定しやすい)
以前は Brave Search を中心に使っていましたが、今は GitHub Copilot CLI の web_search を軸にしつつ、Brave も併用する運用に落ち着きました。
前提条件
本記事の公式情報は 2026-03-04 時点で確認しています。
- GitHub Copilot CLI が利用可能(Copilot プラン + 必要なポリシー有効化)
-
copilotコマンドでログイン済み - VS Code の統合ターミナル(PowerShell)から実行
作ったもの(安定運用向け)
gh-copilot-cli-web-search-tools として GitHub に公開しています。
中身はシンプルで、copilot CLI の web_search ツールだけを固定で使うラッパーです。PowerShell 版と Python 版の両方を用意しています。
背景: Copilot Chat(エージェント)から Web 検索をスクリプトで使いたい
やりたいのはこういう運用です。
- VS Code の GitHub Copilot(エージェントモード)が調査フェーズに入ったとき、Web 検索ラッパーを MCP ツールや外部スクリプトとして呼び出す
- 毎回オプションを手打ちせず、決まったコマンドで安定した結果を返す
- 後段処理(URL 一覧のパース等)がしやすいよう、出力形式を固定する
つまり、Brave / Tavily 等の検索 API を別途入れなくても、GitHub Copilot CLI の検索を GitHub Copilot Chat から使える、という話です。
copilot -p "Web 検索ツールを使って VS Code Copilot の公式ドキュメント URL を 3 つ返してください。出力は URL のみ、1 行 1 URL。" `
--allow-all-tools `
--allow-all-urls `
--available-tools web_search `
--silent
実際に実行するとこんな感じです。
ちゃんと URL だけが返ってきます。ポイントはこの 2 つです。
-
--available-tools web_searchで、モデルが使えるツールをweb_searchだけに絞る(--allow-all-toolsだけでも検索はできるが、ファイル読み書き・シェル実行などを封じてスコープを限定するのが目的) - プロンプトで「URL のみ」「1 行 1 URL」を強制して、後段処理しやすくする
ラッパーを使うとこうなる
これを毎回手打ちするのはブレるし面倒なので、ラッパースクリプトにまとめました。実際には自分で叩くだけでなく、VS Code の GitHub Copilot(エージェント)にこのラッパーを使わせる、という運用もしています。
主なパラメータ
| パラメータ | 説明 | デフォルト |
|---|---|---|
-Query / 第1引数 |
検索クエリ(必須) | — |
-Mode / --mode
|
quick(速度重視)or research(品質重視) |
research |
-Model / --model
|
使用モデル | quick=gpt-4.1 / research=gpt-5.1-codex(未指定時) |
-NoSilent / --no-silent
|
ツール呼び出しの詳細も表示する | false |
--timeout(Python のみ) |
タイムアウト秒数 | 240 |
取得 URL 数は -Count のようなパラメータではなく、クエリ文言で指定します。
# 基本実行(PowerShell ラッパー)
./copilot-web-search.ps1 -Query "GitHub Copilot CLI の公式ドキュメント URL を返して"
# URL を多く取りたいときはクエリに件数を書く
./copilot-web-search.ps1 -Query "GitHub Actions の事例 URL を 10 件返して" -Mode research
# モード指定
./copilot-web-search.ps1 -Query "VS Code Copilot の最新情報をざっくり" -Mode quick
./copilot-web-search.ps1 -Query "VS Code Copilot の最新情報を調査して" -Mode research
# 詳細出力(-s 無効)
./copilot-web-search.ps1 -Query "最新情報を要約" -NoSilent
# 基本実行(Python ラッパー)
python .\copilot_web_search.py "GitHub Copilot CLI の公式ドキュメント URL を 1 つ返して"
# モードとタイムアウト指定
python .\copilot_web_search.py "VS Code Copilot の最新情報を調査して" --mode research --timeout 300
Copilot Chat から使ったときの実際の様子
以下は GitHub Copilot Chat 上で「このスクリプトを使って検索して」と依頼したときの様子です。Copilot Chat がラッパースクリプトを呼び出し、URL を取得して回答しています。
取得できた URL(quick モード / モデル: gpt-4.1):
- 概要: https://docs.github.com/ja/copilot/concepts/agents/copilot-cli/about-copilot-cli
- 使い方: https://docs.github.com/ja/copilot/how-tos/copilot-cli/use-copilot-cli
- インストール: https://docs.github.com/ja/copilot/how-tos/set-up/install-copilot-cli
ExitCode: 0(正常終了)。URL 3件がラベル付きで返ってきました。
URL をたくさん取りたいときは?
件数を指定しない場合、取得 URL 数はモデルの自律判断に委ねられます。ベンチマーク(条件A)ではclaude-sonnet-4.6が平均 11.67 件と最多でした。URL を多く集めたいときはモデルを明示指定するのが手軽です。ただし応答時間が長くなる(平均 62 秒)点に注意してください。./copilot-web-search.ps1 -Query "GitHub Actions の事例を調査して" -Mode research -Model "claude-sonnet-4.6"
quick / research モードの使い分け
実際に運用してみて、次の分離が扱いやすかったです。
- quick: 速度重視(軽めの確認、URL 収集)
- research: 品質重視(根拠整理、比較、最終確認)
単発最速だけで決めず、次のバランスで評価するのが安定しました。
$$品質 = 形式遵守 \times 成功率 \times 速度$$
検証結果(公開リポジトリの実データ)
公開済みの検証結果から、代表的な数値を抜粋します。
- 対象リポジトリ:
gh-copilot-cli-web-search-tools - 参照:
benchmarks/VALIDATION_RESULTS.md(最終更新: 2026-03-04) - 検証軸:
seconds/url_count/unique_url_count
条件A(件数指定なし, runs=3平均)の抜粋
| モデル | 平均秒 | 平均 URL 数 |
|---|---|---|
gpt-4.1 |
17.35 | 4.67 |
gpt-5.1-codex-max |
19.32 | 4.00 |
gpt-5.1-codex |
20.75 | 5.33 |
claude-haiku-4.5 |
22.23 | 5.67 |
claude-sonnet-4.5 |
22.99 | 4.33 |
gpt-5.3-codex |
25.12 | 4.33 |
claude-sonnet-4.6 |
62.03 | 11.67 |
件数指定なし条件では claude-sonnet-4.6 は URL 収集数が多い一方、応答時間が長い傾向があります。
条件B(5件指定, runs=1)の抜粋
| モデル | 秒 | URL 数 |
|---|---|---|
gpt-5.2-codex |
15.65 | 5 |
gpt-5.1 |
18.74 | 5 |
gpt-5.1-codex |
19.36 | 5 |
claude-sonnet-4.5 |
24.46 | 5 |
claude-sonnet-4.6 |
26.33 | 5 |
claude-haiku-4.5 |
32.50 | 5 |
件数指定ありでは全モデルが 5 件を達成。速度重視なら GPT 系(最速は gpt-5.2-codex の 15.65 秒)が有利です。なお、このデータでは応答時間(秒)と URL 取得数のみを測定しており、URL の内容・信頼性は評価していません。
件数指定の有無でモデルの傾向が変わるので、詳細はリポジトリの検証データを参照してください。なお、これはあくまで一例であり、クエリ内容や実行環境によって結果は異なります。
Brave と Copilot CLI の使い分け
体感ベースですが、私の運用感は次のとおりです。
- 速度感: Brave 系のほうが速く感じるケースはある
- コスト: Copilot CLI は GitHub Copilot の料金に含まれているので、別途 API の課金が発生しない。Brave API は無料枠超えると有料
- 継続運用: 調査をヘビーに回しても、別途 API の課金を気にする必要がない(※プランによるレート制限はあります)
-
再現性:
Copilot CLIはコマンドを固定できるので、同じ条件で再実行しやすい
なので私は、
- まず
Copilot CLIで定常運用(URL 収集・下調べ) - 必要時に Brave Search 等を補助で使う(用途によっては Brave のほうが向いている場面もある)
という順にしています。
Copilot CLI と Copilot Chat の検索の違い
どちらも便利ですが、検索の使い勝手は少し違います。
| 観点 | Copilot CLI | Copilot Chat(VS Code) |
|---|---|---|
| Web 検索 |
web_search ツール内蔵(--allow-all-tools で自動選択。--available-tools web_search でスコープを絞ることも可) |
プラン/ポリシー次第(使えない場合は CLI/ラッパー呼び出しで回避) |
| URL 取得 |
web_fetch ツール(ページ内容を取得) |
#fetch(VS Code 拡張機能の機能。URL 指定でページ取得) |
VS Code で Web 検索したい場合は、Brave Search や Tavily 等の VS Code 拡張機能や MCP サーバーを別途セットアップする必要があります。ただしこれらは外部 API キーの取得・管理が必要で、無料枠を超えると課金も発生します。
この手間とコストを避けるために、GitHub Copilot の料金内で確実に動く Copilot CLI のラッパーを作った、というのがこの記事の動機です。すでに Copilot を契約している人なら、追加費用ゼロで Web 検索が使えるようになります(GitHub Copilot の費用は必要です)。
以下は GitHub Copilot CLI に検索機能の違いについて聞いたときの回答例です。
参考: 別環境でのベンチ結果
以下は別環境で copilot CLI のモデル別ベンチマークを実行した際の結果です。
モデルによって応答時間・URL 取得数にばらつきがあることがわかります。詳細は前述の「検証結果」セクションを参照してください。
期待結果
ここまでの運用を入れると、次の状態を目指せます。
- URL 収集タスクが毎回ほぼ同じ品質で返ってくる
- 「探索(quick)」と「深掘り(research)」を切り替えやすい
- 記事執筆時に、一次情報(公式 URL)へ戻る導線が固定できる
注意点
--allow-all-tools / --allow-all / /yolo は非常に強力です。
- 信頼できるディレクトリでのみ実行する
- 実行コマンドや変更内容は必ずレビューする
- 自動承認を使う場合は、限定環境(検証用 VM / コンテナー等)も検討する
GitHub Docs でも、ツール自動承認にはセキュリティ上の注意が必要と明記されています。
Copilot インストラクションと組み合わせると一番楽
ラッパーを用意したら、.github/copilot-instructions.md に1行書くだけで「Web 検索して」と言うだけで CLI が動くようになります。
## Web 検索
Web 検索が必要なときは `./copilot-web-search.ps1 -Query "{クエリ}"` を実行すること。
| 方法 | メリット | デメリット |
|---|---|---|
| インストラクションに素の CLI コマンドを書く | ラッパー不要・すぐ試せる | 毎回オプションがブレる・インストラクションが長くなる |
| ラッパー + インストラクション1行 | 設定はラッパー側で管理・インストラクションがシンプル | ラッパーの初回セットアップが必要 |
ラッパーなしでインストラクションにべた書きするなら、こんな感じです:
## Web 検索
Web 検索が必要なときは以下のコマンドをターミナルで実行すること。
`copilot -p "{クエリ}" --allow-all-tools --allow-all-urls --available-tools web_search --silent`
- 出力は URL のみ、1行1件で返すよう指示すること
- 件数を指定したい場合はクエリに「10件返して」のように含めること
まず試してみたい人はこちらのほうが手軽です。慣れてきたらラッパーに切り替えると管理が楽になります。
たとえば「今日の天気は」と聞くだけで、こんな感じに返ってきます。
「ラッパー + インストラクション1行」が長期運用では一番シンプルです。
まとめ
Brave / Tavily 等の検索 API を別途入れなくても、GitHub Copilot CLI の web_search をラッパー化するだけで、Copilot Chat からの Web 検索が追加費用ゼロで回せます(GitHub Copilot の費用は必要です)。
今回作ったものをまとめると:
- リポジトリ: aktsmm/gh-copilot-cli-web-search-tools
- ラッパー: PowerShell 版 / Python 版の 2 種類
-
モード分離:
quick(速度重視)/research(品質重視) - ベンチマーク: モデル別の比較データも公開済み
以前 Brave 系を使っていた流れからでも、ここに寄せると運用がシンプルになりました。よかったら使ってみてください~!🚀
参考
- Using GitHub Copilot CLI(GitHub Docs)
- About GitHub Copilot CLI(GitHub Docs)
- GitHub Copilot CLI command reference(GitHub Docs)
- Best practices for GitHub Copilot CLI(GitHub Docs)
- Asking GitHub Copilot questions in your IDE(
@github #webの記載)
- Managing Copilot policies(Copilot access to Bing の有効化)
- Web search in Copilot Chat now available(GitHub Changelog)
- GitHub Copilot CLI Features(GitHub)
- gh-copilot-cli-web-search-tools(実装リポジトリ)
- Validation Results(ベンチ検証まとめ)
- 生データ CSV(条件A: runs=3 平均)
- 生データ CSV(条件B: 5件指定)
- gh-copilot-cli-web-search-tools v1.0.0(初回リリース)




