pi v0.86.0: cost-aware prompt cache warming, /bug reporting, transcript-aware prompt updates
pi v0.86.0 was published on September 19, 2026. It is a feature release that also carries the past week’s merge batches: transcript-backed mid-conversation system messages (#9548), cost-aware prompt cache warming (#9668), and the skill-ranking and CJK autocomplete fixes (#9120, #9746) all ride along.
The two headline features target cost and feedback. Cache warming keeps valuable prompt caches alive during long tool runs and optionally while idle — configurable modes, model cache-lifetime metadata, /session diagnostics, transcript notices, and a cache_warming_decision extension event. The new /bug command bundles environment, model, provider, extension, and settings metadata with secrets redacted, adds assistant-message diagnostics, and can attach the transcript or a model-written summary of what went wrong; reports upload to Radius (no login required, attributed when logged in) or export as a ZIP archive, and crashes recorded in ~/.pi/agent/crashes.json attach to the next report.
Three additions round out the list: instruction and tool changes made through before_agent_start now survive resume and branch navigation while preserving cached prefixes on supported models; the offline Radius model catalog makes Radius models selectable immediately, with cached and live gateway catalogs overlaid when available; and compaction.modelOverrides sets per-model reserveTokens and keepRecentTokens budgets, falling back to ordinary settings.
Extension and SDK authors should read the breaking changes first. Inherited pi-ai provider stream inputs switch from Context to normalized TranscriptContext values — custom providers read the system prompt via getCurrentSystemPrompt() and tool declarations via getCurrentTools() on context.messages. ToolCall.arguments and ToolResultMessage.details are restricted to JSON-compatible values. And user_bash now fails closed: an error or invalid defined result aborts the command without invoking later handlers or executing locally — return undefined to continue propagation.
Elsewhere the release is broad: strict-prefer JSON-schema sampling turns on by default for the built-in read, bash, powershell, edit, and write tools without PI_EXPERIMENTAL; --resume renders session results progressively and --continue checks candidates in modification-time order to cut startup time; extensions gain ctx.modelRegistry.stream(), streamSimple(), and an unsubscribe from pi.on(). The fixed list moves GitHub Copilot GPT models, GPT-6 Astra included, onto the required Responses adapter, stops pricing Amazon Bedrock one-hour cache writes at the five-minute rate, and resolves mid-run threshold compaction silently skipping oversized trailing tool results. Unavailable inherited GPT-5.4 and GPT-5.4 mini models leave OpenAI Codex selection.
The release page organizes all of this under New Features, Breaking Changes, Added, Changed, Fixed, and Removed.
source: https://github.com/earendil-works/pi/releases/tag/v0.86.0