News
Release notes, project updates, and announcements from the Pi team.
Pi 0.52.10
New version of pi. Download from npm or view release on GitHub.
New Features
- Extension terminal input interception via
terminal_input, allowing extensions to consume or transform raw input before normal TUI handling. See docs/extensions.md. - Expanded CLI model selection:
--modelnow supportsprovider/id, fuzzy matching, and:<thinking>suffixes. See README.md and docs/models.md. - Safer package source handling with stricter git source parsing and improved local path normalization. See docs/packages.md.
- New built-in model definition
gpt-5.3-codex-sparkfor OpenAI and OpenAI Codex providers. - Improved OpenAI stream robustness for malformed trailing tool-call JSON in partial chunks.
- Added built-in GLM-5 model support via z.ai and OpenRouter provider catalogs.
Breaking Changes
ContextUsage.tokensandContextUsage.percentare nownumber | null. After compaction, context token count is unknown until the next LLM response, so these fields returnnull. Extensions that readContextUsagemust handle thenullcase. RemovedusageTokens,trailingTokens, andlastUsageIndexfields fromContextUsage(implementation details that should not have been public) (#1382 by @ferologics)- Git source parsing is now strict without
git:prefix: only protocol URLs are treated as git (https://,http://,ssh://,git://). Shorthand sources likegithub.com/org/repoandgit@github.com:org/reponow require thegit:prefix. (#1426)
Added
- Added extension event forwarding for message and tool execution lifecycles (
message_start,message_update,message_end,tool_execution_start,tool_execution_update,tool_execution_end) (#1375 by @sumeet) - Added
terminal_inputextension event to intercept, consume, or transform raw terminal input before normal TUI handling. - Added
gpt-5.3-codex-sparkmodel definition for OpenAI and OpenAI Codex providers (research preview).
Changed
- Routed GitHub Copilot Claude 4.x models through Anthropic Messages API, with updated Copilot header handling for Claude model requests.
Pi 0.52.9
New version of pi. Download from npm or view release on GitHub.
New Features
- Extensions can trigger a full runtime reload via
ctx.reload(), useful for hot-reloading configuration or restarting the agent. See docs/extensions.md and thereload-runtimeexample (#1371) - Short CLI disable aliases:
-ne(--no-extensions),-ns(--no-skills), and-np(--no-prompt-templates) for faster interactive usage and scripting. /exportHTML now includes collapsible tool input schemas (parameter names, types, and descriptions), improving session review and sharing workflows (#1416 by @marchellodev).pi.getAllTools()now exposes tool parameters in addition to name and description, enabling richer extension integrations (#1416 by @marchellodev).
Added
- Added
ctx.reload()to the extension API for programmatic runtime reload (#1371) - Added short aliases for disable flags:
-nefor--no-extensions,-nsfor--no-skills,-npfor--no-prompt-templates /exportHTML now includes tool input schema (parameter names, types, descriptions) in a collapsible section under each tool (#1416 by @marchellodev)pi.getAllTools()now returns tool parameters in addition to name and description (#1416 by @marchellodev)
Pi 0.52.8
New version of pi. Download from npm or view release on GitHub.
New Features
- Emacs-style kill ring (
ctrl+k/ctrl+y/alt+y) and undo (ctrl+z) in the editor input (#1373 by @Perlence) - OpenRouter
automodel alias (openrouter:auto) for automatic model routing (#1361 by @yogasanas) - Extensions can programmatically paste content into the editor via
pasteToEditorin the extension UI context. See docs/extensions.md (#1351 by @kaofelix) pi <package> --helpand invalid subcommands now show helpful output instead of failing silently (#1347 by @ferologics)
Added
- Added
pasteToEditorto extension UI context for programmatic editor paste (#1351 by @kaofelix) - Added package subcommand help and friendly error messages for invalid commands (#1347 by @ferologics)
- Added OpenRouter
automodel alias for automatic model routing (#1361 by @yogasanas) - Added kill ring (ctrl+k/ctrl+y/alt+y) and undo (ctrl+z) support to the editor input (#1373 by @Perlence)
Changed
- Replaced Claude Opus 4.5 with Opus 4.6 as default model (#1345 by @calvin-hpnet)
Pi 0.52.7
New version of pi. Download from npm or view release on GitHub.
New Features
- Per-model overrides in
models.jsonviamodelOverrides, allowing customization of built-in provider models without replacing provider model lists. See docs/models.md#per-model-overrides. models.jsonprovidermodelsnow merge with built-in models byid, so custom models can be added or replace matching built-ins without full provider replacement. See docs/models.md#overriding-built-in-providers.- Bedrock proxy support for unauthenticated endpoints via
AWS_BEDROCK_SKIP_AUTHandAWS_BEDROCK_FORCE_HTTP1. See docs/providers.md.
Breaking Changes
- Changed
models.jsonprovidermodelsbehavior from full replacement to merge-by-id with built-in models. Built-in models are now kept by default, and custom models upsert byid.
Added
- Added
modelOverridesinmodels.jsonto customize individual built-in models per provider without full provider replacement (#1332 by @charles-cooper) - Added
AWS_BEDROCK_SKIP_AUTHandAWS_BEDROCK_FORCE_HTTP1environment variables for connecting to unauthenticated Bedrock proxies (#1320 by @virtuald)
Pi 0.52.3
New version of pi. Download from npm or view release on GitHub.
Fixed
- Fixed git package parsing fallback for unknown hosts so enterprise git sources like
git:github.tools.sap/org/repoare treated as git packages instead of local paths - Fixed git package
@refparsing for shorthand, HTTPS, and SSH source formats, including branch refs with slashes - Fixed Bedrock default model ID from
us.anthropic.claude-opus-4-6-v1:0tous.anthropic.claude-opus-4-6-v1 - Fixed Bedrock Opus 4.6 model metadata (IDs, cache pricing) and added missing EU profile
- Fixed Claude Opus 4.6 context window metadata to 200000 for Anthropic and OpenCode providers
Pi 0.52.2
New version of pi. Download from npm or view release on GitHub.
Changed
- Updated default model for
anthropicprovider toclaude-opus-4-6 - Updated default model for
openai-codexprovider togpt-5.3-codex - Updated default model for
amazon-bedrockprovider tous.anthropic.claude-opus-4-6-v1:0 - Updated default model for
vercel-ai-gatewayprovider toanthropic/claude-opus-4-6 - Updated default model for
opencodeprovider toclaude-opus-4-6
Pi 0.52.0
New version of pi. Download from npm or view release on GitHub.
New Features
- Claude Opus 4.6 model support.
- GPT-5.3 Codex model support (OpenAI Codex provider only).
- SSH URL support for git packages. See docs/packages.md.
auth.jsonAPI keys now support shell command resolution (!command) and environment variable lookup. See docs/providers.md.- Model selectors now display the selected model name.
Added
- API keys in
auth.jsonnow support shell command resolution (!command) and environment variable lookup, matching the behavior inmodels.json - Added
minimal-mode.tsexample extension demonstrating how to override built-in tool rendering for a minimal display mode - Added Claude Opus 4.6 model to the model catalog
- Added GPT-5.3 Codex model to the model catalog (OpenAI Codex provider only)
- Added SSH URL support for git packages (#1287 by @markusn)
- Model selectors now display the selected model name (#1275 by @haoqixu)
Pi 0.51.6
New version of pi. Download from npm or view release on GitHub.
New Features
- Configurable resume keybinding action for opening the session resume selector. See docs/keybindings.md. (#1249 by @juanibiapina)
Added
- Added
resumeas a configurable keybinding action, allowing users to bind a key to open the session resume selector (likenewSession,tree, andfork) (#1249 by @juanibiapina)
Changed
Pi 0.51.3
New version of pi. Download from npm or view release on GitHub.
New Features
- Command discovery for extensions via
ExtensionAPI.getCommands(), withcommands.tsexample for invocation patterns. See docs/extensions.md#pigetcommands and examples/extensions/commands.ts. - Local path support for
pi installandpi remove, with relative path resolution against the settings file. See docs/packages.md#local-paths.
Breaking Changes
- RPC
get_commandsresponse andSlashCommandSourcetype: renamed"template"to"prompt"for consistency with the rest of the codebase
Added
- Added
ExtensionAPI.getCommands()to let extensions list available slash commands (extensions, prompt templates, skills) for invocation viaprompt(#1210 by @w-winter) - Added
commands.tsexample extension and exportedSlashCommandInfotypes for command discovery integrations (#1210 by @w-winter) - Added local path support for
pi installandpi removewith relative paths stored against the target settings file (#1216)
Pi 0.51.2
New version of pi. Download from npm or view release on GitHub.
New Features
- Extension tool output expansion controls via ExtensionUIContext getToolsExpanded and setToolsExpanded. See docs/extensions.md and docs/rpc.md.
Added
- Added ExtensionUIContext getToolsExpanded and setToolsExpanded for controlling tool output expansion (#1199 by @academo)
- Added install method detection to show package manager specific update instructions (#1203 by @Itsnotaka)
Pi 0.51.1
New version of pi. Download from npm or view release on GitHub.
New Features
- Extension API switchSession: Extensions can now programmatically switch sessions via
ctx.switchSession(sessionPath). See docs/extensions.md. (#1187) - Clear on shrink setting: New
terminal.clearOnShrinksetting keeps the editor and footer pinned to the bottom of the terminal when content shrinks. May cause some flicker due to redraws. Disabled by default. Enable via/settingsorPI_CLEAR_ON_SHRINK=1env var.
Pi 0.51.0
New version of pi. Download from npm or view release on GitHub.
Breaking Changes
- Extension tool signature change:
ToolDefinition.executenow uses(toolCallId, params, signal, onUpdate, ctx)parameter order to matchAgentTool.execute. Previously it was(toolCallId, params, onUpdate, ctx, signal). This makes wrapping built-in tools trivial since the first four parameters now align. Update your extensions by swapping thesignalandonUpdateparameters:// Before async execute(toolCallId, params, onUpdate, ctx, signal) { ... } // After async execute(toolCallId, params, signal, onUpdate, ctx) { ... }
New Features
- Android/Termux support: Pi now runs on Android via Termux. Install with:
Clipboard operations fall back gracefully whenpkg install nodejs termux-api git npm install -g @mariozechner/pi-coding-agent mkdir -p ~/.pi/agent echo "You are running on Android in Termux." > ~/.pi/agent/AGENTS.mdtermux-apiis unavailable. (#1164) - Bash spawn hook: Extensions can now intercept and modify bash commands before execution via
pi.setBashSpawnHook(). Adjust the command string, working directory, or environment variables. See docs/extensions.md. (#1160 by @mitsuhiko) - Linux ARM64 musl support: Pi now runs on Alpine Linux ARM64 (linux-arm64-musl) via updated clipboard dependency.
- Nix/Guix support:
PI_PACKAGE_DIRenvironment variable overrides the package path for content-addressed package managers where store paths tokenize poorly. See README.md#environment-variables. (#1153 by @odysseus0) - Named session filter:
/resumepicker now supports filtering to show only named sessions via Ctrl+N. Configurable viatoggleSessionNamedFilterkeybinding. See docs/keybindings.md. (#1128 by @w-winter) - Typed tool call events: Extension developers can narrow
ToolCallEventtypes usingisToolCallEventType()for better TypeScript support. See docs/extensions.md#tool-call-events. (#1147 by @giuseppeg) - Extension UI Protocol: Full RPC documentation and examples for extension dialogs and notifications, enabling headless clients to support interactive extensions. See docs/rpc.md#extension-ui-protocol. (#1144 by @aliou)
Added
- Added Linux ARM64 musl (Alpine Linux) support via clipboard dependency update
- Added Android/Termux support with graceful clipboard fallback (#1164)
- Added bash tool spawn hook support for adjusting command, cwd, and env before execution (#1160 by @mitsuhiko)
- Added typed
ToolCallEvent.inputper tool withisToolCallEventType()type guard for narrowing built-in tool events (#1147 by @giuseppeg) - Exported
discoverAndLoadExtensionsfrom package to enable extension testing without a local repo clone (#1148) - Added Extension UI Protocol documentation to RPC docs covering all request/response types for extension dialogs and notifications (#1144 by @aliou)
- Added
rpc-demo.tsexample extension exercising all RPC-supported extension UI methods (#1144 by @aliou) - Added
rpc-extension-ui.tsTUI example client demonstrating the extension UI protocol with interactive dialogs (#1144 by @aliou) - Added
PI_PACKAGE_DIRenvironment variable to override package path for content-addressed package managers (Nix, Guix) where store paths tokenize poorly (#1153 by @odysseus0) /resumesession picker now supports named-only filter toggle (default Ctrl+N, configurable viatoggleSessionNamedFilter) to show only named sessions (#1128 by @w-winter)
Pi 0.50.9
New version of pi. Download from npm or view release on GitHub.
Added
- Added
titlebar-spinner.tsexample extension that shows a braille spinner animation in the terminal title while the agent is working. - Added
PI_AI_ANTIGRAVITY_VERSIONenvironment variable documentation to help text (#1129) - Added
cacheRetentionstream option with provider-specific mappings for prompt cache controls, defaulting to short retention (#1134)
Pi 0.50.8
New version of pi. Download from npm or view release on GitHub.
Added
- Added
newSession,tree, andforkkeybinding actions for/new,/tree, and/forkcommands. All unbound by default. (#1114 by @juanibiapina) - Added
retry.maxDelayMssetting to cap maximum server-requested retry delay. When a provider requests a longer delay (e.g., Google's "quota will reset after 5h"), the request fails immediately with an informative error instead of waiting silently. Default: 60000ms (60 seconds). (#1123) /resumesession picker: new "Threaded" sort mode (now default) displays sessions in a tree structure based on fork relationships. Compact one-line format with message count and age on the right. (#1124 by @pasky)- Added Qwen CLI OAuth provider extension example. (#940 by @4h9fbZ)
- Added OAuth
modifyModelshook support for extension-registered providers at registration time. (#940 by @4h9fbZ) - Added Qwen thinking format support for OpenAI-compatible completions via
enable_thinking. (#940 by @4h9fbZ) - Added sticky column tracking for vertical cursor navigation so the editor restores the preferred column when moving across short lines. (#1120 by @Perlence)
- Added
resources_discoverextension hook to supply additional skills, prompts, and themes on startup and reload.