Changelog

Release notes and changes from the Pi changelog.

Release notes

Pi 0.75.4

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

New Features

  • Hardened npm install and release path - Pi now ships the CLI with a generated shrinkwrap for transitive dependencies, blocks accidental lockfile changes, verifies dependency pinning and lifecycle-script allowlists in checks, disables lifecycle scripts for self-update and local release installs where supported, and smoke-tests isolated npm and Bun installs before release. See Supply-chain hardening.

Added

  • Added interactive update notes after pi update runs, so users can see the installed version's changelog before continuing (#4724 by @mitsuhiko).
  • Exported image resize utilities from the package root for SDK consumers (#4775 by @xl0).

Changed

  • Changed source syntax to avoid TypeScript constructs that require JavaScript emit, keeping core sources compatible with Node.js strip-only TypeScript checks.
  • Removed web UI workspace references from the CLI package and dropped the package-level development watch script.
  • Published npm installs now include an npm-shrinkwrap.json to lock transitive dependencies for the CLI package.
  • Improved terminal theme detection for light/dark and truecolor handling.
  • Changed self-update package-manager commands to disable lifecycle scripts during reinstall.

Read more

Release notes

Pi 0.75.2

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

Fixed

  • Fixed Bun-compiled release binaries failing to start when Bun's built-in undici shim lacks npm undici's install export (#4661 by @dmasiero).
  • Fixed Xiaomi MiMo generated model metadata to replay assistant tool-call messages with reasoning_content for thinking-mode multi-turn requests, inherited from @earendil-works/pi-ai (#4678).
  • Fixed Windows external editor handoff so vim/nvim can receive input after opening from the TUI (#4612).
  • Fixed Windows npm self-updates to move loaded native dependency packages out of the active install before reinstalling pi (#4157).
  • Fixed pi update --self detection for pnpm v11 global installs whose package path resolves through the pnpm store (#4647).
  • Fixed Windows pnpm self-updates to resolve pnpm command shims and run through pnpm instead of requiring manual updates (#4157).
  • Fixed Windows npm-family command execution to use cross-spawn instead of parsing .cmd shim internals (#4665).

Read more

Release notes

Pi 0.74.1

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

New Features

  • Image generation support - Added image generation APIs, generated image model metadata, and built-in OpenRouter image generation support inherited from @earendil-works/pi-ai.
  • Together AI provider - Added Together AI as a built-in provider with /login API-key auth, default model resolution, and setup docs. See README.md#providers--models and docs/providers.md.
  • Windows ARM64 standalone binaries - Added standalone release artifacts for Windows ARM64.
  • Improved terminal and markdown rendering - Added markdown list indentation, task-list checkbox rendering, large markdown robustness, and inline image placement fixes inherited from @earendil-works/pi-tui.

Added

  • Added image generation support from @earendil-works/pi-ai, including image generation APIs, image model metadata, and built-in OpenRouter image generation support (#3887 by @cristinaponcela).
  • Added Together AI to built-in provider setup, /login API-key auth, and default model resolution (#3624 by @Nutlope).
  • Added Windows ARM64 standalone binary release artifacts (#4458 by @brianmichel).

Read more

Release notes

Pi 0.73.1

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

New Features

  • Self-update support for the npm scope migration: pi update --self now supports the upcoming package rename from @mariozechner/pi-coding-agent to @earendil-works/pi-coding-agent. After the new package is published, existing global installs can update through the normal self-update flow; pi will uninstall the old global package and install the package name returned by the version check endpoint.
  • Interactive OAuth login selection: OAuth providers can now present multiple login choices in /login, enabling provider-specific interactive authentication flows. See Providers.
  • JSONC-style models.json parsing: models.json now allows comments and trailing commas, making custom provider and model configuration easier to maintain. See Providers and Custom Providers.

Added

  • Added interactive login selection support so OAuth providers can present multiple login choices (#4190 by @mitsuhiko).

Changed

  • Changed pi update --self to honor the active package name returned by the Pi version check endpoint, defaulting to the current package when omitted and uninstalling the old global package before installing a renamed package.
  • Changed extension loading to use upstream jiti 2.7 instead of the @mariozechner/jiti fork (#4244 by @pi0).
  • Changed models.json parsing to allow comments and trailing commas (#4162 by @julien-c).

Read more

Release notes

Pi 0.73.0

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

New Features

  • Xiaomi MiMo API billing and regional Token Plan providers - xiaomi now uses API billing, with separate xiaomi-token-plan-{cn,ams,sgp} providers. See docs/providers.md#api-keys and README.md#providers--models. (#4112 by @Phoen1xCode)
  • Incremental bash output streaming - Bash tool output now appears while commands run instead of only after completion. (#4145)
  • Compact read rendering - Interactive read output for Pi docs, context files, and skills is collapsed by default and shows selected line ranges.

Breaking Changes

  • Switched the built-in xiaomi provider from Token Plan AMS to Xiaomi's API billing endpoint, and renamed its /login display from "Xiaomi MiMo Token Plan" to "Xiaomi MiMo". XIAOMI_API_KEY now refers to the API billing key from platform.xiaomimimo.com. Users on Token Plan should switch to the appropriate xiaomi-token-plan-* provider and set the corresponding env var (#4112 by @Phoen1xCode).

Added

  • Added three Xiaomi MiMo Token Plan regional providers visible in /login: xiaomi-token-plan-cn (XIAOMI_TOKEN_PLAN_CN_API_KEY), xiaomi-token-plan-ams (XIAOMI_TOKEN_PLAN_AMS_API_KEY), xiaomi-token-plan-sgp (XIAOMI_TOKEN_PLAN_SGP_API_KEY). Each defaults to mimo-v2.5-pro (#4112 by @Phoen1xCode).

Changed

  • Changed read tool rendering to collapse Pi documentation, AGENTS/CLAUDE context files, and SKILL.md contents by default in interactive output.

Read more

Release notes

Pi 0.72.0

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

New Features

Breaking Changes

  • Replaced compat.reasoningEffortMap in models.json and pi.registerProvider() model definitions with model-level thinkingLevelMap (#3208). Migration: move old mappings from compat.reasoningEffortMap to thinkingLevelMap. Use string values for provider-specific thinking values and null for unsupported pi levels that should be hidden and skipped by cycling. See docs/models.md#thinking-level-map and docs/custom-provider.md.

Added

  • Added Xiaomi MiMo Token Plan provider support with XIAOMI_API_KEY, default model resolution, /login display support, and provider documentation (#4005 by @Phoen1xCode).
  • Added model-level thinkingLevelMap support in models.json and pi.registerProvider(), allowing models to expose only the thinking levels they actually support (#3208).
  • Added shouldStopAfterTurn agent loop callback for post-turn stop control, inherited from @mariozechner/pi-agent-core. See packages/agent/README.md.

Read more

Release notes

Pi 0.71.1

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

Added

  • Added websocket-cached to the transport setting options for the OpenAI Codex provider used with ChatGPT subscription auth. This keeps the same WebSocket open for a session and, after the first request, sends only the new conversation items instead of resending the full chat history when possible.

Read more

Release notes

Pi 0.71.0

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

Breaking Changes

  • Removed built-in Google Gemini CLI and Google Antigravity support. Existing configurations using those providers must switch to another supported provider.

New Features

Added

  • Added Cloudflare AI Gateway as a built-in provider with CLOUDFLARE_API_KEY/CLOUDFLARE_ACCOUNT_ID/CLOUDFLARE_GATEWAY_ID setup, default model resolution, /login display support, and provider documentation (#3856 by @mchenco).
  • Added Moonshot AI as a built-in provider with MOONSHOT_API_KEY setup, default model resolution, and /login display support.
  • Added Mistral Medium 3.5 built-in model support via @mariozechner/pi-ai (#4009 by @technocidal).
  • Added routed OpenAI-compatible response model metadata in assistant messages, so providers such as OpenRouter can expose the concrete model used (#3968 by @purrgrammer).
  • Added PI_CODING_AGENT_SESSION_DIR as an environment equivalent to --session-dir (#4027).
  • Added message_end extension result support for replacing finalized messages, enabling extensions to override assistant usage cost (#3982).
  • Added top-level name support to pi.registerProvider() so extension-registered providers can show a friendly name in /login (#3956).
  • Added ctx.ui.getEditorComponent() so extensions can wrap the currently configured custom editor factory (#3935).
  • Added a thinking_level_select extension event for observing thinking level changes (#3888).

Removed

  • Removed the discontinued Qwen CLI OAuth custom provider extension example (#3832 by @4h9fbZ).
  • Removed Google Gemini CLI and Google Antigravity built-in login, default model, documentation, and example extension support.

Read more

Release notes

Pi 0.70.6

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

New Features

Added

  • Added Cloudflare Workers AI as a built-in provider with CLOUDFLARE_API_KEY/CLOUDFLARE_ACCOUNT_ID setup, default model resolution, /login support, and provider documentation (#3851 by @mchenco).

Changed

  • Changed Pi version checks to identify Pi with a pi/<version> user agent (#3877 by @mitsuhiko).

Read more

Release notes

Pi 0.70.3

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

New Features

Added

  • Added pi update support for updating pi itself in addition to installed pi packages (#3680 by @mitsuhiko).
  • Added Azure Cognitive Services endpoint support for Azure OpenAI Responses base URLs (#3799 by @marcbloech).
  • Added warnings.anthropicExtraUsage and a /settings warnings submenu to suppress the Anthropic extra usage billing warning (#3808)
  • Added ctx.ui.setWorkingVisible() so extensions can hide the built-in interactive working loader row without reserving layout space, plus a border-status editor example that moves working state into a custom editor border (#3674)

Read more

Release notes

Pi 0.70.2

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

Fixed

  • Fixed provider retry/timeout forwarding to omit undefined provider request controls, avoiding downstream SDK validation errors such as timeout must be an integer when retry.provider.timeoutMs is not configured (#3627)

Read more

Release notes

Pi 0.70.1

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

New Features

Added

  • Added DeepSeek to built-in provider setup, default model resolution, and provider documentation.

Read more

Release notes

Pi 0.70.0

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

New Features

  • Searchable auth provider login flow: the /login provider selector now supports fuzzy search/filtering, making it faster to find providers when many are configured. See docs/providers.md. (#3572 by @mitsuhiko)
  • GPT-5.5 Codex support: openai-codex/gpt-5.5 is available as a model option, including xhigh reasoning support and corrected priority-tier pricing.
  • Terminal progress indicators are now opt-in: OSC 9;4 progress reporting during streaming/compaction is off by default and can be toggled via terminal.showTerminalProgress in /settings (#3588)
  • --no-builtin-tools / createAgentSession({ noTools: "builtin" }) now correctly disables only built-in tools while keeping extension tools active. See docs/extensions.md and README.md (#3592)

Breaking Changes

  • Disabled OSC 9;4 terminal progress indicators by default. Set terminal.showTerminalProgress to true in /settings to re-enable (#3588)

Added

  • Added searchable auth provider login flow with fuzzy filtering in the provider selector (#3572 by @mitsuhiko)
  • Added GPT-5.5 Codex model
  • Added auth source labels in /login so provider entries can show when auth comes from --api-key, an environment variable, or custom provider fallback without exposing secrets.

Changed

  • Updated default model selection across providers to current recommended models.
  • Improved stale extension context errors after session replacement or reload to tell extension authors to avoid captured pi/command ctx and use withSession for post-replacement work.

Read more

Release notes

Pi 0.69.0

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

New Features

Breaking Changes

  • Migrated first-party coding-agent code, SDK/examples/docs, and package metadata from @sinclair/typebox 0.34.x to typebox 1.x. New extensions, SDK integrations, and pi packages should depend on and import from typebox. Legacy extension loading still aliases the root @sinclair/typebox package, but @sinclair/typebox/compiler is no longer shimmed. This migration also picks up the new @mariozechner/pi-ai TypeBox-native validator path, so tool argument validation now works in eval-restricted runtimes such as Cloudflare Workers instead of being skipped (#3112)
  • Session-replacement commands now invalidate captured pre-replacement session-bound extension objects after ctx.newSession(), ctx.fork(), and ctx.switchSession(). Old pi and command ctx references now throw instead of silently targeting the replaced session. Migration: if code needs to keep working in the replacement session after one of those calls, pass withSession to that same method and do the post-switch work there. In practice, move post-switch pi.sendUserMessage(), pi.sendMessage(), and command-ctx/session-manager access into withSession, and use only the ReplacedSessionContext passed to that callback for session-bound operations. Footguns: withSession runs after the old extension instance has already received session_shutdown, old cleanup may already have invalidated captured state, captured old pi / old command ctx are stale, and previously extracted raw objects such as const sm = ctx.sessionManager remain the caller's responsibility and must not be reused after the switch.

Added

  • Added support for terminating tool results via terminate: true, allowing custom tools to end the current tool batch without an automatic follow-up LLM call, plus a structured-output.ts extension example and extension docs showing the pattern (#3525)
  • Added OSC 9;4 terminal progress indicators during agent streaming and compaction, so terminals like iTerm2, WezTerm, Windows Terminal, and Kitty show activity in their tab bar
  • Added ctx.ui.addAutocompleteProvider(...) for stacking extension autocomplete providers on top of the built-in slash/path provider, plus a github-issue-autocomplete.ts example and extension docs (#2983)

Read more