Copilotコーディングエージェント の概要
Copilotコーディングエージェント を使うと、GitHub Copilot はバックグラウンドで独立して動作し、人間の開発者と同じようにタスクを完了できます。
Copilotコーディングエージェント は次のことができます:
- バグを修正する
- 増分型の新機能を実装する
- テストのカバレッジを向上させる
- ドキュメントを更新する
- 技術的負債に対処する
タスクを Copilotコーディングエージェント に委任するには、次の操作を行います:
- GitHub Issues、Visual Studio Code、GitHub のすべてのページで使用可能なエージェント パネルなど、多くの場所から新しい pull request を開くように Copilot に依頼します。 「GitHub Copilotにプルリクエストの作成を依頼する」を参照してください。
- 既存の 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を開いて説明文を書き、レビューを受け、IDEで反復処理を行い、それを繰り返す必要があります。 このような手順には時間と労力がかかるため、単純な issue や日常的な issue に対しては負担が見合わない場合があります。 -
**Copilotコーディングエージェント** では、すべてのコーディングと反復処理がプルリクエストワークフローの一部として **GitHub 上で** 実行されます。 さまざまな種類のタスクに特化した複数の カスタム エージェント を作成できます。 Copilot を使うと、ブランチの作成、コミット メッセージの作成とプッシュ、PR を開く処理、PR の説明の記述を**自動化**できます。 開発者はエージェントを **バックグラウンドで作業** させ、PR レビューを使用して Copilot を最終的なソリューションに誘導します。 GitHub に対して作業を行うと、すべてのステップがコミットで記録され、ログで確認できるため、<c0>透明性</c0>が追加され、チーム全体の<c1>協力の機会が広がります。
Copilotコーディングエージェント とエージェント モードの比較
Copilotコーディングエージェント は、ご自身の IDE で利用できる「エージェントモード」機能とは異なります。 Copilotコーディングエージェント は、GitHub Actionsを使用した環境で自律的に動作し、GitHub の課題や GitHub Copilot チャット 指示に基づいて割り当てられた開発タスクを完了し、その結果を反映したプルリクエストを作成します。 これに対し、IDE のエージェント モードでは、ローカル開発環境で自律的な編集が直接行われます。 エージェント モードの詳細については、「IDE で GitHub Copilot の質問をする」を参照してください。
Copilotコーディングエージェント を使用したソフトウェア開発の合理化
Copilotコーディングエージェント にタスクを割り当てることで、ソフトウェア開発ワークフローを強化できます。
たとえば、Copilotコーディングエージェント を割り当て、割り当て先として "Copilot" を選択することで、バックログ上の簡単な問題に割り当てることができます。 これにより、これらの問題に費やす時間を減らし、より複雑な作業や興味深い作業、または高度な創造的思考を必要とする作業に多くの時間を費やすことができます。 Copilotコーディングエージェント は、コードベースや製品の品質を向上させる「望ましい」課題に取り組むことができますが、多くの場合、より緊急な作業に集中している間はバックログに残り続けます。
Copilotコーディングエージェント を追加のコーディング リソースとして使用することで、リソース不足で開始できなかったかもしれないタスクを始めることも可能になります。 たとえば、コードをリファクタリングしたり、ログ記録を追加したりするための問題を作成し、すぐに Copilot に割り当てることができます。
Copilotコーディングエージェント はタスクを開始し、それを自分で引き継いで作業を続けることができます。 初期作業を Copilot に割り当てることで、新しいprojectのスキャフォールディングの設定など、繰り返し実行する作業に費やした時間を解放できます。
さまざまなタスクに特化した カスタム エージェント を作成できます。 たとえば、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 ビジネス、GitHub Copilot Enterprise プランで使用できます。
GitHub Copilot ビジネス または 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)」をご覧ください。 -
**Model Context Protocol (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コーディングエージェント は、ファイアウォールによって制御されたインターネットアクセスが可能なサンドボックス開発環境で動作します。 作業対象として割り当てられているリポジトリに対する読み取り専用のaccessがあります。 -
**ブランチへのアクセス制限**: Copilotコーディングエージェント は、`copilot/` で始まるブランチにのみ作成およびプッシュできます。 作業リポジトリのブランチ保護と必須チェックの対象となります。 -
**書き込みアクセス許可を持つユーザーにのみ応答します**: Copilotコーディングエージェント は、accessのレベルが低いユーザーからのフィードバックには応答しません。 -
**外部コラボレーターとして扱われる**: Copilotコーディングエージェント によって提案されたドラフト プル要求では、アクション ワークフローを実行する前に、書き込みアクセス許可を持つユーザーによる承認が必要です。 Copilotコーディングエージェント は、pull request を「レビュー準備完了」としてマークできず、承認やマージもできません。 -
**コンプライアンスの追跡**: Copilotコーディングエージェント のコミットは、問題を割り当てた開発者または pull request に変更を要求した開発者によって共同作成され、提案された変更の属性を許可します。 Copilot に pull request の作成を依頼した開発者は、その pull request を承認できません。 承認を必要とするレビューがあるリポジトリにおいて、これにより、少なくとも 1 人の独立した開発者が Copilotコーディングエージェントの作業をレビューすることが保証されます。
詳細については、次を参照してください。 * 組織内でGitHub Copilotコーディングエージェントを試行する (organization 所有者がセキュリティをさらに強化する方法に関する情報) * GitHub.com でのGitHub Copilotコーディング エージェントの責任ある使用 * GitHub Copilot セキュリティ センター
リスクと軽減策
Copilotコーディングエージェント は、コードにaccessを持ち、リポジトリに変更をプッシュできる自律エージェントです。 これには特定のリスクが伴います。 可能であれば、GitHub が適切な軽減策を適用しています。
リスク: Copilotコーディングエージェント は、コードの変更をリポジトリにプッシュすることができます
このリスクを軽減するために、GitHub:
-
**Copilotコーディングエージェント にタスクを割り当てる権限のあるユーザーを制限します。** Copilotコーディングエージェント を起動できるのは、リポジトリに書き込み権限を持つユーザーだけです。 書き込みaccessのないユーザーからのコメントは、エージェントには表示されません。 -
**Copilotコーディングエージェントによって使用されるアクセス トークンのアクセス許可を制限します。** `copilot/` で始まるブランチに対してのみプッシュできます。 Copilotコーディングエージェント は、 `main` または `master` ブランチにプッシュできません。 -
**Copilotコーディングエージェントの資格情報の使用範囲を制限します。** Copilotコーディングエージェント は、単純なプッシュ操作のみを実行できます。 `git push` や他の Git コマンドを直接実行することはできません。 -
**GitHub Actions でのワークフローの実行について** Copilotコーディングエージェント のコードがレビューされ、リポジトリに書き込みアクセスを持つユーザーが **Approve and run workflows** ボタンをクリックするまで、ワークフローはトリガーされません。 「[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 は、タスクの開始時に指定されたリポジトリ内のコンテキストのみをaccessできます**。 Copilot MCP サーバーは、Copilot が動作しているリポジトリ内のイシューや履歴のプルリクエストなどのコンテキストにアクセスできるように、デフォルトで設定されています。 ただし、より広範なaccessを構成できます。 「[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 をバイパス アクターとして追加して、accessを有効にすることができます。 「[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)