New Features
- PowerShell tool — Use optional native PowerShell command execution on Windows. See PowerShell Tool.
- Safer managed updates — Stage, verify, and atomically activate updates for installer-managed installations. See Install and Manage.
- Model and thinking controls — Select thinking levels with
/thinking, search defaults, keep selections session-scoped, and persist them explicitly with Ctrl+S. See Models and Thinking.
Breaking Changes
- Renamed the inherited
GoogleThinkingLeveltype toGoogleApiThinkingLeveland addedResolvedGoogleThinkingLevelfor normalized adapter levels.
Added
- Added an optional
powershelltool for Windows, configurable throughdefaultToolsand the SDK. See PowerShell Tool. - Added a
/thinkingselector and searchable default choices to the model and thinking selectors; Ctrl+S saves the selected model as the global default. See Models and Thinking. - Added optional routing session IDs to exported compaction summary helpers so callers can preserve provider routing without enabling prompt cache writes.
- Added transcript usage notices for compaction and branch summaries when cache miss notices are enabled.
- Added
session_compact_failedextension events so compaction failures and aborts expose their reason, retry state, source, and error message to handlers (#8175). - Added inherited provider-neutral
toolChoicesupport to simple stream requests. - Added inherited automatic Anthropic server-side refusal fallback for supported first-party models, including returned-model usage pricing (#8017).
- Added inherited configurable OpenAI-compatible thinking-token budget fields for vLLM, Qwen/SGLang, and llama.cpp servers. See OpenAI Compatibility (#8275 by @bnsd55).
- Added inherited China-specific ZAI Coding Plan models, including GLM-4.6V vision support and API-equivalent usage cost estimates (#8220).
- Added inherited
deepseek-v4-pro-0813support to the Qwen Token Plan Individual catalog (#8194).
Changed
- Changed experimental installer-managed installations so
pi updatestages, verifies, and atomically activates the selected release in place. See Install and Manage. - Changed inherited built-in xAI models to use the Responses API with encrypted reasoning replay and made Grok 4.6 the default xAI model (#8124 by @Jaaneek).
- Changed inherited Anthropic, Azure OpenAI, Google, Mistral, and OpenAI adapters to send Pi's default
User-Agentunless overridden (#8305). - Changed Windows and WSL keybinding defaults to avoid terminal-reserved shortcuts for image paste, model cycling, editor undo, fullscreen transcript navigation and search, and message queueing (#8372).
- Changed Bun release archives to ship the native clipboard binary only inside the wrapper package, removing a duplicate platform package from each archive.
- Changed package resource glob expansion to use Node.js's built-in implementation with deterministic visible-path matching, reducing the installed runtime dependency tree.
- Changed the bundled Node.js runtime to load jiti only when importing an extension and Babel only when uncached source needs transformation, reducing CLI startup time and bundle size.
- Changed syntax highlighting to initialize only twenty common languages eagerly and defer the remaining grammars until after the initial TUI render, reducing CLI startup time.
- Changed the Node.js CLI and RPC entrypoints to load a bundled runtime, reducing startup filesystem reads while keeping the public library and legacy module paths on the modular runtime for normal dependency identity.
- Changed session sharing to render clickable terminal links, display only the canonical Radius artifact URL, and include the current system prompt and active tool definitions in Radius session shares.
Fixed
- Fixed failed extension factories leaving event subscriptions, provider registrations, and default flag state active (#8424 by @acmerfight).
- Fixed
models.jsontypings omitting the documented OpenAI-compatiblecompat.supportsFinishReasonprovider and model override (#8487 by @petrroll). - Fixed
/modeland/thinkingselections being persisted globally unless explicitly saved with Ctrl+S (#5263). - Fixed JSON and RPC
toolcall_startevents omitting the tool call id and name (#7953 by @christianklotz). - Fixed extensions failing to load when the Node.js CLI runs as a single-executable application (#8237).
- Fixed nested Markdown skills inside
.agents/skills/grouping directories not being discovered. - Fixed compaction and branch summarization requests exposing tools to providers.
- Fixed single-object
edittool inputs failing validation by accepting them as one-edit arrays in both coding-agent and harness edit tools (#7835). - Fixed root Markdown files such as
README.mdandAGENTS.mdin skill directories being reported as broken skills unless they declare valid skill frontmatter (#7805). - Fixed the default Cerebras model referencing an unavailable Z.AI model.
- Fixed inherited OpenAI-compatible Chat Completions reasoning replay to preserve and resend assistant-level
reasoning_detailsverbatim and in order (#7994). - Fixed inherited Anthropic server-side fallback responses being priced with the requested model instead of the returned fallback model (#8285).
- Fixed inherited GitHub Copilot login triggering model-policy rate limits by limiting policy updates, retrying model discovery once, and honoring server retry delays (#7850).
- Fixed inherited Amazon Bedrock dropping and failing to replay opaque redacted reasoning from non-Anthropic models (#8314 by @seiji).
- Fixed inherited Z.AI Coding Plan models deriving incomplete reasoning-effort metadata, including missing GLM-5.3 low, high, and max levels (#8336).
- Fixed inherited DeepSeek V4 Flash on OpenCode and OpenCode Go omitting its supported low thinking level (#8181 by @tianshuang).
- Fixed inherited Azure OpenAI Responses ignoring
toolChoicein provider-specific stream requests. - Fixed inherited Amazon Bedrock response hooks receiving only a synthesized request id instead of the raw response headers (#8234).
- Fixed inherited Kimi usage reporting so top-level
cached_tokenscount as cache reads instead of normal input tokens (#8075). - Fixed inherited Google custom models ignoring
thinkingLevelMap, which dropped extended thinking controls (#8135). - Fixed writes to
auth.jsonandmodels-store.jsonoverriding administrator-managed file permissions and ACLs (#7779). - Fixed UTF-8 BOM markers preventing frontmatter and user configuration files from loading (#8337).
- Fixed invalid settings files being easy to miss during interactive startup by rendering warnings with the file path inside the TUI (#7829).
- Fixed the subagent example repeatedly prompting before running project-local agents in trusted repositories (#8261).
- Fixed npm package update checks treating older registry versions as available updates, preventing
pi updatefrom downgrading already-newer installed packages (#8226). - Fixed built-in llama.cpp models disappearing from
/modelwhen/llamarefreshed a configured server underPI_OFFLINE, and included idle-sleptsleepingrouter models in the selectable catalog (#8167). - Fixed
pi.registerFlag()accepting default values that do not match the declared flag type (#8064). - Fixed Z.AI Coding Plan defaults referencing the removed GLM-5.1 model (#8096).
- Fixed repeated ambiguous truncated-response recovery being mislabeled as context overflow (#8130).
- Fixed duplicate fullscreen right-click paste in VS Code-based terminals on Windows (#8186).
- Fixed inherited padded text exceeding narrow terminal widths (#8252).
- Fixed inherited wrapped Markdown table links leaking color into borders and neighboring cells, including tables inside blockquotes (#8335).
- Fixed llama.cpp login guidance to direct users to
/llamabefore/modelwhen no local models are loaded (#8203). - Fixed hung pi.dev model catalog requests consuming the entire refresh deadline without retrying (#8198).
- Fixed inherited Xiaomi model catalogs listing shut-down MiMo V2 models in
/modeland--list-models(#8187). - Fixed branch summary entries recording the navigation destination in
fromIdinstead of the pre-navigation source leaf. - Fixed threshold auto-compaction being skipped when providers omit streaming usage data (#8328).
- Fixed dash-prefixed prompts being parsed as options by supporting
--as an end-of-options delimiter (#7269).