{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://pi.dev/schemas/settings.schema.json", "$comment": "This file is generated from TypeScript source. Do not edit it manually; run npm run generate:schemas.", "type": "object", "properties": { "$schema": { "type": "string", "description": "JSON Schema reference." }, "lastChangelogVersion": { "type": "string" }, "defaultProvider": { "type": "string" }, "defaultModel": { "type": "string" }, "defaultThinkingLevel": { "$ref": "#/$defs/ModelThinkingLevel" }, "modelThinkingLevels": { "type": "object", "patternProperties": { "^.*$": { "$ref": "#/$defs/ModelThinkingLevel" } }, "description": "Per-model default thinking level overrides keyed by \"provider/modelId\"." }, "transport": { "anyOf": [ { "type": "string", "const": "auto" }, { "type": "string", "const": "sse" }, { "type": "string", "const": "websocket" }, { "type": "string", "const": "websocket-cached" } ], "default": "auto" }, "sessionShareDestination": { "anyOf": [ { "type": "string", "const": "auto" }, { "type": "string", "const": "gist" }, { "type": "string", "const": "radius" } ], "description": "Destination used by /share. \"auto\" uses Radius when authenticated and otherwise creates a GitHub gist.", "default": "auto" }, "steeringMode": { "anyOf": [ { "type": "string", "const": "all" }, { "type": "string", "const": "one-at-a-time" } ], "default": "one-at-a-time" }, "followUpMode": { "anyOf": [ { "type": "string", "const": "all" }, { "type": "string", "const": "one-at-a-time" } ], "default": "one-at-a-time" }, "theme": { "type": "string" }, "compaction": { "type": "object", "properties": { "enabled": { "type": "boolean", "default": true }, "reserveTokens": { "type": "integer", "minimum": 0, "maximum": 9007199254740991, "default": 16384 }, "keepRecentTokens": { "type": "integer", "minimum": 0, "maximum": 9007199254740991, "default": 20000 }, "modelOverrides": { "type": "object", "patternProperties": { "^.*$": { "type": "object", "properties": { "reserveTokens": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "keepRecentTokens": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 } } } }, "description": "Per-model overrides keyed by exact \"provider/modelId\" strings." } } }, "branchSummary": { "type": "object", "properties": { "reserveTokens": { "type": "number", "description": "Tokens reserved for the prompt and LLM response.", "default": 16384 }, "skipPrompt": { "type": "boolean", "description": "When true, skips the \"Summarize branch?\" prompt and defaults to no summary.", "default": false } } }, "retry": { "type": "object", "properties": { "enabled": { "type": "boolean", "default": true }, "maxRetries": { "type": "number", "default": 3 }, "baseDelayMs": { "type": "number", "description": "Exponential backoff base delay in milliseconds: 2s, 4s, 8s.", "default": 2000 }, "maxAgentDelayMs": { "type": "number", "default": 60000 }, "provider": { "type": "object", "properties": { "timeoutMs": { "type": "number", "description": "SDK or provider request timeout in milliseconds." }, "maxRetries": { "type": "number", "description": "SDK or provider retry attempts." }, "maxRetryDelayMs": { "type": "number", "description": "Maximum server-requested delay before failing.", "default": 60000 } } }, "maxDelayMs": { "type": "number", "description": "Legacy retry delay setting. Use provider.maxRetryDelayMs instead.", "deprecated": true } } }, "hideThinkingBlock": { "type": "boolean", "default": false }, "showCacheMissNotices": { "type": "boolean", "description": "Show cache cost and provider recovery notices.", "default": false }, "externalEditor": { "type": "string", "description": "Command for Ctrl+G external editor; takes precedence over VISUAL and EDITOR." }, "shellPath": { "type": "string", "description": "Custom shell path, for example for Cygwin on Windows, with support for leading ~ expansion." }, "quietStartup": { "anyOf": [ { "type": "boolean" }, { "type": "string", "const": "header" } ], "description": "When true, hide all startup output. When \"header\", keep only the startup header.", "default": false }, "defaultProjectTrust": { "anyOf": [ { "type": "string", "const": "ask" }, { "type": "string", "const": "always" }, { "type": "string", "const": "never" } ], "description": "Global setting only.", "default": "ask" }, "shellCommandPrefix": { "type": "string", "description": "Prefix prepended to every bash command, for example to enable shell aliases." }, "npmCommand": { "type": "array", "items": { "type": "string" }, "description": "Command used for npm package lookup and installation, in argv form such as [\"mise\", \"exec\", \"node@20\", \"--\", \"npm\"]." }, "collapseChangelog": { "type": "boolean", "description": "Show the condensed changelog after update; use /changelog for the full changelog.", "default": false }, "enableInstallTelemetry": { "type": "boolean", "description": "Send an anonymous version and update ping after changelog-detected updates.", "default": true }, "enableAnalytics": { "type": "boolean", "description": "Opt in to analytics data sharing.", "default": false }, "trackingId": { "type": "string", "description": "Analytics tracking identifier, generated when analytics is enabled." }, "packages": { "type": "array", "items": { "anyOf": [ { "type": "string", "description": "Load all resources from the package." }, { "type": "object", "required": [ "source" ], "properties": { "source": { "type": "string" }, "autoload": { "type": "boolean", "description": "When false, start empty and only apply explicit resource patterns." }, "extensions": { "type": "array", "items": { "type": "string" } }, "skills": { "type": "array", "items": { "type": "string" } }, "prompts": { "type": "array", "items": { "type": "string" } }, "themes": { "type": "array", "items": { "type": "string" } } } } ], "description": "Package source for npm or git packages. Use the string form to load all resources or the object form to filter resources." }, "description": "npm or git package sources, as strings or objects with resource filtering." }, "extensions": { "type": "array", "items": { "type": "string" }, "description": "Local extension file paths or directories." }, "deviceId": { "type": "string", "description": "Stable installation UUID, generated when authentication first needs it. Global only." }, "skills": { "anyOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "object", "properties": { "enableSkillCommands": { "type": "boolean" }, "customDirectories": { "type": "array", "items": { "type": "string" } } }, "deprecated": true } ], "description": "Local skill file paths or directories." }, "prompts": { "type": "array", "items": { "type": "string" }, "description": "Local prompt template file paths or directories." }, "themes": { "type": "array", "items": { "type": "string" }, "description": "Local theme file paths or directories." }, "enableSkillCommands": { "type": "boolean", "description": "Register skills as /skill:name commands.", "default": true }, "terminal": { "type": "object", "properties": { "showImages": { "type": "boolean", "description": "Show images when the terminal supports them.", "default": true }, "imageWidthCells": { "type": "number", "description": "Preferred inline image width in terminal cells.", "default": 60 }, "clearOnShrink": { "type": "boolean", "description": "Clear empty rows when content shrinks.", "default": false }, "showTerminalProgress": { "type": "boolean", "description": "Show OSC 9;4 terminal progress indicators.", "default": false }, "hyperlinks": { "anyOf": [ { "type": "boolean" }, { "type": "string", "const": "auto" } ] }, "images": { "anyOf": [ { "type": "string", "const": "kitty" }, { "type": "string", "const": "iterm2" }, { "type": "string", "const": "auto" }, { "type": "boolean", "const": false } ] }, "trueColor": { "anyOf": [ { "type": "boolean" }, { "type": "string", "const": "auto" } ] } } }, "images": { "type": "object", "properties": { "autoResize": { "type": "boolean", "description": "Resize images to 2000x2000 maximum for better model compatibility.", "default": true }, "blockImages": { "type": "boolean", "description": "When true, prevents all images from being sent to LLM providers.", "default": false } } }, "enabledModels": { "type": "array", "items": { "type": "string" }, "description": "Model patterns for cycling, in the same format as the --models CLI flag." }, "defaultTools": { "type": "array", "items": { "type": "string" }, "description": "Initial tool selection. Plain names replace the inherited selection; +name and -name entries add or remove tools." }, "doubleEscapeAction": { "anyOf": [ { "type": "string", "const": "fork" }, { "type": "string", "const": "tree" }, { "type": "string", "const": "none" } ], "description": "Action for double-escape with an empty editor.", "default": "tree" }, "treeFilterMode": { "anyOf": [ { "type": "string", "const": "default" }, { "type": "string", "const": "no-tools" }, { "type": "string", "const": "user-only" }, { "type": "string", "const": "labeled-only" }, { "type": "string", "const": "all" } ], "description": "Default filter when opening /tree.", "default": "default" }, "thinkingBudgets": { "type": "object", "properties": { "minimal": { "type": "number" }, "low": { "type": "number" }, "medium": { "type": "number" }, "high": { "type": "number" } }, "description": "Custom token budgets for thinking levels." }, "editorPaddingX": { "type": "number", "description": "Horizontal padding for the input editor.", "default": 0 }, "outputPad": { "anyOf": [ { "type": "number", "const": 0 }, { "type": "number", "const": 1 } ], "description": "Horizontal padding for transcript content.", "default": 1 }, "autocompleteMaxVisible": { "type": "number", "description": "Maximum visible items in the autocomplete dropdown.", "default": 5 }, "showHardwareCursor": { "type": "boolean", "description": "Show the terminal cursor while still positioning it for IME." }, "markdown": { "type": "object", "properties": { "codeBlockIndent": { "type": "string", "default": " " }, "mermaid": { "anyOf": [ { "type": "string", "const": "off" }, { "type": "string", "const": "final" }, { "type": "string", "const": "streaming" } ], "default": "streaming" } } }, "warnings": { "type": "object", "properties": { "anthropicExtraUsage": { "type": "boolean", "default": true } } }, "codemode": { "type": "object", "properties": { "mode": { "anyOf": [ { "type": "string", "const": "on" }, { "type": "string", "const": "only" } ], "description": "How codemode presents tools. \"on\" keeps direct tools declared and annotates tools callable from scripts; codemode lists only tools without direct exposure. \"only\" lists every script-callable tool in codemode and does not declare active direct tools.", "default": "on" }, "inlineBudget": { "type": "number", "minimum": 0, "description": "Estimated tokens available for inline codemode tool declarations.", "default": 3000 } } }, "sessionDir": { "type": "string", "description": "Custom session storage directory, in the same format as the --session-dir CLI flag." }, "httpProxy": { "type": "string", "description": "Proxy URL applied as HTTP_PROXY and HTTPS_PROXY for Pi-managed HTTP clients." }, "httpIdleTimeoutMs": { "anyOf": [ { "type": "number", "minimum": 0 }, { "type": "string", "const": "disabled" } ], "description": "HTTP header or body idle timeout in milliseconds; 0 or \"disabled\" disables it." }, "cacheWarming": { "anyOf": [ { "type": "string", "const": "off" }, { "type": "string", "const": "streaming" }, { "type": "string", "const": "idle" } ], "description": "Cache-warming profile. \"idle\" also warms between agent runs. Global only because each refresh costs money.", "default": "streaming" }, "websocketConnectTimeoutMs": { "anyOf": [ { "type": "number", "minimum": 0 }, { "type": "string", "const": "disabled" } ], "description": "WebSocket connect or open handshake timeout in milliseconds; 0 or \"disabled\" disables it." }, "tuiMode": { "anyOf": [ { "type": "string", "const": "regular" }, { "type": "string", "const": "fullscreen" } ], "default": "fullscreen" }, "fullscreenExitOutput": { "anyOf": [ { "type": "string", "const": "transcript" }, { "type": "string", "const": "resume-hint" } ], "description": "No effect in regular TUI mode.", "default": "transcript" }, "fullscreenScrollbar": { "anyOf": [ { "type": "string", "const": "auto" }, { "type": "string", "const": "always" }, { "type": "string", "const": "hidden" } ], "description": "No effect in regular TUI mode.", "default": "auto" }, "fullscreenCopyOnSelect": { "type": "boolean", "description": "No effect in regular TUI mode.", "default": true }, "fullscreenWheelScrollLines": { "anyOf": [ { "type": "number" }, { "type": "string", "const": "auto" } ], "description": "Lines scrolled per wheel event in fullscreen mode; numeric values are clamped from 1 to 100.", "default": "auto" }, "queueMode": { "anyOf": [ { "type": "string", "const": "all" }, { "type": "string", "const": "one-at-a-time" } ], "description": "Legacy setting migrated to steeringMode.", "deprecated": true }, "websockets": { "type": "boolean", "description": "Legacy setting migrated to transport.", "deprecated": true } }, "additionalProperties": true, "$defs": { "ModelThinkingLevel": { "enum": [ "off", "minimal", "low", "medium", "high", "xhigh", "max" ] } } }