Zum Hauptinhalt springen

Changelog

Pi

Erweiterbarer Terminal-Coding-Agent
Aktuell geprüft

Zuletzt aus offizieller Quelle geprüft:

Offizielle Changelog-Quelle öffnen

Die Erfassung aus offiziellen Quellen ist begrenzt. Ältere Releases können fehlen. Diese Seite beansprucht keine vollständige Versionshistorie.

Versionshinweise ohne deutsche Übersetzung stehen im englischen Original.

Neueste Version:v1.5.0
Geladene Releases:134
Quelle:GitHub Releases
RSS

Neueste Releases (134)

v1.5.0NeuBreaking Change

v1.5.0

2. November 2026

  • •Extension update changelogs: see what changed in installed extension packages on the next fresh launch after an update. Package authors can choose the changelog path, and collapseChangelog condenses the notices. See Show a changelog.
  • •Faster streaming: large tool calls are parsed incrementally, and code-heavy answers and tool rows reuse highlighting and rendered Markdown instead of repeating the work on every update. See Keep rendering responsive.
  • •Custom self-update commands: use PI_SELF_UPDATE_COMMAND or selfUpdateCommand to update pi through a wrapper or another package manager. See Custom update command.
  • •GPT-6.1 Terra: available through OpenAI, Azure OpenAI Responses, and OpenAI Codex, with tool search, mid-conversation thinking-level changes, and thinking off. Codex offers a 500K context window. See Models.
  • •Tool argument validation runs on @earendil-works/pi-schema. TypeBox features outside JSON Schema (Type.Refine(), Type.BigInt(), Type.Undefined(), codecs, Format.Set() formats) no longer apply to tool arguments; see Tool parameter schemas and TypeBox. Plain JSON Schema tools, including MCP tools, now get the same coercion as TypeBox tools, such as converting numeric strings and wrapping a single value into an array. Validation failures the model sees list pi-schema's messages (- path: missing, - limit: expected number, got string) instead of TypeBox's (must have required properties path, must be number).
  • •Extension packages can now show their changelog after an update. Pi reads pi.changelogPath from the package's package.json, or CHANGELOG.md in the package root, and on the next fresh launch shows entries newer than the last seen version under "Extension Updates". The collapseChangelog setting condenses this to one line per package (#5958, #8790)
  • •pi.exec() accepts a maxBuffer option that limits stdout and stderr combined, and its result has a truncated field that is true when output exceeded the limit (#11360)
  • •Device-code login (for example GitHub Copilot) now opens the verification page and copies the code when you press Enter. Providers can turn either action off with openBrowserOnConfirm: false or copyCodeOnConfirm: false (#9282, #9301)
Mehr anzeigen (7)
  • •pi update can update Pi through a wrapper or another package manager. Set PI_SELF_UPDATE_COMMAND (for example mise use -g npm:{packageName}@{version}) or the global selfUpdateCommand setting; pi update runs it when pi.dev reports a newer release and fills {packageName}, {version}, and {installSpec} from that release. See Custom update command (#7756, #5607)
  • •Extensions can format the user's configured keybindings with keyText() and keyHint() from the tool render context and the message and entry renderer options. Importing these functions from @earendil-works/pi-coding-agent can resolve the extension's own copy of the package, which does not see pi's keybindings, so hints such as keyHint("app.tools.expand", "to expand") rendered without the key. The docs now recommend the injected functions (#4748)
  • •Added persisted session-entry messageId and ISO timestamp to MarkdownTransformContext. They are available when rendering saved entries and undefined for live rendering (#7952 by @vipentti)
  • •Added a blocked option to inline ctx.ui.custom() components so approval prompts and other custom dialogs can report that pi is waiting for user input. Overlays ignore the option. See Custom screens and overlays (#11428)
  • •Added Usage.cost.totalFromProvider to distinguish billed totals from catalog estimates in SDK and extension usage data; combined usage is marked provider-reported only when every part is (#11178)
  • •Added concrete responseModel metadata to messages from pi-messages providers such as Radius, including when a virtual model is requested. See AssistantMessage (#11265)
  • •Added GPT-6.1 Terra for OpenAI, Azure OpenAI Responses, and OpenAI Codex, with tool search and mid-conversation thinking-level changes. It supports thinking off; Codex offers a 500K context window
v1.4.0

v1.4.0

22. Oktober 2026

  • •Image input for classifiers: codemode models.classify() accepts images for TypeSafe's Jev and Cloudflare's Clef models on typesafe, cloudflare-workers-ai, and OpenRouter. See Use classifier models and Codemode.
  • •Models Configuration reference: every provider, model, model override, and compatibility field of models.json, generated from its schema. See Models Configuration.
  • •Summaries without a fixed output cap: compaction and branch summaries use the model's output limit, so long reasoning no longer makes them fail. See Compaction.
  • •Codemode waits for a free worker: parallel scripts and in-process subagents queue instead of failing, and PI_CODEMODE_MAX_WORKERS raises the limit. See Codemode limits.
  • •Rex terminal support: OSC 8 hyperlinks, truecolor, and inline images.
  • •Added a Models Configuration reference generated from the models.json schema, listing all provider, model, model override, and compatibility fields (#10790)
  • •Codemode models.classify() now accepts images for TypeSafe's Jev and Cloudflare's Clef models on typesafe, cloudflare-workers-ai, and OpenRouter, and lists Clef Omni and Jev 1.14 on Workers AI.
  • •Provider-level compat in models.json now also applies to classifier models, with the System One fields imageInput and sendImageOptInHeader for proxies that serve another service's classifiers. Extension classifier models accept compat too.
Mehr anzeigen (7)
  • •Added MiniMax-M3.1-Flash to the minimax and minimax-cn providers, with thinking levels low through max (#11121)
  • •Added support for the Rex terminal: OSC 8 hyperlinks, truecolor, and inline images (#11131, #11150 by @petrroll, #11183 by @nihaals)
  • •Provider attribution headers now come from pi-ai's client identity. Extensions' before_provider_headers handlers no longer see the OpenRouter, NVIDIA NIM, and OpenCode attribution headers; returning null for one still removes it. Cloudflare requests send pi's detailed User-Agent instead of pi-coding-agent, as do GitHub release checks for tool downloads, and OpenCode requests send x-opencode-client whenever attribution is enabled, not only with a session.
  • •generateSummary() and generateSummaryWithUsage() now ignore their reserveTokens parameter. Summary requests use the model's output limit instead.
  • •Changed the default GitHub Copilot model from gpt-5.4, which Copilot retired, to gpt-6.1-sol.
  • •Changed the default NVIDIA model to nvidia/nemotron-3.5-super-vl-120b-a12b (#10910 by @cv)
  • •Changed the default Xiaomi model to mimo-v2.6-pro for the xiaomi and Xiaomi Token Plan providers, since mimo-v2.5-pro left the catalog.
v1.3.0

v1.3.0

15. Oktober 2026

  • •Choose where `/share` uploads: sessionShareDestination selects auto, gist, or radius. See Sessions and context and Export or share a session.
  • •Cache-preserving thinking level changes on OpenAI GPT-6: changing the thinking level mid-session with an API key keeps the prompt cache.
  • •Kimi Code over Chat Completions: tools added mid-conversation no longer invalidate the prompt cache. models.json base URL overrides must now include /v1. See Providers.
  • •Clean model switching: thinking from a previous model is dropped instead of being shown to the new model as text.
  • •Resumed sessions keep their active tools: --tools +name/-name applies on top of them. See Tools.
  • •Changing the thinking level mid-session on OpenAI GPT-6 models (API key) now keeps the prompt cache (#10853)
  • •Added the sessionShareDestination setting to choose automatic, GitHub gist, or Radius uploads for /share (#10870 by @vegarsti)
  • •Changed the kimi-coding provider to use OpenAI Chat Completions at https://api.kimi.com/coding/v1, the protocol used by the official Kimi Code client. K3, K3-256K, and Kimi For Coding now accept tools added mid-conversation without invalidating the prompt cache. models.json overrides of the kimi-coding base URL must now include /v1 (#10720)
Mehr anzeigen (7)
  • •Changed model switching to drop thinking blocks from earlier assistant messages produced by a different model, instead of sending them as plain text. The new model previously saw the old model's reasoning as part of its replies and could start writing its own reasoning into the visible answer (#10995)
  • •Pinned internal Pi dependencies to exact release versions to prevent fresh installs from mixing incompatible packages (#10865)
  • •Fixed resumed sessions dropping tools activated during the session. Resume now restores the session's active tools, with --tools +name/-name entries applied to them, unless --tools with tool names, --no-tools, or --no-builtin-tools selects tools explicitly (#10785)
  • •Fixed stopping a codemode script or reaching its deadline waiting for a non-interruptible built-in to return on Bun (#10748)
  • •Fixed repeated codemode timeouts or aborts accumulating surviving workers; admission now limits live workers to two across sessions, counting cancelled workers until actual exit (#10748)
  • •Fixed --model choosing a provider by catalog order when several providers offer the match; Pi now prefers the provider with credentials and otherwise reports the ambiguity. --models and enabledModels add a model for each provider that offers it and warn about the ambiguity (#10160)
  • •Fixed read line-range labels for numeric-string or null arguments in the TUI, session tree, HTML exports, and examples (#9887)
v1.2.0Breaking Change

v1.2.0

13. Oktober 2026

  • •Per-key OpenRouter model lists: with an OpenRouter key, Pi lists only the models that key may use, with the key's context size, max output, and prices, including regional endpoints set in models.json. See OpenRouter.
  • •Published configuration schemas: add $schema to settings.json, models.json, keybindings, and themes for editor validation and completion. See Settings, Models, Keybindings, and Themes.
  • •Clipboard copies over remote sessions: PI_CLIPBOARD_OSC52=1 sends copied text to a remote client's clipboard when Pi cannot detect the remote session, such as a multiplexer attached from another machine. See Pi Process Configuration.
  • •Codemode improvements: tool declarations show input constraints such as integer, minimum/maximum, and default, and codemode rows show elapsed and total time. See Codemode.
  • •`before_agent_start` for extension-triggered runs: runs started by pi.sendMessage(..., { triggerTurn: true }) go through the same setup as prompts. See Events and concurrency.
  • •Published generated configuration schemas for models, settings, keybindings, and themes at https://pi.dev/schemas/*.schema.json. The theme schema moved to https://pi.dev/schemas/theme.schema.json; themes loaded during startup now receive the same schema validation as later reloads. Update theme $schema references, define reusable colors under vars, and remove unsupported metadata (#9880, #10751 by @christianklotz)
  • •Changed before_agent_start to also fire for runs started by pi.sendMessage(..., { triggerTurn: true }) while idle. BeforeAgentStartEvent is now a union on messageType: "user" events carry prompt and images, and "custom" events carry the starting message and no prompt. Messages returned by handlers are added to both kinds of run, and pending deliverAs: "nextTurn" messages are delivered with the custom-message run. Handlers that should act only on user prompts must check event.messageType === "user" (#10267, #5581, #10739 by @davidbrai)
  • •Changed the session to count as busy while a run starts, including during before_agent_start handlers: ctx.isIdle() is false, pi.sendMessage() queues into the starting run instead of starting a second run that failed with "Agent is already processing", pi.sendUserMessage() requires deliverAs, and an abort requested meanwhile aborts the run once it starts (#10739 by @davidbrai)
Mehr anzeigen (7)
  • •Changed pi mcp list --json to report resources: true for servers that offer resources instead of resources and resourceTemplates counts; Pi no longer lists resources when connecting (#10526)
  • •Added reachesTools to tool definitions, so tools that reach other tools (such as codemode and tool_search) declare which tools a call may reach; the MCP extension uses it to wait for the servers a call needs and to decide whether a replacement codemode or tool_search tool can reach MCP tools
  • •Added aliases to tool namespaces; codemode's describeNamespace() and the namespace option of searchTools() match them, and MCP namespaces use the server name
  • •Added per-key OpenRouter model lists: with an OpenRouter key, Pi lists only the chat models that key may use, with the key's context size, max output, and prices, including guardrails and regional endpoints set as the base URL in models.json. The list is saved and used offline (#10353, #10672 by @davidbrai)
  • •Added PI_CLIPBOARD_OSC52=1 to send copied text to the terminal with OSC 52 after the local clipboard write, so copies reach a remote client's clipboard when Pi cannot detect the remote session, such as multiplexer attaches from another machine or remote IDE daemons (#10826, #10835, #10114)
  • •Added elapsed time while a codemode script runs and its total time once finished to the codemode tool row, like bash rows (#10708)
  • •Changed the showHardwareCursor setting to use only the terminal cursor instead of also drawing Pi's reverse-video cursor
v1.1.0

v1.1.0

8. Oktober 2026

  • •Program status reporting: terminals and agent dashboards that support OSC 7501 see whether Pi is working, blocked on a dialog or login, done, or failed. See Program status.
  • •Claude Haiku 5.5: anthropic/claude-haiku-5-5, with adaptive thinking up to xhigh/max effort.
  • •Adjust default tools with `+name`/`-name`: --tools entries like pi -t +codemode,-write change the default selection instead of replacing it. See Tools.
  • •GPT-6 Luna and image classification: OpenAI's GPT-6 Luna is available as a classifier model through the Decisions API, and codemode's models.classify() accepts images for classifiers that support them. See Use classifier models.
  • •Native llama.cpp decision models: Julia-1, Laya, Kev, lev, and OpenJev served by llama.cpp 0.6.0 or later run natively as classifiers through /v1/systemone. See Classification.
  • •Added +name and -name entries to --tools, which change the default tool selection instead of replacing it, for example pi -t +codemode
  • •Added durationMs to the tool render context and to tool_execution_end extension events: the recorded execution time of a final tool result (#10549)
  • •Added outputPad to the tool render context (#10557 by @rwachtler)
Mehr anzeigen (7)
  • •Added OpenAI's GPT-6 Luna as a classifier model through the Decisions API, available with OPENAI_API_KEY (see Use classifier models)
  • •Added images to codemode's models.classify() context, so classifiers that accept images, such as GPT-6 Luna, can judge them
  • •Added program status reporting with OSC 7501: terminals and agent dashboards that support it see whether Pi is working, blocked on a dialog or login, done, or failed. PI_PROGRAM_STATUS=1|0 overrides detection (see Terminal setup) (#10607)
  • •Added aborted to agent_settled session, extension, and JSON events, so integrations can tell a cancelled run from a finished one (#10607)
  • •Added Claude Haiku 5.5 (anthropic/claude-haiku-5-5), with adaptive thinking up to xhigh/max effort and prompt caching on Bedrock
  • •Added native llama.cpp decision models: Julia-1, Laya, Kev, lev, and OpenJev served by llama.cpp 0.6.0 or later are listed only as classifiers through /v1/systemone instead of as chat models (see Classification) (#10382)
  • •Changed outputPad to also apply to ! command output, tool output, and summary blocks (#9946, #10557 by @rwachtler)
v1.0.4

v1.0.4

6. Oktober 2026

  • •Tool patterns and `--no-mcp`: --tools and --exclude-tools accept * patterns, for example --tools read,codemode,'mcp__radius__*' keeps only one MCP server's tools. --tools now keeps MCP tools unless an entry starts with mcp__, and --no-mcp turns off MCP for one run. See Tools and MCP tools.
  • •Codemode persists images: tools.read() on an image file now gives back an image block that image() can show. See Call tools.
  • •Added * patterns to --tools and --exclude-tools, for example --tools read,codemode,'mcp__radius__*'
  • •Added --no-mcp to disable the built-in MCP support for one run
  • •Fixed syntax highlighting losing colors after the first line of multiline strings and comments in fenced code blocks (#10143)
  • •Fixed codemode scripts not receiving images from read: tools.read() now resolves to an image block for image files, which image() shows (#10251)
  • •Fixed MCP OAuth sign-in failing with invalid_redirect_uri on servers with OpenID Connect client registration, such as mcp.modem.dev: pi now registers as a native client (#10493)
  • •Fixed --tools removing MCP tools, which left pi --tools codemode without any MCP servers. --tools now keeps MCP tools unless an entry starts with mcp__
Mehr anzeigen (4)
  • •Fixed MCP session shutdown returning while a server was still connecting, leaving its transport open until the server answered or timed out (#10249)
  • •Fixed system prompt rules and the skills hint naming tools hidden by prepareLoadout. Hidden tools are left out of the rules, the skills hint names no tool when the file reader is hidden, and codemode shows each tool's prompt guidelines with its declaration; ToolLoadout gains getPromptGuidelines() (#10343)
  • •Fixed Bedrock requests that fail with The pending stream has been canceled after a stalled HTTP/2 connection not being retried automatically (#10379)
  • •Fixed codemode scripts that patch built-ins (for example Array.prototype.toJSON = ...) crashing pi and leaving the tool call unsettled. Built-ins are now frozen before the script runs, so such patches have no effect (#10444)
v1.0.3Breaking Change

v1.0.3

5. Oktober 2026

  • •Azure Foundry Chat Completions — The azure provider (renamed from azure-openai-responses) now also serves Foundry Chat Completions deployments, starting with azure/deepseek-v4-pro. See Azure OpenAI.
  • •Codemode images saved to files — image() also writes each image to a temp file and names the path in the result, so later turns can copy or move generated images. See Generate images.
  • •Renamed the Azure provider from azure-openai-responses to azure. Rename the provider key in auth.json (or run /login again), in models.json, and in settings.json (defaultProvider, enabledModels patterns, and modelThinkingLevels keys). Sessions that used the old provider fall back to another model when resumed, and their prompt cache is not reused. The AZURE_OPENAI_* environment variables are unchanged (#9714 by @jsanter27)
  • •Added Azure Foundry Chat Completions deployments, starting with azure/deepseek-v4-pro (#9645, #9714 by @jsanter27)
  • •Codemode image() now also saves each image to a temp file and names the path in the result, so later turns can copy or move generated images (#10310)
  • •Output files (full text of truncated tool output, binary MCP resources, codemode images) are now readable only by the user
  • •Home/End now always move the editor cursor to the line start/end; fullscreen transcript top/bottom moved to Ctrl+Home/Ctrl+End, which no longer move the editor cursor (#10314)
  • •Fixed subscription logins such as Sign in with ChatGPT failing with refresh_token_invalidated after a request was cancelled during an OAuth token refresh
Mehr anzeigen (2)
  • •Fixed codemode failing for the rest of a session after a pnpm global update removed the running install, and added a restart hint when errors occur after pi was updated or removed on disk (#10439)
  • •Fixed interactive sessions reporting a read EIO or setRawMode EIO crash (and asking to run /bug) when the terminal went away, e.g. after closing the window or resuming a suspended pi in a closed terminal
v1.0.2

v1.0.2

4. Oktober 2026

v1.0.1

v1.0.1

3. Oktober 2026

  • •Nix flake — nix run github:earendil-works/pi/stable runs the latest release, and nix profile add github:earendil-works/pi/stable installs it. See Install pi.
  • •Project overrides for MCP servers — .pi/mcp.json and /mcp can enable, disable, or change the exposure of a user-level server for one project. See Configure servers.
  • •MCP Client ID Metadata Documents — oauth.clientRegistration: "cimd" lets authorization servers allow pi by its document URL instead of dynamic registration. See Authenticate with OAuth.
  • •Tool renderers for any tool — pi.registerToolRenderer() draws calls to tools that are not registered yet, such as MCP tools in resumed sessions. See Tool rendering.
  • •Cloudflare Clef classifiers — @cf/cloudflare/clef and @cf/cloudflare/clef-flash are usable from codemode scripts and extensions. See Use classifier models.
  • •Added a copy key (app.message.copy, default ctrl+x) to OAuth sign-in screens in /login, /mcp, and /mcp login, which copies the sign-in URL when the browser cannot be opened or the wrapped link cannot be selected.
  • •Added oauth.clientRegistration: "cimd" for MCP servers, which identifies pi with its Client ID Metadata Document on pi.dev instead of dynamic client registration, so authorization servers can allow pi by URL (#10302)
  • •Added project overrides for user-level MCP servers: a .pi/mcp.json entry without command or url sets only enabled, exposure, and toolExposure of the user-level server, and /mcp can enable or disable a server for the current project (#10277)
Mehr anzeigen (7)
  • •Added Cloudflare's Clef and Clef Flash classifier models to cloudflare-workers-ai, usable from codemode scripts and extensions (#10316 by @ndisidore, #10322 by @RealAlexandreAI)
  • •Added pi.registerToolRenderer(), which chooses how calls to a tool are drawn, including tools that are not registered (#10285)
  • •Added a Nix flake for macOS and Linux: nix run github:earendil-works/pi/stable runs the latest release, and nix profile add github:earendil-works/pi/stable installs it. See Install pi (#9137)
  • •pi update on global npm installations now recommends migrating to the managed installation from the pi.dev installer, which pins all dependencies.
  • •Anthropic tools added or redefined mid-conversation are now defined inline in the conversation, so redefining a tool under the same name keeps the prompt cache instead of resending the full tool list.
  • •Fixed installations resolving vulnerable brace-expansion 5.0.9 by pinning brace-expansion 5.0.12 as a direct dependency (GHSA-q2hr-2g5m-vwhr, GHSA-qhr7-859c-m2p7, GHSA-6j4f-fj2g-mc7p) (#10288)
  • •Fixed a trailing comma in --models adding an extra model to the model cycle (#10334)
v1.0.0

v1.0.0

1. Oktober 2026

  • •Fullscreen by default — The TUI now runs fullscreen. Set tuiMode to "regular" to keep the terminal's normal scrollback. See Terminal and display.
  • •Leaner codemode — About 40% fewer prompt tokens, and errors that tell the model how to recover. See Codemode.
  • •Image generation in codemode — Scripts call models.generateImages() with the session's credentials. See Generate images and Use image models.
  • •Radius in `/login` — Sign in with Radius and set up its MCP server in one step. See Radius.
  • •Anthropic copy code login — Sign in when the browser runs on another machine. See Authenticate interactively.
  • •MCP OAuth hardening — oauth.authServerMetadataUrl, RFC 9207 iss checks, credentials per server, and step-up sign-in that keeps granted scopes. See Authenticate with OAuth.
  • •Header-only quiet startup — quietStartup: "header" keeps the version and key hints and hides the rest. See Terminal and display.
  • •Added an oauth.authServerMetadataUrl setting for MCP servers that advertise a wrong OAuth authorization server or none. Pi uses the configured metadata document instead of discovery (#10172).
Mehr anzeigen (7)
  • •Added quietStartup: "header", which keeps the startup header with version and key hints but hides the model scope line and loaded-resource listing.
  • •Added models.generateImages() to codemode scripts. It runs image models such as OpenRouter's with the session's credentials and returns base64 image blocks that image() attaches to the result; usage counts toward the session cost like models.classify(). Extensions can call ctx.modelRegistry.generateImages(). See Use image models.
  • •Added a copy code login method to Anthropic /login for headless setups where the browser runs on another machine (#10194 by @lucasmeijer).
  • •Changed the default TUI mode to fullscreen. Set tuiMode to "regular" or pass --tui-mode regular to keep the terminal's normal scrollback.
  • •/login now offers "Sign in with Radius" at the top level, as the last option, with its status. After a Radius sign-in, /login offers to configure the Radius MCP server in the global mcp.json with "auth": { "provider": "radius" } and reloads. Cancelling a login returns to the menu it was started from.
  • •The provider docs page is renamed to Providers, its "Cloud Providers" section is now "Provider Specific Config", and it documents Radius first.
  • •MCP OAuth credentials are now stored per server name and URL, so MCP servers with the same URL can sign in with different accounts. Credentials stored by URL alone move to the first server that uses them (#10252).
v0.99.2

v0.99.2

30. September 2026

  • •MCP servers stay out of the way: servers with the default codemode exposure are no longer listed in the codemode description and no longer block the first prompt. They appear in a short system prompt section, and scripts find their tools with searchTools() and describeNamespace(). See Control tool exposure.
  • •More MCP authentication options: oauth.clientName for servers that only accept known OAuth clients, and "auth": { "provider": "<provider>" } to authenticate HTTP servers with a provider's /login token. See Authenticate with OAuth.
  • •Anthropic workload identity federation from the Anthropic SDK environment variables. See Use an API key from the environment.
  • •/reload enables tools newly added to the defaultTools setting. See Tools.
  • •Added a description field for MCP servers (pi mcp add --description), shown with the server in the system prompt and used to rank its tools in tool search, and a describeNamespace(name) codemode helper that returns a namespace's instructions and tool names. describeNamespace() and searchTools() accept a namespace as mcp__dev-radius, mcp__dev_radius, dev-radius, or dev_radius.
  • •Added an oauth.clientName setting for MCP servers (pi mcp add --oauth-client-name) to change the client name sent during OAuth client registration, for servers that only accept known clients (#10226).
  • •Added "auth": { "provider": "<provider>" } for HTTP MCP servers to send a provider's current /login token as the bearer token instead of using MCP OAuth. The token is read on every request, so provider refreshes apply. Only allowed in the global mcp.json and from extensions, and requires https except on loopback hosts.
  • •Added Anthropic workload identity federation from the ANTHROPIC_FEDERATION_RULE_ID, ANTHROPIC_ORGANIZATION_ID, and ANTHROPIC_IDENTITY_TOKEN_FILE environment variables (see Providers) (#10177, #10242 by @philfreo).
Mehr anzeigen (7)
  • •/reload now enables tools newly added to the defaultTools setting. Tools removed from it stay enabled, tools turned off during the session stay off unless newly added, and --tools, --no-tools, and --no-builtin-tools still override the setting (#10245).
  • •MCP servers with the default codemode exposure no longer appear in the codemode description; scripts find them with searchTools(). codemode-deferred is now an alias for codemode. Use direct exposure for tools the model should see without searching (#10212).
  • •The codemode description no longer includes deferred tools, tool counts, or MCP server instructions, so it no longer changes when MCP servers connect or change their tools. The tool_search description no longer lists the servers whose tools it can load, for the same reason. Servers are listed instead in an mcp_servers system prompt section with a one-line summary, updated at the start of each prompt; a changed section is appended to the conversation. Scripts read server instructions with describeNamespace() (#10212).
  • •The first prompt no longer waits for MCP servers without direct tools. They connect in the background and are waited for when a codemode script names them, a script searches tools, or tool_search runs (#10212).
  • •Fixed new sessions intermittently ignoring the saved default model, or warning that no models are available, when it belongs to an extension-registered native provider with a stored credential (#9962, #10190 by @davidbrai).
  • •Fixed the /mcp sign-in URL not being clickable when it wraps across lines, by emitting it as a terminal hyperlink with a Cmd/Ctrl+click to open line like /login (#10186).
  • •Fixed codemode image() accepting malformed base64 data or unsupported image types, which persisted an invalid image block that made every later provider request fail with HTTP 400 (#10215).
v0.99.1

v0.99.1

29. September 2026

  • •GPT-6.1 Sol — Available on OpenAI, Azure OpenAI, and OpenAI Codex, and now the default OpenAI Codex model. See Select a model.
  • •Added GPT-6.1 Sol (gpt-6.1-sol) to the OpenAI, Azure OpenAI Responses, and OpenAI Codex providers.
  • •Changed the default OpenAI Codex model to GPT-6.1 Sol (gpt-6.1-sol).
  • •Fixed /login with OpenAI failing in the bundled release with a missing openai-chatgpt.js module error.
v0.99.0

v0.99.0

29. September 2026

  • •Codemode and MCP — Connect MCP servers and let models run JavaScript that calls tools in parallel. See MCP Servers and Enable codemode.
  • •System theme — Pi's colors now come from your terminal's own palette by default. See Use your terminal's colors.
  • •Sign in with ChatGPT — Use a ChatGPT subscription with the OpenAI provider through /login openai. See Authenticate interactively.
  • •Virtual models — Extensions can route each request to a different physical model. See Virtual Models.
  • •Classifier models — Run Jev classifiers from codemode scripts, or use any llama.cpp model as a classifier. See How codemode works and Classification.
  • •Added codemode, tool search, and MCP support as built-in extensions. The codemode tool runs model-written JavaScript in a QuickJS sandbox that calls pi's tools; enable it with defaultTools or --tools and configure it with codemode.mode and codemode.inlineBudget. tool_search finds tools that are not declared to the model and declares them. MCP servers over stdio or streamable HTTP, with OAuth, come from mcp.json (global, or per project once trusted) or pi.registerMcpServer() and are managed with /mcp and pi mcp add|remove|list|login|logout. See MCP Servers and Enable codemode (#10040).
  • •Added extension tool APIs for orchestrating tools: exposure (direct, model-only, codemode, deferred, or hidden), namespace, annotations, outputSchema with structuredContent, isError results, prepareLoadout(), and ctx.executeTool() for nested tool calls, which emit events with parentToolCallId and are recorded as bounded nestedCalls on the calling tool's result. See Tool exposure.
  • •Added a warning when an extension that registers the same tool, command, or flag replaces a built-in extension (#10174 by @cristinaponcela).
Mehr anzeigen (7)
  • •Added experimental virtual models: extensions register them with pi.registerVirtualModel() and pick a physical model and thinking level for each request. The footer shows the routed model, /session lists cost per physical model, and examples/extensions/jev-router.ts routes with the Jev classifier. See Virtual Models.
  • •Added Sign in with ChatGPT to the OpenAI provider in /login, which uses a ChatGPT subscription with the OpenAI API. Pi stores a stable deviceId in the global settings for this login and omits it from bug reports.
  • •Added the system theme, now the default, which derives pi's colors from the terminal's reported foreground, background, and ANSI palette and rebuilds them when the terminal switches between light and dark. See Use your terminal's colors.
  • •Added #rgb, oklch(), and okhsl() colors and an optional appearance field to theme files, and theme.style(), theme.colors, and theme.appearance for extensions. See Themes and TUI.
  • •Added a classifier model for every llama.cpp chat model, answered from next-token label probabilities. See Classification.
  • •Added inherited Jev classifier models on OpenRouter, Cloudflare Workers AI, Vercel AI Gateway, and OpenCode Zen.
  • •Added the fullscreenWheelScrollLines setting and /settings entry for fullscreen mouse-wheel scrolling. The default "auto" accelerates fast wheel spins outside local macOS terminals (#9758).
v0.87.1

v0.87.1

22. September 2026

  • •Latest frontier models — Use Claude Opus 5.5, GPT-6 Sol, and GPT-6 Luna through supported providers, including GitHub Copilot. See Choose a Model.
  • •Grok 4.7 by default for xAI — New xAI sessions now default to Grok 4.7. See Provider Authentication.
  • •Added inherited Claude Opus 5.5, GPT-6 Sol, and GPT-6 Luna support for GitHub Copilot.
  • •Added inherited GPT-6 Sol and GPT-6 Luna support for OpenAI API keys and OpenAI Codex subscriptions.
  • •Added inherited Claude Opus 5.5 support for Anthropic with adaptive thinking and a 1M context window.
  • •Changed the default xAI model to Grok 4.7.
  • •Fixed split-turn compaction summaries being refused by Claude Fable 5.1 by clearly separating the conversation and using continuation-oriented instructions (#9908 by @davidbrai).
  • •Fixed missing or invalid --mode values being silently ignored instead of reporting an error and exiting with a nonzero status (#9045).
Mehr anzeigen (2)
  • •Fixed inherited image-only user messages being rejected by some OpenAI-compatible providers because they included an empty text part (#9797).
  • •Fixed inherited Anthropic OAuth requests reporting an outdated Claude Code version.
v0.87.0Breaking Change

v0.87.0

21. September 2026

  • •Canonical session context and extension boundaries — Edit model context without rewriting history and add actionable lifecycle hooks. See ContextEditEntry and extension events.
  • •Full-transcript context extensions — Use context_with_system for per-request system-message transformations. See `context_with_system`.
  • •Per-model image input limits — Configure cache-safe image resizing per model for attachments, read, and tool-result images. See Image Input Limits.
  • •Removed the inherited shouldStopAfterTurn agent option. Use finishTurn and return { action: "end" } instead. finishTurn runs before turn_end but applies the decision afterward, and it also receives error and aborted responses; migrate normal-response predicates by returning undefined for those hard exits. See the @earendil-works/pi-agent-core changelog for a complete before-and-after example.
  • •Added ContextEditEntry to the exported SessionEntry union. TypeScript consumers with exhaustive entry switches must handle context_edit; use replacement: null for omission and a content replacement otherwise.
  • •Made SessionManager canonical for AgentSession provider context. Assigning session.agent.state.messages no longer replaces future request history; restore with SessionManager.inMemory(cwd, { id }, entries), navigate with session.navigateTree(), or append through session.sessionManager and call session.refreshContext().
  • •Expanded TurnEndEvent with required boundary fields and added AgentBeforeSettleEvent to the exported ExtensionEvent union. Consumers constructing events or exhaustively switching on ExtensionEvent must handle the new shapes. ExtensionRunner.emit() no longer accepts turn_end; host integrations dispatch actionable boundaries with emitBoundary(baseEvent, buildContext).
  • •Deferred runs requested from agent_settled handlers until all settled handlers finish. Handlers still observe ctx.isIdle() === true, but no longer see a reentrant agent_start during the same notification dispatch.
Mehr anzeigen (7)
  • •Added append-only model-context edits. For example, sessionManager.appendContextEdit(entryId, null) omits one message from future provider context without changing raw history, usage, or UI history.
  • •Added actionable turn_end and agent_before_settle extension boundaries. Return { entries: [...event.entries, draft], continue: true } to persist structural entries in order and ensure one next provider request without changing steering or follow-up scheduling.
  • •Added retain-none compaction input: sessionManager.appendCompaction(summary, null, tokensBefore) stores the compaction's own ID as its kept boundary.
  • •Added the context_with_system extension event, which runs after context handlers on the full transcript including system messages and sends its result verbatim. See `context_with_system`.
  • •Added per-model image resize profiles through inputLimits.images.resize in models.json, applied to file attachments, image reads, and tool-result images (#9631).
  • •Fixed string context-edit replacements producing invalid assistant and tool-result message content instead of text blocks.
  • •Fixed context-invisible boundary metadata and replacement edits causing newly appended or replaced input to be summarized before its first provider request.
v0.86.1

v0.86.1

20. September 2026

  • •Meta Muse provider — Sign in with Meta using /login meta or use META_API_KEY to access Muse Spark models. See Meta (Muse subscription).
  • •Added Meta (Muse subscription) login via /login meta with automatic Model API key refresh, plus META_API_KEY support (#9096 by @xl0).
  • •Enabled Node's persistent compile cache before loading the bundled CLI runtime, reducing repeat launch time.
  • •Fixed /bug descriptions dropping line breaks from pasted diagnostics.
  • •Fixed /bug hints appearing for user cancellations and retryable provider failures such as service unavailability.
  • •Fixed clipboard copy failing in containers and WSL without WSLg by restoring the OSC 52 fallback when no display is available, and added a verified Windows clipboard backend for WSL (#9688).
  • •Fixed inherited z.ai Prompt too long errors not being recognized as context overflow (#9805).
  • •Fixed inherited Cerebras models advertising unsupported strict tool schemas, which caused HTTP 400 errors when strict and non-strict tools were mixed (#9804 by @EdenGottlieb).
v0.86.0Breaking Change

v0.86.0

20. September 2026

  • •Prompt cache warming — Keep valuable prompt caches alive during long tool runs and optionally while idle using cost-aware refreshes. See Cache Warming.
  • •Bug reporting — Report problems with /bug using redacted diagnostics, optional transcripts, or exported ZIP archives. See Reporting Bugs.
  • •Transcript-aware prompt and tool updates — Preserve instruction and tool changes across resume and branch navigation while retaining cached prefixes. See `before_agent_start`.
  • •Offline Radius model catalog — Select Radius models immediately, with cached and live catalogs overlaid when available. See Radius.
  • •Per-model compaction budgets — Configure reserved and recent-token budgets by model. See Per-model overrides.
  • •Changed inherited pi-ai provider stream inputs from Context to normalized TranscriptContext values. Custom providers must read system prompts and tool declarations from context.messages with getCurrentSystemPrompt() and getCurrentTools(). See Custom Streaming API.
  • •Restricted inherited ToolCall.arguments and ToolResultMessage.details to JSON-compatible values, changed ToolResultMessage into a conditional type, and made JsonValue arrays readonly.
  • •user_bash now fails closed: errors or invalid defined results abort the command without invoking later handlers or executing locally. Return undefined to continue propagation; otherwise return { operations } or { result } (#9068).
Mehr anzeigen (7)
  • •Added transcript-backed mid-conversation system prompt and tool changes so instruction and tool updates survive resume and branch navigation while preserving cached prefixes on supported models. See `before_agent_start` and Entry Types (#9548).
  • •Added inherited native deferred tool loading for Fireworks Messages models. Use ToolSearch or tool_search as the loader name for prompt-prefix deferral (#9323).
  • •Added click toggling for branch summaries, compaction summaries, and skill invocation entries.
  • •Added the public Radius model catalog for immediate and offline model selection, with cached and live gateway catalogs overlaid when available.
  • •Added ctx.modelRegistry.stream() and streamSimple() for extension model calls through configured providers with resolved authentication (#8964).
  • •Added per-model reserveTokens and keepRecentTokens settings through compaction.modelOverrides, with ordinary compaction settings as fallback (#8133).
  • •Added compat.allowedFallbackModels configuration for overriding or disabling Anthropic server-side fallback models (#9294).
v0.85.1

v0.85.1

5. September 2026

  • •GPT-6 Astra — Available through OpenAI API keys and OpenAI Codex subscriptions. See API Keys and OpenAI Codex.
  • •Added GPT-6 Astra for OpenAI API keys and OpenAI Codex subscriptions.
  • •Added five-times-faster mouse wheel scrolling while holding Alt in fullscreen mode (#9166 by @xl0).
  • •Fixed configurable save keybindings in the model and thinking selectors (#9149 by @rwachtler).
  • •Fixed SDK import failures caused by unintentionally publishing internal experimental code and dependencies in 0.85.0. The experimental client and experimental/plugin subpaths and server/client commands are now source-only through pi-test.sh; the supported local SDK and stdio RPC API are unchanged (#9132).
  • •Fixed mouse hover changing selection and recentering autocomplete and settings lists, causing clicks to target a different item.
  • •Fixed long prompt-cache requests for GPT-5.6+ Responses models to use prompt_cache_options.ttl: "30m" instead of prompt_cache_retention: "24h".
v0.85.0

v0.85.0

4. September 2026

  • •Persistent Claude thinking effort — Supported Anthropic transports preserve per-turn effort and recover safely from signed-thinking mismatches. See Model Configuration.
  • •Fullscreen transcript controls — Jump to the latest message from a scrolled transcript and use the embedded working indicator. See TUI Fullscreen Viewport.
  • •Restorable in-memory sessions — Resume externally stored session entries through the SDK. See Session Management.
  • •Added SessionManager.inMemory() support for restoring externally managed session entries (#8980 by @y-nk).
  • •Added inherited OpenAI-compatible vllmPriority and supportsMaxOutputTokens model settings for vLLM scheduler priority and OpenAI Responses output-token limits (#9004 by @AppleDannyClegg, #8941 by @scturtle).
  • •Added inherited LaTeX rendering for relational algebra join symbols (#9050 by @haoqixu).
  • •Added a clickable "Jump to latest message" label with the tui.altScreen.bottom shortcut to the fullscreen transcript while it is scrolled up (#9080 by @rwachtler).
  • •Moved the streaming working indicator into the default editor border and matched its default spinner and label to the thinking-level border color. Custom editors retain the standalone indicator unless they opt in to embedding it (#8799 by @cristinaponcela).
Mehr anzeigen (7)
  • •Reduced inherited fullscreen transcript search latency on large transcripts by caching unchanged search results, indexing ASCII runs, and limiting highlight work to visible matches (#8800 by @cristinaponcela).
  • •Fixed managed fd and ripgrep downloads on Linux musl systems (#9070 by @Charlie0113-T).
  • •Removed the unavailable inherited Grok Build 0.1 model from /model (#9093 by @Jaaneek).
  • •Fixed inherited provider streams emitting incompatible event sequences and custom tool-call deltas.
  • •Restored the @earendil-works/pi-coding-agent/client compatibility entry point.
  • •Fixed the inherited Qwen Token Plan Individual catalog to include Qwen3.8 Flash (#9021).
  • •Fixed inherited OpenAI Codex SSE parsing to process terminal events that are not followed by a blank line (#9047).
v0.84.4

v0.84.4

29. August 2026

  • •Terminal capability overrides — Override detected terminal hyperlink, image, and truecolor support. See Capability Overrides.
  • •Extension UI prompt events — Integrations can distinguish active agent work from time spent waiting for ctx.ui prompts. See Extension UI prompt events.
  • •RPC queue clearing — Retrieve and clear queued steering and follow-up messages with clear_queue. See RPC `clear_queue`.
  • •Fullscreen selection copy controls — Disable automatic selection copying in fullscreen mode and use Ctrl+X to copy the active selection. See UI & Display.
  • •DeepSeek V4 Flash Vision (experimental) — Use the vision-capable model through the built-in DeepSeek provider. See API Keys.
  • •Added ui_prompt_start and ui_prompt_end extension events so host integrations can distinguish active agent work from waiting on user-facing ctx.ui prompts (#8355 by @cristinaponcela).
  • •Added detectSupportedImageMimeTypeFromFile() to the public library exports (#8600 by @xl0).
  • •Added inherited experimental vision-capable deepseek-v4-flash-vision-exp model support.
Mehr anzeigen (7)
  • •Added transcript usage notices for compaction and branch summaries when cache miss notices are enabled.
  • •Added RPC clear_queue to retrieve and remove queued steering and follow-up messages (#8432).
  • •Added environment variables and advanced settings for overriding auto-detected terminal hyperlink, image, and truecolor capabilities (#8665).
  • •Added fullscreenCopyOnSelect to disable automatic fullscreen selection copy; when disabled, Ctrl+X copies the active text selection before falling back to the last assistant message, while /tree still copies the selected message (#7720).
  • •Fixed toggling thinking visibility clearing partial output from running Bash tools (#8611).
  • •Fixed Windows shell aborts crashing Pi when taskkill.exe is unavailable on PATH (#6596).
  • •Fixed resumed sessions corrupting the next appended entry when their JSONL file lacks a trailing newline (#8345).
v0.84.3Breaking Change

v0.84.3

24. August 2026

  • •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.
  • •Renamed the inherited GoogleThinkingLevel type to GoogleApiThinkingLevel and added ResolvedGoogleThinkingLevel for normalized adapter levels.
  • •Added an optional powershell tool for Windows, configurable through defaultTools and the SDK. See PowerShell Tool.
  • •Added a /thinking selector 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.
Mehr anzeigen (7)
  • •Added session_compact_failed extension events so compaction failures and aborts expose their reason, retry state, source, and error message to handlers (#8175).
  • •Added inherited provider-neutral toolChoice support 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-0813 support to the Qwen Token Plan Individual catalog (#8194).
  • •Changed experimental installer-managed installations so pi update stages, verifies, and atomically activates the selected release in place. See Install and Manage.
v0.84.2

v0.84.2

14. August 2026

  • •Fullscreen transcript search — Search and navigate matches in fullscreen mode. See TUI Fullscreen Viewport.
  • •Configurable default tools — Choose startup built-in tools globally or per project. See Tools.
  • •Configurable fullscreen exit output — Print the transcript or only a resume hint on exit. See Interactive Mode.
  • •Added fullscreen transcript search with Ctrl+Shift+F, incremental match highlighting, configurable search match theme colors, and next/previous navigation with Enter/Ctrl+G and Shift+Enter/Ctrl+Shift+G.
  • •Added experimental strict JSON-schema constrained sampling for the default read, bash, edit, and write tools under PI_EXPERIMENTAL=1.
  • •Added a fullscreen exit output setting to choose between printing the final transcript and only a session resume hint.
  • •Added the defaultTools setting for configuring the initial built-in tool selection globally or per project.
  • •Added --use-theme <name[/name]> to choose an initial per-run interactive theme without changing saved settings (#7722 by @rwachtler).
Mehr anzeigen (7)
  • •Added expandPromptTemplates to extension pi.sendUserMessage() options for explicitly dispatching commands and expanding skills and prompt templates. See `pi.sendUserMessage()` (#7857 by @mrexodia).
  • •Added inherited createGatewayBindingFetch() for routing Cloudflare AI Gateway requests through a Workers AI binding without an API token (#7901 by @Maximo-Guk).
  • •Added inherited AssistantMessage.endTurn to preserve OpenAI Codex's terminal end_turn signal for diagnostics (#7766).
  • •Added inherited unbound single-line transcript scrolling actions for fullscreen mode. See TUI Fullscreen Viewport (#7903 by @midastruth).
  • •Changed inherited Kimi Coding requests to use pi's runtime User-Agent header.
  • •Replaced the inherited Mistral SDK transport with a native Chat Completions HTTP stream, eliminating its generated client and schema runtime overhead.
  • •Documented the generic AI_AGENT=pi process marker and how it differs from PI_CODING_AGENT=true (#7747).
v0.84.1

v0.84.1

7. August 2026

  • •Qwen Token Plan Individual — Use the built-in provider for models documented for Individual subscriptions. See API Keys.
  • •Authentication readiness checks — Use pi auth check to verify provider or model credentials, optionally emitting the resolved credential.
  • •Improved fullscreen interaction — Select words and paragraphs with multiple clicks and configure half-page transcript scrolling. See TUI Fullscreen Viewport.
  • •Terminating blocked tool calls — Extension tool_call handlers can stop all-terminating batches without another model call. See Tool Events.
  • •Added Qwen Token Plan Individual as a built-in provider with its documented subscription model catalog and the shared international QWEN_TOKEN_PLAN_API_KEY. See API Keys (#7659 by @arasovic).
  • •Added pi auth check provider/model auth preflight with optional credential output (#7152).
  • •Added terminate support to blocked extension tool_call events so all-terminating batches can skip the automatic follow-up model call. See Tool Events (#7715 by @muyiyr).
  • •Added inherited double-click word and whitespace selection, granularity-aware drag selection, and triple-click paragraph selection in fullscreen mode (#7725, #7733 by @volsa).
Mehr anzeigen (7)
  • •Added inherited unbound half-page transcript scrolling actions for fullscreen mode. See TUI Fullscreen Viewport (#7735).
  • •Softened the bash tool's PI_* environment guideline in an attempt to reduce unnecessary inspection commands (#7128).
  • •Reduced worst-case automatic terminal theme detection delay from 200 ms to 100 ms by probing color-scheme and background support concurrently.
  • •Fixed Bun standalone binaries crashing on startup when the cwd contains a bunfig.toml with preload by compiling with --no-compile-autoload-bunfig (#7685 by @geril07).
  • •Fixed extension TUI method wrappers recursing indefinitely when delegating to the original method (#7731).
  • •Fixed right-click not pasting clipboard text in fullscreen mode on Windows.
  • •Fixed inherited Agent.reset() clearing transcript and runtime state during active runs; it now rejects until the agent is idle (#7717 by @wesleyzhangwq).
v0.84.0Breaking Change

v0.84.0

6. August 2026

  • •Fullscreen TUI mode — Switch between regular and fullscreen modes at runtime, with a sticky editor and footer, independently scrollable transcript, and draggable scrollbars. See UI & Display.
  • •Mermaid and LaTeX rendering — Render Mermaid diagrams and terminal-friendly Unicode math in interactive transcripts. See Markdown settings and TUI Markdown.
  • •Per-directory context overrides — Use AGENTS.override.md to replace context files for a specific directory. See Context Files.
  • •Advanced custom model sampling — Configure arbitrary OpenAI-compatible samplingParams and opt-in vLLM thinking_token_budget values. See Sampling Parameters.
  • •Baseten provider — Use built-in Baseten authentication and model support. See API Keys.
  • •Renamed the inherited pi-ai ModelsStreamTransforms interface to ModelsRequestTransforms because its header transformation now applies to all authenticated provider requests.
  • •Changed JSON and RPC message_update events to emit only assistantMessageEvent deltas, removing the cumulative message and assistantMessageEvent.partial fields that caused quadratic output growth. Clients that need partial messages must assemble deltas between message_start and message_end; the latter remains authoritative (#7290).
  • •ModelRegistry.getApiKeyAndHeaders() now returns ProviderHeaders with string | null values and preserves null header-deletion markers. Extensions that inspect returned headers must handle null; extensions forwarding them to pi-ai streams should pass them through unchanged. This prevents placeholder OpenAI credentials from being sent through Cloudflare AI Gateway (#7030).
Mehr anzeigen (7)
  • •Changed ModelRegistry.refresh() to accept ModelsRefreshOptions and return ModelsRefreshResult instead of discarding cancellation and provider errors.
  • •Changed ModelRuntime.setRuntimeApiKey() to accept auth cancellation options rather than catalog refresh options. Call refresh({ providers: [providerId], signal }) separately when remote freshness is required.
  • •Required config-form extension OAuth refreshToken(credentials, signal) callbacks to accept and honor a concrete abort signal.
  • •Replaced dynamic provider refresh context store access with the read-only context.stored snapshot and generation-checked context.publish() transaction.
  • •Replaced the inherited pi-agent-core harness session model with the v4 lane-based Session, SessionStorage, and SessionRepo APIs, including durable operation records, global facts, shared sequence numbers, and tree-scoped lane views.
  • •Promoted the inherited v2 session and AgentHarness API from pi-agent-core's experimental entrypoint to its default export and removed the experimental subpaths.
  • •Removed the inherited legacy JSONL and in-memory repository APIs. Use pi-agent-core's v4 JsonlSessionRepo or InMemorySessionRepo, both implementing the new SessionRepo contract.
v0.83.0Breaking Change

v0.83.0

30. Juli 2026

  • •Credential export for external clients — pi auth print-api-key and pi auth print-bearer-token export configured credentials with automatic OAuth refresh and minimum-validity enforcement.
  • •Headless OpenRouter sign-in — Complete /login over SSH by pasting the redirect URL or authorization code when the loopback callback is unavailable. See OpenRouter.
  • •Claude Opus 5 on GitHub Copilot — Use Claude Opus 5 through GitHub Copilot with adaptive thinking and a 1M context window. See GitHub Copilot.
  • •Upgraded bundled TypeBox aliases to 1.3.7, removing deprecated APIs including Type.Base, Type.Awaited, Type.Promise, Type.AsyncIterator, Type.Iterator, Type.Options, and Value.Mutate, while fixing compiled validation of nullable array tool arguments. Extensions using removed APIs must migrate to supported TypeBox APIs. See Package Dependencies (#7243 by @petrroll).
  • •Added pi auth print-api-key and pi auth print-bearer-token commands for exporting configured credentials to external clients, including automatic OAuth refresh and configurable minimum token validity (#7168).
  • •Exposed the session's resolved model scope as ctx.scopedModels to extensions. See Extension Context (#7191 by @pungggi, #7215).
  • •Added inherited per-request fetch injection for supported text and image provider transports.
  • •Added the inherited "pending" stop reason for partial streaming messages. See Custom Provider Stream Pattern (#7151 by @lucasmeijer).
Mehr anzeigen (7)
  • •Added inherited raw provider stop reasons across Google, Anthropic, Amazon Bedrock, Mistral, and OpenAI streams; unmapped terminal reasons now surface as provider errors instead of successful stops (#7272).
  • •Added manual redirect URL and authorization-code entry to OpenRouter login for remote and headless environments. See OpenRouter (#7114 by @rgarcia).
  • •Added inherited Claude Opus 5 support for GitHub Copilot with adaptive thinking and a 1M context window. See GitHub Copilot (#7158 by @jay-aye-see-kay).
  • •Changed inherited OAuth credential resolution to refresh tokens with less than five minutes of validity remaining instead of waiting until expiration (#7168).
  • •Added a status line when the tool output expansion is toggled (#7180).
  • •Fixed file-backed SYSTEM.md and APPEND_SYSTEM.md prompts being omitted from the interactive startup context listing. See System Prompt Files (#7096).
  • •Fixed context files loading twice when a linked Git worktree is nested under its main repository. See Context Files (#7221 by @arajkumar).
v0.82.1

v0.82.1

25. Juli 2026

  • •Claude Opus 5 — Available on Anthropic and Amazon Bedrock with adaptive thinking (including xhigh), inference profiles, and prompt caching. See Providers.
  • •Anthropic gateway bearer auth — ANTHROPIC_AUTH_TOKEN authenticates against Anthropic-compatible gateways that require Authorization: Bearer, including compaction and branch summaries. See Environment Variables or Auth File.
  • •Faster, more resilient model catalogs — pi.dev catalogs revalidate with If-None-Match so unchanged providers answer with an empty 304, and llama.cpp models stay listed across restarts. See llama.cpp.
  • •Exposed the outputPad setting to custom message renderers. See Extensions (#7045 by @xl0).
  • •Added inherited ANTHROPIC_AUTH_TOKEN bearer authentication for Anthropic-compatible gateways. See Providers (#5871).
  • •Added inherited Claude Opus 5 support for Anthropic and Amazon Bedrock with adaptive thinking, inference profiles, prompt caching, and preserved AWS validation messages (#7081 by @unexge, #7083 by @davidbrai).
  • •Changed pi.dev model catalog refreshes to revalidate with If-None-Match, so unchanged provider catalogs answer with an empty 304 instead of a full download.
  • •Changed inherited Radius OAuth device authorization, token exchange, and refresh requests to use the configured gateway directly.
Mehr anzeigen (5)
  • •Changed inherited model loading errors to append the underlying cause, so auth failures such as OAuth refresh failed for openai-codex report the provider response instead of a bare wrapper message.
  • •Fixed compaction and branch summaries for providers whose authentication resolves entirely to request headers (#5871)
  • •Fixed unavailable scoped models being hidden from /models, allowing them to be removed without editing settings manually (#6949, #7032 by @christianklotz).
  • •Fixed startup context file discovery to skip directories that match context file names such as AGENTS.md, which produced EISDIR warnings (#7106 by @mrexodia).
  • •Fixed the llama.cpp extension to persist its model catalog, so llama.cpp models stay listed before the first successful refresh. See llama.cpp (#7072 by @davidbrai).
v0.82.0

v0.82.0

24. Juli 2026

  • •Constrained tool sampling — Tools can prefer or require strict JSON Schema sampling or use OpenAI Lark/regex grammars, with model capability metadata preventing unsupported requests. See Constrained Sampling for Tools.
  • •OpenRouter and Kimi Code sign-in — Use /login to authorize OpenRouter or a Kimi Code subscription without manually configuring API keys. See OpenRouter.
  • •Session-aware, streaming bash integrations — Bash tools receive current session/model metadata, while direct RPC bash commands stream correlated output. See Bash Tool Session Environment and RPC bash events.
  • •Added inherited Tool.constrainedSampling with strict JSON Schema (prefer/require) and OpenAI Lark/regex grammar variants across OpenAI, Anthropic, Amazon Bedrock, Google Gemini, and Mistral. See Constrained Sampling for Tools.
  • •Added inherited supportsGrammarTools and supportsStrictTools compatibility flags, expanded supportsStrictMode coverage, and generated model capability metadata to gate constrained sampling.
  • •Added inherited Kimi Code subscription OAuth login for the Kimi For Coding provider, including device authorization and automatic token refresh (#6935 by @zaycruz).
  • •Added inherited OpenRouter OAuth PKCE login through /login, minting a user-controlled API key. See OpenRouter (#6927 by @rsaryev).
  • •Exposed PI_SESSION_ID, PI_SESSION_FILE, PI_PROVIDER, PI_MODEL, and PI_REASONING_LEVEL to commands run by built-in and factory-created bash tools. See Bash Tool Session Environment.
Mehr anzeigen (7)
  • •Added streaming bash_execution_update events for direct RPC bash commands, correlated with request IDs. See RPC bash events (#6971 by @ananthakumaran).
  • •Changed inherited generated model catalogs to expose only provider-verified reasoning effort levels from models.dev (#6928 by @davidbrai).
  • •Fixed inherited DNS lookup failures such as getaddrinfo, ENOTFOUND, and EAI_AGAIN to trigger automatic assistant retries (#6946 by @christianklotz).
  • •Fixed inherited OpenRouter Anthropic cache breakpoints to advance through tool results and enabled cache control for ~anthropic/*-latest aliases (#6941 by @mteam88).
  • •Fixed inherited OpenAI Codex WebSocket sessions to retry once without a missing previous-response continuation after previous_response_not_found errors (#6955 by @davidbrai).
  • •Fixed TUI debug and crash logs to respect custom agent directories instead of always writing under ~/.pi/agent (#6958 by @davidbrai).
  • •Fixed slow Ctrl+G external-editor startup when the system temporary directory contains many entries (#6903 by @christianklotz).
v0.81.1

v0.81.1

21. Juli 2026

  • •Verifiable release source archives — GitHub releases now include deterministic, checksummed source archives with instructions for rebuilding standalone binaries. See Building standalone binaries from release source.
  • •Resilient compaction and branch summaries — Transient provider failures now follow the configured retry policy, with retry lifecycle events available to interactive, JSON, RPC, and SDK consumers. See Compaction & Branch Summarization and RPC retry events.
  • •Added deterministic, checksummed source archives to GitHub releases with documented standalone binary rebuild instructions (#6913 by @christianklotz).
  • •Fixed compaction and branch summarization to retry transient provider failures using the configured retry policy, with retry lifecycle events exposed to interactive, JSON, RPC, and SDK consumers (#6901 by @davidbrai).
  • •Fixed interactive startup waiting for background model catalog refresh while computing the footer provider count.
  • •Restored the default stream fallback for extensions using the pre-0.81 agent-core API (#6915).
  • •Fixed inherited Kimi K3 models from Moonshot AI and Moonshot AI China to use the OpenAI thinking format and expose reasoning effort support.
v0.81.0

v0.81.0

21. Juli 2026

  • •Local llama.cpp model management — Connect to a llama.cpp router, search and download Hugging Face models, and explicitly load or unload models with live progress. See llama.cpp.
  • •Full provider extensions — Extensions can register complete pi-ai providers with authentication, model refresh, filtering, and custom streaming. See Register New Provider.
  • •Qwen Token Plan providers — Use the built-in international and China subscription providers with regional endpoints and API-key authentication. See API Keys.
  • •Expanded usage accounting — Tool, compaction, and branch-summary usage is persisted and included in session totals. See Compaction & Branch Summarization.
  • •Added Qwen Token Plan and Qwen Token Plan China to built-in provider setup, default model resolution, and provider documentation (#6858 by @QuintinShaw).
  • •Added the get_available_thinking_levels RPC command and RpcClient.getAvailableThinkingLevels() method (#6865 by @cristinaponcela).
  • •Exported message and tool execution lifecycle event types from the package root (#6772 by @davidbrai).
  • •Added built-in llama.cpp router support with /login connection setup and /llama Hugging Face model search and downloads, explicit loading, unloading, and live progress. See llama.cpp.
Mehr anzeigen (7)
  • •Added extension registration for complete pi-ai providers, including native authentication, model refresh, filtering, and streaming behavior.
  • •Added usage accounting for tools, compaction, and branch summaries in persisted sessions, footer totals, and session statistics (#6671 by @davidbrai).
  • •Updated the packaged brace-expansion dependency to 5.0.7 (#6896 by @davidbrai).
  • •Fixed persisted remote model catalogs from overriding newer bundled catalogs after an upgrade.
  • •Fixed inherited stored API-key credentials to apply their provider-scoped env values, including Amazon Bedrock profiles (#6864 by @cristinaponcela).
  • •Fixed inherited OpenAI-compatible cross-provider replay to keep tool call IDs unique when multiple calls share a provider call ID (#6854 by @cristinaponcela).
  • •Fixed inherited Kimi K3 thinking levels to expose low, high, and max, and normalized the k2p7 alias to kimi-for-coding.
v0.80.10

v0.80.10

17. Juli 2026

  • •Kimi Coding thinking compatibility — Kimi Coding models now use adaptive thinking correctly; K3 exposes its supported max level and supports replaying empty-signature thinking blocks. See Kimi For Coding setup and Model Options.
  • •Fixed inherited Kimi Coding requests to use Anthropic adaptive thinking effort without token budgets, and enabled empty thinking signatures for K3 and kimi-for-coding.
  • •Fixed inherited Kimi K3 pricing metadata for Moonshot AI and Moonshot AI China.
  • •Fixed inherited Kimi Coding K3 thinking-level metadata to expose only the supported max level (#6737).
  • •Fixed inherited catalog generation restoring xAI models removed in 0.80.9 (#6736).
Zeige 30 von 134