Open30

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

Futa HirakobaFuta Hirakoba

Concepts

Futa HirakobaFuta Hirakoba

About GitHub Copilot coding agent - GitHub Docs

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

内臓のセキュリティ保護機能

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

リスク

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 に渡されない
Futa HirakobaFuta Hirakoba

限界

  • ソフトウェア開発ワークフローにおける制限
    • 他のリポジトリに対する Read/Write は不可能
      • コメントされたリポジトリのみが対象
    • 一つのプルリクエストしか作れない
    • 自分が作成したものではない既存のプルリクエストに対して作業はできない
  • 他の機能との互換性の制限
Futa HirakobaFuta Hirakoba

About enabling GitHub Copilot coding agent - GitHub Docs

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

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 サーバ
    • デフォルトでは localhost127.0.0.1 のみアクセス可能
    • 2025/09/10追記)デフォルトでは〜みたいな書かれ方をしているが、設定変更はできなさそう
  • 2025/09/10追記)これらの MCP サーバの無効化をする方法はなさそう?

MCP サーバのセットアップ

  • リポジトリ管理者はそのリポジトリ内で使用する MCP サーバを設定できる
  • json 形式をサポート

ベストプラクティス

  • サードパーティの MCP サーバはパフォーマンスと出力の品質に影響を与える可能性がある。十分に検討し、要件を満たしていることを確認すること
  • デフォルトでは cca は MCP サーバの書き込み Tool はアクセスできない。使用する MCP サーバで使用可能なツールを確認し、必要なツールのみを使用して MCP 構成の tools フィールドを更新すること
Futa HirakobaFuta Hirakoba

Tutorials

Futa HirakobaFuta Hirakoba

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' のようにすると、マッチするファイルに対しての命令という扱いになる
  • MCP を使う
  • copilot の環境をカスタマイズする
    • copilot は github actions 上で動く。copilot-setup-steps.yml を設定することでこれをカスタマイズできる
    • 環境構築を意識させなくていいのと、高速化を見込める
Futa HirakobaFuta Hirakoba

Piloting GitHub Copilot coding agent in your organization

  • organization で cca を使う

1. 評価する

組織にどのように適合するか評価する。

  1. cca を有効化する前に、コスト、セキュリティ機能、他の AI ツールとの違いなどを学ぶ
  2. cca に最適なタスクを知る
  3. cca を組織のワークフローにおける他のツールとどのように組み合わせるか検討する

2. 安全

全ての AI モデルはミスを犯す可能性がある。ベスプラに従うことで、セキュリティを高める。

  1. copilot-instructions.md ファイルを使用して、Copilotがリポジトリで正常に動作するために必要な情報を与える
  2. copilot-setup-steps.yml ファイルを使用して開発環境をセットアップする
  3. シークレットを安全な方法で渡す
  4. cca の作る全ての PR が他のユーザーの承認を必要とするようにルールセットを設定する

3. パイロット

cca を効果的に導入するには試用が大事。

  1. 部門横断的なチームを集める。幅広い利用方法が検討できる
  2. リスクの低いリポジトリを選択する。playground もいいけど、成功にはコンテキストが必要なのでちゃんと使ってるリポジトリにする
  3. 2. で選んだリポジトリで cca を有効にし、オプションで 3rd party の mcp サーバーを有効化してコンテキスト共有を強化する
    • きば)いや、リポジトリで有効に〜って書いてあるけど、デフォルト全 org, repo で有効(ライセンシーが使える状態)になっちゃうよね
  4. カスタム命令書を作成し、必要なツールを事前にインストール
  5. テストカバレッジやアクセシビリティの向上に関するタスクを考える
  6. ベスプラを適用して issue を作成する
  7. issue に cca を割り当てる
  8. 続ける

試用期間中に利用を繰り返し、最大限活用する方法を特定する。プレミアムリクエスト消費についても学ぶ。

MCP で強化

  • cca は組み込みの github mcp サーバーを使用して、issue や pr など作業中のリポジトリの完全な github コンテキストにアクセスできる。デフォルトは認証とファイアウォールによって外部データへのアクセスは制限される
  • 組織で使用するローカル mcp サーバを使えるようにして、cca が利用できる情報を拡張する
    • 例:プロジェクト管理ツール(notion や figma など)
    • 例:トレーニングデータの追加(terraform doc や aws doc など)
Futa HirakobaFuta Hirakoba

How-tos

Futa HirakobaFuta Hirakoba

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 のエージェントパネル・エージェントページ

  1. プロンプトフィールドのメニューからリポジトリを選択
  2. リクエスト内容を入力
  3. ベースブランチを選択
  4. Start Task をクリックするか Return を押す

VSCode の Copilot Chat

  1. GitHub Pull Requests 拡張機能が必要
  2. Chat コンソールを開く
  3. Copilot に何をさせたいかのプロンプトと #copilotCodingAgent コンテキスト変数を渡す
  4. Copilot がコーディングエージェントを使うかどうか確認。よければ続行
  5. Copilot がローカルの変更をプッシュし、新しいセッションを開始、作成したプルリクエストへのリンクを返す。

きば:え、ローカルの変更をプッシュして作業するの?ここの挙動は気になる。

他の IDE の Copilot Chat

  • @github でプロンプトを渡すときにプルリク作成を依頼すると coding agent を使ってくれる

GitHub.com の Copilot Chat

  1. github.com で copilot chat を開く
  2. プルリク作成を依頼するようなプロンプトを渡す

GitHub MCP Server

  1. GitHub 公式 MCP サーバーをインスコ
  2. create_pull_request_with_copilot ツールを使う

Raycast

省略

Futa HirakobaFuta Hirakoba

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 コメントで変更を追加させたりできる
Futa HirakobaFuta Hirakoba

Reviewing a pull request created by GitHub Copilot - GitHub Docs

copilot のプルリクに対するレビューについて。

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

Extending GitHub Copilot coding agent with the Model Context Protocol (MCP) - GitHub Docs

MCP に関する話。

MCP サーバーをリポジトリに追加

  1. リポジトリ設定を開く
  2. Code & automation -> Copilot -> Coding agent をクリック
  3. MCP 設定セクションで JSON を追加
  4. 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 サーバーの種類。localhttpsse
  • ローカルMCP固有キー
    • command: 起動コマンド
    • args: 起動コマンドに付与する引数
    • env: 環境変数
  • リモートMCP固有キー
    • url: MCP サーバーの URL
    • headers: リクエストに追加するヘッダ

Copilot environments の設定

cca が使えるシークレットをリポジトリごとに設定できる。
cca の設定ではなく Environments 側で設定する。

  1. settings を開く
  2. environments を開く
  3. copilot environments を作成する
  4. Add environments secret をクリック
  5. シークレット名に COPILOT_MCP_ で始まる名前をつけて値を追加する

MCP サーバー設定の検証

  1. 適当な Issue に Copilot を割り当てる
  2. セッションログを見る
  3. ログビューアの右上の ... をクリックし、verbose log を見る
  4. actions のログが出るので、Start MCP Servers を開く

組み込み GitHub MCP サーバーをカスタマイズする

組み込みの GitHub MCP サーバーはデフォルト有効で、リポジトリにスコープされたトークンで GitHub と通信する。
幅広く他リポジトリのデータにもアクセスさせたければ、PAT を与えられる。

  1. PAT を作る
  2. copilot environment で COPILOT_MCP_GITHUB_PERSONAL_ACCESS_TOKEN をシークレットとして追加する
Futa HirakobaFuta Hirakoba

Customizing the development environment for GitHub Copilot coding agent - GitHub Docs

cca の動作環境のカスタマイズについて。

動作環境にツールや依存関係をプリインストールする

.github/workflows/copilot-setup-steps.yml に GitHub Actions ワークフローファイルを追加することで、カスタマイズできる。
特別なワークフローファイルであるため、通常のワークフローファイルと仕様が異なる。

.github/workflows/copilot-setup-steps.yml
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/checkoutfetch-depth はいい感じに上書きされる
  • もし 0 以外の終了コードを返して失敗した場合、copilot は残りのセットアップ手順をスキップして既存の環境で作業を開始する

Larger runner を使う

  • runs-on で指定すれば使える。ファイルがそもそも存在しない場合はデフォルトの ubuntu runner を使う
  • Ubuntu x64 Linux ランナーのみサポートしている
  • セルフホストランナーはサポートしていない

Git LFS を使う

actions/checkout ステップを copilot-setup-steps ジョブに追加し、with.ltstrue にする。

Futa HirakobaFuta Hirakoba

Customizing or disabling the firewall for GitHub Copilot coding agent - GitHub Docs

  • cca はデフォルトでインターネットアクセスを強く制限している。
  • デフォルトのファイアウォールルールは copilot が github とのやりとり、依存関係解決に使用する多くのホストへのアクセスを許可している。
  • copilot のリクエストがブロックされた場合、プルリク本文やコメントに警告が追加される
    • 警告にはブロックされたアドレスとリクエストに関わるコマンドが表示される

許可ホストを追加する

  1. リポジトリ設定から cca 設定に行く
  2. Custom allowlist をクリック
  3. 許可リストに含めたいアドレスを追加する
    • ドメイン: packages.contoso.corp
    • URL: https://packages.contoso.corp/project-1
      • スキーマ(https)、ホスト(packages.contoso.corp)、パス(/project-1)と子孫パスに制限される
        • つまり、https://packages.contoso.corp/project-1/tags/latest も許可される
  4. ルールを追加して保存

デフォルト許可リストを上書きする

全てを自分で管理したい場合はデフォルトの許可リストを無効にできる。Recommended allowlist をオフにする。

ファイアウォールを無効にする

Enable firewall をオフにする。推奨しない。

Futa HirakobaFuta Hirakoba

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

https://github.com/korosuke613/homepage-2nd で試す。

Futa HirakobaFuta Hirakoba

各種設定を考える。


デフォルト設定: https://github.com/korosuke613/homepage-2nd/settings/copilot/coding_agent

  • Copilot cofing agent
    • Internet access
      • Enable firewall: On
      • Recommended allowlist: On
      • Custom allowlist: 空
        • これは都度追加するのがいいかも
    • Model Context Protocol (MCP)
      • {"mcpServers": {} }
        • この後考える
  • Environments / Configure copilot
    • Environment secrets: 空
      • これも見つけ次第追加したい
  • .github/workflows/copilot-setup-steps.yml: 無し
    • 環境構築はしたい

まずは.github/workflows/copilot-setup-steps.ymlと MCP サーバを整備したい。

Futa HirakobaFuta Hirakoba

.github/workflows/copilot-setup-steps.yml を追加

korosuke613/homepage-2nd の CI ワークフローを元に事前に必要なツールのインスコを考える。

特徴

  • npm の依存関係をインストールしてる
  • Astro のキャッシュを保持してる
  • Vitest のキャッシュを保持してる
  • Playwright のキャッシュを保持してる
  • Playwright を事前にインストールしている

これらを盛り込んで、ローカルでのビルド、静的解析、テストなどを cca が簡単にできるようにする。

ci: Copilot coding agent用の環境構築ワークフローを追加 by korosuke613 · Pull Request #1144 · korosuke613/homepage-2nd

.github/workflows/copilot-setup-steps.yml
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 秒でジョブが完了。動いてる。ていうか思ったより速いな。

Futa HirakobaFuta Hirakoba

動作確認(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秒かかった。

https://github.com/korosuke613/homepage-2nd/pull/1146


スクショ貼られててビビる

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:

おお。ブロックされたホストとどのコマンドで起こったかが出てきてる。便利だ。

ちょっと手直しは必要だったが、ある程度想定通りのものを作ってくれて、動かすこともできた。
これはいいぞ。


ちな Claude Code Action にもやらせてみてる

Futa HirakobaFuta Hirakoba

考え

Futa HirakobaFuta Hirakoba

思ったこと

  • まあまあセキュアかも
    • ネットワーク
      • デフォルトで必要なホストのみを許可したファイアウォールがかかっているので、基本的に外部へのアクセスは明示的に許可が必要
      • ファイアウォールのブロックを PR 上で教えてくれるの便利
    • シークレット
      • 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 サーバに動的なトークンを渡せる(参考
    • copilot-setup-steps.yml
      • github actions の記法ができるので作りやすい
        • 細かい仕様の違いはあるので注意だけど
      • github actions から普通に実行できるので、CI で環境構築のみテスト可能なのは嬉しい
  • 便利
    • ログが読みやすい。専用 UI でずるい
    • ログに MCP サーバのセットアップや copilot-setup-steps.yml
    • スクショ撮ってくれてさらにプルリクに貼ってくれて良い
    • ファイアウォールのブロックを PR 上で教えてくれるのとても良い
  • コスト
    • 1 セッションでプレミアムリクエスト 1 消費はとても安いと思う
    • GitHub Actions の実行時間は課金される
  • Claude Code Action との比較
    • とにかくセットアップが楽
      • MCP サーバや環境構築が楽チン
      • 敷居が低い
    • 業務フローへの組み込みはむずい
      • Issue assign 駆動なので、例えば定期的にドキュメントを更新させるとか、プルリクを自動でレビューさせるとか、そういう用途での利用はむずい
        • まあレビューは別機能があるし、棲み分けしているのだろう
    • 質問用途では使えない
      • 必ず PR を作ってくる
    • 頭の良さはあまり変わらない(主観)
      • でもコミットメッセージは過去のコミットメッセージの形式をガン無視してくる。なんとかしてくれ
    • Issue に対するプルリクを作らせるという点では Copilot Coding Agent に軍配が上がるかも
  • 懸念
    • まだプレビュー段階
Futa HirakobaFuta Hirakoba

展開する上であると良さそうなもの

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