【ITニュース解説】Classify Repo Paths Before Your First Agent Prompt
2026年10月10日に「Dev.to」が公開したITニュース「Classify Repo Paths Before Your First Agent Prompt」について初心者にもわかりやすく解説しています。
ITニュース概要
AIエージェント利用時、情報漏洩防止のためコード内のパス分類が重要だ。機密情報は「Forbidden」としAIに渡さない。「Sandbox」パスに限定し、事前にパス規則を定め運用することで安全に開発を進める。これにより、不注意な情報流出を防ぐことができる。
ITニュース解説
AIエージェントと呼ばれる技術は、ソフトウェア開発の現場でコードの修正やテストの実行などを自動的に手助けしてくれる強力なツールである。しかし、この便利なツールを安易に利用すると、思わぬ危険に直面する可能性がある。特に、まだよく知らないコードリポジトリに対してAIエージェントを使おうとするとき、誤って会社の機密情報や顧客データがAIのシステムに送られてしまうリスクが存在する。一度外部にアップロードされた情報は、無料のサーバーであっても、他者のコンピュータに保存され、データ保持ポリシーによっては、意図せず残ってしまう可能性もある。このような重大な情報漏洩を防ぎ、AIエージェントを安全に利用するための具体的な手順を、システムエンジニアの初心者が学ぶことは非常に重要である。
このリスクに対処するために、AIエージェントにコードを触らせる前に、リポジトリ内のすべてのファイルパスを明確に分類する作業が求められる。この分類によって、AIエージェントが「どのファイルを読んでも良いのか」「どのファイルを変更しても良いのか」「どのファイルは絶対に見せてはいけないのか」を厳密に定義できる。この作業は、例え1時間しかなくても、後に起こりうる大きな問題を防ぐための重要な「拒否」の姿勢を確立するものである。
分類には主に三つのカテゴリ(バケット)を使う。一つ目は「禁止(forbidden)」パスで、これはAIエージェントに絶対に見せてはならない、あるいはアップロードしてはならないファイルやディレクトリを指す。例えば、環境設定ファイル(.env)、APIキーや証明書ファイル(*.pem)、本番環境の設定ファイルなどはここに分類される。もし少しでも不安なパスがあれば、迷わず「禁止」にマークすることが賢明である。二つ目は「サンドボックス(sandbox)」パスで、AIエージェントが内容を読み取り、かつ変更を許される唯一の領域である。AIエージェントに修正させたいコードはこの領域に限定する。三つ目は「読み取り専用(read_only)」パスで、AIエージェントが内容を読み取ることは許されるが、変更は一切許されないパスである。例えば、README.mdやドキュメントディレクトリなどがこれに該当する。
この分類作業を実践するための具体的な手順は以下の通りである。
まず、ステップ1として、本番環境のリポジトリではなく、安全な「おもちゃのリポジトリ」を用意する。これはリードエンジニアが事前に承認したもので、誰もマージしないような一時的なブランチを作成して作業する。このおもちゃのリポジトリの中に、sandbox/、fixtures/secrets/、docs/といったディレクトリを作り、テスト用のファイルや、擬似的な機密情報を含む.envファイルなどを作成する。これらのサンプルファイルはあくまで演習用であり、実際の機密情報をコピーしてはいけない。演習が終われば、これらのファイルは速やかに削除する。
次にステップ2では、分類ルールを記述したファイルを作成する。このルールファイルは、通常path-map.txtといった名前のプレーンテキストファイルとして作成する。このファイルには、各パスがどのカテゴリに属するかを一行ごとに記述する。例えば、「forbidden:」の下に.envやfixtures/secrets/といったパスを、「sandbox:」の下にsandbox/を、「read_only:」の下にREADME.mdやdocs/を記述する。どのようなパスをどのカテゴリにするか、説明できないような漠然としたルールは「禁止」に分類し、サンドボックスの範囲を広げる前には必ず他のメンバーに相談することが重要である。
ステップ3では、作成したルールファイルに基づいて、ローカルでファイルパスを分類するスクリプトを実行する。このスクリプトは、リポジトリ内のすべてのファイルパスを読み込み、ルールファイルに従ってそれぞれのパスを「禁止」「サンドボックス」「読み取り専用」といったカテゴリに分類し、その結果を出力する。重要なのは、このスクリプトは外部のネットワークやAIエージェントとは一切通信せず、完全にローカルで実行される点である。
ステップ4として、スクリプトの実行結果である分類レポートを確認し、未分類のファイルがないことを保証する。レポートに「unmapped(未分類)」のファイルが存在する場合、それはルールファイルに漏れがあることを意味するため、AIエージェントにプロンプトを送る前にルールファイルを修正し、再度分類を実行する必要がある。また、「forbidden(禁止)」と分類されたファイルの数を確認し、意図しないファイルが禁止に含まれていないか、逆に含めるべきファイルが漏れていないかをチェックする。未分類のファイルが一つでもある限り、AIエージェントとの対話を開始してはならない。
ステップ5では、AIエージェントを実行する環境を慎重に選択する。会社のセキュリティポリシーが外部モデルの利用を禁止している場合は、自分の承認されたラップトップ以外でAIエージェントを動かしてはならない。ポリシーが外部のホスト型モデルの利用を許可している場合でも、それが無料サーバーであるならば、その利用規約とデータ保持ポリシーを十分に確認する。特に、顧客データや社内資料、給与ファイルなどの機密情報を無料サーバーにアップロードすることは絶対に避けるべきである。もしディスク上に実際の機密情報が存在するような状況であれば、AIエージェントを起動すること自体を中止し、まずはリーダーに相談する。
ステップ6は、AIエージェントに与える「プロンプト契約」を明確にすることである。AIにタスクを指示するプロンプトの前に、AIが行える具体的な操作範囲を明記する。例えば、「sandbox/hello.pyのみを編集する」「fixtures/secretsや.envファイルは開かない」「新しい依存関係を追加しない」「必要なファイルが未分類であれば停止する」といった具体的な制約を記述する。これにより、AIが与えられたタスクの範囲を超えて行動することを防ぎ、リポジトリ全体をスキャンするような要求は拒否する。
ステップ7では、AIエージェントによって行われた変更を元に戻す作業を行う。この演習の目的は、AIエージェントが加えた変更を安全に破棄できることを確認することであるため、AIによる修正をすぐにマージしてはならない。git restoreコマンドなどを使って、sandbox/hello.pyが元の内容に戻っているか、また、機密情報がコミット履歴に入っていないかを最終確認する。演習が終わったら、作成したブランチを完全に削除する。
最後のステップ8は、この演習の結果をリーダーに報告することである。分類レポートのカウント結果、拒否したパスのリスト、AIエージェントを実行したマシン、プロンプトが自分のラップトップから外部に出たかどうか、もし出たならばそのプロンプトの正確な契約内容などを簡潔にまとめた「領収書」のような形で報告する。プロンプトが外部に出なかった場合は、その旨を一行で明確に伝える。そして、もし分類に誤りがあった点があれば、次のタスクでそれを改善するためにどのバケットの定義が間違っていたかをリーダーと確認する。
このパス分類は強力な防御策ではあるが、完璧なセキュリティ境界ではないことも理解しておく必要がある。この分類はあくまでテキストファイルに基づいており、AIが貼り付けられたログなどから機密情報を推測する可能性は依然として存在する。また、このスクリプトはシンボリックリンクやサブモジュールを追跡しないため、ファイルがリネームされたり、別の方法で参照されたりした場合に見落とす可能性もある。最終的には、AIエージェントが作成した変更差分(diff)は、人間が慎重にレビューすることが必須である。無料のAIモデルやサーバーの提供条件は変化する可能性があるため、常に最新のサービス利用規約と社内のポリシーを確認し、矛盾がないことを確認しなければならない。この演習はシステムエンジニアとして、AIを安全に開発プロセスに組み込むための最初の一歩であり、本番環境の自動化をすぐに意図するものではない。これらの手順を着実に実行することで、AIエージェントの利用に伴うリスクを大幅に軽減し、より安全なソフトウェア開発を実践できる。