ねぇ!その前にGithub Copilot ChatのToolsを理解しようよ!
はじめに
最近はAIを使った自立開発の流れが加速していて、Zennでも「仕様駆動開発」とか「ハーネスエンジニアリング」とか、皆さんそれぞれAIを使った開発スタイルを布教する記事が増えてきましたね。
でもみんながみんなそんな高度なAI活用術をすぐに実践できるわけじゃないし、そもそもGithub Copilot Chatの基本的な機能を使いこなせていない人も多いんじゃないかなと思います。
そこで今回は、Github Copilot Chatを最大限に活用するためのToolsの基礎知識を紹介します。
カスタムエージェントやエージェントスキルで高度なAI活用術を実践する前に、まずはToolsの基礎をしっかり押さえておきましょう。
Toolsを理解しよう
Skillsは嫌というほど記事があるので、皆さん多少理解していますよね?
でもToolsに関しては、あまり知らない人も多いんじゃないでしょうか。
早速ですが、以下は 2026/4/14 現在の組み込みToolsの一部です。
| ツール名 | 説明 |
|---|---|
create_file |
ワークスペースに新しいファイルを作成する |
read_file |
ファイルの内容を指定行範囲で読み取る |
replace_string_in_file |
既存ファイルの特定文字列を1箇所置換して編集する |
multi_replace_string_in_file |
複数の置換操作を1回のツール呼び出しで一括適用する |
list_dir |
ディレクトリの内容(ファイル・フォルダ)を一覧表示する |
file_search |
Globパターンでワークスペース内のファイルパスを検索する |
grep_search |
ワークスペース内のファイルをテキスト・正規表現で高速検索する |
semantic_search |
ワークスペースのコードやドキュメントを自然言語で意味検索する |
get_errors |
ファイルのコンパイルエラー・Lintエラーを取得する |
view_image |
PNG・JPEGなどの画像ファイルの内容を表示する |
run_in_terminal |
永続的なbashターミナルセッションでシェルコマンドを実行する |
get_terminal_output |
非同期実行中のターミナルセッションの出力を取得する |
send_to_terminal |
実行中のターミナルセッションにコマンド文字列を送信する |
kill_terminal |
実行中のターミナルセッションを強制終了する |
fetch_webpage |
指定URLのWebページ本文を取得する |
vscode_askQuestions |
ユーザーに選択肢付きの確認・質問ダイアログを表示する |
vscode_listCodeUsages |
コードシンボルの定義・参照・実装箇所をすべて検索する |
vscode_renameSymbol |
言語サーバーを使ってシンボル名をワークスペース全体でリネームする |
open_browser_page |
ホストの既定ブラウザで指定ページを開く |
get_changed_files |
Gitの差分から変更されたファイルの一覧を取得する |
github_repo |
GitHubリポジトリ関連の情報取得・操作を行う |
create_directory |
新しいディレクトリを作成する |
terminal_last_command |
ターミナルで最後に実行したコマンドと出力を取得する(#terminalLastCommand) |
terminal_selection |
ターミナル上で現在選択中のテキストを取得する(#terminalSelection) |
manage_todo_list |
Todoリストを作成・更新してタスク進捗を管理する |
memory |
会話・セッション・リポジトリスコープの永続メモリを管理する |
runSubagent |
複雑なタスクを処理するサブエージェントを起動・委譲する |
実際にエージェントがAIが行う作業の大半は、実際にはToolsを呼び出して実行しています。
上の表にもある通り、ファイルの読み書きすらもToolsを通して行われているんですよね。
なので、Github Copilot Chatを使いこなすためには、まずはこのToolsの仕組みと種類を理解することが重要です。
Toolsを切り替えよう
Github Copilot Chatでは、モデル選択の横にあるボタンから、AIが使用するToolsを切り替えることができます。


不要なツールはオフにしておこう
作業に応じて不要なToolsはオフにしておくことが大事です。
以下のようなメリットがあります。
-
コンテキスト圧迫の防止
AIは最初のシステムプロンプトで呼び出し可能なToolsの名前と説明をすべて読み込むため、Toolsの数が多いほどコンテキストを圧迫してしまいます。
呼び出すツールの判断が難しくなってしまったり、純粋にコンテキストの圧迫によりAIの性能が低下してしまう可能性もあるため、必要なToolsだけをオンにしておくことが推奨されます。 -
セキュリティリスクの軽減
不必要なToolsをオフにしておくことで、AIが誤って重要なファイルを編集したり、ターミナルで危険なコマンドを実行するリスクを減らすことができます。
例えば状況によっては、ファイルの操作をせず、ファイルの内容を参照しての推論のみを行ってほしい場合があります。そのような場合、replace_string_in_fileやrun_in_terminalなどのToolsはオフにしておくことで、AIが誤ってファイルを編集したり、ターミナルでコマンドを実行するリスクを減らすことができます。
MCPツールも切り替えれる
MCPツールも、先ほどのTools切り替えUIからオンオフを切り替えることができます。
VSCodeの拡張機能によって勝手にMCPツールが追加されていることもあるので、必要に応じてオフにしておくといいでしょう。
特に覚えておくべきポイントとして、MCPツールはコンテキストの消費量が多いということがあります。
もちろんMCPツールの設計によりますが、MCPツールはレスポンスの内容が大きくなりやすい傾向にあるほか、呼び出しのたびにレスポンスがコンテキストに追加されるため、不要なツールはオフにしておくことが推奨されます。
自分でMCPツールを作成する際も、必要な情報だけを返すように設計することが重要です。
特に理解しておくと便利なTools
個人的に重宝しているToolsをいくつかピックアップして紹介します。
-
vscode_askQuestions
仕様が曖昧なタスクを投げる際に、AIが勝手に推測して見当違いなコードを生成するのを防ぐために、「不明点があれば必ず`askQuestions`ツールで質問して」と指示しておくと、無駄なリクエスト消費と時間のロスを防げます。
VSCodeのネイティブなUIで選択肢付きの質問ダイアログが表示されるので、ユーザも直感的に答えやすいですし、別のウィンドウで作業していれば通知が表示されるので対応が必要なことに気づくことができます。 -
terminal_last_commandとterminal_selection
ターミナルのエラーログや実行結果をAIに渡す際に、わざわざコピペするのは面倒ですよね。
チャット内で「#terminalLastCommand」や「#terminalSelection」と呼び出すだけで、最新のコマンドや選択テキストをスマートにAIに渡せます。
自然言語で「直近のターミナルのエラー内容を確認して」と指示するだけでも大丈夫です。 -
runSubagent
複雑なタスクを投げる際に、プロンプト内で指示するだけで、AIが必要に応じてサブエージェントを起動して役割ごとにタスクを適切に委譲してくれるので、より高度なAI活用が可能になります。
サブエージェントは別のコンテキストウィンドウで動作するため、メインのコンテキストを汚さなくて済むほか、メインで行ってきたやり取りによるバイアスを受けずに、フレッシュな状態でタスクに取り組むことができます。
例えば、「実装が完了したらサブエージェントにレビューを依頼して」と指示することで、新しいコンテキストウィンドウで高品質なコードレビューを自動で行わせることができます。
まとめ
最近Claude Codeばっかり流行ってますけど、Github Copilotって使いこなせればめっちゃ便利だし、何より超安いのになぁ、と思いました。
Discussion
これガチでそうなんだけど、改悪される気がする
cursorみたいな従量課金にならないか日々怯えてる
めちゃくちゃ分かる、僕も怯えてます。
もしそうなっても、他社よりは安く設定してくれそうな気はしてますが…。
以下の記事で紹介してる構成なんて現在の課金体系を前提に書いてますよ…。
使い物にならなくなるカスタムエージェントとかたくさん出てきそうですね…。