PI DOCUMENTATION / 日本語
Pi を安全に実行する
モデルが生成したコマンドやコードは信頼できないものとして扱ってください。Pi は、Pi を起動したアカウントの権限でファイルの読み取り、変更、実行ができ、ツールを呼び出すたびに承認を求めることはありません。オペレーティングシステムまたは仮想化による境界で制限されていない限り、拡張機能、パッケージインストーラー、言語サーバー、その他の子プロセスも同じ権限で実行されます。
ファイル、コメント、指示、コマンド出力、モデルの応答は、プロンプトインジェクションによってモデルを誘導する可能性があります。プロジェクトの信頼設定は、起動時に読み込むプロジェクトリソースを制御しますが、そのコンテンツや結果として実行される操作の安全性を保証するものではありません。
安全性は、生成された操作が誤っている場合や悪意がある場合に、Pi がアクセスして影響を与えられるファイル、認証情報、プロセス、ネットワークサービスを制限することで確保します。トランスクリプトの監視、プロジェクトの信頼設定の使用、変更内容のレビューによってセキュリティ境界が形成されるわけではありません。
Pi の実行方法を選択する#
Pi の実行方法によって、生成されたコマンドがアクセスできる範囲の制限は異なります。
| Pi の実行方法 | 保護されるもの |
|---|---|
| オペレーティングシステムのユーザー権限で直接実行 | そのユーザーがアクセスできないすべてのもの。専用のユーザーアカウントを使用すると権限を絞り込めますが、Pi は引き続き他のユーザーとオペレーティングシステムおよびネットワークを共有します。 |
| コンテナ、仮想マシン、またはサンドボックス内だけで実行 | その環境に公開していないホストのファイルとプロセス。認証情報やネットワークサービスを環境内で利用可能にした場合、それらには引き続きアクセスできます。通常、これは実用上最も強力な選択肢です。 |
| Pi 自体は隔離環境の外で実行し、組み込みツールだけを隔離環境内で実行 | それらのツールを介して実行される操作からホストリソースが保護されます。Pi 自体とその他の拡張機能は境界の外に残るため、これはより限定的な隔離方法です。 |
作業フォルダーは、リソースの検出範囲とツールのデフォルトの実行場所を制御しますが、Pi プロセスがアクセス可能な他のパスにコマンドがアクセスすることを防ぐものではありません。
どの方法を選択する場合でも、タスクに必要なファイルとサービスだけを提供してください。可能であれば認証情報を環境の外に置き、そうでなければ範囲を限定した有効期間の短い認証情報を使用してください。コマンドがネットワークアクセスを必要としない場合は、ネットワークアクセスを制限してください。
セットアップ手順と各隔離方法の制限については、隔離環境で Pi を実行するを参照してください。
プロジェクトの信頼設定を理解する#
プロジェクトの信頼設定は、作業フォルダーが提供する設定やリソースの大部分を Pi が読み込むかどうかを制御します。これにより、承認する前にフォルダーから実行可能な拡張機能が暗黙に読み込まれることを防ぎます。
プロジェクトの信頼設定は、起動時の完全な境界ではありません。Pi は、プロジェクトの信頼設定を解決する前に、セッションを選択または作成する際、プロジェクトの sessionDir 設定を読み取ります。信頼しないことを選択すると、残りのプロジェクト設定と保護対象リソースは読み込まれませんが、この最初のセッションディレクトリの検索を取り消すことはできません。
プロジェクトの信頼設定は、ツール呼び出しがアクセスまたは影響できる範囲を制限しません。Pi の起動後も、有効なツールは Pi プロセスのオペレーティングシステム権限を使用します。フォルダー内の指示やその他のコンテンツもモデルに影響を与える可能性があります。
プロジェクトの信頼設定で保護されるリソース#
Pi は、現在の作業ディレクトリで次のいずれかのリソースを検出すると、プロジェクトを信頼するかどうかの決定を求めます。
.pi/settings.json.pi/mcp.json.pi/extensions、.pi/skills、.pi/prompts、または.pi/themes.pi/SYSTEM.mdまたは.pi/APPEND_SYSTEM.md- 現在のディレクトリまたは祖先ディレクトリにあるプロジェクトの
.agents/skills
.pi ディレクトリがあるだけでは、プロジェクトの信頼設定は必要ありません。
プロジェクトを信頼すると、Pi は次のものを読み込めるようになります。
- プロジェクト設定
.pi/mcp.jsonのプロジェクト MCP サーバー.pi配下の拡張機能、スキル、プロンプトテンプレート、テーマ、システムプロンプトファイル- プロジェクト設定で構成されている未インストールのパッケージ
- プロジェクトローカルおよびプロジェクトパッケージの拡張機能
プロジェクトを信頼しない場合、前述の最初の sessionDir の検索を除き、これらの保護対象リソースは読み込まれません。
コンテキストの読み込みを無効にしない限り、AGENTS.override.md、AGENTS.md、CLAUDE.md などのコンテキストファイルは、プロジェクトの信頼設定にかかわらず読み込まれます。プロジェクトを信頼しない場合でも、フォルダー内の指示は信頼できない入力として扱ってください。
Pi が信頼に関する決定を選択する方法#
コマンドラインの --approve または --no-approve による上書きが最初に適用されます。保護対象リソースが存在し、コマンドラインによる上書きがない場合は、次のように決定されます。
- ユーザーレベルおよびコマンドラインの拡張機能が
project_trustイベントを処理できます。最初に yes または no を返した拡張機能が決定権を持ちます。 - どの拡張機能も決定しない場合、Pi は現在のディレクトリまたはその親ディレクトリに保存された決定を検索します。最も近いディレクトリの決定が適用されます。
- 適用可能な保存済みの決定がない場合、Pi はグローバルな
defaultProjectTrust設定に従います。デフォルトは"ask"です。
保存された決定には正規化されたディレクトリパスが使用され、次の場所に保存されます。
~/.pi/agent/trust.json今後の Pi プロセス向けに決定を保存するには、/trust を使用します。
対話型プロンプトを使用しないプロジェクトの信頼設定#
Print、JSON、RPC モードでは、組み込みの信頼確認プロンプトを表示できません。コマンドラインによる上書き、拡張機能による決定、保存済みの決定のいずれも適用されない場合は、次のようになります。
defaultProjectTrust: "always"の場合、保護対象のプロジェクトリソースを読み込みます。defaultProjectTrust: "ask"または"never"の場合、それらを読み込みません。
自動実行で明示的な一回限りの決定が必要な場合は、--approve または --no-approve を使用します。
影響を軽減し、復旧を容易にする#
以下の対策は隔離の代わりにはなりませんが、リスクにさらされる範囲を縮小したり、復旧を容易にしたりします。
- タスクに必要なファイルとサービスだけに Pi がアクセスできるようにします。
- 大幅な変更を行う前に、スナップショット、バックアップ、またはバージョン管理を使用します。
- 拡張機能やパッケージを読み込む前にレビューします。拡張機能は Pi プロセス内で実行されます。
- 範囲を限定した有効期間の短い認証情報を優先します。
- 結果を別のシステムに適用する前に、差分と生成された出力をレビューします。
- セッションをエクスポートまたは共有する前にレビューします。セッションには、プロンプト、ツールの引数、コマンド出力、ファイルの内容、会話中に公開された認証情報が含まれる可能性があります。
セキュリティ問題を報告する#
リポジトリのセキュリティポリシーに従ってください。セキュリティ上機密性の高い報告について、公開 Issue を作成しないでください。
想定されるローカルエージェントの動作、信頼できないコンテンツからのプロンプトインジェクション、組み込みサンドボックスがないこと、およびユーザーがインストールした拡張機能やスキルによる動作は、権限境界の回避、またはローカルユーザーが元から持っていなかったアクセス権を報告によって実証できない限り、通常はセキュリティ境界の対象外です。