News
Release notes, project updates, and announcements from the Pi team.
Pi 0.50.4
New version of pi. Download from npm or view release on GitHub.
New Features
- OSC 52 clipboard support for SSH/mosh - The
/copycommand now works over remote connections using the OSC 52 terminal escape sequence. No more clipboard frustration when using pi over SSH. (#1069 by @gturkoglu) - Vercel AI Gateway routing - Route requests through Vercel's AI Gateway with provider failover and load balancing. Configure via
vercelGatewayRoutingin models.json. (#1051 by @ben-vargas) - Character jump navigation - Bash/Readline-style character search: Ctrl+] jumps forward to the next occurrence of a character, Ctrl+Alt+] jumps backward. (#1074 by @Perlence)
- Emacs-style Ctrl+B/Ctrl+F navigation - Alternative keybindings for word navigation (cursor word left/right) in the editor. (#1053 by @ninlds)
- Line boundary navigation - Editor jumps to line start when pressing Up at first visual line, and line end when pressing Down at last visual line. (#1050 by @4h9fbZ)
- Performance improvements - Optimized image line detection and box rendering cache in the TUI for better rendering performance. (#1084 by @can1357)
set_session_nameRPC command - Headless clients can now set the session display name programmatically. (#1075 by @dnouri)- Disable double-escape behavior - New
"none"option fordoubleEscapeActionsetting completely disables the double-escape shortcut. (#973 by @juanibiapina)
Added
- Added "none" option to
doubleEscapeActionsetting to disable double-escape behavior entirely (#973 by @juanibiapina) - Added OSC 52 clipboard support for SSH/mosh sessions.
/copynow works over remote connections. (#1069 by @gturkoglu) - Added Vercel AI Gateway routing support via
vercelGatewayRoutingin models.json (#1051 by @ben-vargas) - Added Ctrl+B and Ctrl+F keybindings for cursor word left/right navigation in the editor (#1053 by @ninlds)
- Added character jump navigation: Ctrl+] jumps forward to next character, Ctrl+Alt+] jumps backward (#1074 by @Perlence)
- Editor now jumps to line start when pressing Up at first visual line, and line end when pressing Down at last visual line (#1050 by @4h9fbZ)
- Optimized image line detection and box rendering cache for better TUI performance (#1084 by @can1357)
- Added
set_session_nameRPC command for headless clients to set session display name (#1075 by @dnouri)
Pi 0.50.3
New version of pi. Download from npm or view release on GitHub.
New Features
- Kimi For Coding provider: Access Moonshot AI's Anthropic-compatible coding API. Set
KIMI_API_KEYenvironment variable. See README.md#kimi-for-coding.
Added
- Added Kimi For Coding provider support (Moonshot AI's Anthropic-compatible coding API). Set
KIMI_API_KEYenvironment variable. See README.md#kimi-for-coding.
Pi 0.50.2
New version of pi. Download from npm or view release on GitHub.
New Features
- Hugging Face provider: Access Hugging Face models via OpenAI-compatible Inference Router. Set
HF_TOKENenvironment variable. See README.md#hugging-face. - Extended prompt caching:
PI_CACHE_RETENTION=longenables 1-hour caching for Anthropic (vs 5min default) and 24-hour for OpenAI (vs in-memory default). Only applies to direct API calls. See README.md#prompt-caching. - Configurable autocomplete height:
autocompleteMaxVisiblesetting (3-20 items, default 5) controls dropdown size. Adjust via/settingsorsettings.json. - Shell-style keybindings:
alt+b/alt+ffor word navigation,ctrl+dfor delete character forward. See docs/keybindings.md. - RPC
get_commands: Headless clients can now list available commands programmatically. See docs/rpc.md.
Added
- Added Hugging Face provider support via OpenAI-compatible Inference Router (#994)
- Added
PI_CACHE_RETENTIONenvironment variable to control cache TTL for Anthropic (5m vs 1h) and OpenAI (in-memory vs 24h). Set tolongfor extended retention. (#967) - Added
autocompleteMaxVisiblesetting for configurable autocomplete dropdown height (3-20 items, default 5) (#972 by @masonc15) - Added
/filescommand to list all file operations (read, write, edit) in the current session - Added shell-style keybindings:
alt+b/alt+ffor word navigation,ctrl+dfor delete character forward (when editor has text) (#1043 by @jasonish) - Added
get_commandsRPC method for headless clients to list available commands (#995 by @dnouri)
Changed
Pi 0.50.1
New version of pi. Download from npm or view release on GitHub.
Fixed
- Git extension updates now handle force-pushed remotes gracefully instead of failing (#961 by @aliou)
- Extension
ctx.newSession({ setup })now properly syncs agent state and renders messages after setup callback runs (#968) - Fixed extension UI bindings not initializing when starting with no extensions, which broke UI methods after
/reload - Fixed
/hotkeysoutput to title-case extension hotkeys (#969 by @Perlence) - Fixed model catalog generation to exclude deprecated OpenCode Zen models (#970 by @DanielTatarkin)
- Fixed git extension removal to prune empty directories
Pi 0.50.0
New version of pi. Download from npm or view release on GitHub.
New Features
- Pi packages for bundling and installing extensions, skills, prompts, and themes. See docs/packages.md.
- Hot reload (
/reload) of resources including AGENTS.md, SYSTEM.md, APPEND_SYSTEM.md, prompt templates, skills, themes, and extensions. See README.md#commands and README.md#context-files. - Custom providers via
pi.registerProvider()for proxies, custom endpoints, OAuth or SSO flows, and non-standard streaming APIs. See docs/custom-provider.md. - Azure OpenAI Responses provider support with deployment-aware model mapping. See docs/providers.md#azure-openai.
- OpenRouter routing support for custom models via
openRouterRouting. See docs/providers.md#api-keys and docs/models.md. - Skill invocation messages are now collapsible and skills can opt out of model invocation via
disable-model-invocation. See docs/skills.md#frontmatter. - Session selector renaming and configurable keybindings. See README.md#commands and docs/keybindings.md.
models.jsonheaders can resolve environment variables and shell commands. See docs/models.md#value-resolution.--verboseCLI flag to override quiet startup. See README.md#cli-reference.
Read the fully revamped docs in README.md, or have your clanker read them for you.
SDK Migration Guide
There are multiple SDK breaking changes since v0.49.3. For the quickest migration, point your agent at packages/coding-agent/docs/sdk.md, the SDK examples in packages/coding-agent/examples/sdk, and the SDK source in packages/coding-agent/src/core/sdk.ts and related modules.
Breaking Changes
- Header values in
models.jsonnow resolve environment variables (if a header value matches an env var name, the env var value is used). This may change behavior if a literal header value accidentally matches an env var name. (#909) - External packages (npm/git) are now configured via
packagesarray in settings.json instead ofextensions. Existing npm:/git: entries inextensionsare auto-migrated. (#645) - Resource loading now uses
ResourceLoaderonly and settings.json uses arrays for extensions, skills, prompts, and themes (#645) - Removed
discoverAuthStorageanddiscoverModelsfrom the SDK.AuthStorageandModelRegistrynow default to~/.pi/agentpaths unless you pass anagentDir(#645)
Added
- Session renaming in
/resumepicker viaCtrl+Rwithout opening the session (#863 by @svkozak) - Session selector keybindings are now configurable (#948 by @aos)
disable-model-invocationfrontmatter field for skills to prevent agentic invocation while still allowing explicit/skill:namecommands (#927)- Exposed
copyToClipboardutility for extensions (#926 by @mitsuhiko) - Skill invocation messages are now collapsible in chat output, showing collapsed by default with skill name and expand hint (#894)
- Header values in
models.jsonnow support environment variables and shell commands, matchingapiKeyresolution (#909) - Added HTTP proxy environment variable support for API requests (#942 by @haoqixu)
- Added OpenRouter provider routing support for custom models via
openRouterRoutingcompat field (#859 by @v01dpr1mr0s3) - Added
azure-openai-responsesprovider support for Azure OpenAI Responses API. (#890 by @markusylisiurunen) - Added changelog link to update notifications (#925 by @dannote)
- Added
--verboseCLI flag to override quietStartup setting (#906 by @Perlence) markdown.codeBlockIndentsetting to customize code block indentation in rendered output- Extension package management with
pi install,pi remove,pi update, andpi listcommands (#645) - Package filtering: selectively load resources from packages using object form in
packagesarray (#645) - Glob pattern support with minimatch in package filters, top-level settings arrays, and pi manifest (e.g.,
"!funky.json","*.ts") (#645) /reloadcommand to reload extensions, skills, prompts, and themes (#645)pi configcommand with TUI to enable/disable package and top-level resources via patterns (#938)- CLI flags for
--skill,--prompt-template,--theme,--no-prompt-templates, and--no-themes(#645) - Package deduplication: if same package appears in global and project settings, project wins (#645)
- Unified collision reporting with
ResourceDiagnostictype for all resource types (#645) - Show provider alongside the model in the footer if multiple providers are available
- Custom provider support via
pi.registerProvider()withstreamSimplefor custom API implementations - Added
custom-provider.tsexample extension demonstrating custom Anthropic provider with OAuth
Changed
/resumepicker sort toggle moved toCtrl+Sto freeCtrl+Rfor rename (#863 by @svkozak)- HTML export: clicking a sidebar message now navigates to its newest leaf and scrolls to it, instead of truncating the branch (#853 by @mitsuhiko)
- HTML export: active path is now visually highlighted with dimmed off-path nodes (#929 by @hewliyang)
- Azure OpenAI Responses provider now uses base URL configuration with deployment-aware model mapping and no longer includes service tier handling
/reloadnow re-renders the entire scrollback so updated extension components are visible immediately (#928 by @ferologics)- Skill, prompt template, and theme discovery now use settings and CLI path arrays instead of legacy filters (#645)
Pi 0.49.3
New version of pi. Download from npm or view release on GitHub.
Added
markdown.codeBlockIndentsetting to customize code block indentation in rendered output (#855 by @terrorobe)- Added
inline-bash.tsexample extension for expanding!{command}patterns in prompts (#881 by @scutifer) - Added
antigravity-image-gen.tsexample extension for AI image generation via Google Antigravity (#893 by @ben-vargas) - Added
PI_SHARE_VIEWER_URLenvironment variable for custom share viewer URLs (#889 by @andresaraujo) - Added Alt+Delete as hotkey for delete word forwards (#878 by @Perlence)
Changed
- Tree selector: changed label filter shortcut from
ltoShift+Lso users can search for entries containing "l" (#861 by @mitsuhiko) - Fuzzy matching now scores consecutive matches higher for better search relevance (#860 by @mitsuhiko)
Pi 0.49.2
New version of pi. Download from npm or view release on GitHub.
Added
- Added widget placement option for extension widgets via
widgetPlacementinpi.addWidget()(#850 by @marckrenn) - Added AWS credential detection for ECS/Kubernetes environments:
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI,AWS_CONTAINER_CREDENTIALS_FULL_URI,AWS_WEB_IDENTITY_TOKEN_FILE(#848) - Add "quiet startup" setting to
/settings(#847 by @unexge)
Changed
- HTML export now includes JSONL download button, jump-to-last-message on click, and fixed missing labels (#853 by @mitsuhiko)
- Improved error message for OAuth authentication failures (expired credentials, offline) instead of generic 'No API key found' (#849 by @zedrdave)
Removed
- Removed
strictResponsesPairingcompat option from models.json schema (no longer needed)
Pi 0.49.1
New version of pi. Download from npm or view release on GitHub.
Added
- Added
strictResponsesPairingcompat option for custom OpenAI Responses models on Azure (#768 by @prateekmedia) - Session selector (
/resume) now supports path display toggle (Ctrl+P) and session deletion (Ctrl+D) with inline confirmation (#816 by @w-winter) - Added undo support in interactive mode with Ctrl+- hotkey. (#831 by @Perlence)
Changed
- Share URLs now use hash fragments (
#) instead of query strings (?) to prevent session IDs from being sent to buildwithpi.ai (#829 by @terrorobe) - API keys in
models.jsoncan now be retrieved via shell command using!prefix (e.g.,"apiKey": "!security find-generic-password -ws 'anthropic'"for macOS Keychain) (#762 by @cv)
Pi 0.49.0
New version of pi. Download from npm or view release on GitHub.
Added
pi.setLabel(entryId, label)in ExtensionAPI for setting per-entry labels from extensions (#806)- Export
keyHint,appKeyHint,editorKey,appKey,rawKeyHintfor extensions to format keybinding hints consistently (#802 by @dannote) - Exported
VERSIONfrom the package index and updated the custom-header example. (#798 by @tallshort) - Added
showHardwareCursorsetting to control cursor visibility while still positioning it for IME support. (#800 by @ghoulr) - Added Emacs-style kill ring editing with yank and yank-pop keybindings, plus legacy Alt+letter handling and Alt+D delete word forward support in the interactive editor. (#810 by @Perlence)
- Added
ctx.compact()andctx.getContextUsage()to extension contexts for programmatic compaction and context usage checks. - Added documentation for delete word forward and kill ring keybindings in interactive mode. (#810 by @Perlence)
Changed
- Updated the default system prompt wording to clarify the pi harness and documentation scope.
- Simplified Codex system prompt handling to use the default system prompt directly for Codex instructions.
Removed
- Removed
pi-internal://path resolution from the read tool.
Pi 0.48.0
New version of pi. Download from npm or view release on GitHub.
Added
- Added
quietStartupsetting to silence startup output (version header, loaded context info, model scope line). Changelog notifications are still shown. (#777 by @ribelo) - Added
editorPaddingXsetting for horizontal padding in input editor (0-3, default: 0) - Added
shellCommandPrefixsetting to prepend commands to every bash execution, enabling alias expansion in non-interactive shells (e.g.,"shellCommandPrefix": "shopt -s expand_aliases") (#790 by @richardgill) - Added bash-style argument slicing for prompt templates (#770 by @airtonix)
- Extension commands can provide argument auto-completions via
getArgumentCompletionsinpi.registerCommand()(#775 by @ribelo) - Bash tool now displays the timeout value in the UI when a timeout is set (#780 by @dannote)
- Export
getShellConfigfor extensions to detect user's shell environment (#766 by @dannote) - Added
thinkingTextandselectedBgto theme schema (#763 by @scutifer) navigateTree()now supportsreplaceInstructionsoption to replace the default summarization prompt entirely, andlabeloption to attach a label to the branch summary entry (#787 by @mitsuhiko)
Changed
- Hardware cursor is now disabled by default for better terminal compatibility. Set
PI_HARDWARE_CURSOR=1to enable (replacesPI_NO_HARDWARE_CURSOR=1which disabled it).
Pi 0.47.0
New version of pi. Download from npm or view release on GitHub.
Breaking Changes
- Extensions using
Editordirectly must now passTUIas the first constructor argument:new Editor(tui, theme). Thetuiparameter is available in extension factory functions. (#732)
Added
- OpenAI Codex official support: Full compatibility with OpenAI's Codex CLI models (
gpt-5.1,gpt-5.2,gpt-5.1-codex-mini,gpt-5.2-codex). Features include static system prompt for OpenAI allowlisting, prompt caching via session ID, and reasoning signature retention across turns. SetOPENAI_API_KEYand use--provider openai-codexor select a Codex model. (#737) pi-internal://URL scheme in read tool for accessing internal documentation. The model can read files from the coding-agent package (README, docs, examples) to learn about extending pi.- New
inputevent in extension system for intercepting, transforming, or handling user input before the agent processes it. Supports three result types:continue(pass through),transform(modify text/images),handled(respond without LLM). Handlers chain transforms and short-circuit on handled. (#761 by @nicobailon) - Extension example:
input-transform.tsdemonstrating input interception patterns (quick mode, instant commands, source routing) (#761 by @nicobailon) - Custom tool HTML export: extensions with
renderCall/renderResultnow render in/shareand/exportoutput with ANSI-to-HTML color conversion (#702 by @aliou) - Direct filter shortcuts in Tree mode: Ctrl+D (default), Ctrl+T (no-tools), Ctrl+U (user-only), Ctrl+L (labeled-only), Ctrl+A (all) (#747 by @kaofelix)
Changed
- Skill commands (
/skill:name) are now expanded in AgentSession instead of interactive mode. This enables skill commands in RPC and print modes, and allows theinputevent to intercept/skill:namebefore expansion.
Pi 0.46.0
New version of pi. Download from npm or view release on GitHub.
Added
- Edit tool now uses fuzzy matching as fallback when exact match fails, tolerating trailing whitespace, smart quotes, Unicode dashes, and special spaces (#713 by @dannote)
- Support
APPEND_SYSTEM.mdto append instructions to the system prompt (#716 by @tallshort) - Session picker search: Ctrl+R toggles sorting between fuzzy match (default) and most recent; supports quoted phrase matching and
re:regex mode (#731 by @ogulcancelik) - Export
getAgentDirfor extensions (#749 by @dannote) - Show loaded prompt templates on startup (#743 by @tallshort)
- MiniMax China (
minimax-cn) provider support (#725 by @tallshort) gpt-5.2-codexmodels for GitHub Copilot and OpenCode Zen providers (#734 by @aadishv)
Changed
- Replaced
wasm-vipswith@silvia-odwyer/photon-nodefor image processing (#710 by @can1357) - Extension example:
plan-mode/shortcut changed from Shift+P to Ctrl+Alt+P to avoid conflict with typing capital P (#746 by @ferologics) - UI keybinding hints now respect configured keybindings across components (#724 by @dannote)
- CLI process title is now set to
pifor easier process identification (#742 by @richardgill)
Pi 0.45.6
New version of pi. Download from npm or view release on GitHub.
Added
ctx.ui.custom()now acceptsoverlayOptionsfor overlay positioning and sizing (anchor, margins, offsets, percentages, absolute positioning) (#667 by @nicobailon)ctx.ui.custom()now acceptsonHandlecallback to receive theOverlayHandlefor controlling overlay visibility (#667 by @nicobailon)- Extension example:
overlay-qa-tests.tswith 10 commands for testing overlay positioning, animation, and toggle scenarios (#667 by @nicobailon) - Extension example:
doom-overlay/- DOOM game running as an overlay at 35 FPS (auto-downloads WAD on first run) (#667 by @nicobailon)
Pi 0.45.4
New version of pi. Download from npm or view release on GitHub.
Changed
- Light theme colors adjusted for WCAG AA compliance (4.5:1 contrast ratio against white backgrounds)
- Replaced
sharpwithwasm-vipsfor image processing (resize, PNG conversion). Eliminates native build requirements that caused installation failures on some systems. (#696)
Added
- Extension example:
summarize.tsfor summarizing conversations using custom UI and an external model (#684 by @scutifer) - Extension example:
question.tsenhanced with custom UI for asking user questions (#693 by @ferologics) - Extension example:
plan-mode/enhanced with explicit step tracking and progress widget (#694 by @ferologics) - Extension example:
questionnaire.tsfor multi-question input with tab bar navigation (#695 by @ferologics) - Experimental Vercel AI Gateway provider support: set
AI_GATEWAY_API_KEYand use--provider vercel-ai-gateway. Token usage is currently reported incorrectly by Anthropic Messages compatible endpoint. (#689 by @timolins)
Pi 0.45.2
New version of pi. Download from npm or view release on GitHub.
Fixed
- Extensions now load correctly in compiled Bun binary using
@mariozechner/jitifork withvirtualModulessupport. Bundled packages (@sinclair/typebox,@mariozechner/pi-tui,@mariozechner/pi-ai,@mariozechner/pi-coding-agent) are accessible to extensions without filesystem node_modules.
Pi 0.45.0
New version of pi. Download from npm or view release on GitHub.
Added
- MiniMax provider support: set
MINIMAX_API_KEYand useminimax/MiniMax-M2.1(#656 by @dannote) /scoped-models: Alt+Up/Down to reorder enabled models. Order is preserved when saving with Ctrl+S and determines Ctrl+P cycling order. (#676 by @thomasmhr)- Amazon Bedrock provider support (experimental, tested with Anthropic Claude models only) (#494 by @unexge)
- Extension example:
sandbox/for OS-level bash sandboxing using@anthropic-ai/sandbox-runtimewith per-project config (#673 by @dannote) - Print mode JSON output now emits the session header as the first line.