Pi の設定、拡張、プラットフォーム設定、API リファレンス。

安全

Pi はローカルコーディングエージェントです。これは、それを開始したユーザー アカウントのアクセス許可で実行され、そのユーザーが書き込み可能なファイルを同じローカル信頼境界内にあるものとして扱います。

プロジェクトトラスト

プロジェクトの信頼は、pi がプロジェクトのローカル設定、リソース、パッケージ、および拡張機能を読み込むかどうかを制御します。これは sandbox ではなく、ディレクトリでの作業を開始した後にモデルがツールに実行を要求できる内容を制限しません。

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
  • 拡張機能、スキル、prompt templates、テーマ、システム プロンプト ファイルなどの .pi リソース
  • プロジェクト設定で構成されたプロジェクト パッケージが見つからない
  • プロジェクトローカル拡張機能とプロジェクトパッケージ管理拡張機能

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

非対話型モード (-p--mode json、および --mode rpc) では、信頼プロンプトは表示されません。該当する保存された信頼決定がなければ、defaultProjectTrust: "ask""never" はそのようなリソースを無視しますが、"always" はそれらを信頼します。 --approve/-a または --no-approve/-na を使用して、1 回の実行に対してプロジェクトの信頼をオーバーライドします。

組み込みのサンドボックスなし

Pi には組み込みの sandbox が含まれません。組み込みツールは、pi プロセスの権限でファイルの読み取り、書き込み、編集、およびシェル コマンドの実行を行うことができます。 Extensions は、同じ権限で実行される TypeScript モジュールです。パッケージのインストール、シェル コマンド、言語サーバー、テスト コマンド、およびその他の開発者ツールは、通常のローカル プロセスとして動作します。

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

プロジェクトの信頼は入力読み込みのガードにすぎません。これにより、承認する前にリポジトリが pi の設定や拡張機能をサイレントに変更することを防ぎます。信頼できないコード、信頼できないプロンプト、または信頼できないモデル出力を安全にするわけではありません。リポジトリ ファイル、コメント、ドキュメント、context files、またはビルド出力からのプロンプト インジェクションは、ローカル エージェントのリスクが予期されており、pi によって確実に防止することはできません。

信頼できない作業または監視されていない作業の実行

信頼できないリポジトリ、厳密に監視する予定のない生成コード、または無人オートメーションの場合は、包含された環境で pi を実行します。タスクに必要なファイルと資格情報のみを備えたコンテナー、VM、マイクロ VM、リモート sandbox、またはポリシー制御された sandbox を使用します。

一般的なパターンは Containerization に記載されています。

  • コンテナ/sandbox 内で pi プロセス全体を実行します
  • 組み込みツールの実行を Gondolin マイクロ VM にルーティングしながらホスト pi を実行します
  • エージェントがアクセスする必要があるワークスペース パスのみをマウントします
  • コンテナがホストのセッション、設定、認証情報にアクセスする必要がない限り、ホスト ~/.pi/agent のマウントを回避します。
  • 必要最小限の API key を渡すか、有効期間が短い認証情報を使用してください
  • タスクが必要のない場合はネットワーク アクセスを制限する
  • 結果を信頼できるシステムにコピーする前に、差分と出力を確認します。

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

セキュリティ問題の報告

セキュリティ問題を報告するには、リポジトリ Security Policy をフォローしてください。セキュリティに敏感なレポートについては公開問題を開かないでください。

予想されるローカル エージェントの動作、組み込み sandbox の欠如、信頼できないコンテンツからのプロンプト インジェクション、およびユーザーがインストールした拡張機能やスキルの動作は、レポートが実際の権限境界バイパスを実証するか、ローカル ユーザーがまだ持っていないアクセスを pi がどのように許可するかを示す場合を除き、通常、セキュリティ境界の外側にあります。