コンテンツにスキップ

セキュリティ

Pi はローカルのコーディングエージェントです。起動したユーザーアカウントの権限で動作し、そのユーザーが書き込み可能なファイルを同一のローカル信頼境界内にあるものとして扱います。

プロジェクト信頼は、pi がプロジェクトローカルの設定、リソース、パッケージ、拡張機能を読み込むかどうかを制御します。これはサンドボックスではなく、ディレクトリで作業を開始した後にモデルがツールに何をさせるかを制限するものでもありません。

Pi は、現在の作業ディレクトリから以下のいずれかを見つけた場合、プロジェクトに信頼が必要なリソースがあると判断します:

  • .pi/settings.json
  • .pi/extensions.pi/skills.pi/prompts、または .pi/themes
  • .pi/SYSTEM.md または .pi/APPEND_SYSTEM.md
  • 現在のディレクトリまたは祖先ディレクトリ内のプロジェクト .agents/skills

空の .pi ディレクトリだけでは、信頼が必要なプロジェクトリソースとはみなされません。

信頼が必要なリソースを持つプロジェクトで対話セッションが開始され、現在のディレクトリまたは親ディレクトリに保存済みの決定がない場合、pi はグローバル設定の defaultProjectTrust に従います。デフォルト値は "ask" で、UI が利用可能な場合にプロジェクトを信頼するかどうかを尋ねます。保存された決定は ~/.pi/agent/trust.json に正規化ディレクトリごとに保存され、現在または親パス上の最も近い保存済み決定がグローバルデフォルトより先に適用されます。

プロジェクトを信頼すると、pi は以下を含む信頼が必要なプロジェクトリソースを読み込めます:

  • .pi/settings.json
  • 拡張機能、スキル、プロンプトテンプレート、テーマ、システムプロンプトファイルなどの .pi リソース
  • プロジェクト設定で構成された不足しているプロジェクトパッケージ
  • プロジェクトローカル拡張機能とプロジェクトパッケージ管理拡張機能

信頼を拒否すると保護されたリソースはスキップされます。AGENTS.mdCLAUDE.md コンテキストファイルは、コンテキスト読み込みが無効でない限り、プロジェクト信頼に関係なく読み込まれます。信頼が解決される前、pi はコンテキストファイル、ユーザー/グローバル拡張機能、CLI -e 拡張機能のみを読み込みます。ユーザー/グローバルおよび CLI 拡張機能は project_trust イベントを処理でき、yes/no 決定を返す最初の拡張機能が決定を所有します。

非対話モード(-p--mode json--mode rpc)では信頼プロンプトは表示されません。適用可能な保存済み信頼決定がない場合、defaultProjectTrust: "ask""never" はそのようなリソースを無視し、"always" はそれらを信頼します。1 回の実行でプロジェクト信頼を上書きするには --approve/-a または --no-approve/-na を使用します。

Pi には組み込みサンドボックスはありません。組み込みツールは pi プロセスの権限でファイルの読み取り、書き込み、編集、shell コマンドの実行ができます。拡張機能は同じ権限で動作する TypeScript モジュールです。パッケージインストール、shell コマンド、言語サーバー、テストコマンド、その他の開発者ツールは通常のローカルプロセスとして動作します。

これは意図的な設計です。Pi はローカルのソースツリーで動作し、プロジェクトのツールチェーンを呼び出し、ユーザーの既存の開発環境と統合するよう設計されています。部分的なプロセス内サンドボックスは、ホスト shell、ファイルシステム、パッケージマネージャー、認証情報、拡張機能コードに依存し続けながら、セキュリティ境界と誤解されやすくなります。真の分離はオペレーティングシステムまたは仮想化/コンテナ境界から得る必要があります。

プロジェクト信頼は入力読み込みのガードに過ぎません。承認前にリポジトリが pi の設定や拡張機能を静かに変更するのを防ぎます。信頼されていないコード、プロンプト、モデル出力を安全にするものではありません。リポジトリファイル、コメント、ドキュメント、コンテキストファイル、ビルド出力からのプロンプトインジェクションは、ローカルエージェントとして想定されるリスクであり、pi では確実に防げません。

信頼できない、または監視しない作業の実行

Section titled “信頼できない、または監視しない作業の実行”

信頼できないリポジトリ、密接に監視する予定のない生成コード、または無人自動化の場合は、pi を隔離された環境で実行してください。コンテナ、VM、マイクロ VM、リモートサンドボックス、またはタスクに必要なファイルと認証情報のみを持つポリシー制御サンドボックスを使用します。

一般的なパターンは コンテナ化 に記載されています:

  • コンテナ/サンドボックス内で pi プロセス全体を実行する
  • 組み込みツール実行を Gondolin マイクロ VM にルーティングしながらホスト pi を実行する
  • エージェントがアクセスすべきワークスペースパスのみをマウントする
  • コンテナがホストのセッション、設定、認証情報にアクセスすべきでない限り、ホスト ~/.pi/agent をマウントしない
  • 必要最小限の API キーを渡すか、短命の認証情報を使用する
  • タスクに不要な場合はネットワークアクセスを制限する
  • 信頼できるシステムに結果をコピーする前に diff と出力を確認する

ホストワークスペースを読み書き可能でバインドマウントすると、コンテナまたは VM 内からの書き込みがホストファイルを変更し得ます。意図しない書き込みからより強く保護する必要がある場合は、読み取り専用マウントを使用するか、ファイルをサンドボックスにコピーしてから戻してください。

セキュリティ問題を報告するには、リポジトリの Security Policy に従ってください。セキュリティに敏感な報告については公開 issue を開かないでください。

想定されるローカルエージェントの動作、組み込みサンドボックスの欠如、信頼できないコンテンツからのプロンプトインジェクション、ユーザーがインストールした拡張機能やスキルの動作は、報告が実際の権限境界バイパスを示すか、pi がローカルユーザーが既に持っていないアクセスを付与する方法を示す場合を除き、一般的にセキュリティ境界の外です。