Changelog

Release notes and changes from the Pi changelog.

Release notes

Pi 0.61.0

New version of pi. Download from npm or view release on GitHub.

New Features

Breaking Changes

  • Interactive keybinding ids are now namespaced, and keybindings.json now uses those same canonical namespaced ids. Older config files are migrated automatically on startup. Custom editors and extension UI components still receive an injected keybindings: KeybindingsManager. They do not call getKeybindings() or setKeybindings() themselves. Declaration merging applies to that injected type (#2391)
  • Extension author migration: update keyHint(), keyText(), and injected keybindings.matches(...) calls from old built-in names like "expandTools", "selectConfirm", and "interrupt" to namespaced ids like "app.tools.expand", "tui.select.confirm", and "app.interrupt". See docs/keybindings.md for the full list. pi.registerShortcut("ctrl+shift+p", ...) is unchanged because extension shortcuts still use raw key combos, not keybinding ids.

Added

  • Added gpt-5.4-mini to the openai-codex model catalog (#2334 by @justram)
  • Added JSONL session export and import via /export <path.jsonl> and /import <path.jsonl> (#2356 by @hjanuschka)
  • Added a resizable sidebar to HTML share and export views (#2435 by @dmmulroy)

Read more

Release notes

Pi 0.60.0

New version of pi. Download from npm or view release on GitHub.

New Features

  • Fork existing sessions directly from the CLI with --fork <path|id>, which copies a source session into a new session in the current project. See README.md.
  • Extensions and SDK callers can reuse pi's built-in local bash backend via createLocalBashOperations() for user_bash interception and custom bash integrations. See docs/extensions.md#user_bash.
  • Startup no longer updates unpinned npm and git packages automatically. Use pi update explicitly, while interactive mode checks for updates in the background and notifies you when newer packages are available. See README.md.

Breaking Changes

  • Changed package startup behavior so installed unpinned packages are no longer checked or updated during startup. Use pi update to apply npm/git package updates, while interactive mode now checks for available package updates in the background and notifies you when updates are available (#1963)

Added

  • Added --fork <path|id> CLI flag to fork an existing session file or partial session UUID directly into a new session (#2290)
  • Added createLocalBashOperations() export so extensions and SDK callers can wrap pi's built-in local bash backend for user_bash handling and other custom bash integrations (#2299)

Read more

Release notes

Pi 0.59.0

New version of pi. Download from npm or view release on GitHub.

New Features

  • Faster startup by lazy-loading @mariozechner/pi-ai provider SDKs on first use instead of import time (#2297)
  • Better provider retry behavior when providers return error messages as responses (#2264)
  • Better terminal integration via OSC 133 command-executed markers (#2242)
  • Better Git footer branch detection for repositories using reftable storage (#2300)

Breaking Changes

  • Changed custom tool system prompt behavior so extension and SDK tools are included in the default Available tools section only when they provide promptSnippet. Omitting promptSnippet now leaves the tool out of that section instead of falling back to description (#2285)

Changed

  • Lazy-load built-in @mariozechner/pi-ai provider modules and root provider wrappers so coding-agent startup no longer eagerly loads provider SDKs before first use (#2297)

Read more

Release notes

Pi 0.58.4

New version of pi. Download from npm or view release on GitHub.

Fixed

  • Fixed steering messages to wait until the current assistant message's tool-call batch fully finishes instead of skipping pending tool calls.

Read more

Release notes

Pi 0.58.0

New version of pi. Download from npm or view release on GitHub.

New Features

  • Claude Opus 4.6, Sonnet 4.6, and related Bedrock models now use a 1M token context window (up from 200K) (#2135 by @mitsuhiko).
  • Extension tool calls now execute in parallel by default, with sequential tool_call preflight preserved for extension interception.
  • GOOGLE_CLOUD_API_KEY environment variable support for the google-vertex provider as an alternative to Application Default Credentials (#1976 by @gordonhwc).
  • Extensions can supply deterministic session IDs via newSession() (#2130 by @zhahaoyu).

Added

  • Added GOOGLE_CLOUD_API_KEY environment variable support for the google-vertex provider as an alternative to Application Default Credentials (#1976 by @gordonhwc)
  • Added custom session ID support in newSession() for extensions that need deterministic session paths (#2130 by @zhahaoyu)

Changed

  • Changed extension tool interception to use agent-core beforeToolCall and afterToolCall hooks instead of wrapper-based interception. Tool calls now execute in parallel by default, extension tool_call preflight still runs sequentially, and final tool results are emitted in assistant source order.
  • Raised Claude Opus 4.6, Sonnet 4.6, and related Bedrock model context windows from 200K to 1M tokens (#2135 by @mitsuhiko)

Read more

Release notes

Pi 0.57.1

New version of pi. Download from npm or view release on GitHub.

New Features

  • Tree branch folding and segment-jump navigation in /tree, with Ctrl+←/Ctrl+→ and Alt+←/Alt+→ shortcuts while / and Page Up/Page Down remain available for paging. See docs/tree.md and docs/keybindings.md.
  • session_directory extension event for customizing session directory paths before session manager creation. See docs/extensions.md.
  • Digit keybindings (0-9) in the TUI keybinding system, including modified combos like ctrl+1. See docs/keybindings.md.

Added

  • Added /tree branch folding and segment-jump navigation with Ctrl+←/Ctrl+→ and Alt+←/Alt+→, while keeping / and Page Up/Page Down for paging (#1724 by @Perlence)
  • Added session_directory extension event that fires before session manager creation, allowing extensions to customize the session directory path based on cwd and other factors. CLI --session-dir flag takes precedence over extension-provided paths (#1730 by @hjanuschka).
  • Added digit keys (0-9) to the keybinding system, including Kitty CSI-u and xterm modifyOtherKeys support for bindings like ctrl+1 (#1905)

Read more

Release notes

Pi 0.57.0

New version of pi. Download from npm or view release on GitHub.

New Features

  • Extensions can intercept and modify provider request payloads via before_provider_request. See docs/extensions.md#before_provider_request.
  • Extension UIs can use non-capturing overlays with explicit focus control via OverlayOptions.nonCapturing and OverlayHandle.focus() / unfocus() / isFocused(). See docs/extensions.md and ../tui/README.md.
  • RPC mode now uses strict LF-only JSONL framing for robust payload handling. See docs/rpc.md.

Breaking Changes

  • RPC mode now uses strict LF-delimited JSONL framing. Clients must split records on \n only instead of using generic line readers such as Node readline, which also split on Unicode separators inside JSON payloads (#1911)

Added

  • Added before_provider_request extension hook so extensions can inspect or replace provider payloads before requests are sent, with an example in examples/extensions/provider-payload.ts
  • Added non-capturing overlay focus control for extension UIs via OverlayOptions.nonCapturing and OverlayHandle.focus() / unfocus() / isFocused() (#1916 by @nicobailon)

Changed

  • Overlay compositing in extension UIs now uses focus order so focused overlays render on top while preserving stack semantics for show/hide behavior (#1916 by @nicobailon)

Read more

Release notes

Pi 0.56.3

New version of pi. Download from npm or view release on GitHub.

New Features

  • claude-sonnet-4-6 model available via the google-antigravity provider (#1859)
  • Custom editors can now define their own onEscape/onCtrlD handlers without being overwritten by app defaults, enabling vim-mode extensions (#1838)
  • Shift+Enter and Ctrl+Enter now work inside tmux via xterm modifyOtherKeys fallback (docs/tmux.md, #1872)
  • Auto-compaction is now resilient to persistent API errors (e.g. 529 overloaded) and no longer retriggers spuriously after compaction (#1834, #1860)

Added

Read more

Release notes

Pi 0.56.2

New version of pi. Download from npm or view release on GitHub.

New Features

  • GPT-5.4 support across openai, openai-codex, azure-openai-responses, and opencode, with gpt-5.4 now the default for openai and openai-codex (README.md, docs/providers.md).
  • treeFilterMode setting to choose the default /tree filter mode (default, no-tools, user-only, labeled-only, all) (docs/settings.md, #1852 by @lajarre).
  • Mistral native conversations integration with SDK-backed provider behavior, preserving Mistral-specific thinking and replay semantics (README.md, docs/providers.md, #1716).

Added

  • Added gpt-5.4 model availability for openai, openai-codex, azure-openai-responses, and opencode providers.
  • Added gpt-5.3-codex fallback model availability for github-copilot until upstream model catalogs include it (#1853).
  • Added treeFilterMode setting to choose the default /tree filter mode (default, no-tools, user-only, labeled-only, all) (#1852 by @lajarre).

Changed

  • Updated the default models for the openai and openai-codex providers to gpt-5.4.

Read more

Release notes

Pi 0.56.1

New version of pi. Download from npm or view release on GitHub.

Fixed

  • Fixed extension alias fallback resolution to use ESM-aware resolution for jiti aliases in global installs (#1821 by @Perlence)
  • Fixed markdown blockquote rendering to isolate blockquote styling from default text style, preventing style leakage.

Read more

Release notes

Pi 0.56.0

New version of pi. Download from npm or view release on GitHub.

New Features

  • Added OpenCode Go provider support with opencode-go model defaults and OPENCODE_API_KEY environment variable support (docs/providers.md, #1757).
  • Added branchSummary.skipPrompt setting to skip branch summarization prompts during tree navigation (docs/settings.md, #1792).
  • Added gemini-3.1-flash-lite-preview fallback model availability for Google provider catalogs when upstream model metadata lags (README.md, #1785).

Breaking Changes

  • Changed scoped model thinking semantics. Scoped entries without an explicit :<thinking> suffix now inherit the current session thinking level when selected, instead of applying a startup-captured default.
  • Moved Node OAuth runtime exports off the top-level @mariozechner/pi-ai entry. OAuth login and refresh must be imported from @mariozechner/pi-ai/oauth (#1814).

Added

  • Added branchSummary.skipPrompt setting to skip the summary prompt when navigating branches (#1792).
  • Added OpenCode Go provider support with opencode-go model defaults and OPENCODE_API_KEY environment variable support (#1757).
  • Added gemini-3.1-flash-lite-preview fallback model availability in provider catalogs when upstream catalogs lag (#1785).

Changed

  • Updated Antigravity Gemini 3.1 model metadata and request headers to match upstream behavior.

Read more

Release notes

Pi 0.55.4

New version of pi. Download from npm or view release on GitHub.

New Features

  • Runtime tool registration now applies immediately in active sessions. Tools registered via pi.registerTool() after startup are available to pi.getAllTools() and the LLM without /reload (docs/extensions.md, examples/extensions/dynamic-tools.ts, #1720).
  • Tool definitions can customize the default system prompt with promptSnippet (Available tools) and promptGuidelines (Guidelines) while the tool is active (docs/extensions.md, #1720).
  • Custom tool renderers can suppress transcript output without leaving extra spacing or empty transcript footprint in interactive rendering (docs/extensions.md, #1719).

Added

  • Added optional promptSnippet to ToolDefinition for one-line entries in the default system prompt's Available tools section. Active extension tools appear there when registered and active (#1237 by @semtexzv).
  • Added optional promptGuidelines to ToolDefinition so active tools can append tool-specific bullets to the default system prompt Guidelines section (#1720).

Read more

Release notes

Pi 0.55.2

New version of pi. Download from npm or view release on GitHub.

New Features

  • Extensions can dynamically remove custom providers via pi.unregisterProvider(name), restoring any built-in models that were overridden, without requiring /reload (docs).
  • pi.registerProvider() now takes effect immediately when called outside the initial extension load phase (e.g. from a command handler), removing the need for /reload after late registrations.

Added

  • pi.unregisterProvider(name) removes a dynamically registered provider and its models from the registry without requiring /reload. Built-in models that were overridden by the provider are restored (#1669 by @aliou).

Read more

Release notes

Pi 0.55.1

New version of pi. Download from npm or view release on GitHub.

New Features

  • Added offline startup mode via --offline (or PI_OFFLINE) to disable startup network operations, with startup network timeouts to avoid hangs in restricted or offline environments.
  • Added gemini-3.1-pro-preview model support to the google-gemini-cli provider (#1599 by @audichuang).

Read more

Release notes

Pi 0.55.0

New version of pi. Download from npm or view release on GitHub.

Breaking Changes

  • Resource precedence for extensions, skills, prompts, themes, and slash-command name collisions is now project-first (cwd/.pi) before user-global (~/.pi/agent). If you relied on global resources overriding project resources with the same names, rename or reorder your resources.
  • Extension registration conflicts no longer unload the entire later extension. All extensions stay loaded, and conflicting command/tool/flag names are resolved by first registration in load order.

Read more

Release notes

Pi 0.54.2

New version of pi. Download from npm or view release on GitHub.

Fixed

  • Fixed .pi folder being created unnecessarily when only reading settings. The folder is now only created when writing project-specific settings.
  • Fixed extension-driven runtime theme changes to persist in settings so /settings reflects the active currentTheme after ctx.ui.setTheme(...) (#1483 by @ferologics)
  • Fixed interactive mode freezes during large streaming write tool calls by using incremental syntax highlighting while partial arguments stream, with a final full re-highlight after tool-call arguments complete.

Read more

Release notes

Pi 0.54.1

New version of pi. Download from npm or view release on GitHub.

Fixed

  • Externalized koffi from bun binary builds, reducing archive sizes by ~15MB per platform (e.g. darwin-arm64: 43MB -> 28MB). Koffi's Windows-only .node file is now shipped alongside the Windows binary only.

Read more