Copilot コーディングエージェント の概要
Copilot コーディングエージェント を使うと、GitHub Copilot はバックグラウンドで独立して動作し、人間の開発者と同じようにタスクを完了できます。
Copilot コーディングエージェント は次のことができます:
- バグを修正する
- 増分型の新機能を実装する
- テストのカバレッジを向上させる
- ドキュメントを更新する
- 技術的負債に対処する
タスクを Copilot コーディングエージェント に委任するには、次の操作を行います:
- GitHub Issues、Visual Studio Code、GitHub のすべてのページで使用可能なエージェント パネルなど、多くの場所から新しい pull request を開くように Copilot に依頼します。 「GitHub Copilot に pull request の作成を依頼する」を参照してください。
- 既存の pull request に対するコメントに
@copilotメンションして、変更を依頼します。 「既存の pull request に変更を加えるように GitHub Copilot に依頼する」を参照してください。 - セキュリティキャンペーンから Copilot にセキュリティアラートを割り当てます。 「AUTOTITLE」を参照してください。
Copilot コーディングエージェント は、割り当てられたタスクを、指定したプロンプト (問題の説明またはチャット メッセージ) に基づいて評価します。 次に、Copilot コーディングエージェント が必要な変更を行い、プルリクエストを開きます。 Copilot コーディングエージェント が完了すると、レビューを依頼されます。また、pull request のコメントを残して Copilot コーディングエージェント に反復作業を依頼することができます。
コーディング タスクの作業中に、Copilot コーディングエージェント は、GitHub Actions を利用して独自のエフェメラル開発環境にアクセスできます。この環境では、コードの探索、変更、自動テストやリンターの実行などを行うことができます。
従来の AI ワークフローと比べた場合の利点
Copilot コーディングエージェント を効果的に使うと、IDE の従来の AI アシスタントよりも生産性が向上します:
-
**IDE の AI アシスタント**を使うと、コーディングは**ローカル**で行われます。 個々の開発者は AI アシスタントと**同期**セッションで協力します。 セッション中に下された決定は**追跡されません**。また、コミットされない限り、時間の経過と共に失われます。 アシスタントはコードの記述を支援するものですが、開発者には他にも**手動の手順**が多数あります。具体的には、ブランチの作成、コミット メッセージの記述、変更のプッシュ、PR を開く、PR の説明の記述、レビューの取得、IDE での反復処理など、繰り返しなどが考えられます。 このような手順には時間と労力がかかるため、単純な issue や日常的な issue に対しては負担が見合わない場合があります。 -
**Copilot コーディングエージェント** を使うと、**GitHub** 上のすべてのコーディングと反復処理は、pull request ワークフローの一部として実行されます。 さまざまな種類のタスクに特化した複数の カスタム エージェント を作成できます。 Copilot を使うと、ブランチの作成、コミット メッセージの作成とプッシュ、PR を開く処理、PR の説明の記述を**自動化**できます。 開発者はエージェントを **バックグラウンドで作業** させ、PR レビューを使用して Copilot を最終的なソリューションに誘導します。 GitHub で作業すると、コミットで発生し、ログで表示できるすべてのステップで **透明性**が向上し、チーム全体の **コラボレーション** の機会が開かれます。
Copilot コーディングエージェント とエージェント モードの比較
Copilot コーディングエージェント は、ご自身の IDE で利用できる「エージェントモード」機能とは異なります。 Copilot コーディングエージェント は、GitHub Actions を利用した環境で自律的に機能し、GitHub の issue または GitHub Copilot チャット プロンプトを通じて割り当てられた開発タスクを完了し、結果を含む pull request を作成することができます。 これに対し、IDE のエージェント モードでは、ローカル開発環境で自律的な編集が直接行われます。 エージェント モードについて詳しくは、「IDE で GitHub Copilot に質問する」を参照してください。
Copilot コーディングエージェント を使用したソフトウェア開発の合理化
Copilot コーディングエージェント にタスクを割り当てることで、ソフトウェア開発ワークフローを強化できます。
たとえば、Copilot コーディングエージェント を割り当て、割り当て先として "Copilot" を選択することで、バックログ上の簡単な問題に割り当てることができます。 これにより、これらの問題に費やす時間を減らし、より複雑な作業や興味深い作業、または高度な創造的思考を必要とする作業に多くの時間を費やすことができます。 Copilot コーディングエージェント は、コードベースや製品の品質を向上させる「望ましい」課題に取り組むことができますが、多くの場合、より緊急な作業に集中している間はバックログに残り続けます。
Copilot コーディングエージェント を追加のコーディング リソースとして使用することで、リソース不足で開始できなかったかもしれないタスクを始めることも可能になります。 たとえば、コードをリファクタリングしたり、ログ記録を追加したりするための問題を作成し、すぐに Copilot に割り当てることができます。
Copilot コーディングエージェント はタスクを開始し、それを自分で引き継いで作業を続けることができます。 ユーザーは、新しいプロジェクトのスキャフォールディングの設定のような初期作業を Copilot に割り当てることで、そうしなければそれらの反復タスクに費やしたであろう自分の時間を空けることができます。
さまざまなタスクに特化した カスタム エージェント を作成できます。 たとえば、React コンポーネントとスタイルに焦点を当てたフロントエンド開発に特化した カスタム エージェント、技術ドキュメントの作成と更新に優れたドキュメント エージェント、包括的な単体テストの生成に特化したテスト エージェントを作成できます。 各 カスタム エージェント は、その特定のタスクに適したプロンプトとツールでカスタマイズできます。
Copilot コーディングエージェント の pull request 結果の測定
Enterprise 管理者と Organization 所有者は、Copilot 使用状況メトリクスを使用して、Copilot コーディングエージェント によって作成されたプル リクエストの結果を分析することができます。
Copilot 使用状況メトリック API には、次のようなプル リクエスト ライフサイクルのメトリックが含まれます。
- 作成およびマージされたプル要求の合計数
- Copilot コーディングエージェント によって作成され、マージされたプル リクエストの数
- Copilot コーディングエージェント によって作成されたプル リクエストを含む、マージされたプル リクエストのマージ時間の中央値
これらのメトリクスは、Copilot コーディングエージェント の導入を追跡し、プルリクエストのスループットやマージまでの時間の変化を時間の経過とともに監視するのに役立ちます。 「GitHub Copilot の使用状況メトリック」を参照してください。
Copilot コーディングエージェント とサード パーティ製ツールの統合
外部ツールから Copilot コーディングエージェント を呼び出すこともできます。これにより、タスクを Copilot に割り当て、コンテキストを提供し、ワークフローを終了せずに pull request を開くことができます。 「Copilot の統合について」を参照してください
Copilot コーディングエージェント を使用できるようにする
タスクを Copilot コーディングエージェント に割り当てるには、これを有効にする必要があります。
Copilot コーディングエージェント は、GitHub Copilot Pro、GitHub Copilot Pro+、GitHub Copilot Business、GitHub Copilot Enterprise プランで使用できます。
GitHub Copilot Business または GitHub Copilot Enterprise サブスクライバーがエージェントを使うには、事前に管理者が関連するポリシーを有効にする必要があります。
リポジトリの所有者は、Copilot コーディングエージェント から一部またはすべてのリポジトリをオプトアウトすることを選択できます。
詳しくは、「GitHub Copilot コーディング エージェントへのアクセスの管理」をご覧ください。
Copilot コーディングエージェント 用の AI モデル
Copilot コーディングエージェント タスクをどのように開始したかに応じて Copilot コーディングエージェント が使用するモデルを選択できる場合があります。 Copilot に与えるタスクの種類によっては、異なるモデルがより良いパフォーマンスを発揮したり、より役に立つ応答を提供したりすることがあります。
詳しくは、「GitHub Copilot コーディング エージェントの AI モデルの変更」をご覧ください。
リポジトリに関するCopilot コーディングエージェントの知識を強化する
リポジトリ内のコードや使用するツール、コーディングの基準とプラクティスについて、Copilot コーディングエージェント が詳しく知るほど、その効果がより一層発揮されます。 Copilot コーディングエージェントのリポジトリに関する知識を強化する方法は2つあります。
-
**カスタム手順**これらは、リポジトリに 1 つ以上のファイルとして書き込んで格納する、短い自然言語ステートメントです。 GitHub の組織の所有者である場合は、組織の設定でカスタム手順を定義することもできます。 詳しくは、「GitHub Copilot 応答のカスタマイズについて」をご覧ください。
-
**Copilot メモリ** (パブリック プレビュー)Copilot Pro または Copilot Pro+ プランがある場合は、Copilot メモリ を有効にすることができます。 これにより、Copilot は、リポジトリについて自ら導き出した有用な詳細情報を保存できるようになります。 Copilot コーディングエージェント は、そのリポジトリで作業しているときにこの情報を使用できます。 詳しくは、「GitHub Copilot のエージェンティック メモリについて」をご覧ください。
Copilot コーディングエージェント の使用コスト
Copilot コーディングエージェント では、GitHub Actions の分単位の時間と Copilot の Premium 要求が使われます。
GitHub Actions とプレミアムリクエストの月間使用枠内で、追加コストをかけずに、Copilot コーディングエージェント にコーディングタスクの処理を依頼することができます。
詳しくは、「GitHub Copilot ライセンス」をご覧ください。
Copilot コーディングエージェント のカスタマイズ
Copilot コーディングエージェント は、さまざまな方法でカスタマイズできます。
-
**カスタム命令**: カスタム命令を使用すると、Copilot にプロジェクトの追加コンテキストと、その変更をビルド、テスト、検証する方法を指定できます。 詳しくは、「[AUTOTITLE](/copilot/how-tos/configure-custom-instructions/add-repository-instructions)」をご覧ください。 -
**モデル コンテキスト プロトコル (MCP) サーバー**: MCP サーバーを使用すると、Copilot にさまざまなデータ ソースとツールへのアクセス権を付与できます。 詳しくは、「[AUTOTITLE](/copilot/how-tos/use-copilot-agents/coding-agent/extend-coding-agent-with-mcp)」をご覧ください。 -
**カスタム・エージェント**: カスタム・エージェント を使用すると、タスクごとに異なる特殊なバージョンの Copilot を作成できます。 たとえば、Copilot をチームのガイドラインに従ってカスタマイズし、エキスパートのフロントエンド エンジニアにすることができます。 詳しくは、「[AUTOTITLE](/copilot/concepts/agents/coding-agent/about-custom-agents)」をご覧ください。 -
**フック**: フックを使用すると、エージェントの実行中にキー ポイントでカスタム シェル コマンドを実行できるため、検証、ログ記録、セキュリティ スキャン、またはワークフローの自動化を追加できます。 詳しくは、「[AUTOTITLE](/copilot/concepts/agents/coding-agent/about-hooks)」をご覧ください。 -
**スキル**: スキルを使用すると、Copilot の能力を高め、命令、スクリプト、リソースを使用して特殊なタスクを実行できます。 詳しくは、「[AUTOTITLE](/copilot/concepts/agents/about-agent-skills)」をご覧ください。
組み込みのセキュリティ保護
他の AI エージェントと同様に、Copilot コーディングエージェント を有効にする場合、セキュリティは基本的な考慮事項です。 Copilot コーディングエージェント には、ベスト プラクティスガイダンスに従って補足できる組み込みのセキュリティ保護の強力な基盤があります。
-
* CodeQL は、コード セキュリティの問題を特定するために使用されます。**セキュリティの問題について検証**済み: Copilot は、 Copilot コーディングエージェント によって作成されたコードを分析してセキュリティの問題を検出し、プル要求を完了する前にそれらを解決しようとします。 これにより、Copilot コーディングエージェント によって生成されたコードによって、ハードコーディングされたシークレット、安全でない依存関係、その他の脆弱性などの問題が発生する可能性が低くなります。 実行された分析とCopilot コーディングエージェント によって実行されたアクションの詳細は、セッション ログで確認できます。 「[AUTOTITLE](/copilot/how-tos/use-copilot-agents/coding-agent/track-copilot-sessions)」を参照してください。- 新しく導入された依存関係は、GitHub Advisory Database に対してマルウェア アドバイザリ、および CVSS 評価が「高」または「重大」である脆弱性がないかどうか確認されます。
-
**Secret scanning** は、API キー、トークン、その他のシークレットなどの機密情報を検出するために使用されます。 - Copilot コーディングエージェント のセキュリティ検証には、 GitHub Secret Protection, GitHub Code Security, or GitHub Advanced Security ライセンス は必要ありません。
-
**既存のガバナンスに従う**: Organization の設定と Enterprise ポリシーによって可用性が制御されます。 Organization に設定されているセキュリティ ポリシーとプラクティスは、Copilot コーディングエージェント にも適用されます。 -
**制限付き開発環境**: Copilot コーディングエージェント は、ファイアウォールによって制御されるインターネット アクセスを備えたサンドボックス開発環境で動作します。 作業対象として割り当てられているリポジトリに対して読み取り専用アクセス権が付与されています。 -
**ブランチへの制限付きアクセス**: Copilot コーディングエージェント は、`copilot/` で始まるブランチにのみ作成とプッシュが可能です。 作業リポジトリのブランチ保護と必須チェックの対象となります。 -
**書き込みアクセス許可を持つユーザーにのみ応答**します: Copilot コーディングエージェント は、アクセス レベルの低いユーザーからのフィードバックには応答しません。 -
**外部コラボレーターとして扱われる**: Copilot コーディングエージェント によって提案されたドラフト プル要求では、アクション ワークフローを実行する前に、書き込みアクセス許可を持つユーザーによる承認が必要です。 Copilot コーディングエージェント は、pull request を「レビュー準備完了」としてマークできず、承認やマージもできません。 -
**コンプライアンスの追跡**: Copilot コーディングエージェント のコミットは、問題を割り当てた開発者または pull request に変更を要求した開発者によって共同作成され、提案された変更の属性を許可します。 Copilot に pull request の作成を依頼した開発者は、その pull request を承認できません。 承認を必要とするレビューがあるリポジトリにおいて、これにより、少なくとも 1 人の独立した開発者が Copilot コーディングエージェントの作業をレビューすることが保証されます。
詳細については、次を参照してください。 * Organization 内での GitHub Copilot コーディング エージェントのパイロット使用 (organization 所有者がセキュリティをさらに強化する方法に関する情報) * GitHub.com での GitHub Copilot コーディング エージェントの責任ある使用 * GitHub Copilot トラスト センター
リスクと軽減策
Copilot コーディングエージェント は、ユーザーのコードにアクセスして変更をリポジトリにプッシュできる自律的なエージェントです。 これには特定のリスクが伴います。 可能な場合は、GitHub によって適切な軽減策が適用されます。
リスク: Copilot コーディングエージェント は、コードの変更をリポジトリにプッシュすることができます
このリスクを軽減するため、GitHub は次のことを行います。
-
**Copilot コーディングエージェント にタスクを割り当てる権限のあるユーザーを制限します。** Copilot コーディングエージェント をトリガーできるのは、リポジトリへの書き込みアクセス権を持つユーザーだけです。 書き込みアクセス権限を持たないユーザーからのコメントは、エージェントに対して示されません。 -
**Copilot コーディングエージェント によって使用されるアクセス トークンのアクセス許可を制限します。** `copilot/` で始まるブランチに対してのみプッシュできます。 Copilot コーディングエージェント は、 `main` または `master` ブランチにプッシュできません。 -
**Copilot コーディングエージェントの資格情報の使用範囲を制限します。** Copilot コーディングエージェント は、単純なプッシュ操作のみを実行できます。 `git push` や他の Git コマンドを直接実行することはできません。 -
**GitHub Actions でのワークフローの実行について** Copilot コーディングエージェント のコードが確認され、リポジトリへの書き込みアクセス権を持つユーザーが [ **ワークフローの承認と実行** ] ボタンをクリックするまで、ワークフローはトリガーされません。 「[AUTOTITLE](/copilot/using-github-copilot/coding-agent/reviewing-a-pull-request-created-by-copilot)」を参照してください。 -
**Copilot コーディングエージェント に対して pull requests の作成を要求したユーザーがそれを承認することを防ぎます。** これにより、"必須の承認" ルールとブランチ保護での望ましい制御が維持されます。 「[AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets)」を参照してください。
リスク: Copilot コーディングエージェント は機密情報にアクセスできる可能性があります
Copilot コーディングエージェント は、コードやその他の機密情報にアクセスでき、誤って、または悪意を持ったユーザーによる入力によって漏洩する恐れがあります。 このリスクを軽減するため、GitHub は次のことを行います。
-
**Copilot コーディングエージェントのインターネットへのアクセスを制限します。** 「[AUTOTITLE](/copilot/customizing-copilot/customizing-or-disabling-the-firewall-for-copilot-coding-agent)」を参照してください。
リスク: プロンプト インジェクションの脆弱性
ユーザーは、Copilot コーディングエージェント に割り当てられた問題や Copilot コーディングエージェント に残されたコメントに、プロンプト挿入の形式として隠されたメッセージを含めることができます。 このリスクを軽減するため、GitHub は次のことを行います。
-
**Copilot コーディングエージェント にユーザー入力を渡す前に非表示の文字をフィルター処理**します。たとえば、問題で HTML コメントとして入力されたテキストや pull request コメントが Copilot コーディングエージェント に渡されません。
Copilot コーディングエージェント の制限
Copilot コーディングエージェント には、ソフトウェア開発ワークフローおよび他の機能との互換性に一定の制限があります。
Copilot コーディングエージェント のソフトウェア開発ワークフローにおける制限
-
**Copilot が変更を行えるのは、タスクを開始するときに指定されたリポジトリ内のみです**。 Copilot は、1 回の実行で複数のリポジトリ間で変更を加えることはできません。 -
**既定では、Copilot は、タスクの開始時に指定されたリポジトリ内のコンテキストにのみアクセスできます**。 Copilot MCP サーバーは、デフォルトで、Copilot が動作しているリポジトリ内のコンテキスト(例えば、問題や履歴プルリクエスト)にアクセスできるように構成されています。 ただし、ユーザーはさらに広範なアクセスを構成できます。 「[AUTOTITLE](/copilot/using-github-copilot/coding-agent/extending-copilot-coding-agent-with-mcp)」を参照してください。 -
**Copilot は、一度に 1 つの pull request しか開けません**。 Copilot は、割り当てられた各タスクを処理するために、pull request を厳密に 1 つだけ開きます。
Copilot コーディングエージェント の他の機能との互換性に関する制限事項
-
**Copilot は、リポジトリ用に構成できる特定の規則に準拠できません**。 Copilot コーディングエージェント と互換性のないルールセットやブランチ保護ルール(たとえば「署名されたコミットを要求する」ルール)を構成した場合、エージェントへのアクセスはブロックされます。 ルールセットを使用してルールが構成されている場合は、Copilot をバイパス アクターとして追加してアクセスを有効にすることができます。 「[AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/creating-rulesets-for-a-repository#granting-bypass-permissions-for-your-branch-or-tag-ruleset)」を参照してください。 -
**Copilot コーディングエージェント は、コンテンツの除外を考慮しません**。 コンテンツの除外を使うと、管理者は特定のファイルを無視するように Copilot を構成できます。 Copilot コーディングエージェント の使用時には、Copilot はこれらのファイルを無視せず、それを表示および更新できます。 「[AUTOTITLE](/copilot/managing-copilot/configuring-and-auditing-content-exclusion/excluding-content-from-github-copilot)」を参照してください。 -
**Copilot コーディングエージェントは、GitHub でホストされているリポジトリでのみ機能します**。 リポジトリが別のコード ホスティング プラットフォームを使用して格納されている場合、Copilot は操作できません。
ハンズオン プラクティス
Copilot コーディングエージェント の実践的な経験を積むには、「Copilot コーディングエージェント でチームを拡張するスキル演習」を試してください。
参考資料
-
「[AUTOTITLE](/copilot/using-github-copilot/coding-agent)」のハウツー記事 -
[AUTOTITLE](/copilot/concepts/agents/coding-agent/about-custom-agents) -
[AUTOTITLE](/copilot/responsible-use-of-github-copilot-features/responsible-use-of-copilot-coding-agent-on-githubcom)