週末、SQL Server ベースの環境の運用ツール作成で GitHub Copilot Coding Agent (以下、Coding Agent) を活用することができるのかを検証していました。
その時の知見をまとめておきたいと思います。
Contents
ドキュメント
Coding Agent を使用する際に確認するドキュメントとして、次のドキュメント (またはドキュメントツリーの内容) があります。
Premium Request が有効化されたことで、Premium Request については、GitHub Community にも Premium Request のディスカッション が挙がってきていますのでこれも参考になるかと。
現状、Premium Request については、Cannot use any premium model, Pro+ #161563 が議論が進んでいそうでした。
私もこのディスカッションで質問をしています。
基本的な使用方法
カスタマイズ
ファイアウォールのカスタマイズ
- Customizing or disabling the firewall for Copilot coding agent
- リポジトリの Settings の「Environments」->「copilot」->「COPILOT_AGENT_FIREWALL_ALLOW_LIST」を追加し、ファイアウォール設定として許可する外部アクセスを追加
プロンプトのカスタマイズ
- Best practices for using Copilot to work on tasks
- 「.github/copilot-instructions.md」にカスタム指示を設定
- Awesome GitHub Copilot Customizations も参考になります。
- Adding repository custom instructions for GitHub Copilot
- 「.prompt.md」を使用したプロンプトのカスタマイズ
環境のカスタマイズ
- Copilot コーディング エージェントの開発環境のカスタマイズ
- 「.github/workflows/copilot-setup-steps.yml」を追加し、エージェント開始前の Copilot 環境の事前構成を実施
- 使用できるワークフロー構文は制限されている
MCP のカスタマイズ
- モデル コンテキスト プロトコル (MCP) を使用した Copilot コーディング エージェントの拡張
- リポジトリ管理者が直接設定することで MCP サーバーの追加を行う
- VS Code で MCP サーバーを設定している場合、その設定を参考にしてリポジトリに直接設定を行う。
- Extending Copilot Chat with the Model Context Protocol (MCP) / Using the GitHub MCP Server
- 「.vscode/mcp.json」を使用した、リポジトリレベルでの MCP の設定
- 「.vscode/mcp.json」を使用した、リポジトリレベルでの MCP の設定
- Model Context Protocol servers
- Awesome MCP Servers
- Microsoft Model Context Protocol (MCP) Servers
- Microsoft Learn Docs MCP Server
- リポジトリ管理者が直接設定することで MCP サーバーの追加を行う
私が実行した際には、Coding Agent はタスクの実行時に .json / .js / .ts / .html / .md から 20 件を読み込んでコードベースを理解しようとしているようでしたので、カスタマイズの内容は Markdown に記載しておくとよさそうですね。(ファイル数が多い場合は、カスタマイズの内容を記載したディレクトリの読み込みを指示したほうがよさそうですが)
Coding agent が使用できるプラン
GitHub Copilot で提供されているプランは GitHub Copilot のプラン から確認することができます。
2025/06/24 から Copilot Business、2025/06/26 から Copilot Pro でも使用することができるようになりました。
個人向けの GitHub Copilot のプランですと、Coding Agent がサポートされるのは、「Copilot Pro 以上」となり、私は Pro で Coding Agent がサポートされる前に確認を始めていたので、Pro+ のプランを契約しています。
Coding Agent を使用した場合、Premium Request と GitHub Actions の時間が消費されることになります。
2025/07/10 から、Coding Agent の Premium Request の消費数が緩和され、Pro に含まれる 300 Premium Request/月 + 上限を超えた分の PAYG でも十分に使っていけると思いますので、最初は Pro で始めても良いかのではないでしょうか。
Premium Request の消費について
Coding Agent は Premium Request (プレミアム リクエスト) の対象であり、2025/06/18 から Coding Agent を使用すると Premium Request が消費されるようになりました。 (Premium Request についてのアナウンス: GitHub Copilot プレミアムリクエスト制限適用開始日を2025年6月4日に変更 ? 6月6日追記)
Copilot におけるリクエストの理解と管理 から Premium Request について確認することができます。
Premium Request は使用するモデルによって、乗数がかわります。
本投稿の作成時点では、GPT-4.1 / GPT-4o については「既定のモデル」という扱いとなり、乗数は 0 として、Premium Request を消費することなく使用することができます。
Premium Request が全て消費し、追加の Premium Requestの要求ができない状態となっている場合は、既定のモデルのみ利用することができる状態となります。
Coding Agent については、使用するモデルを設定することはできず、セッション内に対して 1 Premium Request 消費がされます。
当初はセッション内のタスクに応じて Premium Request が消費されましたが、2025/07/10 にアナウンスされた GitHub Copilot coding agent now uses one premium request per session の改善で 1 セッション / 1 Premium Request の消費に緩和されました。
Coding Agent は最初にどのようなタスクを実行するかを計画して、セッションを開始、セッション内でタスクの要件を満たすことための作業を実行していきます。(PR の一覧画面でどの程度タスクの実行が完了されたかを確認できます)
提供された当初は、私が依頼しているタスクでは 1 セッション辺り 20~50 ぐらいの範囲で Premium Request が消費されており、Coding Agent へのタスクの依頼はプランに含まれている Premium Request だけでは 30 ~ 75 程度までしか実行することができませんでした。
2025/07/10 以降は 1 セッション / 1 Premium Request となり、実行可能なタスク数が数 10 倍となり、通常の使用方法であればプランに含まれる Premium Request で Coding Agent の消費を十分にまかなうことができるかと思います。
GitHub Actions の消費時間について
Coding Agent の処理は GitHub Actions で実行されていますので、タスク実行時には Premium Request の他に GitHub Actions も消費されることになります。
本投稿で作成したツールでの Coding Agent 利用時の GitHub Actions の消費については次のようになっており、Pro の使用上限 となる 3,000 分の範囲でまかなえていました。
- ストレージ: 0.05 GB
- 稼働時間: 1,451 分
Coding Agent で消費される Premium Request 数が大幅に削減されたことで、実行するタスクの数が多くなると思いますので、Premium Request の追加での購入は不要でも、GitHub Actions の時間の追加購入は検討しておいたほうが良いかもしれませんね。
Copilot Agent との併用
作業の内容によっては、GitHub Copilot Agent と併用することで効率よくタスクをこなしていくことができるかもしれません。
Coding Agent の Premium Request の消費が 2025/07/10 以降、大幅に改善されたことで、Premium Request の消費の観点で Copilot Agent と Coding Agent を使い分ける必要性は低くなったかと思います。
Coding Agent は実行するのに分単位で時間がかかりますが、Copilot Agent はすぐにタスクの実行にとりかかってくれますので小規模な対応であれば Copilot Agent を使ったほうが効率が良いケースもあるのではないでしょうか。
Coding Agent はリポジトリ全体を読み込んでタスクを組み立て、Copilot Agent は開いているファイル (コンテキストに追加されているファイル) をベースとして対応をするという違いがあり、私は、時間がかかってもよいのでCoding Agent に要求を投げてしまっていますが。
GitHub Pull Requests (Marketplace) を使用すれば、Issue や PR を Visual Studio Code で操作できるようになります。
操作しているリポジトリを VS Code で開き次のような画面構成で作業を進めています。
Premium Request の使用状況の確認
Premium Request の使用状況の確認については Monitoring your Copilot usage and entitlements の方法で確認できます。
他にも確認方法はあるかと思いますが、次のような情報から確認することができました。
- Visual Studio Code から確認
- GitHub の使用状況レポートから確認
- GitHub の Copilot の Features から確認
Visual Studio Code から確認
Visual Studio Code から確認する場合は、ステータスバーの Copilot アイコンから確認することができます。
プレミアム要求が 100% になると、使用可能な Premium Request をすべて消費した状態となります。
追加の Premium Request を要求できる設定になっていない場合は「プレミアム要求が無効」という表示になります。
GitHub の使用状況レポートから確認
GitHub の「Settings」->「Billing and licensing」->「Usage」から「Copilot premium requests usage report」のダウンロード要求をすることで、当月内の Premium Request の要求状況の詳細を確認できます。
日単位での確認であれば「Managed billing usage report」から確認することができます。
GitHub の Copilot の Features から確認
Visual Studio Code の使用状況相当の状況は GitHub からも確認できるようになっており、Settings の Copilot -> Features からも確認できました。
Premium Request を上限まで消費した場合の挙動
Premium Request は毎月 1 日に消費状況がリセットされますが、プランに含まれている Premium Request を使い切った場合は Premium リクエストを使い切った場合はどうなりますか? に記載されている動作となります。
上限になると、Premium Request を消費する機能を使用した場合に、次のようなメッセージが表示され実行することができません。
Visual Studio Code
github.com の Copilot チャット
Coding Agent
追加の Premium Request が要求することができる設定になっていれば、追加コストは発生しますが、プランに含まれている上限を超えて使うことができます。
追加の Premium Request が要求できない場合、使用できるモデルが制限され「既定のモデル」(乗数が 0 になっている GPT-4.1 / GPT-4o) のみが使用できる状態となります。
使用するモデルが選べる Copilot Chat のような機能については、既定のモデルを選択して機能の利用を継続することができます。
しかし、Coding Agent のような使用するモデルが選択できない機能については、利用するモデルを制限して機能の利用を継続することができず、機能の利用自体がブロックされてしまうようです。
追加の Premium Request の要求
プランによって割り当てられている Premium Request の上限を使い切った場合、追加の Premium Request を $0.04USD/1Requestで使用していく必要があります。(乗数が 1 でないモデルの場合は、コストに乗数がかけられます)
追加の Premium Request を使用する場合の情報としては次のドキュメントになるかと思います。
- Using budgets to control spending on metered products
- Premium リクエストを使い切った場合はどうなりますか?
- About billing for GitHub Copilot
上述の画像のとおり、投稿の作成時点で、私は月内の Premium Request を使い切ったため次の設定を実施しています。
- GitHub アカウントの「Settings」->「Copilot」->「Features」の「Additional Copilot premium requests」を「ON」に設定
- GitHub アカウントの「Settings」->「Billing and licensing Budgets and alerts」の「Product の Copilot」or「SKU の Copilot Premium Request」のいずれかの Budget を設定
- GitHub アカウントの「Settings」->「Billing and licensing Budgets and alerts」の「Payment information」の「Payment method」を設定
これにより、追加の Premium Request を要求することができました。
追加の Premium Request が要求できる場合、Visual Studio Code / GitHub の Copilot チャットが次のような表示となり、追加の Premium Request が消費される状態となっていることを確認できます。
github.com の Copilot チャット
追加の Premium Request が要求されると Budget が消費されていき、設定した上限まで利用することが可能となります。
追加で消費された Premium Request については使用状況に次のように表示されました。
プランに含まれている Premium Request の消費は Usage に表示されないようですが、追加の Premium Request が消費された場合は、表示されるようです。
CSV の表示内容も変わり、追加の Premium Request が消費された要求については「Exceeds Monthly Quota」が「TRUE」となっているようですね。
最終的な 6 月の使用状況は次のようなグラフとなりました。
基本的な使用方法
基本的な使用方法については、Copilot へのタスクの割り当てについて から確認することができます。
Copilot agent へのタスクの割り当て方法については、次の 2 種類の方法があります。
私は Issue を作成する際に、Assignes に Copilot を割り当てることでタスクの割り当てを行っています。
Issue ではなく、Copilot Chat プロンプトで「@github」宛て (チャット参加者として指定) にタスクを記載した Pull Request の作成を指示することでタスクを割り当てることもできます。
Visual Studio Code から実行しようとしたところ、私の環境では、Bug: Copilot Chat Sends Invalid copilot_confirmations Payload Causing Unmarshal Error #160122 と類似の問題が発生しているようで、チャット経由でのタスクの割り当ては試していません。(github.com 上の Chat プロンプトで実行すれば実行できるかもしれませんが、サイトを開くなら Issue を立てておいたほうが管理しやすいので Issue で操作しています)
前述のとおり GitHub Pull Requests の拡張機能で VS Code から、Issue を起票できますので、チャット経由でタスクの割り当てができない場合には、Issue からタスクを割り当てたほうが良いかもしれませんね。
スマホの GitHub アプリからも Issue の登録と Copilot へのアサインが可能ですので、移動中に思いついた内容を登録して作業をしてもらうこともあります。
Copilot へのアサインは後からでも可能ですので、今後のタスクを一通り登録しておき、タイミングを見て Copilot にアサインしてタスクを進めていくということも可能ですので、未アサインのタスクを作成するようにしておくのもよさそうですね。
実際の作業の流れ
実際の作業の流れとしては次のようになり、自然言語を用いた Vibe Coding によりタスクを進めていきます。
- Copilot に割り当てた issue を作成
- Copilot がタスクとして認識すると watch のリアクションが付与され、新しいブランチが作成され pull request が作成される
- pull request 内に作業の状況が表示され、タスクが完了するとレビュー依頼が来る
- レビューをし改善が必要であれば、コメントで指摘し、Coding Agent に再度タスクを実行させる
- レビューし問題が無ければ、Pull Request をマージする
これを繰り返すことで、開発を実施していきます。
Coding Agent にタスクを依頼する Issue は複数作成しておくことが可能ですので、複数のタスクの実施を同時に依頼しておくことも可能です。
上述の操作では、github.com の Issue を起点としていますが、前述のとおり Visual Studio Code に GitHub Pull Requests の Extension を導入することで、Visual Studio Code からも同様の流れで操作することができます。
Copiot が動作しなかった場合の対応
PR にコメントを作成しても Copilot の watch アイコンが表示されず、Copilot の作業が開始されないケースが稀に発生しました。
そのような場合は「@copilot」をつけてコメントを再度追加することで、タスクの実行が行われるかと思います。
Codong Agent が実行している内容の把握
Coding Agent が実行しているタスクには、「View session」というボタンが表示されます。
ここから、Coding Agent がどのように指示を理解してタスクを進めていたのかを把握することができます。
想定していない対応をしてきたときには、どのように解釈されたのかを確認して、そのように判断されないようなプロンプトにすることが重要となってくるのかもしれませんね。
状況によっては PR をマージせずに新しい Issue で指示を出しタスクをやり直す / 特定のコミットまで処理を破棄させて再度単純なタスクに分割して再実行をさせることも考慮が必要となります。
他のコードで類似の実装ができている場合は、そのコードを提示して作業を進めさせることで、期待した動作になる可能性もあります。
Coding Agent がタスクを完了した際にナレッジを収集する
Coding Agent を使用していると「Agent が何故そのような対応を実行したのか?」を把握することが重要だと感じてきます。
前述のとおりセッション (or Actions) からどうしてそのような対応を実施したのかを確認することができますが、「copilot-instructions.md」に次のような記載を行っておくことで、リポジトリ内にファイルとして記録させることも可能でした。
# ナレッジの収集 - Coding Agent でタスクを完了した場合、knowledge ディレクトリにタスクの内容 / どのように試行してその内容を実施ししようとしたのかのナレッジを Markdown 形式で記載してください。 - Coding Agent の実行ごとに 1 ファイルを作成するのではなく、同一の PR 内のタスクは一つのファイルに情報を集約してください。 - ナレッジのファイル名は次の形式で作成してください - {PR 番号}-{タスク名}.md - タスク名は英語表記 - 例: 123-Create-API.md
Coding Agent がどのように思考してその対応を実施したのかは、誤った対応がされた場合の方向修正に重要であり、対応の内容は自身のナレッジとしても重要となりますので、Coding Agent の実施内容はいつでも見れるようにしておくと良いケースもあるのではないでしょうか。
カスタマイズ
本投稿の冒頭のドキュメントに記載していますが、Coding Agent の挙動をカスタマイズする方法が提供されています。
私は現時点では次のようなカスタマイズを実施しています。
- 作成内容に合わせたファイアウォール設定の変更
- 「.github/copilot-instructions.md」に日本語で回答するようにカスタム指示を追加
- MCP サーバーとして、Playwright MCP Server / Microsoft Learn Docs MCP Server を追加
- リポジトリの Settings の「Copilot」->「Coding agent」から使用する MCP サーバーを追加
追加するファイアウォール設定の判断
Coding Agent は pull request の中作業の状況を報告してくれますが、その中で「Firewall rules blocked me from connecting to one or more addresses」の警告か表示されることがあります。
これは、タスクを進める中で外部のサイトにアクセスができなかったことを示すものとなります。
Coding Agent ではデフォルトで許可されているアクセス許可サイトは制限がされており、既定では「COPILOT_AGENT_FIREWALL_ALLOW_LIST」で許可されているサイトのみアクセスが可能となっています。(既定で許可されているサイトは、Coding Agent で実行された GitHub Actions の Proessing Request の env の内容等から確認できます)
許可サイトの設定の制御には次の 3 種類の方法が提供されているようですが、私は「1.」の方法を使用しています。
- 「COPILOT_AGENT_FIREWALL_ALLOW_LIST_ADDITIONS」で許可サイトを追加する
- 「COPILOT_AGENT_FIREWALL_ALLOW_LIST」の設定を上書きする
- 「COPILOT_AGENT_FIREWALL_ENABLED=false」でファイアウォールを無効化する
リポジトリの「Settings」の「Environments」に「copilot」がありますので、その中に「COPILOT_AGENT_FIREWALL_ALLOW_LIST_ADDITIONS」を追加することで許可サイトの設定を変更しています。
ワークフローファイルによるカスタマイズ
Copilot コーディング エージェントの開発環境のカスタマイズ に GitHub Actions ワークフローファイルを作成して、カスタマイズする方法が公開されています。
ワークフローファイルでカスタマイズ可能な設定は限定的となっているようです。
ワークフローファイルの jobs 内に「env」を設定しても期待した動作にできなかったので、リポジトリの環境変数のメンテナンスで対応しています。(ワークフローファイルを使用して制御できるのかもしれませんが、ここは私のスキル不足の可能性があります)
Coding Agent を利用して作ったものを紹介
Coding Agent で作ったツールについては、Public に公開することを想定せずに指示をしていたため、リポジトリを公開することはできないのですが、どのようなものを作ったのかの紹介を。
Dev Container の作成
今回作っていたツールは次のような構成となります。
- NGINX + PHP-FPM
- PDO_SQLSRV によるデータベースのアクセス
- プロセスは supervisor で起動
- Xdebugによりデバッグができる環境
普段から開発していれば上記の構成の環境をすぐに用意できるのでしょうが、手元には開発環境が無かったため、Coding Agent の最初のステップとしては、Dev Container として今回作成するツールの実行環境を用意してもらうことから始めました。
最終的にはこのようなページ付きで Dev Container の実行環境を用意してくれました。
グラフを表示するページの作成
私が DB の挙動を確認する際には、「クエリを定期的に実行して前回取得値との差分を算出して秒間の値を計算する」ということを行う機会が多いです。
Windows の SQL Server の環境であればパフォーマンスモニターを使用すればよいのですが、それ以外の完了 (主に PaaS) では、クエリを定期的に実行するコードを書いて数字で表示するということを行っています。
上述の算出方法を行う機会が多いのは「Batch Reqeusts/sec」なのですが、情報取得の SQL / どのように加工,表示してほしいのかをプロンプトで指示したところ、次のような画面が作成されました。
定期的にクエリを実行し、グラフにプロットを増やしていくというものなのですが、軽く触っていた感じでは要件を満たせておりよさげでした。
Coding Agent から直接アクセス可能な SQL Server ベースの環境は用意していなかったのですが、DMV のような一般的な情報を活用したものであれば、既存の知識で良しなにデータのモックを作って実装を進めてくれていそうな雰囲気でした。
Azure OpenAI との連携
テーブルの構造を表示するページの作成についても指示をすることで作成することができます。
テーブルのスキーマ情報を Azure OpenAI に連携し、このテーブルがどのような特性を持つテーブルなのかを解説した情報を説明として追記させるということも可能です。
最初の成果物で Fix 出来ていたページはないのですが、細かな修正を指示していくことで、直接コードの修正は発生させることなく、考えていた内容の実装が進められていたように思えます。
参考: 現時点で実装できた機能
現時点では次の内容を Coding Agent で実装しています。
- 実行環境用の Dev Container の生成
- Nginx + PHP-FPM
- Xdebug によるデバッグ
- PDO_SQLSRV / SQLSRV の導入
- Composer の利用
- Entra ID によるログインを実装したページの作成
- テスト用ページ
- SQL Server / デバッグ / PHP の情報
- ENV ファイルによる環境変数の設定
- バッチ実行数の可視化
- 任意のクエリを定期的に実行しメトリックを可視化
- トランザクションログの解析
- データベース情報の取得
- データ,ログの使用状況 / 互換性レベル / 復旧モデルの表示
- テーブルの取得
- 一覧 / レコード数 / データサイズ / インデックス数の表示
- スキーマ情報の取得
- Azre OpenAI 連携
- スキーマ情報からテーブルの説明を生成
- テーブルのチューニング推奨事項の生成
- テーブルレビューとスコアリング
トップページとしては次のような画面が自動生成されています。
細かな調整が必要な点はいくつかありますが、「ひとまず動作する機能を Coding Agent を使用して実装する」という点においては実現ができています。
自分の本来の作業を進める裏で、GitHub の操作のみでバックグラウンドで実装を進めていくことができ、自分に足りないスキルも保管してもらえていますので、今回作ったツールとしてはコスト以上の成果は出せているかと思います。
AI コーディングはジュニアレベルのエンジニアのスキルを備えているということが言われることが多いですが、自分のようなインフラの製品特化のエンジニアとしては「これでジュニアレベルのエンジニアなのか….」と戦々恐々とする今日この頃です。