Copilotコーディングエージェント は、コードにaccessを持ち、リポジトリに変更をプッシュできる自律エージェントです。 これには特定のリスクが伴います。
可能であれば、GitHub が適切な軽減策を適用しています。 これにより、 Copilotコーディングエージェント には、ベスト プラクティスのガイダンスに従って補足できる組み込みのセキュリティ保護の強力な基盤が与えられます。
未検証のコードによって脆弱性が発生する可能性があります
既定では、Copilotコーディングエージェント は、セキュリティの問題について生成されたコードをチェックし、Copilotコード レビュー を使用してコードに関する第二の意見を得ます。 プル要求を完了する前に特定された問題の解決を試みます。 これにより、コードの品質が向上し、ハードコーディングされたシークレット、安全でない依存関係、その他の脆弱性などの問題が Copilotコーディングエージェント によって生成される可能性が低くなります。Copilotコーディングエージェント のセキュリティ検証には、 GitHub Secret Protection, GitHub Code Security, or GitHub Advanced Security ライセンス は必要ありません 。
-
**CodeQL** は、コードセキュリティの問題を特定するために使用されます。 - 新しく導入された依存関係は、GitHub Advisory Database に対してマルウェアアドバイザリ、および CVSS 評価が「高」または「重大」である脆弱性がないかどうか確認されます。
-
**Secret scanning** は、API キー、トークン、その他のシークレットなどの機密情報を検出するために使用されます。 - 実行された分析とCopilotコーディングエージェント によって実行されたアクションの詳細は、セッション ログで確認できます。 「GitHub Copilot のセッションを追跡する」を参照してください。
必要に応じて、Copilotコーディングエージェント で使用される 1 つ以上のコード品質およびセキュリティ検証ツールを無効にすることができます。 「GitHub Copilot コーディング エージェントの設定の構成」を参照してください。
Copilotコーディングエージェント はコード変更をリポジトリにプッシュできます
このリスクを軽減するために、GitHub:
-
**エージェントをトリガーできるユーザーを制限します。** Copilotコーディングエージェント を起動できるのは、リポジトリに書き込み権限を持つユーザーだけです。 書き込みaccessのないユーザーからのコメントは、エージェントには表示されません。 -
**エージェントがプッシュできるブランチを制限します。** Copilotコーディングエージェント には、単一ブランチにのみプッシュする機能があります。 既存のプル要求で `@copilot` をメンションすることによってエージェントがトリガーされると、Copilot はプル要求のブランチへの書き込みアクセス権を持っています。 それ以外の場合は、Copilot 用に新しい `copilot/` ブランチが作成され、エージェントはそのブランチにのみプッシュできます。 また、エージェントは、ブランチの保護と、作業リポジトリに必要なチェックの対象となります。 -
**エージェントの資格情報を制限します。** Copilotコーディングエージェント は、単純なプッシュ操作のみを実行できます。 `git push` や他の Git コマンドを直接実行することはできません。 -
**マージする前に人間によるレビューが必要です。** Copilotコーディングエージェント によって作成されたドラフト プル要求は、人間がレビューしてマージする必要があります。 Copilotコーディングエージェント は、プルリクエストを「確認の準備完了」としてマークできず、承認やマージもできません。 -
**GitHub Actions でのワークフローの実行について** 既定では、Copilotコーディングエージェントのコードが確認され、リポジトリへの書き込みアクセス権を持つユーザーが [ **ワークフローの承認と実行** ] ボタンをクリックするまで、ワークフローはトリガーされません。 必要に応じて、Copilot を構成することで、ワークフローを自動的に実行できるようにすることができます。 「[AUTOTITLE](/copilot/how-tos/use-copilot-agents/coding-agent/review-copilot-prs#managing-github-actions-workflow-runs)」を参照してください。 -
**Copilotコーディングエージェント に対してプルリクエストの作成を要求したユーザーがそれを承認することを防ぎます。** これにより、"必須の承認" ルールとブランチ保護での望ましい制御が維持されます。 「[AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets)」を参照してください。
Copilotコーディングエージェント は機密情報にアクセスできます
Copilotコーディングエージェント はコードやその他の機密情報にアクセスしており、誤った操作や悪意のあるユーザー入力により、情報が漏洩する可能性があります。
このリスクを軽減するために、GitHub は Copilotコーディングエージェントのインターネットアクセスを制限します。 「GitHub Copilot コーディング エージェントのファイアウォールのカスタマイズまたは無効化」を参照してください。
AI プロンプトはインジェクションに対して脆弱になる可能性がある
ユーザーは、Copilotコーディングエージェント に割り当てられた問題や Copilotコーディングエージェント に残されたコメントに、プロンプト挿入の形式として隠されたメッセージを含めることができます。
このリスクを軽減するために、GitHub は、 ユーザー入力を Copilotコーディングエージェント に渡す前に非表示の文字をフィルター処理します。たとえば、問題で HTML コメントとして入力されたテキストや pull request コメントが Copilotコーディングエージェント に渡されません。
管理者はエージェントの作業を見失う可能性があります
このリスクを軽減するために、Copilotコーディングエージェント は監査可能で追跡可能な設計になっています。
- CopilotコーディングエージェントのコミットはCopilotによって作成され、問題を割り当てた開発者やプルリクエストで変更を要求した開発者が共同作成者としてマークされます。 これにより、Copilotコーディングエージェント によって生成されたコードと、タスクを開始したユーザーを簡単に識別できます。
- セッション ログと監査ログ イベントは、管理者が使用できます。
- 各エージェントが作成したコミットのコミット メッセージには、コード レビューと監査のためのエージェント セッション ログへのリンクが含まれています。 「GitHub Copilot のセッションを追跡する」を参照してください。