Skip to main content

GitHub.com での GitHub Copilot クラウド エージェントの責任ある使用

          Copilot クラウド エージェントの目的、機能、制限事項を理解して、GitHub.comを責任を持って使用する方法について説明します。

          Copilot クラウド エージェント (以前の Copilot コーディング エージェント)についてGitHub.com

          Copilot クラウド エージェント は、 GitHubに統合された自律的で非同期のソフトウェア開発エージェントです。 エージェントは、問題または Copilot チャットからタスクを取得し、リポジトリを調査し、実装計画を作成し、ブランチでコードを変更できます。 差分を確認し、エージェントと一緒に反復作業を行って、準備が整ったらプルリクエストを作成できます。

          Copilot クラウド エージェント では、コードベースの調査、アプローチの計画、バグ修正、増分新機能の実装、プロトタイプ作成、ドキュメント、コードベースのメンテナンスなどのタスクなど、説明と構成に基づいて調整された変更を生成できます。 エージェントは、セッション中にフォローアップのプロンプトを使用したり、プルリクエストにコメントしたりすることで、フィードバックに基づいて反復を重ねることができます。

タスクの作業中、エージェントは一時的な開発環境にアクセスできます。ここで、コードを変更し、自動テストやリンターを実行できます。

エージェントはさまざまなプログラミング言語で評価されており、主に英語がサポートされています。

エージェントを使って、自然言語処理と機械学習を組み合わせてタスクを理解し、コードベースに変更を加えてタスクを完了することができます。 このプロセスは、いくつかの手順に分けることができます。

メモ

pull request を作成する前のコード変更の詳細な調査、計画、および反復は、Copilot クラウド エージェントのGitHub.comでのみ使用できます。 クラウド エージェント 統合 (Azure Boards、JIRA、Linear、Slack、Teams など) では、プル要求の直接作成のみがサポートされます。

プロンプトの処理

課題、プルリクエストのコメント、またはCopilotメッセージとしてCopilot チャットに提供されたタスクは、他の関連する文脈情報と組み合わせてプロンプトを生成します。 そのプロンプトは、処理のために大規模言語モデルに送信されます。 入力には、プレーンな自然言語、コード スニペット、または画像の形式を使用できます。

言語モデルの分析

次に、プロンプトは、大量のデータでトレーニングされたニューラル ネットワークである大規模言語モデルに渡されます。 言語モデルによって入力プロンプトが分析され、エージェントでタスクについて推論し、必要なツールを利用できるようになります。

応答の生成

言語モデルにより、プロンプトの分析に基づいて応答が生成されます。 この応答は、自然言語の提案とコードの提案の形式を取ることができます。

出力の形式

エージェントは、最初の実行を完了すると、エージェントが行った変更の概要を提供します。 プル要求が作成された場合、エージェントは pull request の説明を更新します。 エージェントにより、アクセスできなかったリソースに関する補足情報が追加されたり、解決する手順について提案されたりする場合があります。

セッション中にフォローアップ プロンプトを送信したり、pull request 内でコメントを付けたり、プル要求でエージェント (@copilot) を明示的にメンションしたりして、エージェントにフィードバックを提供できます。 そうすると、そのフィードバックはエージェントから言語モデルに再送信され、さらに分析されます。 エージェントは、フィードバックに基づいて変更を完了すると、更新された変更で応答します。

Copilotは、タスク解決に最も関連するソリューションを提供することを目的としています。 ただし、お探しの回答が必ず提供されるとは限りません。 Copilotによって生成された応答が正確かつ適切であることを確認するには、その応答を確認し、検証する必要があります。

さらに、 GitHub は製品開発プロセスの一環として、エージェントの安全性を理解し、改善するためにレッドチーミング(テスト)を行います。

パフォーマンスを向上させる方法については、以下の「Copilot クラウド エージェントのパフォーマンスの向上」を参照してください。

のユース ケース Copilot クラウド エージェント

タスクは、次のようなさまざまなシナリオで Copilot に委任できます。ただし、これらに限定されません。

  •         **詳細な調査:** コードベースのしくみ、変更する場所の特定、または前提条件の確認。
    
  •         **計画:** 変更を加える前に実装計画を作成する。
    
  •         **コードベースのメンテナンス:** セキュリティ関連の修正、依存関係のアップグレード、対象となるリファクタリングに取り組む。
    
  •         **ドキュメント:** ドキュメントの更新と新規作成。
    
  •         **機能開発:** 機能リクエストの段階的な実装。
    
  •         **テスト範囲の改善:** 品質管理用の追加のテスト スイートの開発。
    
  •         **新しいプロジェクトのプロトタイプ作成:** 新しい概念のグリーンフィールド開発。
    

          Copilot クラウド エージェント のパフォーマンスを向上させる

          Copilot クラウド エージェント は、さまざまなタスクをサポートできます。 エージェントのパフォーマンスを高め、その制限に対処するために、さまざまな対策を講じることができます。

制限事項の詳細については、Copilot クラウド エージェントの制限事項 (以下) を参照してください。

タスクのスコープを適切に設定する

          Copilot クラウド エージェント では、タスクの作業時にプロンプトがキー コンテキストとして利用されます。 エージェントに割り当てるプロンプトが明確であり、スコープが適切であるほど、より良い結果が得られます。 理想的なタスクには以下が含まれます。
  • 解決すべき問題または必要な作業の明確な説明。
  • 適切なソリューションのイメージに関する完全な受け入れ基準 (単体テストが必要かなど)。
  • 変更する必要があるファイルに関するヒントまたはポインター。

コンテキストを追加してエクスペリエンスをカスタマイズする

          Copilot クラウド エージェント は、提案された変更を生成するときに、プロンプト、コメント、リポジトリのコードをコンテキストとして活用します。 エージェントはセマンティック コード検索にもアクセスできます。これにより、テキストの完全一致だけでなく、意味に基づいて関連するコードを見つけることができ、タスクをより迅速に完了できます。

          Copilotのパフォーマンスを向上させるには、エージェントがプロジェクトを理解し、その変更をビルド、テスト、検証する方法を理解するのに役立つカスタム Copilot命令を実装することを検討してください。 詳しくは、「[AUTOTITLE](/copilot/tutorials/coding-agent/best-practices#adding-custom-instructions-to-your-repository)」の「リポジトリへのカスタム指示の追加」をご覧ください。

          Copilot クラウド エージェントのその他のカスタマイズについては、以下を参照してください。

* GitHub Copilot クラウド エージェントの開発環境のカスタマイズ * GitHub Copilot クラウド エージェントのファイアウォールのカスタマイズまたは無効化 * モデル コンテキスト プロトコル (MCP) を使用した GitHub Copilot クラウド エージェントの拡張

          Copilot クラウド エージェントを代わりではなくツールとして使用する

          Copilot クラウド エージェントはコードとドキュメントを生成するための強力なツールですが、人間のプログラミングの代わりではなく、ツールとして使用することが重要です。 マージする前に、エージェントによって生成されたコンテンツを必ずレビューしてテストし、要件を満たしていること、エラーやセキュリティ上の懸念がないことを確認する必要があります。

セキュリティで保護されたコーディングとコード レビュー プラクティスを使用する

          Copilot クラウド エージェント構文的に正しいコードを生成できますが、常にセキュリティで保護されるとは限りません。 エージェントの制限に対処するには、ハードコーディングされたパスワードや SQL インジェクションの脆弱性を避け、コード レビューのベスト プラクティスに従うなど、安全なコーディングのベスト プラクティスに常に従う必要があります。 独自に作成していないマテリアルを使用するコードと同じ予防措置を、その適合性を確保するための予防措置を含め、常に講じる必要があります。 これには、厳密なテスト、IP スキャン、セキュリティの脆弱性の確認などが含まれます。

フィードバックを提供する

          Copilot クラウド エージェントのGitHub.comで問題や制限が発生した場合は、各エージェントの応答の下にあるサムダウン アイコンをクリックしてフィードバックを提供することをお勧めします。 これは、開発者がツールを改善し、懸念事項や制限事項に対処するのに役立ちます。 さらに、コミュニティ ディスカッション フォーラムでフィードバックを提供することもできます。

最新情報を入手する

          Copilot クラウド エージェント は新しいテクノロジであり、時間の経過と同時に進化する可能性があります。 新たに発生する可能性があるセキュリティ リスクやベスト プラクティスについては、常に最新の情報を入手する必要があります。

セキュリティ対策 Copilot クラウド エージェント

設計上、 Copilot クラウド エージェント には、データとコードベースのセキュリティを確保するために役立ついくつかの軽減策が組み込まれています。 軽減策は存在しますが、エージェントの制限とそれがコードに与える影響を理解しながら、セキュリティのベスト プラクティスを継続的に実装してください。

特権エスカレーションの回避

          Copilot クラウド エージェント は、リポジトリの書き込みアクセス権を持つユーザーからの対話 (エージェントの割り当てやコメントの割り当てなど) にのみ応答します。

          GitHub Actions
          Copilot クラウド エージェントによって発生したプル要求に応答してトリガーされるワークフローでは、実行前にリポジトリの書き込みアクセス権を持つユーザーからの承認が必要です。

エージェントは、GitHub.comに表示されない非表示の文字をフィルタリングします。そうでない場合は、ユーザーがコメント内に有害な指示を隠したり、本文の内容にそれらを含めたりすることができる可能性があります。 これにより、脱獄などのリスクから保護されます。

Copilotのアクセス許可の制約

Copilot は、動作しているリポジトリにのみアクセスでき、他のリポジトリにはアクセスできません。

アクセス許可は制限されており、コードのプッシュと他のリソースの読み取りのみを実行できます。 組み込みの保護は、Copilot が単一のブランチ ( @copilot経由でトリガーされた場合は既存のプル要求ブランチ)、それ以外の場合は新しい copilot/ ブランチにのみプッシュできることを意味します。 これは、Copilot が既定のブランチ (たとえば、 main) に直接プッシュできないことを意味します。

          Copilot クラウド エージェント は、実行時に Actions 組織またはリポジトリのシークレットまたは変数にアクセスできません。 
          `copilot` 環境に特別に追加されたシークレットと変数のみがエージェントに渡されます。

追跡可能性の確保

          Copilot クラウド エージェントのコミットはCopilotによって作成され、タスクを開始した人は共同著者としてマークされています。 これにより、エージェントによって生成されたコードと、タスクを開始したユーザーを簡単に識別できます。

各コミット メッセージには、エージェント セッション ログへのリンクが含まれています。 これにより、エージェントが作成したコミットから完全なセッション ログへの永続的なリンクが提供されるため、コード レビュー中に変更 Copilot 理由を理解したり、後で監査のためにトレースしたりできます。

データ流出の防止

既定では、 Copilot クラウド エージェント には、誤って、または悪意のあるユーザー入力が原因で、コードやその他の機密データを流出しないようにファイアウォールが有効になっています。

詳しくは、「GitHub Copilot クラウド エージェントのファイアウォールのカスタマイズまたは無効化」をご覧ください。

生成されたコードのセキュリティ脆弱性の防止

コード生成プロセス中に、 Copilot クラウド エージェント は新しく生成されたコードのセキュリティ脆弱性を自動的に分析し、それらを解決して、検出された問題が発生しないようにします。 分析は、次のツールとプロセスを使用して実行されます。

  •         **
            CodeQL
            **: 潜在的な脆弱性とエラーを特定するために実行されます。
    
  •         **
            Secret scanning
            **: 既知の種類のシークレットをスキャンして、応答でシークレットが導入されないようにします。
    
  •         **依存関係分析**: 新しいコードによって参照される依存関係は、 GitHub Advisory Databaseの既知の脆弱性をチェックします。
    

          Copilot クラウド エージェント の制限事項

コードベースや入力データなどの要因によっては、 Copilot クラウド エージェントを使用するときにさまざまなレベルのパフォーマンスが発生する場合があります。 次の情報は、システムの制限事項と、 Copilot クラウド エージェントに適用されるパフォーマンスに関する主要な概念を理解するのに役立ちます。

制限付きのスコープ

          Copilot クラウド エージェントによって使用される言語モデルは、コードの大規模な本文でトレーニングされていますが、まだスコープが限られており、特定のコード構造を処理したり、プログラミング言語を隠したりできない場合があります。 各言語で、受け取る提案の品質は、その言語のトレーニング データの量と多様性によって異なります。

潜在的なバイアス

          Copilot クラウド エージェントのトレーニング データと、大規模な言語モデルによって収集されたコンテキストで使用される言語モデルには、ツールによって永続化できるバイアスとエラーが含まれている場合があります。 さらに、 Copilot クラウド エージェント は、特定のプログラミング言語やコーディング スタイルに偏りがあり、最適ではない提案や不完全な提案につながる可能性があります。

セキュリティ リスク

          Copilot クラウド エージェント では、リポジトリ内の問題またはコメントのコンテキストに基づいてコードと自然言語が生成されます。これは、慎重に使用しないと機密情報や脆弱性が公開される可能性があります。 マージする前に、エージェントによって生成されたすべての出力を慎重にレビューする必要があります。

不正確なコード

          Copilot クラウド エージェント は、有効であるように見えるが、実際には意味的または構文的に正しくないか、開発者の意図を正確に反映していない可能性があるコードを生成する可能性があります。

不正確なコードのリスクを軽減するには、重要または機密性の高いアプリケーションを処理する場合は特に、生成されたコードを慎重に確認してテストする必要があります。 また、生成されたコードがベスト プラクティスと設計パターンに準拠し、コードベースの全体的なアーキテクチャとスタイル内に収まるように確認する必要もあります。

パブリック コード

          Copilot クラウド エージェント は、"公開コードに一致する提案" ポリシーが "ブロック" に設定されている場合でも、一致するコードまたは公開されているコードのほぼ一致するコードを生成する可能性があります。 「[AUTOTITLE](/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-your-copilot-plan/managing-copilot-policies-as-an-individual-subscriber#enabling-or-disabling-suggestions-matching-public-code)」を参照してください。

この場合、 Copilot は、一致したコードの詳細を表示するリンクと共に、エージェント セッション ログに一致するものを表示します。 詳しくは、「GitHub Copilot のセッションを追跡する」をご覧ください。

ユーザーは、AI サービスやソリューションを使用する際に、該当する法律や規制上の義務を評価する必要がありますが、すべての業界やシナリオに適しているとは限りません。 さらに、AI サービスまたはソリューションは、該当するサービス利用規約と関連する行動規範で禁止されている方法のために設計されておらず、そのような方法で使うこともできません。

Copilot クラウド エージェントとの外部統合

          Copilot クラウド エージェント は、Microsoft Teams、Linear、Slack、Jira などの外部アプリケーションから情報とコンテキストを受信できます。 これらのプラットフォームで外部アプリケーションに言及したり、接続されたワークフローを介してクラウド エージェントにタスクを割り当てたりすると、関連するコンテキスト (メンションされたスレッドの会話履歴や、問題の詳細やアクティビティのタイムラインなど) にアクセスできます。 これにより、クラウド エージェントは開発ニーズをより深く理解し、より関連性の高い支援を提供できます。 これらの統合により、チームはツールを切り替えることなく、コードで共同作業を行い、タスクを割り当て、既存のワークフロー内で直接進行状況を追跡できます。 チームが共有されている情報を理解し、組織のプライバシーとデータ処理ポリシーに従って統合を構成します。

          Copilot クラウド エージェントとの外部統合の詳細については、以下を参照してください。

* Copilot クラウド エージェントと Teams の統合 * Copilot クラウド エージェントと Linear の統合 * Copilot クラウド エージェントと Slack の統合