コンテンツにスキップ

設定

Pi は JSON 設定ファイルを使用し、プロジェクト設定がグローバル設定を上書きします。

場所スコープ
~/.pi/agent/settings.jsonグローバル(すべてのプロジェクト)
.pi/settings.jsonプロジェクト(現在のディレクトリ)

直接編集するか、/settings で一般的なオプションを設定できます。

対話起動時、プロジェクトローカルの設定、リソース、またはプロジェクト .agents/skills を含むプロジェクトフォルダがあり、~/.pi/agent/trust.json にそのフォルダまたは親フォルダの保存済み決定がない場合、pi は信頼する前に確認します。プロジェクトを信頼すると、pi は .pi/settings.json.pi リソースの読み込み、不足プロジェクトパッケージのインストール、プロジェクト拡張の実行が可能になります。

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

拡張または保存済み決定が適用されない場合、defaultProjectTrust がフォールバック動作を制御します。~/.pi/agent/settings.json"ask""always""never" に設定するか、/settings で変更してください。

pi config とパッケージコマンドは同じプロジェクト信頼フローを使用しますが、pi update はプロンプトしません。--approve で 1 コマンド分プロジェクトローカル設定を信頼するか、--no-approve で無視します。

対話モードで /trust を使用して、将来のセッション用にプロジェクト信頼決定を保存できます。直接の親フォルダの信頼も含みます。~/.pi/agent/trust.json にのみ書き込みます。現在のセッションは再読み込みされないため、変更を反映するには pi を再起動してください。

設定デフォルト説明
defaultProviderstring-デフォルトプロバイダー(例:"anthropic""openai"
defaultModelstring-デフォルトモデル ID
defaultThinkingLevelstring-"off""minimal""low""medium""high""xhigh"
hideThinkingBlockbooleanfalse出力で思考ブロックを非表示
thinkingBudgetsobject-思考レベルごとのカスタムトークン予算
{
"thinkingBudgets": {
"minimal": 1024,
"low": 4096,
"medium": 10240,
"high": 32768
}
}
設定デフォルト説明
themestring"dark"テーマ名("dark""light"、またはカスタム)
quietStartupbooleanfalse起動ヘッダーを非表示
defaultProjectTruststring"ask"フォールバックのプロジェクト信頼動作:"ask""always""never"。グローバル設定のみ
collapseChangelogbooleanfalse更新後に要約された変更ログを表示
enableInstallTelemetrybooleantrue初回インストールまたは変更ログ検出更新後に匿名のインストール/更新バージョンピングを送信。更新チェックは制御しない
enableAnalyticsbooleanfalseオプトインの分析データ共有。現在は実験的初回セットアップ(PI_EXPERIMENTAL=1)時のみ確認
trackingIdstring-分析トラッキング識別子。enableAnalytics 有効化時に生成
doubleEscapeActionstring"tree"ダブル Esc のアクション:"tree""fork""none"
treeFilterModestring"default"/tree のデフォルトフィルター:"default""no-tools""user-only""labeled-only""all"
editorPaddingXnumber0入力エディターの水平パディング(0-3)
autocompleteMaxVisiblenumber5オートコンプリートドロップダウンの最大表示件数(3-20)
showHardwareCursorbooleanfalseTUI が IME サポートのためにカーソルを配置する際にターミナルカーソルを表示

enableInstallTelemetryhttps://pi.dev/api/report-install への匿名インストール/更新ピングのみを制御します。テレメトリをオプトアウトしても更新チェックは無効になりません。Pi は引き続き https://pi.dev/api/latest-version を取得して最新バージョンを確認できます。

PI_SKIP_VERSION_CHECK=1 を設定すると Pi バージョン更新チェックを無効化できます。--offline または PI_OFFLINE=1 で、ここで説明するすべての起動時ネットワーク操作(更新チェック、パッケージ更新チェック、インストール/更新テレメトリを含む)を無効化できます。

設定デフォルト説明
httpProxystring-HTTP_PROXYHTTPS_PROXY として適用される HTTP プロキシ URL。グローバル設定のみ。
{
"httpProxy": "http://127.0.0.1:7890"
}
設定デフォルト説明
warnings.anthropicExtraUsagebooleantrueAnthropic サブスクリプション認証が有料の追加使用量を使う可能性がある場合に警告を表示
{
"warnings": {
"anthropicExtraUsage": false
}
}
設定デフォルト説明
compaction.enabledbooleantrue自動コンパクションを有効化
compaction.reserveTokensnumber16384LLM 応答用に予約するトークン
compaction.keepRecentTokensnumber20000保持する最近のトークン(要約しない)
{
"compaction": {
"enabled": true,
"reserveTokens": 16384,
"keepRecentTokens": 20000
}
}
設定デフォルト説明
branchSummary.reserveTokensnumber16384ブランチ要約用に予約するトークン
branchSummary.skipPromptbooleanfalse/tree ナビゲーション時の「Summarize branch?」プロンプトをスキップ(デフォルトは要約なし)
設定デフォルト説明
retry.enabledbooleantrue一時的エラー時のエージェントレベル自動リトライを有効化
retry.maxRetriesnumber3エージェントレベルの最大リトライ回数
retry.baseDelayMsnumber2000エージェントレベル指数バックオフの基本遅延(2s、4s、8s)
retry.provider.timeoutMsnumberSDK defaultプロバイダー/SDK リクエストタイムアウト(ミリ秒)
retry.provider.maxRetriesnumber0プロバイダー/SDK リトライ回数
retry.provider.maxRetryDelayMsnumber60000失敗前のサーバー要求最大遅延(60s)

プロバイダーが retry.provider.maxRetryDelayMs より長いリトライ遅延を要求した場合(例:Google の「quota will reset after 5h」)、リクエストは黙って待つのではなく、情報を含むエラーですぐに失敗します。0 に設定すると上限を無効化できます。

プロバイダーレベルのリトライが明示的に必要でない限り、retry.provider.maxRetries0 のままにしてください。0 より大きく設定すると、SDK/プロバイダーのリトライが Pi が検知する前に使用量上限超過エラーを処理し、状況によってはプロバイダークォータがリセットされるまでエージェントがブロックされる可能性があります。

{
"retry": {
"enabled": true,
"maxRetries": 3,
"baseDelayMs": 2000,
"provider": {
"timeoutMs": 3600000,
"maxRetries": 0,
"maxRetryDelayMs": 60000
}
}
}
設定デフォルト説明
steeringModestring"one-at-a-time"ステアリングメッセージの送信方法:"all" または "one-at-a-time"
followUpModestring"one-at-a-time"フォローアップメッセージの送信方法:"all" または "one-at-a-time"
transportstring"auto"複数トランスポートをサポートするプロバイダーの優先トランスポート:"sse""websocket""websocket-cached""auto"
httpIdleTimeoutMsnumber300000HTTP ヘッダー/ボディのアイドルタイムアウト(ミリ秒)。明示的なストリームアイドルタイムアウトを持つプロバイダーでも使用。0 で無効化。
websocketConnectTimeoutMsnumber15000WebSocket トランスポートをサポートするプロバイダーの WebSocket 接続/オープンハンドシェイクタイムアウト(ミリ秒)。0 で無効化。
設定デフォルト説明
terminal.showImagesbooleantrueターミナルに画像を表示(サポートされている場合)
terminal.imageWidthCellsnumber60ターミナルセルでのインライン画像の推奨幅
terminal.clearOnShrinkbooleanfalseコンテンツ縮小時に空行をクリア(ちらつきの原因になる場合あり)
images.autoResizebooleantrue画像を最大 2000x2000 にリサイズ
images.blockImagesbooleanfalseLLM への画像送信をすべてブロック
設定デフォルト説明
shellPathstring-カスタム shell パス(例:Windows の Cygwin)
shellCommandPrefixstring-すべての bash コマンドのプレフィックス(例:"shopt -s expand_aliases"
npmCommandstring[]-npm パッケージ検索/インストール操作用のコマンド argv(例:["mise", "exec", "node@20", "--", "npm"]
{
"npmCommand": ["mise", "exec", "node@20", "--", "npm"]
}

npmCommand はインストール、アンインストール、git パッケージ内の依存関係インストールを含むすべての npm パッケージマネージャー操作に使用されます。ユーザースコープの npm パッケージは ~/.pi/agent/npm/ に、プロジェクトスコープの npm パッケージは .pi/npm/ にインストールされます。プロセス起動方法どおりに argv 形式のエントリを使用してください。npmCommand が設定されている場合、git パッケージの依存関係インストールはラッパーや代替パッケージマネージャーの npm 固有フラグを避けるため plain install を使用します。

設定デフォルト説明
sessionDirstring-セッションファイルを保存するディレクトリ。絶対パス、相対パス、~ を受け付けます。
{ "sessionDir": ".pi/sessions" }

複数のソースがセッションディレクトリを指定する場合、優先順位は --session-dirPI_CODING_AGENT_SESSION_DIR、settings.json の sessionDir です。

設定デフォルト説明
enabledModelsstring[]-Ctrl+P サイクル用のモデルパターン(--models CLI フラグと同じ形式)
{
"enabledModels": ["claude-*", "gpt-4o", "gemini-2*"]
}
設定デフォルト説明
markdown.codeBlockIndentstring" "コードブロックのインデント

これらの設定は、拡張、スキル、プロンプト、テーマをどこから読み込むかを定義します。

~/.pi/agent/settings.json のパスは ~/.pi/agent 基準で解決されます。.pi/settings.json のパスは .pi 基準で解決されます。絶対パスと ~ がサポートされています。

設定デフォルト説明
packagesarray[]リソースを読み込む npm/git パッケージ
extensionsstring[][]ローカル拡張ファイルパスまたはディレクトリ
skillsstring[][]ローカルスキルファイルパスまたはディレクトリ
promptsstring[][]ローカルプロンプトテンプレートパスまたはディレクトリ
themesstring[][]ローカルテーマファイルパスまたはディレクトリ
enableSkillCommandsbooleantrueスキルを /skill:name コマンドとして登録

配列は glob パターンと除外をサポートします。!pattern で除外。+path で正確なパスを強制包含、-path で強制除外。

文字列形式はパッケージからすべてのリソースを読み込みます:

{
"packages": ["pi-skills", "@org/my-extension"]
}

オブジェクト形式は読み込むリソースをフィルタリングします:

{
"packages": [
{
"source": "pi-skills",
"skills": ["brave-search", "transcribe"],
"extensions": []
}
]
}

パッケージ管理の詳細は packages.md を参照してください。

{
"defaultProvider": "anthropic",
"defaultModel": "claude-sonnet-4-20250514",
"defaultThinkingLevel": "medium",
"theme": "dark",
"compaction": {
"enabled": true,
"reserveTokens": 16384,
"keepRecentTokens": 20000
},
"retry": {
"enabled": true,
"maxRetries": 3
},
"enabledModels": ["claude-*", "gpt-4o"],
"warnings": {
"anthropicExtraUsage": true
},
"packages": ["pi-skills"]
}

プロジェクト設定(.pi/settings.json)はグローバル設定を上書きします。ネストされたオブジェクトはマージされます:

// ~/.pi/agent/settings.json (global)
{
"theme": "dark",
"compaction": { "enabled": true, "reserveTokens": 16384 }
}
// .pi/settings.json (project)
{
"compaction": { "reserveTokens": 8192 }
}
// Result
{
"theme": "dark",
"compaction": { "enabled": true, "reserveTokens": 8192 }
}