GitHub Copilotを使ってコーディングしていると、自分の書いたソースコードやプロンプトがAIの学習データに使われてしまうのではないかと不安になることってありますよね。会社の重要なコードや個人の機密情報が流出してしまっては大変です。
GitHub Copilotを学習させない設定は個人プランでもWebから簡単に行えますし、法人プランであれば最初から学習されないセキュアな設計になっています。この記事を読めば、オプトアウトの手順から企業で安全に使うための運用対策まで、不安をすっきり解消できるかなと思います。
- 個人プランと法人プランにおける学習設定の違い
- 自分のコードを学習させないための具体的な設定手順
- 特定ファイルのコンテキスト除外やドメイン遮断によるセキュリティ対策
- 著作権リスクを防ぐための重複フィルターと運用基準
GitHub Copilotを学習させないための基本知識
まずはCopilotがデータをどう扱っているのか、その基本的な仕組みから見ていきましょう。プランごとの違いや学習オフ時の動作を知っておくと、安心して開発に集中できるようになりますよ。
法人向けプランは自動で学習防止される仕組み
GitHub Copilot BusinessやEnterpriseといった法人向けプランでは、契約上およびシステム上で「送信されたデータをモデルの再学習に使用しない」という設計(デフォルト非学習)が徹底されています。
企業で利用する場合、管理者が特別な変更をしなくても、プロンプトやコードスニペットが推論処理の後に破棄される仕組みになっているので安心ですね。
具体的には、法人プランにおけるデータの取り扱い方針はデジタル庁や文部科学省などの公的機関が提示するガイドラインや、GitHub公式のデータ保護規約に基づいています。自社の知的財産権(IP)や機密データを第三者の学習データとして流用されない仕組みが標準で担保されているのは、企業導入における最大の強みと言えるでしょう。
ポイント:法人契約(Business / Enterprise)では、データ保護契約(DPA)に基づき、最初からデータがAIのトレーニングに使われないセキュアな構造になっています。
法人向けプランにおけるデータセキュリティの3大特徴
法人向けプランで学習が防止される背景には、単なる気休めではなくシステム構造上の理由が存在します。
- 推論後の即時破棄(No Data Retention):送信されたコードやプロンプトは、AI提案を生成した直後にメモリ上から削除されます。ログとして永続保存されることはありません。
- 組織単位での一括ガバナンス:Org(組織)の管理者がセキュリティポリシーを一元管理できるため、個々の開発者の設定漏れを未然に防止できます。
- 厳格な暗号化通信:クライアント(エディタ)からGitHubサーバーへの通信、および推論処理を行うクラウドインフラ間のデータ連携はすべてTLS 1.2以上で暗号化されています。
このように、法人向けサービスでは「そもそもデータを溜め込まない」設計が徹底されているため、企業秘密や顧客情報を取り扱うエンタープライズ領域でも安心して導入を進めることができる仕組みになっているわけです。
個人プランで学習させない設定手順とDisabled化
一方で、Free、Pro、Pro+、Maxなどの個人向けプランを利用している場合は注意が必要です。デフォルトでデータの学習利用が有効になっているため、手動でオプトアウト(Disabled化)を行う必要があります。
設定手順はとてもシンプルで、数分もあれば完了しますよ。
- WebブラウザでGitHubにログインし、右上のプロフィールアイコンから「Settings」を開きます。
- 左メニューの「Code, planning, and automation」セクション内にある「Copilot」を選択します。
- 「Privacy」項目の「Allow GitHub to use my data for AI model training」を確認します。
- ドロップダウンを選択し、「Disabled」(無効)に変更します。
- 画面下部の「Save」ボタンをクリックして設定を保存します。
これで、今後送信されるインタラクションデータがモデルの学習から除外されるようになります。
画面遷移の詳細と注意すべき設定項目
個人設定画面では、学習許可のほかにもプライバシーやプロンプトの取り扱いに関する選択肢が存在します。一度「Disabled」に変更した後は、再度ページを読み込んで設定状態が確実に更新されているか確認しておくのがおすすめです。アカウントを複数持っている開発者の方は、個人用アカウントと仕事用アカウントの切り替え忘れにも気をつけたいですね。
なお、Copilotの導入手順や他のCopilotプロダクトとの機能差異について詳しく知りたい方は、CopilotとChatGPTはどっちがいい?初心者向けに料金や機能を徹底比較!の記事も参考にしてみてください。
インタラクションデータと保存コードの違い
ここでよく勘違いされやすいのが、「リポジトリにあるファイル本体」と「エディタで操作中のデータ」の違いです。
プライベートリポジトリに保存されているコード自体(静止データ)は、どのプランであってもGitHubが無断で学習することはありません。学習対象となるのは、コーディング時やチャット時にリアルタイムで送受信される「インタラクションデータ(プロンプトやカーソル周辺のコード)」です。
| データ種別 | 内容 | 送信タイミング | 学習対象になるか(初期状態) |
|---|---|---|---|
| 静止データ(Data at Rest) | プライベートリポジトリ内のコード本体・コミット履歴 | Git push時など | 全プランで学習対象外 |
| インタラクションデータ(Data in Motion) | プロンプト、カーソル前後のコードスニペット、ファイルパス | キー入力・コード補完要求時 | 個人:対象 / 法人:対象外 |
静止データと動的データの境界線
GitHubの標準的な仕様として、リポジトリに置かれているコードそのものを巡回して勝手にAIの学習データセットに組み込むことはありません。問題になるのは、あくまで「エディタでコードを書いている最中に、補完精度の向上のためにクラウドへ送信されるデータ」です。
エディタ上のCopilotプラグインは、ユーザーが入力したコードのコンテキスト(前後の行や開いているタブのテキスト)を数キロバイト程度のスニペットとして切り出し、API経由で送信します。この送信データの扱いこそが、個人プランのデフォルトで「学習許可」になっている部分なのです。
したがって、「プライベートリポジトリだから安全」と思い込むのではなく、エディタからのリアルタイム送信データの取り扱いについて正しく理解しておくことが重要かなと思います。
学習させない設定でも機能や精度が低下しない理由
「学習させない設定(Disabled)にすると、コード補完の精度が落ちるのでは?」と心配になるかもしれませんが、まったく問題ありません。
この設定はあくまで「送信データを将来のモデル訓練セットに組み込むかどうか」を制御するだけのものです。リアルタイムのコード補完やCopilot Chatが文脈を読み取って提案する機能そのものは、従来通りの精度で動作してくれます。
推論処理(Inference)と学習処理(Training)の分離
なぜ精度が落ちないのかというと、AIにおける「推論(回答・補完の生成)」と「学習(モデルの更新)」は完全に独立したプロセスだからです。
推論と学習の違い:
・推論処理:入力されたプロンプトや前後のコードをもとに、学習済みモデルがリアルタイムで最適なコードを計算・出力する処理。
・学習処理:集まった膨大なデータを数週間〜数ヶ月かけて解析し、モデル自体のパラメータを更新する処理。
学習拒否(Disabled)にしても、推論時にあなたのコードの文脈(開いているファイルや関数の定義)をAIが一時的に参照する機能は維持されます。参照されたデータが「将来のモデル更新のためのデータベースに保存されない」だけなので、日々の開発における補完の賢さや回答の質には影響を与えません。
過去のデータを削除するためのプライバシー申請
オプトアウト設定は「設定した時点から将来」に向けて適用されます。そのため、過去に「Disabled」にする前へ送信されたデータが自動的に即時消去されるわけではありません。
もし過去の蓄積データも含めて消去したい場合は、GitHubのプライバシー窓口(GitHub プライバシーに関する声明(出典:GitHub公式ドキュメント))で案内されている手続きに沿って、個別サポートやプライバシー窓口へデータ削除の依頼を行う必要があります。
過去データの保持期間と削除依頼の具体的なステップ
GitHubの規約上、個人プランで収集されたインタラクションデータは暗号化された状態で一定期間保持される場合があります。気になる方は以下の手順で対応を進めましょう。
- GitHubのWebサイトから「Privacy Statement」ページにアクセスします。
- データ主体の権利(Data Subject Rights)に関する項目を確認します。
- GitHub Support(または指定のプライバシー連絡先)宛てに、アカウントに紐づく過去のCopilot利用データの削除リクエスト(Data Deletion Request)を送信します。
申請を行うことで、過去に蓄積されたプロンプトやテレメトリデータがサーバー側から完全に削除される手続きが進められます。社内セキュリティ規定などで過去のデータ残留も許容されない場合は、オプトアウト設定と合わせて実施しておくと万全ですね。
GitHub Copilotを学習させない設定と安全な運用
個人の学習オフ設定だけでなく、企業やチームで安全に運用するためにはもう少し踏み込んだ設定やネットワーク制御が欠かせません。実務で役立つ具体的な防御策を見ていきましょう。
パブリックコード一致フィルターの検知と設定
自社コードの学習防止と合わせて気をつけておきたいのが、他人のコード(オープンソースなど)との一致による著作権侵害リスクです。
GitHub Copilotには、生成したコードが既存のパブリックコードと約150文字以上一致する場合にそれを検知するフィルター機能が備わっています。
商用利用での推奨設定:
設定項目の「Suggestions matching public code」は原則として「Block」に設定しておきましょう。一致するコードの提案を自動遮断し、ライセンス汚染のリスクを未然に回避できます。
ライセンス感染(GPLなど)を回避する仕組み
パブリックコード一致フィルター(Duplication Detection Filter)を「Block」にしておくと、Copilotが提案を作ろうとした際に、GitHub上の公開リポジトリに存在する既存コードと一致する表現があった場合、その提案自体が自動的に却下されます。
もし「Allow」に設定していると、Copyleftライセンス(GPLなど)が適用されたオープンソースソフトウェアと同一のコードが生成されるリスクが生じます。社内プロダクトにGPLコードが混入すると、自社のソースコード全体を公開しなければならなくなる「ライセンス汚染」を引き起こす恐れがあるため、企業の商用利用では「Block」設定が必須の運用基準とされています。
機密ファイルを外すContent Exclusions
「学習されない設定」にしていても、特定の認証キーや決済ロジックなどはAIの推論処理自体に読み込ませたくない場合もありますよね。そんな時に便利なのが「Content Exclusions(コンテンツ除外)」機能です。
リポジトリの設定から対象ファイルを指定しておけば、Copilotの参照コンテキストから完全に除外できます。
たとえば、以下のような設定をリポジトリの「Content exclusion」に登録します。
/src/security/*
/src/payments/*
/.env
/*.pem
config/database.yml
これで機密性の高いファイルがAIの文脈解析に含まれなくなるため、セキュリティレベルを一段高めることができますね。
組織レベル・リポジトリレベルでのコンテキスト制御
Content Exclusions機能を使えば、ワイルドカード(`*`)を利用してパスや拡張子を指定できます。これにより、開発者が意図せず機密ファイルを開いたままコード補完を行ったとしても、Copilotはそのファイルを「見えなかったこと」として処理します。
| 指定例 | 対象範囲 | 効果 |
|---|---|---|
*.key, *.pem | 暗号化鍵・証明書ファイル | 秘密鍵情報がプロンプトに含まれるのを完全に阻止 |
/config/secrets.json | 特定の設定ファイル | APIキーやデータベース接続情報の読み込みを無効化 |
/docs/internal/* | 社内ドキュメントフォルダ | 仕様書や内部資料のテキスト解析をシャットアウト |
組織全体(Organization)の管理画面から共通のルールを適用できるため、プロジェクトごとに設定漏れが発生するリスクを防げる点も大きなメリットです。
エディタ設定で特定形式の補完を停止する方法
エディタ(VS Codeなど)側の設定でも、拡張子やファイルタイプごとにCopilotの補完をオフにすることができます。
settings.json に以下のような設定を入れることで、環境変数や設定ファイルを開いている時の予期せぬコード送信を防げますよ。
{
"github.copilot.enable": {
"*": true,
"plaintext": false,
"markdown": false,
"dotenv": false,
"yaml": false,
"json": false
}
}
エディタ側でのローカル制御のメリット
エディタ側の設定による制御は、サーバー側のContent Exclusionsに加えて「ローカルレベルでの二重の安全網」として機能します。
特に`.env`ファイルや`.yaml`といった環境設定ファイルは、秘密鍵やサーバーのIPアドレス、アクセス情報などが記述されやすい傾向にあります。これらを`false`に設定しておくことで、ファイルを開いた瞬間にキー入力をキャッチして通信が発生する挙動自体をローカルで遮断可能です。
チーム開発においては、プロジェクト内に`.vscode/settings.json`を配置してリポジトリ共有することで、メンバー全員のエディタ環境に対して統一されたセキュリティ設定を強制できます。
ドメイン遮断による個人アカウント混用の防止
企業でよくある問題が、組織のライセンスを付与し忘れた開発者が、個人のFreeアカウントのまま社内コードを書いてしまうケースです。個人アカウントのデフォルト設定で社内コードが送信されてしまうのは避けたいですよね。
この事態を防ぐには、企業のネットワーク(FWやSWG)側で通信先ドメインをフィルタリングするのが非常に有効です。
| 接続先FQDN | 対象プラン | 推奨ネットワーク制御 |
|---|---|---|
*.business.githubcopilot.com | Copilot Business | 許可(Allow) |
*.enterprise.githubcopilot.com | Copilot Enterprise | 許可(Allow) |
*.individual.githubcopilot.com | 個人向け(Free/Pro等) | 遮断(Deny / Block) |
個人向け通信(*.individual.githubcopilot.com)を遮断しておけば、仮に個人アカウントで利用しようとしても通信エラーになるため、社内からのデータ流出をインフラレベルで根絶できます。
プロキシやSecure Web Gateway(SWG)を用いたネットワーク制御
情シスやインフラ部門がプロキシサーバーやSWG(ZscalerやPalo Alto Networksなど)で上記のようなURLフィルタリングルールを定義すると、エディタからのリクエストヘッダーや宛先FQDNを識別して制御が実行されます。
これにより、万が一社員が個人のGitHubアカウントでエディタにログインし、会社のソースコードを開いてCopilotを動かそうとしても、通信が遮断されて補完機能が動作しません。人的ミスやシャドーITによる情報漏洩リスクをシステム的にブロックできるため、エンタープライズ領域の運用では強力なセキュリティ施策となります。
商用開発での知財保護と顧客著作権コミットメント
Microsoftは、Copilotの生成物に関して著作権侵害で訴訟された場合に補償を提供する「Customer Copyright Commitment(CCC)」を用意しています。
ただし、この権利を守るためには、パブリックコード重複フィルターを「Block」に設定するなど、サービス側のガードレールを正しく有効化して運用していることが条件となります。法的トラブルを回避するためにも適切な構成を維持しておきましょう。
著作権補償制度を受け取るための具体的要件
Customer Copyright Commitmentの対象となるためには、単にCopilotを有料契約しているだけでなく、以下の要件を満たして適切に利用していることが求められます。
- 重複フィルターの有効化:前述の「Suggestions matching public code」を「Block」に指定し、既存コードとの一致を検知・排除する状態にしていること。
- 指示(プロンプト)の正当性:他者の著作物を意図的に盗用・複製させるような悪意あるプロンプトを入力していないこと。
- 組み込みのガードレールの維持:GitHubが提供するセキュリティ機能やフィルターを解除・バイパスしていないこと。
これらの運用ルールを社内のAI利用ガイドラインに明記しておくことで、法的リスクに対する企業の防御力を飛躍的に向上させることができます。
生成コードの脆弱性を防ぐコードレビューの徹底
データ学習を無効化した環境であっても、AIが生成したコード自体のバグやハルシネーション(嘘の記述)のリスクはゼロになりません。
AIが出した提案をそのまま本番環境に組み込むのではなく、静的解析ツール(SAST)を通したり、エンジニアによるコードレビューを徹底したりする開発フローが引き続き重要になります。
Copilot運用におけるセキュアコーディングガイドライン
AI補完によって開発速度が大幅に向上する反面、レビューが雑になってセキュリティホールを見過ごしてしまう懸念もあります。安全な運用のために、チーム内で以下の原則を徹底するのが望ましいでしょう。
- 生成コードの全件レビュー:AIが出力したコードは「経験の浅いジュニアエンジニアが書いたコード」として扱い、必ず人間がロジックと安全性を確認する。
- 自動静的解析の導入:SonarQubeやSnykなどの静的解析ツールをCI/CDパイプラインに組み込み、脆弱性や非推奨のライブラリ使用を自動検知する。
- ユニットテストの追加:AIにテストコードを書かせる場合も、境界値や例外処理が正しく検証されているかをエンジニアがダブルチェックする。
ツールによる学習対策と人間によるコードレビューを組み合わせる「多層防御」こそが、AI時代における最も安全な開発スタイルです。
GitHub Copilotを学習させない運用まとめ
GitHub Copilotを安心・安全に使うためのポイントを改めてまとめます。
まとめポイント:
- 個人プランはWebの「Privacy」から「Disabled」に手動設定する
- 法人プラン(Business / Enterprise)は最初から非学習なので安全
- パブリックコード一致フィルターは「Block」にしてライセンス汚染を防ぐ
- 機密ファイルはContent Exclusionsやエディタ設定で参照させない
- 社内ネットワークで個人向けドメイン通信を遮断して混用を防ぐ
ツールの特性とデータ保護の仕組みを理解して適切に設定すれば、セキュリティを守りつつAIのパワーを最大限に活用できます。ぜひご自身のアカウントや組織の設定を見直してみてくださいね。
