GitHub Copilot のプライバシーとデータ保護
GitHub Copilot は、提案を作るために、編集中のコードや周囲のファイルを参考にします。では、Copilot に読ませたくないファイルがある場合や、自分のデータを AI の学習に使われたくない場合は、どうすればよいのでしょうか。このページでは、そのための設定を整理します。
この記事で分かること
- 個人のアカウントでできる、プライバシーに関する設定
- コンテンツの除外(Copilot に読ませないファイルを指定する設定)の、効果と設定のしかた
- コンテンツの除外が使える機能と、効かない場面
- 設定がうまく働かないときの確認のしかた
試験範囲では、「プライバシー、コンテンツの除外、セーフガードを構成する」(比重 10〜15%)の分野にあたります。コンテンツの除外は、「GitHub Copilot の機能を使用する」(比重 25〜30%)の分野にも含まれています。
教材と現在の公式情報について
このページは、Microsoft Learn の教材(2024 年)と、GitHub の公式ドキュメント(2026 年 10 月に確認)の両方をもとにしています。両者に違いがある箇所は、その違いを本文に明記しています。Copilot は変更の多い製品なので、実際に設定するときは、最新の公式ドキュメントで確認してください。
用語の整理
| 用語 | 意味 |
|---|---|
| コンテンツの除外(content exclusion) | 指定したファイルを、Copilot が参照しないようにする設定 |
| リポジトリ(repository) | プロジェクトのファイルと、その変更の履歴をまとめて保管する場所 |
| 組織(organization) | 会社やチームで、GitHub を共有して使うための単位 |
| エンタープライズ(enterprise) | 複数の組織を、まとめて管理する単位 |
| シート(seat) | Copilot を使うための、1 人分の利用枠。組織が、メンバーに割り当てる |
| セマンティック情報(semantic information) | コードの意味に関する情報。変数や関数の型、定義の内容など |
| シンボリックリンク(symbolic link、symlink) | 別の場所にあるファイルやフォルダーを指し示す、特殊なファイル |
| fnmatch | ファイル名を、* などの記号を使ったパターンで指定する書き方 |
データを守るための設定は 2 種類ある
Copilot のデータに関する設定は、誰が設定するかによって、大きく 2 つに分けられます。
| 種類 | 設定する人 | 主な内容 | 使えるプラン |
|---|---|---|---|
| 個人の設定 | 利用者本人 | 自分のデータを AI の学習に使わせるかどうか、など | 個人向けのプラン(Free、Pro、Pro+、Max) |
| コンテンツの除外 | リポジトリの管理者、組織の所有者、エンタープライズの所有者 | Copilot に参照させないファイルの指定 | 企業向けのプラン(Business、Enterprise) |
データの保持期間や、保持されたデータの使われ方は、「GitHub Copilot の仕組みとデータフロー」で説明しています。
個人の設定
個人向けのプランの利用者は、GitHub の画面右上のプロフィール画像から「Copilot settings」を開いて、次の設定を変更できます。
| 設定の名前 | 内容 | 選べる値 |
|---|---|---|
| Allow GitHub to use my data for AI model training | 自分のやり取り(入力、出力、コードの一部、関連するコンテキスト)を、AI モデルの学習と改善に使わせるかどうか | Disabled を選ぶと、使われなくなる |
| Suggestions matching public code | 公開されているコードと一致する提案を、表示するかどうか | Allow(表示する)、Block(表示しない) |
| Copilot access to Bing | Copilot Chat が、質問に関連する情報をインターネットで検索できるようにするかどうか | Enabled、Disabled。既定は Disabled |
AI モデルの学習への利用
- 対象は、Free、Pro、Pro+、Max のプランです。公式ドキュメントでは、2026 年 4 月 24 日から、やり取りが AI モデルの学習と改善に使われることがある、と説明されています。
- 使われたくない場合は、設定を Disabled にします。
- 企業向けのプラン(Business、Enterprise)の利用者のデータは、学習には使われません。そのため、これらのプランでは、この設定そのものが表示されません。
公開されているコードと一致する提案
- Block を選ぶと、Copilot は、提案と、その前後の約 150 文字のコードを、GitHub で公開されているコードと照合します。一致するか、ほぼ一致する提案は、表示されません。
- Allow を選ぶと、一致する提案も表示されます。その場合、一致の詳細を確認して、該当するリポジトリを開けます。
- 組織からシートを割り当てられている利用者は、この設定を自分では変更できません。組織またはエンタープライズの設定が、そのまま適用されます。
この設定と、生成されたコードの権利については、「生成コードの著作権と安全対策」で詳しく扱っています。
コンテンツの除外とは
コンテンツの除外は、指定したファイルを、Copilot が参照しないようにする設定です。パスワードなどの秘密の情報を含むファイルや、社外に出せない重要なコードを、Copilot に読ませないために使います。
除外すると起きること
現在の公式ドキュメントでは、除外したファイルについて、次の 4 つが起きると説明されています。
| # | 起きること |
|---|---|
| 1 | 除外したファイルの中では、コード補完(インラインの提案)が表示されない |
| 2 | 除外したファイルの内容が、ほかのファイルでのコード補完の参考にされない |
| 3 | 除外したファイルの内容が、Copilot Chat の応答の参考にされない |
| 4 | 除外したファイルは、Copilot によるコードレビューの対象にならない |
教材(2024 年)には、1〜3 の 3 つが挙げられています。4 は、現在の公式ドキュメントで加わっている内容です。
除外には、引き換えがある
ファイルを除外すると、安全性は高まります。その一方で、Copilot が使えるコンテキストが減り、提案の質が下がることがあります。
たとえば、重要な設定ファイルを除外すると、その設定に依存するコードについて、Copilot は的確な提案をしにくくなります。どのファイルを除外するかは、安全性と使いやすさのバランスを考えて、慎重に決める必要があります。
誰が設定できるか
コンテンツの除外は、リポジトリ、組織、エンタープライズの設定画面からだけ指定できます。個人の設定画面からは指定できません。
| 設定する人 | 設定できる範囲 | 影響を受ける人 |
|---|---|---|
| リポジトリの管理者 | 自分のリポジトリ | そのリポジトリで作業する、エンタープライズ内の Copilot の利用者 |
| 組織の所有者 | 組織 | その組織から Copilot のシートを割り当てられている利用者 |
| エンタープライズの所有者 | エンタープライズ | エンタープライズ内の、すべての Copilot の利用者 |
教材(2024 年)には、リポジトリの管理者と、組織の所有者の 2 つが挙げられています。現在の公式ドキュメントでは、エンタープライズの所有者も設定できます。
設定のしかた
リポジトリで設定する
- GitHub で、リポジトリのメインページを開く
- 「Settings」を開く
- サイドバーの「Code, planning, and automation」にある「Copilot」を選び、「Content exclusion」を選ぶ
- 「Paths to exclude in this repository」の入力欄に、除外するファイルのパスを書く
パスは、1 行に 1 つずつ書きます。# で始まる行は、コメント(説明のための行)になります。
# このリポジトリの /src/some-dir/kernel.rs というファイルを除外する
- "/src/some-dir/kernel.rs"
# このリポジトリのどこにあっても、secrets.json という名前のファイルを除外する
- "secrets.json"
# 名前が secret で始まるファイルを、すべて除外する
- "secret*"
# 名前が .cfg で終わるファイルを、すべて除外する
- "*.cfg"
# /scripts ディレクトリと、その下にあるファイルを、すべて除外する
- "/scripts/**"パターンは fnmatch の書き方で指定します。大文字と小文字は区別されません。
| 書き方 | 意味 |
|---|---|
/ で始まるパス | リポジトリの最上位からの場所を指定する |
/ で始まらない名前 | リポジトリのどこにあっても、その名前のファイルを対象にする |
* | 任意の文字の並び。*.cfg は、.cfg で終わるすべてのファイル |
** | 任意の深さのディレクトリ。/scripts/** は、/scripts の下のすべて |
リポジトリが、上位の組織から除外の設定を引き継いでいる場合は、画面の上部に、その内容が灰色の枠で表示されます。引き継いだ設定は、リポジトリの画面では変更できません。
組織で設定する
- GitHub の画面右上のプロフィール画像から、「Organizations」を開く
- 組織を選び、「Settings」を開く
- 左のサイドバーで「Copilot」を選び、「Content exclusion」を選ぶ
- 「Repositories and paths to exclude」の入力欄に、除外の内容を書く
組織の設定では、どのリポジトリの、どのパスを除外するかを書きます。Git で管理されていない場所にあるファイルも、除外できます。
# すべての場所(Git で管理されていない場所も含む)で、.env ファイルを除外する
"*":
- "**/.env"
# この組織の octo-repo というリポジトリで
octo-repo:
# /src/some-dir/kernel.rs というファイルを除外する
- "/src/some-dir/kernel.rs"
# GitHub 上の primer/react というリポジトリで
https://github.com/primer/react.git:
# secrets.json という名前のファイルを、どこにあっても除外する
- "secrets.json"| 書き方 | 意味 |
|---|---|
"*": | すべての場所を対象にする |
リポジトリの名前や URL のあとに : | そのリポジトリを対象にする。続く行に、字下げして、除外するパスを書く |
エンタープライズで設定する
エンタープライズの所有者は、エンタープライズの画面の「AI controls」から「Copilot」「Content exclusion」を開いて、設定します。書き方は、組織の場合と同じです。
使える機能と、使えない機能
コンテンツの除外は、すべての機能で働くわけではありません。現在の公式ドキュメントに載っている、企業向けのプランでの対応状況です。
| ツール | コード補完 | チャットとエージェント |
|---|---|---|
| Visual Studio | 対応 | 対応 |
| Visual Studio Code | 対応 | チャット:対応。エディット:非対応。エージェント:非対応 |
| JetBrains の IDE | 対応 | 対応 |
| Vim / Neovim | 対応 | — |
| Xcode | 対応 | 非対応 |
| Eclipse | 対応 | 非対応 |
| Azure Data Studio | 非対応 | — |
| GitHub の Web サイト | — | 対応 |
| GitHub Mobile | — | 対応 |
GitHub の Web サイトでの、Copilot によるコードレビューにも、コンテンツの除外が適用されます。
次の点に注意が必要です。
- エディットモードとエージェントモードでは、働かない。 Visual Studio Code などのエディターで、Copilot Chat のエディットモードとエージェントモード(Copilot が複数の作業を自律的に進めるモード)を使う場合、コンテンツの除外は、現時点では対応していません。
- GitHub の Web サイトと GitHub Mobile では、試験提供の段階。 パブリックプレビュー(一般提供の前の試験的な提供)で、今後変わる可能性があります。
GitHub Copilot CLI の対応状況について
GitHub Copilot CLI については、公式ドキュメントの中で説明が食い違っています。考え方を説明するページの表では「対応」とされ、設定の手順を説明するページの注記では「対応していない」とされています。どちらが現在の正しい状態なのかは、確認できていません。CLI でコンテンツの除外に頼る場合は、実際に動作を確かめてください。
コンテンツの除外の制限
対応している機能を使っていても、除外したファイルの情報が、Copilot に伝わることがあります。
現在の公式ドキュメントに挙げられている制限
| 制限 | 内容 |
|---|---|
| セマンティック情報 | IDE が間接的に情報を提供する場合、Copilot が、除外したファイルのセマンティック情報を使うことがある。例:コードで使われている記号の型の情報、マウスを重ねたときに表示される定義、ビルドの設定などのプロジェクト全体の属性 |
| シンボリックリンク | シンボリックリンクには、コンテンツの除外が適用されない |
| リモートのファイルシステム | リモートのファイルシステム上にあるリポジトリには、コンテンツの除外が適用されない |
教材(2024 年)に挙げられている制限
| 制限 | 内容 |
|---|---|
| IDE の制限 | 一部の IDE では、Copilot Chat などの特定の機能を使っているときに、コンテンツの除外が適用されないことがある。例として、Visual Studio Code と Visual Studio で、質問に @github というチャット参加者を使った場合が挙げられている |
| セマンティック情報 | 現在の公式ドキュメントと同じ趣旨 |
| ポリシーの範囲 | コンテンツの除外の設定は、その設定を行った組織のメンバーにだけ適用される。そのファイルを見られるほかの人は、そのファイルを参照したコード補完や Copilot Chat の応答を、引き続き受け取れる |
「ポリシーの範囲」は、見落としやすい点です。コンテンツの除外は、ファイルへのアクセスそのものを禁止する仕組みではありません。対象の利用者について、Copilot がそのファイルを参照しないようにする仕組みです。
反映されるまでの時間と、確認のしかた
反映されるまでの時間
コンテンツの除外を追加したり変更したりしたあと、すでに設定を読み込んでいる IDE に反映されるまで、最大 30 分かかります。すぐに反映させたい場合は、IDE に設定を読み込み直させます。
| IDE | 読み込み直す方法 |
|---|---|
| Visual Studio Code | コマンドパレットを開き、「reload」と入力して、「Developer: Reload Window」を選ぶ |
| JetBrains の IDE、Visual Studio | アプリケーションを閉じて、開き直す |
| Vim / Neovim | ファイルを開くたびに、設定が自動で取得される |
除外が働いているかの確認
- 除外していないファイルを開いて、コードを編集する。提案が表示されることを確かめる
- 除外したファイルを開いて、同じように編集する。提案が表示されないことを確かめる
- Copilot Chat で、除外したファイルだけを開いた状態で、「このファイルを説明して」と尋ねる。除外されていれば、Copilot Chat はそのファイルを使えず、応答の参照先にも表示されない
教材(2024 年)では、ステータスバー(エディターの下端の表示欄)の Copilot のアイコンで確認する方法も紹介されています。ファイルにコンテンツの除外が適用されていると、アイコンに斜めの線が入ります。アイコンにマウスを重ねると、組織と上位のリポジトリのどちらが、そのファイルで Copilot を無効にしたのかが表示されます。
設定のために GitHub に送られる情報
コンテンツの除外を設定すると、Copilot の拡張機能などは、現在のリポジトリの URL を GitHub のサーバーに送ります。サーバーは、その URL をもとに、適用する設定を返します。公式ドキュメントでは、この URL はどこにも記録されない、と説明されています。
うまく働かないときの確認
教材(2024 年)で挙げられている、よくある問題と対処です。
コードの提案が表示されない
| 確認すること | 内容 |
|---|---|
| インターネットへの接続 | Copilot は、接続がないと動作しない |
| 拡張機能のバージョン | 古いバージョンでは、Copilot のサーバーとうまく通信できないことがある。最新版に更新する |
| IDE の対応状況 | 使っている IDE が、Copilot に対応しているかを確認する |
| コンテンツの除外の設定 | そのファイルが除外されていると、提案は表示されない。設定が意図どおりかを確認する |
コンテンツの除外が、期待どおりに働かない
| 原因 | 対処 |
|---|---|
| 反映が遅れている | 変更の反映には、最大 30 分かかる。すぐに反映させるには、IDE に設定を読み込み直させる |
| 適用される範囲が足りない | 設定は、その設定を行った組織のメンバーにだけ適用される。関係する人が、対象に含まれているかを確認する |
| IDE や機能の制限 | 機能によっては、コンテンツの除外が適用されない。制限を踏まえて、使い方を調整する |
提案の内容が、期待に合わない
| 対処 | 内容 |
|---|---|
| 明確なコンテキストを与える | 内容の分かるコメントを書き、意味の伝わる変数名を使う |
| Copilot のコマンドを使う | IDE によっては、特定の操作で提案を呼び出せる |
| プロンプトの長さを調整する | より詳しいプロンプトにすると、良い提案が得られることがある。長さを変えて試す |
プロンプトの工夫については、「プロンプトエンジニアリングの基本」で説明しています。
教材と、現在の公式情報の違い
| 項目 | 教材(2024 年) | 現在の公式ドキュメント |
|---|---|---|
| 除外すると起きること | 3 つ(補完が出ない、ほかのファイルの補完に使われない、Chat の応答に使われない) | 4 つ(左の 3 つに加えて、Copilot によるコードレビューの対象にならない) |
| 設定できる人 | リポジトリの管理者、組織の所有者 | リポジトリの管理者、組織の所有者、エンタープライズの所有者 |
| 機能による制限の例 | @github というチャット参加者を使った場合に、適用されない | エディットモードとエージェントモードで、対応していない |
| そのほかの制限 | セマンティック情報、ポリシーの範囲 | セマンティック情報、シンボリックリンク、リモートのファイルシステム |
| リポジトリの設定画面での入力欄の名前 | Repositories and paths to exclude | Paths to exclude in this repository |
訳語の違いに注意
日本語版の教材は機械翻訳です。英語とセットで覚えておくと安心です。
| 英語 | 日本語版の教材での表記 |
|---|---|
| Content exclusion | コンテンツの除外、コンテンツ除外 |
| Repository administrator | リポジトリ管理者 |
| Organization owner | 組織の所有者 |
| Semantic information | セマンティック情報 |
| Policy scope | ポリシーの範囲 |
| Code completion | コードの入力候補、コード補完 |
まとめ
- データを守るための設定には、利用者本人が行う「個人の設定」と、管理者が行う「コンテンツの除外」がある。
- 個人向けのプランでは、「Allow GitHub to use my data for AI model training」を Disabled にすると、自分のデータが学習に使われなくなる。企業向けのプランでは、もともと学習に使われない。
- コンテンツの除外を設定すると、対象のファイルでは補完が表示されず、その内容は、ほかのファイルの補完にも、Copilot Chat の応答にも使われない。
- コンテンツの除外は、企業向けのプランで使える。リポジトリの管理者、組織の所有者、エンタープライズの所有者が設定する。
- 除外には限界がある。エディットモードとエージェントモードでは働かない。セマンティック情報、シンボリックリンク、リモートのファイルシステムにも注意する。
- 変更の反映には、最大 30 分かかる。すぐに反映させるには、IDE に設定を読み込み直させる。
- 除外すると、Copilot が使えるコンテキストが減り、提案の質が下がることがある。
確認問題
このページの内容から作った、自作の問題です。実際の試験問題ではありません。選択肢を選んで「答えを確認する」を押すと、正解と解説が表示されます。
参考資料と確認の記録
- Content exclusion for GitHub Copilot(GitHub Docs)
- Excluding content from GitHub Copilot(GitHub Docs)
- 個人の Copilot の設定の管理(GitHub Docs)
- Management and customization considerations with GitHub Copilot(Microsoft Learn)
- GitHub Copilot での管理とカスタマイズに関する考慮事項(Microsoft Learn・日本語版)
- Study guide for Exam GH-300: GitHub Copilot(Microsoft Learn)
| 項目 | 内容 |
|---|---|
| 最終確認日 | 2026 年 10 月 11 日 |
| 検証の状況 | GitHub の公式ドキュメント(3 ページ)と、Microsoft Learn の教材(英語版と日本語版)の「コンテンツの除外を管理する」「よくある問題の解決」の単元と照合した。設定の画面を実際に操作しての確認は、行っていない |
| 公式の情報の中で食い違いがあり、確認できていない内容 | GitHub Copilot CLI がコンテンツの除外に対応しているかどうか(公式ドキュメントのページによって説明が違う) |
| 教材にだけ書かれていて、現在も当てはまるかを確認していない内容 | @github というチャット参加者を使った場合の制限。ステータスバーのアイコンに斜めの線が入ること |
| 変わる可能性がある内容 | 対応している機能の一覧、設定画面の項目の名前、試験提供の機能の扱い |
| このページで扱っていない内容 | エディターの設定は、別のページ(05)で扱う予定。公開されているコードとの一致と、生成されたコードの権利は、別のページ(14)で扱っている |