GitHub Copilot coding agent のドキュメントを読む

平木場が GitHub Copilot coding agent を完全に理解するためにドキュメントを読むメモ。
Concepts
- About GitHub Copilot coding agent - GitHub Docs
- About enabling GitHub Copilot coding agent - GitHub Docs
- Model Context Protocol (MCP) and GitHub Copilot coding agent - GitHub Docs
Tutolials
- Best practices for using GitHub Copilot to work on tasks - GitHub Docs
- Piloting GitHub Copilot coding agent in your organization - GitHub Docs
How-tos
- Asking GitHub Copilot to create a pull request - GitHub Docs
- Using GitHub Copilot to work on an issue - GitHub Docs
- Tracking GitHub Copilot's sessions - GitHub Docs
- Reviewing a pull request created by GitHub Copilot - GitHub Docs
- Extending GitHub Copilot coding agent with the Model Context Protocol (MCP) - GitHub Docs
- Customizing the development environment for GitHub Copilot coding agent - GitHub Docs
- Customizing or disabling the firewall for GitHub Copilot coding agent - GitHub Docs
- Troubleshooting GitHub Copilot coding agent - GitHub Docs
- Managing GitHub Copilot coding agent in your enterprise - GitHub Enterprise Cloud Docs

最終的な考えのコメントはここ。

Concepts

About GitHub Copilot coding agent - GitHub Docs
- copilot coding agent(以下 CCA, cca)はパブリックプレビューである
- ccaは人間の開発者と同じようにタスク完了できる(バグ修正、新機能実装、テストカバレッジ向上、ドキュメント更新、負債の解消)
- タスクの委任方法
- issue にアサインする
- agent ページ、IDE のチャット、github mcp サーバー
- 与えたプロンプトに応じてタスクを評価、必要な変更を行い、プルリクエストを作る。終了するとユーザーにレビュー依頼を要求、プルリクのコメントでcopilotに指示を与える
- コーディング作業は GitHub Actions を利用した独自の使い捨て環境でお行われる。コードの調査、変更、自動テストなどを行える
- ローカル実行との違い
- 全ての実行は GitHub 上で行われる
- 開発者にとってバックグラウンドで作業させられる
- 透明性を担保
- 全てのステップがコミットで発生・ログも確認できる
- チーム全体にコラボレーションの機会が広がる
- 人的リソース不足のために置き去りにされてたタスクを開始できる

内臓のセキュリティ保護機能
- org, enterprise のポリシー・プラクティスが適用される
- firewall によって制限されたサンドボックス環境で動作。作業用に割り当てられたリポジトリには読み取り専用でアクセス
- きば)え、読み取り専用???プルリク作れなくない?
-
copilot/
で始まるブランチのみを作成、プッシュ。rulesets の対象にできる - 書き込み権限を持つユーザーにのみ応答する
- アウトサイドコラボレーターとして扱われる。github actions ワークフロー実行には承認が必要。copilot はプルリクエストを承認・マージできない
- copilot にプルリクエストの作成を依頼したユーザーはそのプルリクエストを承認できない

リスク
copilot はコードの変更をリポジトリにプッシュできる
このリスクを軽減するための copilot の仕様
- copilot にタスクを割り当てられるユーザーを制限している
- write 権限必須
- copilot が使用するアクセストークンの権限を制限している
-
copilot/
で始まるブランチに対してのみプッシュが許可されている
-
- copilot の認証情報を制限している
- 単純なプッシュしかできない。
git push
やその他の Git コマンドは直接実行できない
- 単純なプッシュしかできない。
- actions ワークフローの実行を制限している
- copilot コードがレビューされ、write 権限を持つユーザーが承認しない限りワークフローは起動しない
- copilot に pr を作成させたユーザーはその pr を承認できない
copilot は機密情報にアクセスできる
copilot はコードやその他の機密情報にアクセスできるため、偶発的、あるいは悪意あるプロンプトによって情報漏洩の可能性がある。このリスクを軽減するために、
- copilot のインターネットアクセスを制限できる
- デフォルトで firewall が存在する
- カスタマイズ可能
プロンプトインジェクションの脆弱性
ユーザーは issue やコメントで隠しメッセージを含められる。このリスクを低減するために、
- ユーザー入力を copilot に渡す前に隠し文字がフィルタリングされる
- 例えば issue やプルリクエストのコメントに html コメントとして入力されたテキストは copilot に渡されない

限界
- ソフトウェア開発ワークフローにおける制限
- 他のリポジトリに対する Read/Write は不可能
- コメントされたリポジトリのみが対象
- 一つのプルリクエストしか作れない
- 自分が作成したものではない既存のプルリクエストに対して作業はできない
- 他のリポジトリに対する Read/Write は不可能
- 他の機能との互換性の制限
- コミット署名しない
- セルフホストランナーでは動かない
- EMU の個人リポジトリでは使えない
- content exclusion は考慮されない
- public コードに一致する提案をブロックするポリシーが適用されない
- 一致したコードを提案する可能性がある、かつ、一致したかどうかのコード参照は提供されない
-
GHEC データレジデンシーでは利用不可- 2025/08/29: なんか使えるようになってた Copilot coding agent is now available in GitHub Enterprise Cloud with data residency - GitHub Changelog

About enabling GitHub Copilot coding agent - GitHub Docs
- copilot enterprise、copilot business においてデフォルトで無効化されている
- copilot pro、copilot pro+ においてデフォルトで有効化されている
- 有効にすると管理者がリポジトリをオプトアウトしていない限り、どのリポジトリでも cca を利用可能
- 利用可能リポジトリから除外するにはオプトアウトが必要
- enterpriseにおいては全てのリポジトリで無効可能
- orgにおいては任意のリポジトリ、または全てのリポジトリにおいて無効可能

Model Context Protocol (MCP) and GitHub Copilot coding agent - GitHub Docs
- cca は MCP を利用できる
- ローカル、リモートの MCP サーバが利用できる
- いくつかの MCP サーバはデフォルトで設定されている
- MCP における Tool のみサポートしている
- 認証認可に OAuth を利用するリモート MCP サーバはサポートしていない
デフォルトの MCP サーバ
次の MCP サーバがデフォルトで入っている
- GitHub MCP サーバ
- 特別にスコープされたトークンが使われる
- スコープのカスタマイズ可能
- Playwright MCP サーバ
- デフォルトでは
localhost
、127.0.0.1
のみアクセス可能 - 2025/09/10追記)デフォルトでは〜みたいな書かれ方をしているが、設定変更はできなさそう
- デフォルトでは
- 2025/09/10追記)これらの MCP サーバの無効化をする方法はなさそう?
MCP サーバのセットアップ
- リポジトリ管理者はそのリポジトリ内で使用する MCP サーバを設定できる
- json 形式をサポート
ベストプラクティス
- サードパーティの MCP サーバはパフォーマンスと出力の品質に影響を与える可能性がある。十分に検討し、要件を満たしていることを確認すること
- デフォルトでは cca は MCP サーバの書き込み Tool はアクセスできない。使用する MCP サーバで使用可能なツールを確認し、必要なツールのみを使用して MCP 構成の tools フィールドを更新すること

Tutorials

Best practices for using GitHub Copilot to work on tasks - GitHub Docs
- 解くべき課題を十分にスコープできている
- 解決すべき課題や必要な作業に関する説明
- 理想の状態とは何か。受け入れ基準は何か
- どのファイルが関連しているか
- 任せるタスクの種類を選ぶ
- 単純なタスクを投げてみるところから始めるのが良い
- バグ修正、UI の変更、テストの改善、ドキュメント更新、アクセシビリティ向上、技術的負債への対処など
- copilot に任せるべきでないタスク
- 複雑で広範囲なタスク
- プロダクションクリティカルな課題、セキュリティ・個人情報・認証が絡むタスク、インシデント対応
- 曖昧なタスク
- 開発者が学習に利用したい課題
- コメントでプルリクを育てる
- プルリクを作らせたあとは
@copilot
で追加の指示を与えてプルリクをブラッシュアップする - プルリクで複数の指示をしたい場合はレビューコメントとしてまとめると良い
- プルリクを作らせたあとは
- カスタム命令を追加する
- copilot にプロジェクト理解の促進と、開発に必要な知識を与える
- 対応ファイルパス
/.github/copilot-instructions.md
/.github/instructions/**/*.instructions.md
**/AGENTS.md
/CLAUDE.md
/GEMINI.md
- パス固有のカスタム命令
- yaml front matter で
applyTo: '**/tests/*.spec.ts'
のようにすると、マッチするファイルに対しての命令という扱いになる
- yaml front matter で
- MCP を使う
- copilot の環境をカスタマイズする
- copilot は github actions 上で動く。
copilot-setup-steps.yml
を設定することでこれをカスタマイズできる - 環境構築を意識させなくていいのと、高速化を見込める
- copilot は github actions 上で動く。

Piloting GitHub Copilot coding agent in your organization
- organization で cca を使う
1. 評価する
組織にどのように適合するか評価する。
- cca を有効化する前に、コスト、セキュリティ機能、他の AI ツールとの違いなどを学ぶ
- cca に最適なタスクを知る
- cca を組織のワークフローにおける他のツールとどのように組み合わせるか検討する
2. 安全
全ての AI モデルはミスを犯す可能性がある。ベスプラに従うことで、セキュリティを高める。
- copilot-instructions.md ファイルを使用して、Copilotがリポジトリで正常に動作するために必要な情報を与える
- copilot-setup-steps.yml ファイルを使用して開発環境をセットアップする
- シークレットを安全な方法で渡す
- cca の作る全ての PR が他のユーザーの承認を必要とするようにルールセットを設定する
3. パイロット
cca を効果的に導入するには試用が大事。
- 部門横断的なチームを集める。幅広い利用方法が検討できる
- リスクの低いリポジトリを選択する。playground もいいけど、成功にはコンテキストが必要なのでちゃんと使ってるリポジトリにする
- 2. で選んだリポジトリで cca を有効にし、オプションで 3rd party の mcp サーバーを有効化してコンテキスト共有を強化する
- きば)いや、リポジトリで有効に〜って書いてあるけど、デフォルト全 org, repo で有効(ライセンシーが使える状態)になっちゃうよね
- カスタム命令書を作成し、必要なツールを事前にインストール
- テストカバレッジやアクセシビリティの向上に関するタスクを考える
- ベスプラを適用して issue を作成する
- issue に cca を割り当てる
- 続ける
試用期間中に利用を繰り返し、最大限活用する方法を特定する。プレミアムリクエスト消費についても学ぶ。
MCP で強化
- cca は組み込みの github mcp サーバーを使用して、issue や pr など作業中のリポジトリの完全な github コンテキストにアクセスできる。デフォルトは認証とファイアウォールによって外部データへのアクセスは制限される
- 組織で使用するローカル mcp サーバを使えるようにして、cca が利用できる情報を拡張する
- 例:プロジェクト管理ツール(notion や figma など)
- 例:トレーニングデータの追加(terraform doc や aws doc など)

How-tos

Asking GitHub Copilot to create a pull request
タスクの依頼方法(≒プルリクの作らせ方)
- GitHub.com のエージェントパネル
- GitHub.com のエージェントページ
- VSCode、Visual Studio、JetBrains IDE、GitHub.com 上の copilot チャット
- MCP をサポートする任意の IDE やコーディングエージェントツール
- macOS の Raycast
GitHub.com のエージェントパネル・エージェントページ
- エージェントパネル: 右上にあるボタン
- エージェントページ: https://github.com/copilot/agents
- プロンプトフィールドのメニューからリポジトリを選択
- リクエスト内容を入力
- ベースブランチを選択
- Start Task をクリックするか Return を押す
VSCode の Copilot Chat
- GitHub Pull Requests 拡張機能が必要
- Chat コンソールを開く
- Copilot に何をさせたいかのプロンプトと
#copilotCodingAgent
コンテキスト変数を渡す - Copilot がコーディングエージェントを使うかどうか確認。よければ続行
- Copilot がローカルの変更をプッシュし、新しいセッションを開始、作成したプルリクエストへのリンクを返す。
きば:え、ローカルの変更をプッシュして作業するの?ここの挙動は気になる。
他の IDE の Copilot Chat
-
@github
でプロンプトを渡すときにプルリク作成を依頼すると coding agent を使ってくれる
GitHub.com の Copilot Chat
- github.com で copilot chat を開く
- プルリク作成を依頼するようなプロンプトを渡す
GitHub MCP Server
- GitHub 公式 MCP サーバーをインスコ
-
create_pull_request_with_copilot
ツールを使う
Raycast
省略

Using GitHub Copilot to work on an issue - GitHub Docs
Issue で Copilot に課題を割り当てる。
- Issue 画面で Copilot を Assignees に指定したらプルリクを作り始める
- Copilot は割り当て時点の Issue の情報を認識する。割り当て後の Issue コメントや変更は認識しない
- もし追加情報を与えたい場合は作られた PR 上でコメントする
- UI 上だけでなく、GitHub API を使っても割り当てられる
- Copilot に Issue を割り当てると
- Copilot が Issue に 👀 リアクションをする
- Issue にリンクした PR の草案を作る。Issue のタイムラインに表示される
- Copilot がエージェントセッションを開始し、Issue に取り組む。作業進捗でPR本文が更新され、ブランチにコミットがプッシュされる
- https://github.com/copilot/agents から過去と現在のすべてのセッションを確認できる
- セッションをクリックするとログが見れる
- PR が完成したら
@copilot
コメントで変更を追加させたりできる

Tracking GitHub Copilot's sessions - GitHub Docs
Copilot のセッションログ追跡について。
- セッション画面で
Stop session
をクリックするとセッションを中止できる

Reviewing a pull request created by GitHub Copilot - GitHub Docs
copilot のプルリクに対するレビューについて。
- レビューコメントは一括で提出するのがおすすめ
- Copilot はリポジトリへの write 権限を持っている人からのコメントにのみ応答する。コメントすると 👀 が着く
- Copilot がプルリクに変更を加えても GitHub Actions ワークフローは自動的に実行されない
- 実行するには
Approve and run workflows
をクリックする
- 実行するには

Extending GitHub Copilot coding agent with the Model Context Protocol (MCP) - GitHub Docs
MCP に関する話。
MCP サーバーをリポジトリに追加
- リポジトリ設定を開く
-
Code & automation
->Copilot
->Coding agent
をクリック - MCP 設定セクションで JSON を追加
- MCP サーバーでシークレットを扱う場合は Copilot environment にシークレットを追加。MCP で使用するシークレットは
COPILOT_MCP_
が先頭に必要
JSON の書き方
{
"mcpServers": {
"MCP SERVER 1 (Local)": {
"tools": [
"tool_name_1",
"tool_name_2",
],
"type": "local or http or sse",
"command": "command",
"args": [ "--arg1", "arg2" ],
"env": {
"ENV_NAME": "hoge",
"SECRET_TOKEN": "COPILOT_MCP_SECRET_TOKEN"
}
},
"MCP SERVER 2 (Remote)": {
"tools": [
"tool_name_1",
"tool_name_2",
],
"type": "local or http or sse",
"url": "mcp server url",
"headers": {
"SECRET_TOKEN": "COPILOT_MCP_SECRET_TOKEN"
}
},
...
}
}
- 必須キー
-
tools
: 利用可能にする Tool を羅列。追加したら勝手に使われる。*
はすべての Tool を表す -
type
: MCP サーバーの種類。local
かhttp
かsse
。
-
- ローカルMCP固有キー
-
command
: 起動コマンド -
args
: 起動コマンドに付与する引数 -
env
: 環境変数
-
- リモートMCP固有キー
-
url
: MCP サーバーの URL -
headers
: リクエストに追加するヘッダ
-
Copilot environments の設定
cca が使えるシークレットをリポジトリごとに設定できる。
cca の設定ではなく Environments 側で設定する。
- settings を開く
- environments を開く
-
copilot
environments を作成する -
Add environments secret
をクリック - シークレット名に
COPILOT_MCP_
で始まる名前をつけて値を追加する
MCP サーバー設定の検証
- 適当な Issue に Copilot を割り当てる
- セッションログを見る
- ログビューアの右上の
...
をクリックし、verbose log を見る - actions のログが出るので、
Start MCP Servers
を開く
組み込み GitHub MCP サーバーをカスタマイズする
組み込みの GitHub MCP サーバーはデフォルト有効で、リポジトリにスコープされたトークンで GitHub と通信する。
幅広く他リポジトリのデータにもアクセスさせたければ、PAT を与えられる。
- PAT を作る
- copilot environment で
COPILOT_MCP_GITHUB_PERSONAL_ACCESS_TOKEN
をシークレットとして追加する

Customizing the development environment for GitHub Copilot coding agent - GitHub Docs
cca の動作環境のカスタマイズについて。
動作環境にツールや依存関係をプリインストールする
.github/workflows/copilot-setup-steps.yml
に GitHub Actions ワークフローファイルを追加することで、カスタマイズできる。
特別なワークフローファイルであるため、通常のワークフローファイルと仕様が異なる。
name: "Copilot Setup Steps"
# 設定手順が変更された際に自動的に実行し、容易な検証を可能にするとともに、リポジトリの「アクション」タブを通じて手動テストを許可する
on:
workflow_dispatch:
push:
paths:
- .github/workflows/copilot-setup-steps.yml
pull_request:
paths:
- .github/workflows/copilot-setup-steps.yml
jobs:
# このジョブは必ず `copilot-setup-steps` という名前で呼び出さなければなりません。そうしないと Copilot によって認識されません。
copilot-setup-steps:
runs-on: ubuntu-latest
# 各ステップに必要な最小限の権限に設定してください。
# Copilot は、その運用のために専用のトークンが割り当てられます。
permissions:
# セットアップ手順の一環としてリポジトリをクローンする場合(依存関係のインストールなど)、`contents: read` 権限が必要です。セットアップ手順でリポジトリをクローンしない場合、Copilot は手順完了後に自動的にクローンを行います。
contents: read
# 任意のステップを定義でき、それらはエージェントの起動前に実行されます。
# コードをチェックアウトしない場合、Copilotが代わりにチェックアウトします。
steps:
- name: Checkout code
uses: actions/checkout@v5
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
cache: "npm"
- name: Install JavaScript dependencies
run: npm ci
- カスタマイズできる部分は限られている
-
steps
,pemissions
,runs-on
,container
,services
,snapshot
,timeout
-
-
actions/checkout
のfetch-depth
はいい感じに上書きされる - もし 0 以外の終了コードを返して失敗した場合、copilot は残りのセットアップ手順をスキップして既存の環境で作業を開始する
Larger runner を使う
-
runs-on
で指定すれば使える。ファイルがそもそも存在しない場合はデフォルトの ubuntu runner を使う - Ubuntu x64 Linux ランナーのみサポートしている
- セルフホストランナーはサポートしていない
Git LFS を使う
actions/checkout
ステップを copilot-setup-steps
ジョブに追加し、with.lts
を true
にする。

Customizing or disabling the firewall for GitHub Copilot coding agent - GitHub Docs
- cca はデフォルトでインターネットアクセスを強く制限している。
- デフォルトのファイアウォールルールは copilot が github とのやりとり、依存関係解決に使用する多くのホストへのアクセスを許可している。
- copilot のリクエストがブロックされた場合、プルリク本文やコメントに警告が追加される
- 警告にはブロックされたアドレスとリクエストに関わるコマンドが表示される
許可ホストを追加する
- リポジトリ設定から cca 設定に行く
-
Custom allowlist
をクリック - 許可リストに含めたいアドレスを追加する
- ドメイン:
packages.contoso.corp
- URL:
https://packages.contoso.corp/project-1
- スキーマ(
https
)、ホスト(packages.contoso.corp
)、パス(/project-1
)と子孫パスに制限される- つまり、
https://packages.contoso.corp/project-1/tags/latest
も許可される
- つまり、
- スキーマ(
- ドメイン:
- ルールを追加して保存
デフォルト許可リストを上書きする
全てを自分で管理したい場合はデフォルトの許可リストを無効にできる。Recommended allowlist
をオフにする。
ファイアウォールを無効にする
Enable firewall
をオフにする。推奨しない。


Managing GitHub Copilot coding agent in your enterprise - GitHub Enterprise Cloud Docs
省略
最近の Changelog で enterpirse team を作成して copilot のライセンス管理ができるようになったらしいが、パブリックプレビューでまだよくわかっていない。
Manage Copilot and users via Enterprise Teams in public preview - GitHub Changelog

自分のリポジトリで試してみる

各種設定を考える。
デフォルト設定: https://github.com/korosuke613/homepage-2nd/settings/copilot/coding_agent
- Copilot cofing agent
- Internet access
- Enable firewall:
On
- Recommended allowlist:
On
- Custom allowlist: 空
- これは都度追加するのがいいかも
- Enable firewall:
- Model Context Protocol (MCP)
-
{"mcpServers": {} }
- この後考える
-
- Internet access
- Environments / Configure copilot
- Environment secrets: 空
- これも見つけ次第追加したい
- Environment secrets: 空
-
.github/workflows/copilot-setup-steps.yml
: 無し- 環境構築はしたい
まずは.github/workflows/copilot-setup-steps.yml
と MCP サーバを整備したい。

.github/workflows/copilot-setup-steps.yml
を追加
korosuke613/homepage-2nd の CI ワークフローを元に事前に必要なツールのインスコを考える。
特徴
- npm の依存関係をインストールしてる
- Astro のキャッシュを保持してる
- Vitest のキャッシュを保持してる
- Playwright のキャッシュを保持してる
- Playwright を事前にインストールしている
これらを盛り込んで、ローカルでのビルド、静的解析、テストなどを cca が簡単にできるようにする。
name: "Copilot Coding Agent Setup Steps"
# ref: https://docs.github.com/en/copilot/how-tos/use-copilot-agents/coding-agent/customize-the-agent-environment
on:
workflow_dispatch:
pull_request:
paths:
- .github/workflows/copilot-setup-steps.yml
jobs:
# このジョブは必ず `copilot-setup-steps` という名前でなければならない
copilot-setup-steps:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
# コードをチェックアウトしない場合、Copilotが代わりにチェックアウトする
- name: Checkout code
uses: actions/checkout@v5
- name: Restore Astro build cache
uses: actions/cache/restore@v4
with:
path: .astro/cache
key: astro-build-${{ hashFiles('**/astro.config.mjs', '**/package-lock.json') }}
restore-keys: |
astro-build-${{ hashFiles('**/astro.config.mjs') }}-
astro-build-
- name: Restore Vitest build cache
uses: actions/cache/restore@v4
with:
path: .cache/.vitest
key: vitest-${{ github.sha }}
restore-keys: vitest-
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.tool-versions'
cache: "npm"
- name: Install dependencies
id: npm-install
run: |
npm ci
PLAYWRIGHT_VERSION=$(npm ls --json @playwright/test | jq --raw-output '.dependencies["@playwright/test"].version')
echo "PLAYWRIGHT_VERSION=$PLAYWRIGHT_VERSION" >> $GITHUB_OUTPUT
- name: Restore playwright binaries cache
uses: actions/cache/restore@v4
id: playwright-cache
with:
path: ~/.cache/ms-playwright
key: playwright-${{ steps.npm-install.outputs.PLAYWRIGHT_VERSION }}
restore-keys: playwright-
- name: Install playwright
run: npx playwright install chromium --with-deps
https://github.com/korosuke613/homepage-2nd/actions/runs/17512227766/job/49745334356
54 秒でジョブが完了。動いてる。ていうか思ったより速いな。

copilot-setup-steps.yml
)
動作確認(
https://github.com/korosuke613/homepage-2nd/issues/1145
https://github.com/korosuke613/homepage-2nd/pull/1146
やってるやってる。
セッションページ。ちゃんと copilot-setup-steps.yml を実行してる
作られた PR。19分8秒かかった。
スクショ貼られててビビる
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
metadata.google.internal
- Triggering command:
node (vitest 1)
(dns block)- Triggering command:
node (vitest 2)
(dns block)telemetry.astro.build
- Triggering command:
node /home/REDACTED/work/homepage-2nd/homepage-2nd/node_modules/.bin/astro build
(dns block)- Triggering command:
node /home/REDACTED/work/homepage-2nd/homepage-2nd/node_modules/.bin/astro dev
(dns block)www.docswell.com
- Triggering command:
node /home/REDACTED/work/homepage-2nd/homepage-2nd/tools/node_modules/.bin/ts-node test-docswell-rss.ts
(dns block)If you need me to access, download, or install something from one of these locations, you can either:
- Configure Actions setup steps to set up my environment, which run before the firewall is enabled
- Add the appropriate URLs or hosts to the custom allowlist in this repository's Copilot coding agent settings (admins only)
おお。ブロックされたホストとどのコマンドで起こったかが出てきてる。便利だ。
ちょっと手直しは必要だったが、ある程度想定通りのものを作ってくれて、動かすこともできた。
これはいいぞ。
ちな Claude Code Action にもやらせてみてる

MCP サーバー設定
何がほしいか?
Astro 公式のドキュメント MCP サーバがあった。
認証は必要ない。とりま設定する。どんなツールがあるかわからん!今回は雑に全許可する。
{
"mcpServers": {
"astro-docs": {
"tools": ["*"],
"type": "http",
"url": "https://mcp.docs.astro.build/mcp"
}
}
}

考え

思ったこと
- まあまあセキュアかも
- ネットワーク
- デフォルトで必要なホストのみを許可したファイアウォールがかかっているので、基本的に外部へのアクセスは明示的に許可が必要
- ファイアウォールのブロックを PR 上で教えてくれるの便利
- シークレット
- GitHub Environments (copilot) 上に明示的に登録したシークレットのみアクセス可能
- コントロールしやすい
- GitHub Environments (copilot) 上に明示的に登録したシークレットのみアクセス可能
- GitHub Actions
- Coding Agent の作成コミットで GitHub Actions はトリガーされない仕様(fork 先からのプルリクと同じ感じ)なので、変なコードを提示されても自動で CI が実行されないのはとても嬉しい
- したがって、
.github/workflows
や.github/actions
への write を安心して許容できる
- ネットワーク
- カスタマイズしやすい
- MCP サーバ
- デフォルトで github, playwright mcp サーバが有効
- これは無効化できなそう
- ツールを disallow するのもできなさそう
- フロントエンド勢以外は無効化したいニーズがあるかも?
- stdin, sse, http 使える
- copilot environments シークレットをセキュアに渡して認証できる
- OAuth は無理(しゃーなし)
- 自動化できる動的なトークンの利用は可能
- copilot-setup-steps.yml を利用することで、例えば AWS の OIDC で認証して環境変数に入れておくという感じで MCP サーバに動的なトークンを渡せる(参考)
- デフォルトで github, playwright mcp サーバが有効
- copilot-setup-steps.yml
- github actions の記法ができるので作りやすい
- 細かい仕様の違いはあるので注意だけど
- github actions から普通に実行できるので、CI で環境構築のみテスト可能なのは嬉しい
- github actions の記法ができるので作りやすい
- MCP サーバ
- 便利
- ログが読みやすい。専用 UI でずるい
- ログに MCP サーバのセットアップや copilot-setup-steps.yml
- スクショ撮ってくれてさらにプルリクに貼ってくれて良い
- ファイアウォールのブロックを PR 上で教えてくれるのとても良い
- コスト
- 1 セッションでプレミアムリクエスト 1 消費はとても安いと思う
- GitHub Actions の実行時間は課金される
- Claude Code Action との比較
- とにかくセットアップが楽
- MCP サーバや環境構築が楽チン
- 敷居が低い
- 業務フローへの組み込みはむずい
- Issue assign 駆動なので、例えば定期的にドキュメントを更新させるとか、プルリクを自動でレビューさせるとか、そういう用途での利用はむずい
- まあレビューは別機能があるし、棲み分けしているのだろう
- Issue assign 駆動なので、例えば定期的にドキュメントを更新させるとか、プルリクを自動でレビューさせるとか、そういう用途での利用はむずい
- 質問用途では使えない
- 必ず PR を作ってくる
- 頭の良さはあまり変わらない(主観)
- でもコミットメッセージは過去のコミットメッセージの形式をガン無視してくる。なんとかしてくれ
- Issue に対するプルリクを作らせるという点では Copilot Coding Agent に軍配が上がるかも
- とにかくセットアップが楽
- 懸念
- まだプレビュー段階

展開する上であると良さそうなもの
- 必須
- 利用ルール
- Firewall 機能を無効化しない
- 設定する MCP のツールを全許可(
*
)しない(要検討) - デプロイに関する認証情報を与えない
- 利用ルール
- 二の次
- 利用ガイド
- 軽い紹介
- 何者なのか
- どういう作業におすすめか
- 仕様
- copilot ライセンスがあって write 権限のある人は使えること
- issue にアサインする、作られた PR でメンションすることでのみ利用可能なこと
- デフォでファイアウォールがあること
- デフォはシークレットにアクセスできないこと
- その人のプレミアムリクエストを消費すること
- カスタマイズ方法
- MCP Server
- 事前インストール
- ネットワーク
- 各種ドキュメントへのリンク
- 軽い紹介
- 利用ガイド