GitHub Copilotは、AIを活用したコード補完ツールとして、多くの開発者に利用されています。しかし、プロジェクト内の機密情報や特定のファイルがCopilotによって参照されることを避けたい場合があります。そのような場合に役立つのが「コンテンツの除外」機能です。この機能を活用することで、特定のファイルやディレクトリをCopilotの参照対象から除外し、セキュリティやプライバシーを確保できます。
なぜコンテンツの除外が必要か?
GitHub Copilot for BusinessやEnterpriseのユーザーは、プロンプトがサーバーに保存されず、暗号化されて送信されるため、一見するとセキュリティ上の問題は少ないように思えます。しかし、組織のポリシーや法的要件により、機密情報を外部サービスに送信すること自体が禁止されている場合があります。そのため、特定のファイルやディレクトリをCopilotの参照から除外することで、これらの要件を満たしつつ、Copilotの利便性を享受することが可能となります。

コンテンツの除外を試してみる
コンテンツ除外を構成できる人
コンテンツの除外設定は、リポジトリの管理者(Admin)および組織の所有者(Owner)が行うことができます。リポジトリ管理者は自身のリポジトリ内のコンテンツのみを除外でき、これはそのリポジトリで作業するすべてのCopilotユーザーに影響します。一方、組織の所有者は、組織全体のCopilotユーザーに対してコンテンツの除外を設定することができます。
除外設定の方法
コンテンツの除外設定は、リポジトリ単位または組織全体で行うことができます。以下に、具体的な設定例を示します。
リポジトリの設定例:
リポジトリ内の特定のファイルやパスを除外するには、リポジトリのSettings -> Copilotセクションから設定を行います。以下は、設定例です。
# リポジトリ内の特定のファイルを除外する
- "/src/some-dir/kernel.rs"
# リポジトリ内の任意の場所にある'secrets.json'という名前のファイルを除外する
- "secrets.json"
# リポジトリ内の任意の場所にある'秘密'で始まるすべてのファイルを除外する
- "secret*"
組織の設定例:
組織全体でのコンテンツ除外を設定するには、組織のSettings -> Copilot -> Content exclusionセクションから設定を行います。以下は、設定例です。
# 任意の場所にある特定のファイルを除外する
"*":
- "/src/some-dir/kernel.rs"
- "secrets.json"
- "secret*"
# 特定のリポジトリ内のすべてのファイルを除外する
"RepoXXX":
- "*"
これらの設定により、指定したファイルやパスがCopilotの参照対象から除外されます。

なお、設定に誤りがあると保存が出来ないのは地味に親切です。


設定後の挙動
コンテンツの除外設定が有効になるまでには最大で30分程度かかる場合があります。設定が適用されると、除外されたファイルに対してCopilotは以下のように応答します。
ファイルに関する質問:
- GitHub上の場合(例): 「ファイルSrc/Sample.pyの内容は、組織やリポジトリのポリシーにより処理できません。詳細についてはこちらをご覧ください。」
- IDE上の場合(例): 「ファイルの内容を確認するために、現在のアクティブなエディタのコードを共有してください。そうすれば、ファイルの概要を説明できます。」


リポジトリに関する質問:
- 「申し訳ありませんが、現在のワークスペースに関する情報が不足しているため、このリポジトリの詳細についてお答えすることができません。」

これらの応答により、Copilotが除外されたコンテンツにアクセスしていないことを確認できます。
コンテンツ除外によるデメリット
すべてのコンテンツを除外すると、Copilotが参照できる情報が制限されるため、提案精度が低下する可能性があります。そのため、除外するコンテンツは機密性の高いファイルやディレクトリに限定し、必要最低限に留めることが推奨されます。
まとめ
GitHub Copilotのコンテンツ除外機能は、機密情報や特定のファイルがAIによって参照されることを防ぎ、セキュリティやプライバシーを確保するための重要な手段です。
- GitHub Copilotのコンテンツ除外を設定すると、特定のファイルやディレクトリをCopilotの提案生成から除外できる。
- 機密情報や社内独自のコードの流出を防ぐために有効
- リポジトリ管理者や組織の所有者が設定可能で、監査ログにも記録される。
- 設定には最大30分の反映時間がかかることがある。
- 除外しすぎるとCopilotの精度が低下するため、必要最小限の範囲で適用するのが望ましい。

最後までご覧いただき、ありがとうございました。
コメント