PAGES
← all tools
◆ UNCATEGORIZED

Pi

v0.99.2 open-source

AI agent toolkit: unified LLMLLMA large language model, a neural network trained on large amounts of text to recognize patterns and generate language. Applications use it for tasks such as answering, summarizing and writing code. API, agent loop, TUITUIA text-based user interface that runs inside a terminal, using characters and ANSI escape codes to render menus, panes, and widgets without a graphical desktop, letting cyber tools ship rich interactivity with no GUI dependency., coding agent CLI

Summary

Pi is an open-source coding agent harnessagent harnessThe software around an AI agent that manages its tools, execution loop, state and limits. It determines how the model's proposed actions are run and checked. that developers run as an interactive CLI, or embed via its extensible packages, to work with LLMsLLMsA large language model, a neural network trained on large amounts of text to recognize patterns and generate language. Applications use it for tasks such as answering, summarizing and writing code. across providers like OpenAI, Anthropic, and Google through a single unified API. It targets developers and teams building or customizing their own coding agents rather than those wanting a packaged assistant, since it ships as a terminal UI plus separable runtime, telemetry, and AI-provider libraries that extensions can hook into. By default it runs with the permissions of the user who launched it, with no built-in sandboxingsandboxingRunning code inside a restricted environment that limits what it can access or change. The isolation reduces the impact of mistakes or untrusted code, depending on the sandbox's controls., though its documentation describes patterns for containerizing it when stronger isolation is needed. Chat and Slack automation are split into a companion project rather than bundled in. Development is active, with 261 contributors and a release roughly every ten days over the past year.

AI agent toolkit: unified LLM API, agent loop, TUI, coding agent CLI

How Pi helps

Which providers can I switch between without changing how I prompt or manage credentials?

routes requests through a single unified API across OpenAI, Anthropic, Google, and other providers, so switching providers is a configuration change rather than a rewrite of prompts or integration code

Can I let an agent touch a new project's files without trusting whatever settings or instructions it brought with it?

prompts before loading project-local settings, resources, instructions, and packages, and lets an extension remember or defer that trust decision before anything local loads

How do I stop an agent from prompting for approval in the middle of an unattended pipeline?

supports non-interactive approval or blocking of project-local resources by policy, so a scripted run either auto-approves everything or refuses it without waiting on a prompt

How do I keep provider credentials and proxy settings out of my shell environment?

supports provider-scoped API key and proxy overrides stored in its own auth configuration, so keys and endpoints reach the AI provider without being exported into the surrounding shell

How much of my token spend is coming from cache hits versus fresh requests?

shows a live cache hit rate in the interactive footer and accounts for cached-token usage and cost separately where a provider supports prompt caching

Can an extension change its behavior depending on whether it's driving the terminal UI, a script, or another automation surface?

exposes the current run mode to extension code so an extension can suppress interactive prompts or alter output when running under RPC, JSON, or print mode instead of the terminal UI

all 130 features, with the evidence for each →

Languages

Not documented

Features

130 capabilities across 7 areas

Built from Pi's releases, docs, README and our own runs. “Seen” marks the month we first spotted a release the vendor didn't date. Group names and tags are our labels.

Compare with peers →

What Pi offers you

  • Command-line interface23
  • Plugin API support8
  • Plugin system5
  • Scripting API5
  • Client SDKs2
  • gRPC API support2
  • JavaScript scripting support1
  • MCP server1
  • ML-based detection1
  • Scripting language support1
AI Model Access and Provider Support 15 capabilities Pi connects users to a wide range of AI model providers, handling authentication, model discovery, and provider-specific configurations. It abstracts differences between providers so users can switch models and services without changing their workflow.
Dynamic model catalog management shipped Keeps model catalogs fresh through file-backed storage, per-provider overlays, and live background refresh. 25 releases · 2 other sources · first seen Jan 2026

Also counts toward: Plugin API support

release 25 total

  • Adds a Models Configuration reference generated from the models.json schema, documenting every provider, model, model override, and compatibility field. v1.4.0 · Oct 2026 · source · release history
  • Adds 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 regional endpoints configured as the base URL in models.json; the list is saved and used offline. v1.2.0 · Oct 2026 · source · release history
  • Adds types=chat,image,classifier parameter for pi.dev model catalog requests to overlay supported model types during remote refreshes v0.99.0 · Sep 2026 · source · release history
  • Adds experimental virtual models: extensions register them with pi.registerVirtualModel() to route each request to a different physical model and thinking level; /session lists cost per physical model. v0.99.0 · Sep 2026 · source · release history
  • Adds types=chat,image,classifier to pi.dev model catalog requests so remote refreshes overlay every supported model type. v0.99.0 · Sep 2026 · source · release history
  • Adds pi.registerVirtualModel() API and /session cost reporting to route requests to different physical models v0.99.0 · Sep 2026 · source · release history

docs

  • (18 models) Gemini 3.5 Flash Lite gemini-3.5-flash-lite Gemini 3.6 Flash gemini-3.6-flash (56 models) Gemini 3.5 Flash Lite gemini-3.5-flash-lite Gemini 3.6 Flash gemini-3.6-flash Laguna S 2.1 Free laguna-s-2.1-free (273 models) $0.098 $0.196 $0.0196 Google: Gemini 3.5 Flash Lite google/gemini-3.5-flash-lite Google:… docs update · Jul 2026 · source

example

  • Swap in a custom provider at runtime from a command handler and later cleanly remove it, restoring the original built-in models — all without issuing /reload. pi.unregisterProvider("my-custom-provider") v0.55.2 · Feb 2026 · source
Default model configuration shipped Sets sensible default models per provider so users get up-to-date choices without manual configuration. 16 releases · 5 other sources · first seen Dec 2025

release 16 total

  • Pi adds GPT-6.1 Terra for OpenAI, Azure OpenAI Responses, and OpenAI Codex, with tool search, mid-conversation thinking-level changes, thinking off, and a 500K context window on Codex. v1.5.0 · Nov 2026 · source · release history
  • The default OpenAI model is changed from gpt-5.5 to gpt-6.1-sol, including after ChatGPT sign-in when no model is selected. v1.5.0 · Nov 2026 · source · release history
  • The default OpenAI Codex model is now gpt-6.1-sol; existing workflows that relied on the previous default Codex model will now use GPT-6.1 Sol unless a model is explicitly specified. v0.99.1 · Sep 2026 · source · release history
  • Changes the default OpenAI Codex model to gpt-6.1-sol.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ v0.99.1 · Sep 2026 · source · release history
  • Adds a /thinking selector for choosing thinking levels interactively, with searchable default choices; Ctrl+S persists the selected model as the global default instead of only session-scoping it. v0.84.3 · Aug 2026 · source · release history
  • Changes the default xAI model to Grok 4.5 and updates xAI login to use a prefilled device-authorization link labeled Sign in with SuperGrok or X Premium. v0.80.9 · Jul 2026 · source · release history

docs

  • Sep 29, 2026 Pi 0.99.1 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. docs update · Sep 2026 · source
  • Set the model for the current session. The change is recorded in session history and restored when that session is resumed, but it does not change the configured defaultProvider defaultModel used by new sessions. Returns if authentication is not configured for the model's provider. See Get the current thinking level. docs update · Sep 2026 · source
  • for common options. To save startup model defaults interactively, use /model and press Ctrl+S on the desired model. To save the startup thinking level, use /thinking and press Ctrl+S. docs update · Aug 2026 · source
  • or Ctrl+L to choose a model for the current session. Press Ctrl+S in the model picker to save the highlighted model as the startup default. Use /thinking to choose a thinking level for the current session, or Ctrl+S in that picker to save the startup default thinking level. Use Shift+Tab to cycle thinking level. docs update · Aug 2026 · source

example

  • Capture a rendering diagnostic snapshot when lines appear misaligned or truncated in your terminal. /debug v0.12.4 · Dec 2025 · source
Anthropic Claude model catalog shipped Gives users access to the latest Anthropic Claude models including versions with adaptive thinking. 11 releases · 6 other sources · first seen Dec 2025

release 11 total

  • Adds Claude Haiku 5.5 (anthropic/claude-haiku-5-5) with adaptive thinking up to xhigh/max effort and prompt caching on Bedrock. v1.1.0 · Oct 2026 · source · release history
  • Expanded SessionEntry union to include ContextEditEntry; TypeScript consumers with exhaustive entry switches must handle context_edit. v0.87.0 · Sep 2026 · source · release history
  • Dynamic provider refresh context store access is replaced with the read-only context.stored snapshot and generation-checked context.publish() transaction; handwritten Provider.refreshModels() implementations must be migrated. v0.84.0 · Aug 2026 · source · release history
  • Adds Claude Opus 5 support through the GitHub Copilot provider, with adaptive thinking and a 1 million-token context window. v0.83.0 · Jul 2026 · source · release history
  • Adds Claude Opus 5 model support on Anthropic and Amazon Bedrock, including adaptive thinking (with xhigh level), inference profiles, and prompt caching. v0.82.1 · Jul 2026 · source · release history
  • Adds native xhigh and max thinking levels for Claude Fable 5 across all generated provider catalogs. v0.80.7 · Jul 2026 · source · release history

docs

  • azure (187 models) Claude Haiku 4.5 (India) in.anthropic.claude-haiku-4-5-20251001-v1:0 Claude Opus 5 (India) in.anthropic.claude-opus-5 Claude Sonnet 5 (India) in.anthropic.claude-sonnet-5 Claude Sonnet 5.5 (EU) eu.anthropic.claude-sonnet-5-5 Claude Sonnet 5.5 (US) us.anthropic.claude-sonnet-5-5 GLM-5.3 (Global)… docs update · Oct 2026 · source
  • Release notes Sep 22, 2026 Pi 0.87.1 New version of pi. Download from npm or view release on GitHub New Features Latest frontier models — Use Claude Opus 5.5, GPT-6 Sol, and GPT-6 Luna through supported providers, including GitHub Copilot. docs update · Sep 2026 · source
  • Model Catalog (174 models) Claude Opus 5.5 anthropic.claude-opus-5-5 Claude Opus 5.5 (AU) au.anthropic.claude-opus-5-5 Claude Opus 5.5 (EU) eu.anthropic.claude-opus-5-5 Claude Opus 5.5 (Global) global.anthropic.claude-opus-5-5 Claude Opus 5.5 (JP) jp.anthropic.claude-opus-5-5 Claude Opus 5.5 (US)… docs update · Sep 2026 · source
  • News New Features Claude Opus 5 — Available on Anthropic and Amazon Bedrock with adaptive thinking (including xhigh ), inference profiles, and prompt caching. See Providers . docs update · Jul 2026 · source
  • Jul 25, 2026 Pi 0.82.1 Claude Opus 5 — Available on Anthropic and Amazon Bedrock with adaptive thinking (including ), inference profiles, and prompt caching. docs update · Jul 2026 · source

example

  • Display all available keyboard shortcuts at any point during a session. /hotkeys v0.24.0 · Dec 2025 · source
Extended reasoning level support shipped Exposes deep reasoning depth settings that work across multiple providers including Claude, GPT, and Grok. 7 releases · 4 other sources · first seen May 2026

Also counts toward: Command-line interface, gRPC API support, Client SDKs

release 7 total

  • Adds xhigh thinking level for Grok 4.3 and Grok 4.5 on the xai provider. v1.4.0 · Oct 2026 · source · release history
  • The ModelsStreamTransforms interface is renamed to ModelsRequestTransforms; extensions referencing the old name will break. v0.84.0 · Aug 2026 · source · release history
  • Adds native xhigh and max thinking levels for Claude Fable 5 across all generated provider catalogs. v0.80.7 · Jul 2026 · source · release history
  • Adds max thinking level (above xhigh) for GPT-5.6 and adaptive Claude models, available via CLI, SDK, RPC, and model selection; custom themes can define thinkingMax. v0.80.6 · Jul 2026 · source · release history
  • Adds max thinking level (above xhigh) for GPT-5.6 and adaptive Claude models, available via --thinking max in the CLI, SDK, RPC, and model selection; custom themes can define thinkingMax. v0.80.6 · Jul 2026 · source · release history
  • Enables GLM-5.2 xhigh reasoning on OpenRouter and corrects Fireworks routing to use the OpenAI-compatible Chat Completions endpoint with reasoning_effort support. v0.79.9 · Jun 2026 · source · release history

docs

  • Sep 4, 2026 Pi 0.85.0 Persistent Claude thinking effort — Supported Anthropic transports preserve per-turn effort and recover safely from signed-thinking mismatches. See Fullscreen transcript controls — Jump to the latest message from a scrolled transcript and use the embedded working indicator. docs update · Sep 2026 · source
  • Claude models with per-turn effort support use supportsMidConvoEffort . Pi then persists each response's provider effort, reconstructs effort-only system messages on later requests, and sends thinking binding controls with prefix_mismatch_behavior: drop_block to avoid stale signed-thinking prefixes causing… docs update · Sep 2026 · source
  • News New Features max thinking level - New opt-in thinking level above xhigh , natively supported on GPT-5.6 and adaptive Claude models, available across CLI ( --thinking max ), SDK, RPC, and model selection. Custom themes can define thinkingMax . See CLI Reference . docs update · Jul 2026 · source

example

  • Invoke the highest reasoning depth on a complex refactor task when using GPT-5.6 or a supported Claude model. pi --thinking max 'Audit this codebase for insecure deserialization patterns and propose fixes' v0.80.6 · Jul 2026 · source
Local llama.cpp model management shipped Lets users search, download, and run local Hugging Face models via llama.cpp without leaving the Pi session. 5 releases · 6 other sources · first seen Dec 2025

Also counts toward: Command-line interface

release

  • Changes bash and powershell structured results in codemode to hold up to 1 MiB of output (previously 2000 lines or 50 KB) and adds truncated and full_output_path fields. v0.99.0 · Sep 2026 · source · release history
  • --no-extensions now also disables the built-in extensions including the llama.cpp provider; previously built-ins were unaffected. Restore a specific built-in with -e builtin:<name>. v0.99.0 · Sep 2026 · source · release history
  • Adds built-in llama.cpp router support via /login connection setup and /llama subcommand for Hugging Face model search, download, explicit load/unload, and live progress. v0.81.0 · Jul 2026 · source · release history
  • Adds /login command for llama.cpp router connection setup and /llama subcommand for Hugging Face model search, download, explicit load, unload, and live progress tracking. v0.81.0 · Jul 2026 · source · release history
  • Adds built-in llama.cpp router support with /login for connection setup and /llama for Hugging Face model search, download, explicit load/unload, and live progress. v0.81.0 · Jul 2026 · source · release history

docs

  • Navigation On this page Documentation On this page NVIDIA Local AI Inference Recipes provides llama.cpp settings tuned for specific NVIDIA hardware and models. Each recipe gives a single-model llama-server command. docs update · Oct 2026 · source
  • Navigation On this page Documentation On this page Pi supports the llama.cpp router server. The router discovers multiple GGUF models and loads or unloads them on demand. Use a current llama.cpp build with router support. Follow the build instructions or install a prebuilt release for your platform. docs update · Sep 2026 · source
  • News New Features 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 . docs update · Jul 2026 · source
  • Jul 21, 2026 Pi 0.81.0 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. docs update · Jul 2026 · source

example

  • Connect to a local llama.cpp router and search for a Hugging Face model to download and load — without leaving the Pi session. /login /llama <model-search-query> v0.81.0 · Jul 2026 · source
  • Draft a long, structured prompt in your preferred editor rather than the inline input, useful for complex multi-step instructions. # While in the pi prompt, press Ctrl+G to open $EDITOR, write your message, save and quit to send it. v0.25.3 · Dec 2025 · source
Keyboard shortcut customization shipped Lets providers supply their own native thinking controls when models like DeepSeek need them via chat-template configuration. 9 releases · 2 other sources · first seen Dec 2025

release 9 total

  • Adds app.message.copy key (default ctrl+x) on OAuth sign-in screens in /login, /mcp, and /mcp login to copy the sign-in URL when the browser cannot be opened. v1.0.1 · Oct 2026 · source · release history
  • /reload command to enable tools newly added to the defaultTools setting without restart v0.99.2 · Sep 2026 · source · release history
  • Adds +name and -name entries to the defaultTools setting to add or remove tools without repeating all defaults. v0.99.0 · Sep 2026 · source · release history
  • Adds Ctrl+X shortcut to copy the last assistant message in the transcript, or the selected message in /tree. v0.80.7 · Jul 2026 · source · release history
  • Adds Ctrl+J as a default newline keybinding alongside Shift+Enter. v0.80.0 · Jun 2026 · source · release history
  • Digit keys (0-9) now supported in the TUI keybinding system, including modified combos like ctrl+1, with Kitty CSI-u and xterm modifyOtherKeys protocol support. v0.57.1 · Mar 2026 · source · release history

docs

  • Pi exposes named actions, such as , that can be assigned keybindings. You can change default assignments or bind unassigned actions in Pi's user configuration Run /hotkeys to see the active shortcuts for the main editor and application. Assign keybindings <agent-dir>/keybindings.json . docs update · Oct 2026 · source
  • Pi uses Windows-style keybindings when running natively on Windows or in WSL: Alt+V pastes an image or clipboard text. Ctrl+F searches the transcript in fullscreen mode, and Ctrl+Up / Ctrl+Down jump between marked messages. Alt+P cycles to the previous model. docs update · Aug 2026 · source
Qwen Token Plan provider support shipped Adds Qwen Token Plan as a built-in provider with regional endpoint support. 3 releases · 2 other sources · first seen Jul 2026

release

  • Adds QWEN_TOKEN_PLAN_API_KEY environment variable and Qwen Token Plan Individual as a built-in provider with its subscription model catalog. v0.84.1 · Aug 2026 · source · release history
  • Adds Qwen Token Plan Individual as a built-in provider, using the shared international QWEN_TOKEN_PLAN_API_KEY environment variable and its documented subscription model catalog. v0.84.1 · Aug 2026 · source · release history
  • Adds Qwen Token Plan and Qwen Token Plan China as built-in providers with regional endpoints and API-key authentication. v0.81.0 · Jul 2026 · source · release history

docs

  • Aug 7, 2026 Pi 0.84.1 Qwen Token Plan Individual — Use the built-in provider for models documented for Individual subscriptions. See Authentication readiness checks pi auth check to verify provider or model credentials, optionally emitting the resolved credential. docs update · Aug 2026 · source
  • Qwen Token Plan QWEN_TOKEN_PLAN_API_KEY qwen-token-plan Qwen Token Plan (China) QWEN_TOKEN_PLAN_CN_API_KEY qwen-token-plan-cn qwen-token-plan: { type: api_key, key: "sk-sp-..." }, qwen-token-plan-cn: { type: api_key, key: "sk-sp-..." }, docs update · Jul 2026 · source
Kimi K3 model support shipped Makes Kimi K3 available across multiple provider catalogs including OpenRouter and Vercel. 2 releases · 1 other source · first seen Dec 2025

release

  • models.json base URL overrides for the kimi-coding provider must now include /v1 (e.g. https://api.kimi.com/coding/v1 instead of https://api.kimi.com/coding). v1.3.0 · Oct 2026 · source · release history
  • Adds Kimi K3 model support across Kimi Coding, Moonshot AI, Moonshot AI China, OpenRouter, and Vercel AI Gateway. v0.80.9 · Jul 2026 · source · release history

example

  • Disable the skills system entirely when you want a clean, instruction-free agent run. pi --no-skills v0.19.0 · Dec 2025 · source
Chat-template thinking controls for custom providers shipped Maps Pi reasoning levels to provider-native thinking controls for vLLM and Hugging Face compatible models. 2 releases · 1 other source · first seen Jun 2026

release

  • Adds chat-template thinking support: OpenAI-compatible custom providers can now map Pi thinking levels into chat_template_kwargs, enabling vLLM/Hugging Face models such as DeepSeek to use provider-native thinking controls. v0.79.9 · Jun 2026 · source · release history
  • Supports chat_template_kwargs-based thinking controls for OpenAI-compatible custom providers, enabling vLLM/Hugging Face chat-template models (e.g. DeepSeek) to use provider-native thinking levels. v0.79.9 · Jun 2026 · source · release history

example

  • Configure a vLLM-hosted model with custom sampling parameters and a thinking token budget. { "id": "vllm/qwen3-235b", "samplingParams": { "temperature": 0.6, "top_p": 0.95 }, "thinking_token_budget": 8192 } v0.84.0 · Aug 2026 · source
Session affinity configuration shipped Controls how session IDs are sent to providers to ensure correct session handling per service. 2 releases · 1 other source · first seen Jul 2026

release

  • The compat.sendSessionIdHeader flag has been removed from models.json for openai-responses. Replace sendSessionIdHeader: false with sessionAffinityFormat: "openai-nosession" (other values: "openai", "openrouter"). v0.80.7 · Jul 2026 · source · release history
  • The compat.sendSessionIdHeader flag has been removed from models.json for openai-responses models. Replace sendSessionIdHeader: false with sessionAffinityFormat: "openai-nosession" in your models.json; the new field also accepts "openai" and "openrouter". v0.80.7 · Jul 2026 · source · release history

docs

  • News Breaking Changes Removed the openai-responses compat.sendSessionIdHeader flag from models.json . Session-affinity behavior is now controlled by compat.sessionAffinityFormat ( openai , openai-nosession , or openrouter ). docs update · Jul 2026 · source
Mistral prompt caching shipped Reduces Mistral API costs by caching prompts within a session and showing users how much caching saved. 1 release · 1 other source · first seen Jun 2026

release

  • Adds Mistral prompt caching using the Pi session ID as the cache key, with cached-token usage and cost accounting surfaced per session. v0.79.8 · Jun 2026 · source · release history

docs

  • Show transcript notices for significant prompt-cache misses, compaction or branch-summary usage, and provider recovery diagnostics such as dropped Anthropic thinking blocks Send the anonymous install/update ping and selected provider attribution headers. docs update · Sep 2026 · source
Grok 4.5 provider support shipped Adds Grok 4.5 as a usable model with selectable reasoning depth. 2 releases · first seen Jul 2026

release

  • Renamed the inherited GoogleThinkingLevel type to GoogleApiThinkingLevel and added ResolvedGoogleThinkingLevel for normalized adapter levels. v0.84.3 · Aug 2026 · source · release history
  • Adds Grok 4.5 OpenAI Responses support with selectable low, medium, and high thinking levels. v0.80.8 · Jul 2026 · source · release history
Azure OpenAI provider support shipped Lets users point Pi at modern Azure OpenAI endpoints without manual URL workarounds. 2 releases · first seen Dec 2025

release

  • Supports modern Microsoft Azure Foundry endpoint URLs for the Azure OpenAI Responses provider. v0.80.3 · Jun 2026 · source · release history
  • Supports Mistral AI models as a new provider — set the MISTRAL_API_KEY environment variable to enable. v0.18.1 · Dec 2025 · source · release history
OpenRouter model aliases shipped Provides shorthand aliases for popular OpenRouter models so users can reference them by simple names. 2 releases · first seen Jan 2026

release

  • Adds openrouter/fusion as a built-in OpenRouter model alias for direct use as a provider target. v0.79.8 · Jun 2026 · source · release history
  • The strictResponsesPairing compat option has been removed from the models.json schema. v0.49.2 · Jan 2026 · source · release history
Radius gateway support shipped Adds Radius gateway as a supported provider target for routing requests. 1 release · first seen Jul 2026

release

  • Adds file-backed dynamic model catalogs (models-store.json), per-provider pi.dev catalog overlays, and Radius gateway support. v0.80.8 · Jul 2026 · source · release history
Authentication and Credential Management 6 capabilities Pi handles login and credential management for multiple AI providers, supporting OAuth flows, API keys, and bearer tokens. Users can authenticate interactively or verify and export credentials for use in scripts and external tools.
Anthropic bearer token authentication shipped Supports bearer-token authentication for Anthropic-compatible gateways that require it. 6 releases · 3 other sources · first seen Dec 2025

release

  • Adds a copy-code login method to Anthropic /login for headless setups where the browser runs on a different machine. v1.0.0 · Oct 2026 · source · release history
  • Support for Anthropic workload identity federation via ANTHROPIC_FEDERATION_RULE_ID, ANTHROPIC_ORGANIZATION_ID, and ANTHROPIC_IDENTITY_TOKEN_FILE env vars v0.99.2 · Sep 2026 · source · release history
  • Adds ANTHROPIC_AUTH_TOKEN environment variable to authenticate against Anthropic-compatible gateways using Authorization: Bearer, including compaction and branch summaries. v0.82.1 · Jul 2026 · source · release history
  • Adds ANTHROPIC_AUTH_TOKEN bearer authentication for Anthropic-compatible gateways that require Authorization: Bearer headers, covering compaction and branch summaries. v0.82.1 · Jul 2026 · source · release history
  • Adds ANTHROPIC_AUTH_TOKEN environment variable for bearer auth (Authorization: Bearer) against Anthropic-compatible gateways, covering compaction and branch summaries. v0.82.1 · Jul 2026 · source · release history
  • Supports storing API keys in ~/.pi/agent/settings.json under the apiKeys field, taking priority over environment variables. v0.27.3 · Dec 2025 · source · release history

example

  • Authenticate against an Anthropic-compatible gateway (e.g. a corporate proxy) that requires bearer token auth, so compaction and branch summaries also route through it. export ANTHROPIC_AUTH_TOKEN=your-token-here pi v0.82.1 · Jul 2026 · source
  • Authenticate against an Anthropic-compatible gateway that requires bearer token auth instead of an API key. export ANTHROPIC_AUTH_TOKEN=<your-bearer-token> v0.82.1 · Jul 2026 · source
  • Persist an Anthropic API key in settings so it takes precedence over any environment variable across sessions. ~/.pi/agent/settings.json: { "apiKeys": { "anthropic": "sk-..." } } v0.27.3 · Dec 2025 · source
Credential export for external clients shipped Exports valid credentials with auto-refresh so external scripts can use them without managing OAuth themselves. 5 releases · 4 other sources · first seen Mar 2026

Also counts toward: Command-line interface

release

  • "auth": { "provider": "<name>" } config key for HTTP MCP servers to use a /login bearer token instead of MCP OAuth v0.99.2 · Sep 2026 · source · release history
  • ModelRegistry.getApiKeyAndHeaders() now returns ProviderHeaders with string | null values; extensions that inspect returned headers must handle null, and those forwarding headers to pi-ai streams should pass null through unchanged. v0.84.0 · Aug 2026 · source · release history
  • Adds pi auth print-api-key and pi auth print-bearer-token commands to export configured credentials to external clients, with automatic OAuth refresh and minimum-validity enforcement. v0.83.0 · Jul 2026 · source · release history
  • Adds pi auth print-api-key and pi auth print-bearer-token commands to export configured credentials (with automatic OAuth refresh and minimum-validity enforcement) for use by external clients. v0.83.0 · Jul 2026 · source · release history
  • ModelRegistry.getApiKey(model) is replaced by getApiKeyAndHeaders(model); extensions and SDK integrations must now fetch both apiKey and headers per request instead of a single API key. v0.63.0 · Mar 2026 · source · release history

docs

  • Jul 29, 2026 Pi 0.83.0 Credential export for external clients pi auth print-api-key pi auth print-bearer-token export configured credentials with automatic OAuth refresh and minimum-validity enforcement. docs update · Jul 2026 · source

example

  • Authenticate an HTTP MCP server using a provider's login token instead of MCP OAuth — useful when the server expects a pre-existing bearer token from your SSO provider. {"mcpServers": {"my-server": {"url": "https://internal.example.com/mcp", "auth": {"provider": "my-provider"}}}} v0.99.2 · Sep 2026 · source
  • Pipe a bearer token into another tool (e.g., a curl call to an API) without manually copying credentials. pi auth print-bearer-token | xargs -I{} curl -H "Authorization: Bearer {}" https://api.example.com/endpoint v0.83.0 · Jul 2026 · source
  • Export an API key into an environment variable for a script that calls the provider directly. export API_KEY=$(pi auth print-api-key) v0.83.0 · Jul 2026 · source
OpenRouter OAuth login shipped Walks users through authenticating to OpenRouter interactively, including in headless SSH environments. 6 releases · 1 other source · first seen Jul 2026

release

  • Device-code login now opens the verification page and copies the code on Enter; providers can disable either with openBrowserOnConfirm: false or copyCodeOnConfirm: false. v1.5.0 · Nov 2026 · source · release history
  • Adds /login openai Sign in with ChatGPT, letting users authenticate with a ChatGPT subscription against the OpenAI provider. v0.99.0 · Sep 2026 · source · release history
  • Enables headless OpenRouter login by accepting a manually pasted redirect URL or authorization code when the loopback callback is unavailable (e.g., over SSH). v0.83.0 · Jul 2026 · source · release history
  • Adds manual redirect URL and authorization-code entry to OpenRouter login via /login for remote and headless (SSH) environments where the loopback callback is unavailable. v0.83.0 · Jul 2026 · source · release history
  • Adds support for manual redirect URL and authorization-code entry during pi auth login on OpenRouter, enabling headless and SSH-remote sign-in when the loopback callback is unavailable. v0.83.0 · Jul 2026 · source · release history
  • Adds OAuth PKCE login for OpenRouter via /login, automatically minting a user-controlled API key without manual configuration. v0.82.0 · Jul 2026 · source · release history

example

  • Authenticate with OpenRouter interactively so Pi can use it without manually setting an API key. /login v0.82.0 · Jul 2026 · source
xAI OAuth device-code login shipped Authenticates users to xAI through a device-code OAuth flow so no manual API key handling is needed. 3 releases · 1 other source · first seen Dec 2025

release

  • Adds xAI device-code OAuth login so users can authenticate to xAI interactively without an API key. v0.80.8 · Jul 2026 · source · release history
  • Changes the default xAI model to Grok 4.5 and updates xAI login to use a prefilled device-authorization link labeled Sign in with SuperGrok or X Premium. v0.80.9 · Jul 2026 · source · release history
  • New Google Antigravity OAuth provider: access Gemini 3, Claude sonnet/opus thinking models, and GPT-OSS models for free via /login → Antigravity. v0.25.0 · Dec 2025 · source · release history

example

  • Authenticate with the Antigravity sandbox to get free access to Claude thinking and GPT-OSS models. # Inside pi, run: /login # Then select: Antigravity v0.25.0 · Dec 2025 · source
Credential readiness check shipped Verifies that credentials for a chosen provider or model are valid before a session starts. 2 releases · 1 other source · first seen Mar 2026

Also counts toward: Command-line interface

release

  • Adds pi auth check subcommand to verify provider or model credentials before a run, with optional resolved credential output. v0.84.1 · Aug 2026 · source · release history
  • RPC get_commands, RpcSlashCommand, and SDK SlashCommandInfo no longer expose location or path — use sourceInfo instead. v0.62.0 · Mar 2026 · source · release history

example

  • Verify that your configured provider credentials are valid before starting a long agent run. pi auth check v0.84.1 · Aug 2026 · source
Kimi OAuth device-code login shipped Lets users log in to Kimi Code subscriptions via an OAuth device flow with automatic token refresh. 1 release · first seen Jul 2026

release

  • Adds OAuth device-authorization login for Kimi Code subscriptions via /login, with automatic token refresh. v0.82.0 · Jul 2026 · source · release history
Session Management and Context Control 7 capabilities Pi provides tools for managing conversation sessions, controlling context size, and tracking how tokens are used and priced. Users and extensions can inspect, compact, and reason about session state programmatically.
Session state snapshot API shipped Enforces that session state is only read through a snapshot object, preventing stale or inconsistent data access. 30 releases · first seen Jan 2026

previously: Session snapshot API

release 30 total

  • The session now counts as busy while a run starts (including during before_agent_start handlers): ctx.isIdle() returns false, pi.sendMessage() queues into the starting run, and pi.sendUserMessage() now requires deliverAs. v1.2.0 · Oct 2026 · source · release history
  • SessionManager is now canonical for AgentSession provider context; assigning session.agent.state.messages no longer replaces future request history. v0.87.0 · Sep 2026 · source · release history
  • Made SessionManager canonical for AgentSession provider context; assigning session.agent.state.messages no longer replaces future request history. v0.87.0 · Sep 2026 · source · release history
  • RemoteSession.sessions no longer exposes runtime phase, model, thinking, attachment, or lock state (previously available as list summaries); that data is now available only from acquired SessionSnapshot values via the durable SessionMetadata API. v0.84.0 · Aug 2026 · source · release history
  • The legacy JSONL and in-memory repository APIs are removed; use pi-agent-core's v4 JsonlSessionRepo or InMemorySessionRepo implementing the new SessionRepo contract. v0.84.0 · Aug 2026 · source · release history
  • The pi-agent-core harness session model is replaced with the v4 lane-based Session, SessionStorage, and SessionRepo APIs; legacy JSONL and in-memory repository APIs are removed. Use JsonlSessionRepo or InMemorySessionRepo implementing the new SessionRepo contract. v0.84.0 · Aug 2026 · source · release history
Session event hooks for extensions shipped Lets extensions react to session lifecycle events such as session name changes. 15 releases · 2 other sources · first seen Dec 2025

Also counts toward: Plugin API support

release 15 total

  • Extends before_agent_start to fire for runs started by pi.sendMessage(..., { triggerTurn: true }), with BeforeAgentStartEvent now a union on messageType ('user' or 'custom'). v1.2.0 · Oct 2026 · source · release history
  • BeforeAgentStartEvent is now a union on messageType: 'user' events carry prompt and images, 'custom' events carry the starting message and no prompt. Handlers that should act only on user prompts must check event.messageType === 'user'. v1.2.0 · Oct 2026 · source · release history
  • Adds aborted field to agent_settled session, extension, and JSON events so integrations can distinguish a cancelled run from a finished one. v1.1.0 · Oct 2026 · source · release history
  • Built-in extensions and tools are now named builtin:<name> (e.g., builtin:mcp) in errors, diagnostics, RPC source info, and bug reports instead of <inline:name> or <builtin:name>" v0.99.0 · Sep 2026 · source · release history
  • Slash commands for built-in extensions no longer carry a [t] autocomplete tag v0.99.0 · Sep 2026 · source · release history
  • Built-in extensions and tools are now named builtin:<name> (e.g. builtin:mcp, builtin:read) in errors, diagnostics, RPC source info, and bug reports — previously they appeared as <inline:name> and <builtin:name>. v0.99.0 · Sep 2026 · source · release history

docs

  • ui_prompt_start / ui_prompt_end Notification-only lifecycle events for blocking user-facing extension UI prompts. They fire around ctx.ui.select() ctx.ui.confirm() ctx.ui.input() ctx.ui.editor() so host/status integrations can report waiting for user instead of just running. docs update · Aug 2026 · source

example

  • Inspect session and model context from inside a bash tool script — useful for writing tools that behave differently per provider or model. echo "Session: $PI_SESSION_ID | Provider: $PI_PROVIDER | Model: $PI_MODEL | Reasoning: $PI_REASONING_LEVEL" v0.82.0 · Jul 2026 · source
Compaction event metadata for extensions shipped Tells extensions why a compaction happened and whether a retry is coming, so they can react appropriately. 12 releases · 3 other sources · first seen Dec 2025

release 12 total

  • Runs requested from agent_settled handlers are now deferred until all settled handlers finish; handlers still observe ctx.isIdle() === true but no longer see a reentrant agent_start during the same notification dispatch. v0.87.0 · Sep 2026 · source · release history
  • Adds terminate support to blocked extension tool_call event handlers, allowing all-terminating batches to skip the automatic follow-up model call. v0.84.1 · Aug 2026 · source · release history
  • Exposes retry lifecycle events (summarization_retry_scheduled, summarization_retry_attempt_start, summarization_retry_finished) for compaction and branch summarization to interactive, JSON, RPC, and SDK consumers. v0.81.1 · Jul 2026 · source · release history
  • Adds reason and willRetry metadata to session_before_compact and session_compact extension events, enabling extensions to distinguish manual /compact, threshold auto-compaction, and overflow retry flows. v0.79.10 · Jun 2026 · source · release history
  • Adds reason and willRetry fields to session_before_compact and session_compact extension events, letting extensions distinguish manual /compact, threshold auto-compaction, and overflow retry flows. v0.79.10 · Jun 2026 · source · release history
  • After ctx.newSession(), ctx.fork(), or ctx.switchSession(), pre-replacement session-bound extension objects (including captured pi and command ctx references) are invalidated and now throw instead of silently targeting the replaced session; post-switch work must be moved into the withSession callback using the… v0.69.0 · Apr 2026 · source · release history

docs

  • summarization_retry_scheduled Retry scheduled for a transient compaction or branch-summary summarization error summarization_retry_attempt_start Retried summarization request starts summarization_retry_finished Summarization retry loop completes summarization_retry_scheduled / summarization_retry_attempt_start /… docs update · Jul 2026 · source

example

  • React differently in a custom summarization extension depending on whether compaction was triggered manually, by a threshold, or as an overflow retry. // In your extension handler: extension.on('session_before_compact', ({ reason, willRetry }) => { if (reason === 'overflow' && willRetry) { // overflow retry: use a lighter summary to reduce token… v0.79.10 · Jun 2026 · source
  • Resume the most recent session programmatically to continue a long-running agent workflow without re-specifying session IDs. const session = await SessionManager.continueRecent(); v0.26.0 · Dec 2025 · source
RPC mode and programmatic session inspection shipped Allows external programs to launch Pi in RPC mode and query session entries, structure, and available thinking levels. 8 releases · 3 other sources · first seen Jun 2026

release 8 total

  • Adds per-input disposition to RPC prompt, steer, and follow_up responses; RpcClient.prompt() also accepts streamingBehavior. v0.99.0 · Sep 2026 · source · release history
  • Adds show/hide toggle (H) in HTML exports for custom messages marked display: false. v0.99.0 · Sep 2026 · source · release history
  • Adds experimental remote-session client APIs: the transport-neutral PiClient, CBOR protocol, Unix-socket transport, and @earendil-works/pi-coding-agent/client RemoteSession controller with transcript reducers. v0.84.0 · Aug 2026 · source · release history
  • Adds experimental remote-session client APIs: transport-neutral PiClient, CBOR protocol, Unix-socket transport, and @earendil-works/pi-coding-agent/client RemoteSession controller with transcript reducers. v0.84.0 · Aug 2026 · source · release history
  • Adds streaming bash_execution_update RPC events for direct bash commands, correlated with request IDs. v0.82.0 · Jul 2026 · source · release history
  • Adds get_available_thinking_levels RPC command and RpcClient.getAvailableThinkingLevels() method for querying model thinking-level options. v0.81.0 · Jul 2026 · source · release history

docs

  • ctx.modelRegistry / ctx.model / ctx.thinkingLevel / ctx.scopedModels ctx.scopedModels is the read-only list of models scoped to the current session — the same set the /scoped-models command shows. docs update · Jul 2026 · source
  • ctx.modelRegistry / ctx.model / ctx.thinkingLevel is the active model, and ctx.thinkingLevel is its current effective thinking level. createBashTool() exposes the current session to commands through PI_SESSION_ID PI_SESSION_FILE PI_PROVIDER PI_MODEL PI_REASONING_LEVEL . docs update · Jul 2026 · source
  • get_available_thinking_levels List the thinking levels supported by the current model. Returns [off] for a model without reasoning support. docs update · Jul 2026 · source
Context compaction with token estimates shipped Reports estimated token counts after compaction so users can see how much context was freed. 6 releases · first seen Dec 2025

release

  • Adds estimated post-compaction token counts to compact results and compaction events, letting clients display approximate context reduction. v0.79.8 · Jun 2026 · source · release history
  • The apiKey string field in before_compact hook payloads is removed in favor of resolveApiKey — hooks that read apiKey directly will break. v0.27.6 · Dec 2025 · source · release history
  • AgentSession.reset() and switchSession() now return boolean (false if cancelled by a hook) instead of their previous return types. v0.27.0 · Dec 2025 · source · release history
  • AgentSession.branch() now returns { cancelled } instead of { skipped }. v0.27.0 · Dec 2025 · source · release history
  • Compacted sessions display a collapsible summary in the TUI (toggled with o key) and in HTML exports. v0.12.7 · Dec 2025 · source · release history
  • Adds /autocompact toggle to automatically compact context when it reaches contextWindow - reserveTokens (default 16k reserve tokens). v0.12.7 · Dec 2025 · source · release history
Reasoning token usage accounting shipped Tracks reasoning token counts and costs from providers that expose them for accurate usage accounting. 5 releases · first seen Jun 2026

release

  • Access Usage.cost.totalFromProvider in SDK and extension usage data to distinguish billed provider totals from catalog estimates. v1.5.0 · Nov 2026 · source · release history
  • Expands usage accounting to persist tool, compaction, and branch-summary usage in session totals and statistics. v0.81.0 · Jul 2026 · source · release history
  • Adds request-wide input-token pricing tiers for accurate long-context cost accounting (e.g. GPT-5.4/5.5/5.6 rates), configurable for custom models via models.json and modelOverrides. v0.80.6 · Jul 2026 · source · release history
  • Adds request-wide input-token pricing tiers for accurate long-context cost accounting (e.g. GPT-5.4/5.5/5.6 rates), configurable in models.json and modelOverrides. v0.80.6 · Jul 2026 · source · release history
  • Adds Usage.reasoning token counts for providers that report reasoning/thinking token usage. v0.80.3 · Jun 2026 · source · release history
Streaming delta-only message events shipped Streams message updates as deltas only, requiring clients to assemble the full message incrementally. 1 release · first seen Aug 2026

Also counts toward: gRPC API support

release

  • JSON and RPC message_update events now emit only assistantMessageEvent deltas; the cumulative message and assistantMessageEvent.partial fields are removed. Clients must assemble deltas between message_start and message_end. v0.84.0 · Aug 2026 · source · release history
Extension and SDK Development 10 capabilities Pi exposes a programmable API surface for building extensions and integrating Pi into larger applications. Developers can register providers, tools, Markdown transformers, and event hooks, and can trim dependencies to what they actually use.
ModelRuntime SDK facade shipped Offers a single unified SDK object for configuring models, authenticating, and assembling requests, replacing older fragmented APIs. 20 releases · 4 other sources · first seen Dec 2025

Also counts toward: Client SDKs

release 20 total

  • Adds generateImages() to ModelRuntime with runtime-resolved auth, plus getModelsOfType(), getModelOfType(), getAvailableOfType(), getAllModels(), and getAllAvailable(). v0.99.0 · Sep 2026 · source · release history
  • Adds classify() and classifier model accessors to ModelRuntime, including the built-in jev-latest model; classifier models are also available for every llama.cpp chat model via next-token label probabilities. v0.99.0 · Sep 2026 · source · release history
  • Adds classifier model support via classify() in ModelRuntime, Jev classifiers from codemode scripts, and inherited classifiers on OpenRouter, Cloudflare Workers AI, Vercel AI Gateway, and OpenCode Zen v0.99.0 · Sep 2026 · source · release history
  • The v2 session and AgentHarness API experimental subpaths are removed; use pi-agent-core's default export instead. v0.84.0 · Aug 2026 · source · release history
  • The v2 session and AgentHarness API experimental subpaths are removed; they are now promoted to pi-agent-core's default export. v0.84.0 · Aug 2026 · source · release history
  • ModelRuntime.setRuntimeApiKey() now accepts auth cancellation options instead of catalog refresh options; callers must call refresh({ providers: [providerId], signal }) separately when remote freshness is required. v0.84.0 · Aug 2026 · source · release history

docs

  • Streaming model calls ctx.modelRegistry.streamSimple(model, context, options) for provider-neutral options such as reasoning stream() for API-specific options. Both use configured providers and resolve authentication, including for providers registered with . docs update · Sep 2026 · source
  • // create() restores cached catalogs but does not refresh them from pi.dev by default. // Opt in to a create-time network refresh and bound how long it may take: const refreshedRuntime = await ModelRuntime.create({ allowModelNetwork: true, modelRefreshTimeoutMs: 15_000, Remote catalogs are persisted locally so later… docs update · Aug 2026 · source
  • async refreshToken(credentials: OAuthCredentials, signal: AbortSignal): Promise<OAuthCredentials> { const tokens = await refreshAccessToken(credentials.refresh, signal); refreshToken(credentials: OAuthCredentials, signal: AbortSignal): Promise<OAuthCredentials>; supportsFinishReason?: boolean; thinkingFormat?:… docs update · Aug 2026 · source
  • await modelRuntime.setRuntimeApiKey("anthropic", "sk-my-temp-key"); login() logout() setRuntimeApiKey() , and removeRuntimeApiKey() resolve after the affected provider's cached/built-in catalog, composition, and availability snapshot are locally consistent. They do not wait for remote catalog freshness. docs update · Aug 2026 · source
Constrained tool sampling shipped Lets tools request strict JSON Schema or grammar-constrained sampling, with automatic checks that the model supports it. 8 releases · 2 other sources · first seen Dec 2025

release 8 total

  • Tool argument validation now runs on @earendil-works/pi-schema. TypeBox features outside JSON Schema — Type.Refine(), Type.BigInt(), Type.Undefined(), codecs, and Format.Set() formats — no longer apply to tool arguments. v1.5.0 · Nov 2026 · source · release history
  • Plain JSON Schema tools, including MCP tools, now receive the same coercion as TypeBox tools (e.g. converting numeric strings, wrapping a single value into an array), which may change tool argument behavior. v1.5.0 · Nov 2026 · source · release history
  • Adds PI_EXPERIMENTAL=1 environment variable to enable experimental strict JSON-schema constrained sampling for the default read, bash, edit, and write tools. v0.84.2 · Aug 2026 · source · release history
  • Adds Tool.constrainedSampling with prefer/require modes for strict JSON Schema sampling and OpenAI Lark/regex grammar variants, gated by supportsStrictTools and supportsGrammarTools capability flags, across OpenAI, Anthropic, Amazon Bedrock, Google Gemini, and Mistral. v0.82.0 · Jul 2026 · source · release history
  • Adds Tool.constrainedSampling supporting strict JSON Schema (prefer/require) and OpenAI Lark/regex grammar variants across OpenAI, Anthropic, Amazon Bedrock, Google Gemini, and Mistral providers. v0.82.0 · Jul 2026 · source · release history
  • Adds model capability flags supportsGrammarTools and supportsStrictTools to gate constrained sampling requests to models that support them. v0.82.0 · Jul 2026 · source · release history

docs

  • News New Features 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 . docs update · Jul 2026 · source
  • Jul 24, 2026 Pi 0.82.0 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. docs update · Jul 2026 · source
SDK selective provider registration shipped Lets SDK users register only the providers they need to keep bundle size small. 8 releases · 1 other source · first seen Apr 2026

release 8 total

  • Adds description field for MCP servers (pi mcp add --description) shown in the system prompt and used to rank tools in tool search. v0.99.2 · Sep 2026 · source · release history
  • Adds per-request fetch injection for supported text and image provider transports. v0.83.0 · Jul 2026 · source · release history
  • Adds the "pending" stop reason for partial streaming messages in the custom provider stream pattern. v0.83.0 · Jul 2026 · source · release history
  • Removes the @earendil-works/pi-ai/base and @earendil-works/pi-agent-core/base selective-provider entrypoints; use the root packages with explicit Models provider factories instead. v0.80.0 · Jun 2026 · source · release history
  • The @earendil-works/pi-ai/base and @earendil-works/pi-agent-core/base entrypoints have been removed; use the root packages with explicit Models provider factories instead. v0.80.0 · Jun 2026 · source · release history
  • Adds @earendil-works/pi-ai/base and @earendil-works/pi-agent-core/base entry points for SDK users who need selective provider registration to trim bundle size. v0.79.8 · Jun 2026 · source · release history

docs

  • OpenRouter (OAuth-minted API key billed from OpenRouter credits) and auto-refresh when expired. OpenRouter instead mints a user-controlled API key that does not expire automatically. docs update · Jul 2026 · source
Extension-registered providers shipped Lets extensions register fully functional AI providers with their own authentication and streaming behaviour. 6 releases · 1 other source · first seen Feb 2026

Also counts toward: Plugin API support, Plugin system

release

  • Adds the provider_stream_event extension event for observing parsed provider events before normalization. v0.99.0 · Sep 2026 · source · release history
  • Adds extension tool API fields exposure (direct, model-only, codemode, deferred, or hidden), namespace, annotations, outputSchema with structuredContent, isError results, prepareLoadout(), and ctx.executeTool() for nested tool calls with parentToolCallId and nestedCalls. v0.99.0 · Sep 2026 · source · release history
  • The ModelsStreamTransforms interface is renamed to ModelsRequestTransforms; extensions referencing ModelsStreamTransforms will break. v0.84.0 · Aug 2026 · source · release history
  • Enables extensions to register complete pi-ai providers with native authentication, model refresh, filtering, and custom streaming behavior. v0.81.0 · Jul 2026 · source · release history
  • Adds full provider extension registration, allowing extensions to supply complete pi-ai providers with native authentication, model refresh, filtering, and custom streaming behavior. v0.81.0 · Jul 2026 · source · release history
  • pi.registerProvider() now takes effect immediately when called outside the initial extension load phase (e.g. from a command handler), eliminating the need for /reload after late registrations. v0.55.2 · Feb 2026 · source · release history

docs

  • A provider extension connects Pi to a model service that needs custom authentication, model discovery, request handling, or streaming. If the service already speaks a supported API, configure it in instead. docs update · Sep 2026 · source
Extension compatibility shim shipped Keeps older extensions working by providing a compatibility entrypoint for legacy global API functions. 6 releases · first seen Dec 2025

previously: Legacy global API compatibility shim

release

  • ModelRegistry.getApiKeyAndHeaders() now returns ProviderHeaders with string | null values; extensions that inspect returned headers must handle null. v0.84.0 · Aug 2026 · source · release history
  • TypeBox aliases upgraded to 1.3.7, removing deprecated APIs Type.Base, Type.Awaited, Type.Promise, Type.AsyncIterator, Type.Iterator, Type.Options, and Value.Mutate — extensions using any of these APIs must migrate to supported TypeBox APIs. v0.83.0 · Jul 2026 · source · release history
  • The pi-ai global API (stream/complete/completeSimple, getModel/getModels/getProviders, registerApiProvider, getEnvApiKey, …) has moved off the @earendil-works/pi-ai root entrypoint to @earendil-works/pi-ai/compat; extension sources that typecheck against pi-ai's published types must switch those… v0.80.0 · Jun 2026 · source · release history
  • Moves pi-ai's legacy global API (stream/complete/completeSimple, getModel/getModels/getProviders, registerApiProvider, getEnvApiKey, etc.) from the @earendil-works/pi-ai root to @earendil-works/pi-ai/compat; extension sources typechecking against pi-ai's published types should update imports… v0.80.0 · Jun 2026 · source · release history
  • The global API (stream/complete/completeSimple, getModel/getModels/getProviders, registerApiProvider, getEnvApiKey, etc.) has been moved off the @earendil-works/pi-ai root entrypoint to @earendil-works/pi-ai/compat; extension sources that typecheck against pi-ai's published types must switch those… v0.80.0 · Jun 2026 · source · release history
  • Branched sessions now record branchedFrom in the session header to track the originating session file path. v0.12.7 · Dec 2025 · source · release history
Cache-friendly dynamic tool loading shipped Allows extensions to add tools mid-execution while preserving prompt-cache prefixes for supported models. 4 releases · 1 other source · first seen Dec 2025

release

  • Switches the kimi-coding provider to OpenAI Chat Completions at https://api.kimi.com/coding/v1, enabling K3, K3-256K, and Kimi For Coding to accept tools added mid-conversation without invalidating the prompt cache. v1.3.0 · Oct 2026 · source · release history
  • Adds Kimi deferred tool loading for progressive, extension-driven tool activation via Kimi's native protocol. v0.80.9 · Jul 2026 · source · release history
  • Adds cache-friendly dynamic tool loading: extensions can inject tools during execution while Anthropic and OpenAI Responses models preserve prompt-cache prefixes. v0.80.7 · Jul 2026 · source · release history
  • Auto-discovered custom tools now require an index.ts entry point inside a subdirectory: the old pattern ~/.pi/agent/tools/mytool.ts must become ~/.pi/agent/tools/mytool/index.ts. Explicit paths via --tool or settings.json still accept any .ts file. v0.24.0 · Dec 2025 · source · release history

docs

  • News New Features Kimi K3 and deferred tool loading — Use Kimi K3 across built-in providers, including progressive extension tool activation through Kimi’s native protocol. See Dynamic Tool Loading , OpenAI Compatibility , and the kimi-deferred-tools.ts example. docs update · Jul 2026 · source
Constrained tool sampling and tool choice control shipped Gives callers control over which tool the model must call, including forcing a specific named tool. 3 releases · 2 other sources · first seen Jul 2026

previously: Tool choice control

release

  • Adds Tool.constrainedSampling supporting strict JSON Schema (prefer/require) and OpenAI Lark/regex grammar variants across OpenAI, Anthropic, Amazon Bedrock, Google Gemini, and Mistral providers. v0.82.0 · Jul 2026 · source · release history
  • Adds model capability flags supportsGrammarTools and supportsStrictTools to gate constrained sampling requests to models that support them. v0.82.0 · Jul 2026 · source · release history
  • Adds toolChoice support for OpenAI and Codex Responses, including required and named tool selection. v0.80.7 · Jul 2026 · source · release history

docs

  • News New Features 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 . docs update · Jul 2026 · source
  • Jul 24, 2026 Pi 0.82.0 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. docs update · Jul 2026 · source
Extension diff API shipped Gives extensions access to diff-generation utilities so they can produce edit-style diffs in their own output. 4 releases · first seen Dec 2025

release

  • Custom pi-ai providers must now read system prompts and tool declarations from context.messages using getCurrentSystemPrompt() and getCurrentTools(), as stream inputs changed from Context to normalized TranscriptContext values. v0.86.0 · Sep 2026 · source · release history
  • Inherited pi-ai provider stream inputs changed from Context to normalized TranscriptContext; custom providers must read system prompts and tool declarations from context.messages using getCurrentSystemPrompt() and getCurrentTools(). v0.86.0 · Sep 2026 · source · release history
  • Exports generateDiffString, generateUnifiedPatch, and EditDiffResult from the public API for extensions that produce edit-style diffs. v0.79.7 · Jun 2026 · source · release history
  • Edit tool now shows word-level (intra-line) diff highlighting with inverse highlighting for single-line changes; multi-line changes display all removed lines before added lines. v0.23.4 · Dec 2025 · source · release history
Custom harness filesystem interface shipped Requires custom filesystem implementations to support file renaming so atomic session writes work correctly. 3 releases · first seen Aug 2026

release

  • Custom harness file-system implementations must now provide a FileSystem.renameFile() operation for atomic JSONL publication. v0.84.0 · Aug 2026 · source · release history
  • The legacy JSONL and in-memory repository APIs are removed; code must migrate to JsonlSessionRepo or InMemorySessionRepo from pi-agent-core v4. v0.84.0 · Aug 2026 · source · release history
  • Custom harness file-system implementations must now provide FileSystem.renameFile() with same-filesystem replacement semantics. v0.84.0 · Aug 2026 · source · release history
Markdown transformer extension API shipped Allows extensions to rewrite Markdown in messages and thinking blocks by registering transformer functions. 1 release · 1 other source · first seen Aug 2026

Also counts toward: Plugin API support

release

  • Use messageId and ISO timestamp fields now added to MarkdownTransformContext for persisted session entries when rendering saved entries. v1.5.0 · Nov 2026 · source · release history

docs

  • pi.registerMarkdownTransformer(transformer) Register a transformer for the Markdown in normal user text, assistant text, and thinking blocks. Transformers run in extension load order, and each transformer receives the Markdown returned by the previous transformer. docs update · Aug 2026 · source
Terminal Interface and User Experience 7 capabilities Pi runs as an interactive terminal tool with a range of display and input options to suit different environments and preferences. Users can customise themes, keyboard shortcuts, layout, and editor integration to match their workflow.
Fullscreen TUI mode shipped Offers a fullscreen TUI mode with a sticky editor, scrollable transcript, and draggable scrollbars for a richer in-terminal experience. 16 releases · 10 other sources · first seen Dec 2025

release 16 total

  • Adds PI_PROGRAM_STATUS=1|0 environment variable to override OSC 7501 program-status detection for terminals and agent dashboards that report whether Pi is working, blocked, done, or failed. v1.1.0 · Oct 2026 · source · release history
  • Adds quietStartup: "header" config setting to keep the version/key-hint header while hiding the model scope line and loaded-resource listing. v1.0.0 · Oct 2026 · source · release history
  • Adds tuiMode config key (set to "regular") and --tui-mode regular CLI flag to opt out of the new fullscreen-by-default TUI.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ v1.0.0 · Oct 2026 · source · release history
  • The default TUI mode is now fullscreen; set tuiMode to "regular" or pass --tui-mode regular to restore the terminal's normal scrollback. v1.0.0 · Oct 2026 · source · release history
  • Adds fullscreenWheelScrollLines setting and /settings entry for configuring fullscreen mouse-wheel scroll speed; defaults to "auto" which accelerates fast spins. v0.99.0 · Sep 2026 · source · release history
  • Adds fullscreenCopyOnSelect setting to disable automatic selection copying in fullscreen mode; when disabled, Ctrl+X copies the active text selection before falling back to the last assistant message. v0.84.4 · Aug 2026 · source · release history

docs 7 total

  • Program status Pi reports its state with the Program Status Protocol (OSC 7501) , so terminals and agent dashboards can show whether it is working, waiting for you, done, or failed: State When working An agent run or compaction is in progress. The message is the session name. docs update · Oct 2026 · source
  • Oct 7, 2026 Pi 1.1.0 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 effort. docs update · Oct 2026 · source
  • Oct 1, 2026 Pi 1.0.0 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. docs update · Oct 2026 · source
  • Sep 5, 2026 Pi 0.85.1 GPT-6 Astra — Available through OpenAI API keys and OpenAI Codex subscriptions. See 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 docs update · Sep 2026 · source
  • tuiMode regular Interactive TUI mode: regular or experimental fullscreen . Changes from apply immediately; --tui-mode overrides this setting at startup fullscreenScrollbar Fullscreen transcript scrollbar: shows it temporarily while scrolling, reserves the rightmost column and keeps it visible, and hidden hides… docs update · Aug 2026 · source
  • Move cursor up, browsing older history at the top Move cursor down, browsing newer history at the bottom tui.editor.historyPrevious Select the previous prompt history entry tui.editor.historyNext Select the next prompt history entry ctrl+pageUp ctrl+pageDown The dedicated history actions always change history entries,… docs update · Aug 2026 · source

example

  • Force OSC 7501 program-status reporting on in a terminal or dashboard that supports it, without relying on auto-detection. PI_PROGRAM_STATUS=1 pi v1.1.0 · Oct 2026 · source
  • Keep the old scrollback-based terminal layout when upgrading to v1.0.0, where fullscreen is now the default. pi --tui-mode regular v1.0.0 · Oct 2026 · source
  • Launch Pi in fullscreen TUI mode for a distraction-free session with a scrollable transcript. pi --tui-mode fullscreen v0.84.0 · Aug 2026 · source
Automatic light/dark theme switching shipped Automatically switches between a user's chosen light and dark themes as the terminal's colour scheme changes. 3 releases · 6 other sources · first seen Jun 2026

release

  • The theme schema URL moved to https://pi.dev/schemas/theme.schema.json; update any theme $schema references, define reusable colors under vars, and remove unsupported metadata. v1.2.0 · Oct 2026 · source · release history
  • Adds #rgb, oklch(), and okhsl() color formats and an optional appearance field to theme files, plus theme.style(), theme.colors, and theme.appearance for extensions. v0.99.0 · Sep 2026 · source · release history
  • Adds automatic theme mode in /settings to assign separate light and dark themes that follow terminal color-scheme changes. v0.79.7 · Jun 2026 · source · release history

docs

  • Themes control the colors Pi uses in interactive mode and HTML exports. Pi includes the system themes. You can select one theme, follow your terminal's light or dark appearance, or create your own palette. Use your terminal's colors system theme is the default. docs update · Sep 2026 · source
  • Themes control the colors Pi uses in interactive mode and HTML exports. Pi includes and themes. You can select one theme, follow your terminal's light or dark appearance, or create your own palette. Choose a theme Open and select Theme . docs update · Sep 2026 · source
  • Capability Overrides Pi auto-detects OSC 8 hyperlinks, inline image protocols, and truecolor. If detection fails behind a terminal proxy or multiplexer, use these advanced overrides: Capability Environment variable JSON setting OSC 8 hyperlinks PI_HYPERLINKS=1|0|auto terminal.hyperlinks: true|false|"auto" Inline… docs update · Aug 2026 · source
  • --use-theme <name[/name]> Set the initial interactive theme for this run without changing settings mode, pi uses the main screen and terminal-owned scrollback, and iTerm2 inline images continue to render normally. See for terminal-specific settings and workarounds. docs update · Aug 2026 · source
  • Aug 14, 2026 Pi 0.84.2 Fullscreen transcript search — Search and navigate matches in fullscreen mode. See 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. docs update · Aug 2026 · source
  • Initial Theme Start an interactive run with a theme without changing the saved setting: pi --use-theme light To follow terminal appearance, use lightTheme/darkTheme syntax: pi --use-theme light/dark The CLI value is the initial theme for that run. docs update · Aug 2026 · source
Inline image rendering shipped Displays images inline in terminals that support the Kitty graphics protocol without any extra setup. 3 releases · 5 other sources · first seen Dec 2025

release

  • Adds support for the Rex terminal, including OSC 8 hyperlinks, truecolor, and inline images. v1.4.0 · Oct 2026 · source · release history
  • Enables inline image rendering in Warp terminals via automatic Kitty graphics protocol detection. v0.79.7 · Jun 2026 · source · release history
  • Renders images inline in tool output on terminals supporting Kitty graphics protocol (Kitty, Ghostty, WezTerm) or iTerm2 inline images, with aspect ratio preserved; toggle via /show-images command or terminal.showImages setting. v0.21.0 · Dec 2025 · source · release history

docs

  • │ ├─► context (can modify conversation messages) │ │ ├─► context_with_system (can modify the full transcript) │ └─► threshold compaction before a naturally required next turn ├─► retry backoff or final-attempt recovery (when selected) │ └─► fresh agent_start on successful recovery │ ├─► agent_before_settle (can append… docs update · Sep 2026 · source
  • inputLimits Request limits and image preprocessing for this model (see below) Image Input Limits inputLimits.images.resize to configure how new images are encoded before they enter conversation history: id: vision-model, inputLimits: { images: { resize: { maxWidth: 1568, maxHeight: 1568, maxBytes:… docs update · Sep 2026 · source
  • TUI Alternate-Screen Viewport These actions apply when interactive mode is started with --alt . Two-finger trackpad and mouse-wheel input also scroll the viewport. Clicking an OSC 8 hyperlink opens it in the default handler. Dragging with the primary mouse button selects visible text and copies it to the clipboard. docs update · Jul 2026 · source
  • --alt Use the alternate-screen TUI with application-owned scrolling in interactive mode When --alt is active, inline images work in terminals that support the Kitty graphics protocol, including Kitty and Ghostty. docs update · Jul 2026 · source

example

  • Toggle inline image rendering on the fly during a session to see model-returned images rendered directly in the terminal. /show-images v0.21.0 · Dec 2025 · source
Context file scoping shipped Scopes context files to specific directories so sensitive subdirectories can have their own configuration overrides. 2 releases · 2 other sources · first seen Aug 2026

release

  • Adds AGENTS.override.md per-directory context file that replaces AGENTS.md or CLAUDE.md in the same directory while preserving context from parent directories. v0.84.0 · Aug 2026 · source · release history
  • Adds per-directory AGENTS.override.md context files that replace AGENTS.md or CLAUDE.md in the same directory while preserving context from other directories. v0.84.0 · Aug 2026 · source · release history

docs

  • If a directory contains AGENTS.override.md , Pi loads it instead of from that directory. Context files from other directories still layer normally. docs update · Aug 2026 · source

example

  • Override context for a sensitive subdirectory without affecting parent-directory context files. # Create AGENTS.override.md in the target directory to replace AGENTS.md/CLAUDE.md there cat > src/payments/AGENTS.override.md << 'EOF' # Payments module context Do not modify stripe integration… v0.84.0 · Aug 2026 · source
External editor integration shipped Opens the user's preferred text editor for composing input when a longer or formatted message is needed. 2 releases · 2 other sources · first seen Dec 2025

Also counts toward: Command-line interface

release

  • New externalEditor setting configures a preferred editor for Ctrl+G, overriding $VISUAL/$EDITOR fallbacks. v0.80.3 · Jun 2026 · source · release history
  • New --skills <patterns> CLI flag filters loaded skills by glob pattern; includeSkills setting and glob support for ignoredSkills also added. v0.25.3 · Dec 2025 · source · release history

docs

  • Interactive coding agent CLI and agent harness with multi-provider LLM support, tool calling, and state management.

example

  • Override the Ctrl+G external editor to use a specific binary (e.g. vim) instead of the environment default. // In settings.json { "externalEditor": "vim" } v0.80.3 · Jun 2026 · source
Output padding customization shipped Adjusts horizontal padding for messages and thinking blocks to improve readability at any terminal width. 2 releases · 1 other source · first seen Jun 2026

release

  • Exposes the outputPad setting to custom message renderers via the Extensions API. v0.82.1 · Jul 2026 · source · release history
  • New outputPad setting controls horizontal padding for user messages, assistant messages, and thinking blocks. v0.80.3 · Jun 2026 · source · release history

example

  • Tighten or expand terminal padding for assistant and thinking output to improve readability in narrow or wide terminals. // In settings.json { "outputPad": 4 } v0.80.3 · Jun 2026 · source
Shell path home-directory expansion shipped Expands the tilde shorthand in the shell path setting so users can write paths naturally. 1 release · first seen Jul 2026

release

  • Supports ~ (home directory) expansion in the shellPath setting. v0.80.6 · Jul 2026 · source · release history
Tool Maintenance and Supply-Chain Integrity 2 capabilities Pi includes commands to keep itself and its components up to date, and provides verifiable build artefacts so users can confirm they are running unmodified software. These features support ongoing operation and trust in the tool.
Pi self-update command shipped Updates Pi itself, its extensions, and its model catalogs through a single command with separate flags for each component. 9 releases · 3 other sources · first seen Mar 2026

Also counts toward: Command-line interface

release 9 total

  • Set PI_SELF_UPDATE_COMMAND (e.g.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ mise use -g npm:{packageName}@{version}) or the global selfUpdateCommand config key so pi update routes through a wrapper or alternative package manager, filling {packageName}, {version}, and {installSpec} from the release. v1.5.0 · Nov 2026 · source · release history
  • --no-extensions now also disables the built-in extensions; load one explicitly with -e builtin:<name> v0.99.0 · Sep 2026 · source · release history
  • Extends --no-extensions to also disable built-in extensions including the llama.cpp provider; load one back explicitly with -e builtin:<name> (e.g. pi -ne -e builtin:mcp). v0.99.0 · Sep 2026 · source · release history
  • Updates pi update to install the exact version returned by the Pi update check and surface the changelog URL in update notices, making upgrade behavior predictable. v0.79.10 · Jun 2026 · source · release history
  • The pi update command now updates only pi itself; the previous behaviour of updating pi and packages together now requires pi update --all. v0.79.7 · Jun 2026 · source · release history
  • Changes pi update to update only pi by default; new pi update --all updates pi and all extensions together. v0.79.7 · Jun 2026 · source · release history

example

  • Update Pi through a version manager like mise instead of the default installer, by setting the self-update command once. PI_SELF_UPDATE_COMMAND='mise use -g npm:{packageName}@{version}' pi update v1.5.0 · Nov 2026 · source
  • Configure Pi to always use a custom update command globally via the selfUpdateCommand setting. selfUpdateCommand: "mise use -g npm:{packageName}@{version}" v1.5.0 · Nov 2026 · source
  • Update pi and all extensions in one shot when you want everything on the latest version. pi update --all v0.79.7 · Jun 2026 · source
Supply-chain verification for builds shipped Publishes checksummed source archives with rebuild instructions so anyone can verify a release independently. 4 releases · 2 other sources · first seen May 2026

release

  • npm-shrinkwrap.json is removed from the published npm package; npm installations no longer pin transitive dependencies. Use the pi.dev installer for pinned installations. v1.0.1 · Oct 2026 · source · release history
  • Adds deterministic, checksummed source archives to GitHub releases with documented instructions for rebuilding standalone binaries, supporting supply-chain verification. v0.81.1 · Jul 2026 · source · release history
  • GitHub releases now include versioned source archives (pi-<release-version>-source.tar.gz) covered by a SHA256SUMS file, enabling deterministic, checksummed reproduction of official binaries. v0.81.1 · Jul 2026 · source · release history
  • Supply-chain hardening: ships npm-shrinkwrap.json for transitive dependency locking, enforces dependency pinning and lifecycle-script allowlists, and disables lifecycle scripts during self-update and local release installs. v0.75.4 · May 2026 · source · release history

docs

  • News New Features 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 . docs update · Jul 2026 · source
  • Pi 0.81.1 Verifiable release source archives — GitHub releases now include deterministic, checksummed source archives with instructions for rebuilding standalone binaries. docs update · Jul 2026 · source
Other 83 capabilities
MCP server integration shipped Connects Pi to Model Context Protocol servers over stdio or streamable HTTP with OAuth, configurable globally or per project via mcp.json, and manageable via `pi mcp add|remove|list|login|logout` or the `/mcp` slash command. 18 releases · 8 other sources · first seen Sep 2026

Also counts toward: Command-line interface, MCP server, Scripting API

release 18 total

  • MCP OAuth sign-in now defaults to oauth.clientRegistration: "auto"; set "dcr" to always register dynamically, or use pi mcp add --oauth-client-registration to set the mode per server. v1.5.0 · Nov 2026 · source · release history
  • pi mcp list --json now reports resources: true for servers that offer resources instead of separate resources and resourceTemplates counts; Pi no longer lists resources when connecting. v1.2.0 · Oct 2026 · source · release history
  • Extends pi mcp login --timeout to limit the entire sign-in flow, including requests to the authorization server, instead of only the browser wait. v1.1.0 · Oct 2026 · source · release history
  • Adds oauth.clientRegistration: "cimd" config key for MCP servers so authorization servers can allow pi by its Client ID Metadata Document URL instead of dynamic registration. v1.0.1 · Oct 2026 · source · release history
  • Adds .pi/mcp.json project-level overrides to enable, disable, or change enabled, exposure, and toolExposure of a user-level MCP server per project; /mcp also gains enable/disable for the current project. v1.0.1 · Oct 2026 · source · release history
  • Improves MCP OAuth with RFC 9207 iss parameter validation, per-server credential storage (keyed by server name and URL), and step-up sign-in that preserves previously granted scopes. v1.0.0 · Oct 2026 · source · release history

docs

  • A project entry without overrides only enabled of the user-level server with the same name and keeps the rest, including auth . docs update · Oct 2026 · source
  • Sep 30, 2026 Pi 0.99.2 MCP servers stay out of the way: servers with the default exposure are no longer listed in the description and no longer block the first prompt. docs update · Oct 2026 · source
  • servers over stdio or streamable HTTP and makes their tools and resources available to the model. Quick setup Add a local stdio server, check the connection, then start Pi: list For a remote server: list These commands add user-level servers by default. docs update · Sep 2026 · source
  • Navigation On this page Documentation On this page Pi connects to Model Context Protocol servers over stdio or streamable HTTP and makes their tools available to the model. Configure servers Copied Add servers to ~/.pi/agent/mcp.json , or to .pi/mcp.json in a project. docs update · Sep 2026 · source

example

  • Disable a user-level MCP server for one project without touching the global config. { "my-user-server": { "enabled": false } } v1.0.1 · Oct 2026 · source
  • Allow an OAuth-gated MCP server to recognise pi by its published Client ID Metadata Document instead of requiring dynamic client registration. { "mcpServers": { "my-oauth-server": { "url": "https://my-mcp-server.example.com", "oauth": { "clientRegistration": "cimd" } } } } v1.0.1 · Oct 2026 · source
  • Override the OAuth authorization server metadata for an MCP server that advertises an incorrect or missing authorization server URL. oauth: authServerMetadataUrl: "https://auth.example.com/.well-known/oauth-authorization-server" v1.0.0 · Oct 2026 · source
  • Register a private MCP server that only accepts a known OAuth client name, so Pi presents the right identity during OAuth registration. pi mcp add https://internal.example.com/mcp --oauth-client-name my-approved-client v0.99.2 · Sep 2026 · source
Unified extension system shipped Replaces the separate hooks and custom tools models with a single extensions model, unifying discovery, loading, registration, and configuration under one API surface. 15 releases · 2 other sources · first seen Jan 2026

Also counts toward: Command-line interface, Plugin system

release 15 total

  • Add pi.changelogPath to an extension package's package.json to show a changelog after an update; use the collapseChangelog setting to condense notices to one line per package. v1.5.0 · Nov 2026 · source · release history
  • session_directory is removed from extension and settings APIs. v0.65.0 · Apr 2026 · source · release history
  • Adds ToolDefinition.prepareArguments hook so extensions and SDK callers can normalize or migrate raw model arguments before schema validation — enabling compatibility shims for resumed sessions with outdated tool schemas. v0.64.0 · Mar 2026 · source · release history
  • The legacy source fields on Skill and PromptTemplate are removed — use sourceInfo.source instead. v0.62.0 · Mar 2026 · source · release history
  • extensionPath is removed from RegisteredCommand and RegisteredTool — use sourceInfo.path instead. v0.62.0 · Mar 2026 · source · release history
  • Adds extension event forwarding for full message and tool execution lifecycles: message_start, message_update, message_end, tool_execution_start, tool_execution_update, tool_execution_end. v0.52.10 · Feb 2026 · source · release history

example

  • Expose a changelog to Pi users when your extension package is updated, and condense multi-package notices to one line each. { "name": "my-pi-extension", "version": "2.1.0", "pi": { "changelogPath": "CHANGELOG.md" } } v1.5.0 · Nov 2026 · source
  • Trigger a live reload of the Pi runtime from inside an extension — useful when your extension detects a config change and needs to restart the agent without manual intervention. ctx.reload(); v0.52.9 · Feb 2026 · source
Session auto-compaction shipped Automatically summarizes and compacts long-running sessions to prevent context overflow stalls, with configurable triggers and reserve token thresholds. 12 releases · 3 other sources · first seen Dec 2025

release 12 total

  • Adds compaction.modelOverrides config with per-model reserveTokens and keepRecentTokens settings to control compaction budgets by model.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ v0.86.0 · Sep 2026 · source · release history
  • Prebuilt cwd-bound tool exports (readTool, bashTool, editTool, writeTool, grepTool, findTool, lsTool, readOnlyTools, codingTools) and their corresponding *ToolDefinition values have been removed from @mariozechner/pi-coding-agent; use explicit factory exports such as createReadTool(cwd),… v0.68.0 · Apr 2026 · source · release history
  • createAgentSession({ tools }) now expects string[] names such as "read" and "bash" instead of Tool[] instances; migrate SDK code from tools: [readTool, bashTool] to tools: ["read", "bash"]. v0.68.0 · Apr 2026 · source · release history
  • Session files with message role hookMessage are migrated to custom on first load under the new session version 3 format. v0.35.0 · Jan 2026 · source · release history
  • RPC prompt command replaces attachments field with images field using ImageContent format; auto_compaction_start gains reason field ("threshold" or "overflow"); auto_compaction_end gains willRetry field; compact response now includes full CompactionResult with summary, firstKeptEntryId,… v0.31.0 · Jan 2026 · source · release history
  • Structured compaction now tracks readFiles and modifiedFiles arrays in details, accumulated across compactions, with clear sections: Goal, Progress, Key Information, File Operations. v0.31.0 · Jan 2026 · source · release history

docs

  • pi // preparation.settings - effective settings after applying model overrides Per-model overrides Use compaction.modelOverrides to tune token budgets for different models: keepRecentTokens: 20000, modelOverrides: { some-provider/big-model: { reserveTokens: 400000 For a model with a 1M context window, this… docs update · Sep 2026 · source
  • compaction.modelOverrides Per-model reserveTokens keepRecentTokens overrides keyed by exact Per-model compaction overrides keepRecentTokens: 20000, modelOverrides: { some-provider/big-model: { reserveTokens: 400000 local/small-model: { reserveTokens: 2048, keepRecentTokens: 4096 Keys match exact,… docs update · Sep 2026 · source

example

  • Enable auto-compaction so long-running agent sessions never stall due to context overflow. /autocompact v0.12.7 · Dec 2025 · source
Third-party extension ecosystem shipped Community-built extensions such as pi-craft (planning, subagents, Git automation) and pi-courier (Matrix client) demonstrate that Pi's RPC and extension APIs support fully independent workflow tools built on top of Pi. 10 releases · 4 other sources · first seen Dec 2025

Also counts toward: Plugin API support, Plugin system

release 10 total

  • Adds actionable turn_end and agent_before_settle extension boundaries, allowing extensions to persist structural entries and ensure a next provider request. v0.87.0 · Sep 2026 · source · release history
  • before_agent_start extension events now expose systemPromptOptions (BuildSystemPromptOptions) so extensions can inspect structured system-prompt inputs directly. v0.68.0 · Apr 2026 · source · release history
  • New after_provider_response extension hook lets extensions inspect provider HTTP status codes and headers after each response is received and before stream consumption begins. v0.67.6 · Apr 2026 · source · release history
  • New after_provider_response extension hook enables extensions to inspect provider HTTP status codes and headers after each response and before stream consumption. v0.67.4 · Apr 2026 · source · release history
  • Adds ToolCallEventResult type exports from @mariozechner/pi-coding-agent top-level and core extension entry points, enabling extension authors to strongly type tool_call handler return values. v0.61.1 · Mar 2026 · source · release history
  • Adds createLocalBashOperations() export so extensions and SDK callers can wrap pi's built-in local bash backend for user_bash interception and custom bash integrations. v0.60.0 · Mar 2026 · source · release history

docs

  • pi-session-mail A file mailbox between Pi sessions on the same machine 5m ago pi-herdr-agents Asynchronous Pi subagents in Herdr, with optional isolated Git worktrees @artil-ai/pi Email, SMS and Telegram for Pi. Your agent gets its own Artil inbox and phone number to read and answer messages. docs update · Oct 2026 · source
  • 7m ago @thurstonsand/pi-permissions Pi extension package for user, project, and package-level tool permission hooks @brainervirus/workit-pi Workit native extension for Pi — tools, method skills, and session continuity pi-sessions Pi session search, ask, handoff, messaging, auto-titling, and indexing tools 18m ago… docs update · Oct 2026 · source
  • pi-craft An opinionated Pi workflow suite for planning, intent clarification, permissions, subagents, Git automation, project initialization, and publishing. pi-courier Run the pi coding agent from Matrix. Slash commands, skills and prompts fully work via the RPC protocol. docs update · Oct 2026 · source
  • Pi packages install and distribute extensions, skills, prompt templates, and themes as one unit. Use a package when a customization should be shared through npm or git, or when several resources belong together. A package is an ordinary directory or npm package. docs update · Sep 2026 · source
Classifier model support shipped Extensions and codemode scripts can call `classify()` via `ModelRuntime` and access the built-in `jev-latest` classifier model, with classifiers also available for llama.cpp chat models via next-token label probabilities and on several gateway providers. 10 releases · 3 other sources · first seen Mar 2026

Also counts toward: ML-based detection, Scripting API

release 10 total

  • Extends codemode models.classify() to accept images for TypeSafe's Jev and Cloudflare's Clef models on typesafe, cloudflare-workers-ai, and OpenRouter. v1.4.0 · Oct 2026 · source · release history
  • Adds provider-level compat fields imageInput and sendImageOptInHeader in models.json for proxies that serve another service's classifiers, now also applying to classifier models. v1.4.0 · Oct 2026 · source · release history
  • Adds native llama.cpp decision models — Julia-1, Laya, Kev, lev, and OpenJev — served by llama.cpp 0.6.0 or later as classifiers through /v1/systemone instead of as chat models. v1.1.0 · Oct 2026 · source · release history
  • Adds OpenAI GPT-6 Luna as a classifier model through the Decisions API, available with OPENAI_API_KEY. v1.1.0 · Oct 2026 · source · release history
  • Adds images to codemode's models.classify() context so image-capable classifiers such as GPT-6 Luna can judge images. v1.1.0 · Oct 2026 · source · release history
  • Adds @cf/cloudflare/clef and @cf/cloudflare/clef-flash Cloudflare Clef classifier models, usable from codemode scripts and extensions. v1.0.1 · Oct 2026 · source · release history

docs

  • Oct 21, 2026 Pi 1.4.0 Image input for classifiers : codemode accepts for TypeSafe's Jev and Cloudflare's Clef models on typesafe , and OpenRouter. See Models Configuration reference : every provider, model, model override, and compatibility field of , generated from its schema. docs update · Oct 2026 · source
  • Classifier models do not chat. They answer typed questions about JSON state: pick one of several choices, answer yes or no, or give a score, each with probabilities. docs update · Oct 2026 · source
  • typesafe-system-one cloudflare-workers-ai-system-one imageInput assets | images | state-image-urls How the service takes classifier images. assets sends TypeSafe's assets map (PNG and JPEG) and references the images from the state, as TypeSafe and Jev on Workers AI expect. docs update · Oct 2026 · source
Session branching and switching shipped Allows switching between sessions mid-conversation via an interactive selector, tracking branch origins in session headers. 10 releases · 3 other sources · first seen Dec 2025

release 10 total

  • Session-replacement methods (newSession(), switchSession(), fork(), importFromJsonl()) are removed from AgentSession; use AgentSessionRuntime instead. v0.65.0 · Apr 2026 · source · release history
  • Adds branch folding and segment-jump navigation in /tree via Ctrl+←/Ctrl+→ (segment jump) and Alt+←/Alt+→ (fold/unfold), alongside existing ←/→ and Page Up/Page Down paging. v0.57.1 · Mar 2026 · source · release history
  • Adds Threaded sort mode to the /resume session picker (now default), displaying sessions as a tree based on fork relationships with compact one-line format showing message count and age. v0.50.8 · Feb 2026 · source · release history
  • /tree branch summarization now offers three options: No summary, Summarize, and Summarize with custom prompt; custom prompts are appended to default summarization instructions. v0.43.0 · Jan 2026 · source · release history
  • New HookCommandContext-only methods for slash commands: ctx.waitForIdle(), ctx.newSession(options?), ctx.branch(entryId), ctx.navigateTree(targetId, options?). v0.31.0 · Jan 2026 · source · release history
  • Sessions now use a tree structure with id/parentId fields, enabling in-place branching via the new /tree command; existing sessions are auto-migrated from v1 to v2 on first load. v0.31.0 · Jan 2026 · source · release history

docs

  • Pi saves a conversation as a session. The active branch of that session supplies conversation history for the next model request. Use session commands to continue work, explore another branch, or reduce the amount of history sent to the model. docs update · Sep 2026 · source

example

  • Intercept a branch action before it happens and conditionally cancel it — useful for prompting the user or running pre-checks before a session branches. pi.on("session", (event) => { if (event.reason === "before_branch") { const allow = confirmBranch(); // your pre-check if (!allow) return { cancel: true }; } }); v0.27.0 · Dec 2025 · source
  • Switch to a previous session without restarting the agent — useful when you need to continue a different investigation mid-conversation. /resume v0.12.12 · Dec 2025 · source
Codemode JavaScript sandbox shipped Runs model-written JavaScript in a QuickJS sandbox, enabling shell commands with structured output up to 1 MiB, configurable via `codemode.mode` and `codemode.inlineBudget` settings, and activatable with `--tools` or `defaultTools`. 7 releases · 4 other sources · first seen Sep 2026

Also counts toward: Command-line interface, JavaScript scripting support, Scripting API, Scripting language support

release 7 total

  • Adds models.generateImages() to codemode scripts, calling image models (e.g. OpenRouter) with session credentials and returning base64 image blocks; extensions can call ctx.modelRegistry.generateImages(). v1.0.0 · Oct 2026 · source · release history
  • Codemode scripts that probed for a tool with typeof tools.name must now use "name" in tools. v1.0.0 · Oct 2026 · source · release history
  • describeNamespace() and searchTools() codemode functions to discover MCP tools by namespace without direct exposure v0.99.2 · Sep 2026 · source · release history
  • Adds describeNamespace(name) codemode helper that returns a namespace's instructions and tool names; accepts namespace as mcp__dev-radius, mcp__dev_radius, dev-radius, or dev_radius. v0.99.2 · Sep 2026 · source · release history
  • Changes bash and powershell structured results in codemode to hold up to 1 MiB of output (previously 2000 lines or 50 KB) and adds truncated and full_output_path fields. v0.99.0 · Sep 2026 · source · release history
  • Adds codemode.mode and codemode.inlineBudget config keys and --tools/defaultTools (with +name/-name) to enable and configure the codemode JavaScript sandbox v0.99.0 · Sep 2026 · source · release history

docs

  • namespace: { name, description, instructions } groups related tools, as MCP servers do. Codemode tools list a namespace under one heading with its description instructions holds longer usage guidance; it is not listed, and codemode scripts read it with describeNamespace(name) uses only this hook, Tool rendering A… docs update · Oct 2026 · source
  • Providers lists the variables and provider-specific setup. Codemode describes the question and answer types. Use image models Image models generate images from a prompt and optional input images. docs update · Oct 2026 · source

example

  • Prevent codemode script failures when running parallel subagents by raising the worker concurrency ceiling. PI_CODEMODE_MAX_WORKERS=8 pi v1.4.0 · Oct 2026 · source
  • Persist codemode as a default tool and cap its inline budget in your project config. { "defaultTools": ["+codemode"], "codemode.mode": "auto", "codemode.inlineBudget": 4096 } v0.99.0 · Sep 2026 · source
Extension UI component API shipped Provides extensions with methods to render custom TUI components, manage footer status, spawn multi-line editors, and apply theme colors. 9 releases · first seen Jan 2026

release 9 total

  • Add a blocked option to inline ctx.ui.custom() components so approval prompts and custom dialogs can signal that Pi is waiting for user input. v1.5.0 · Nov 2026 · source · release history
  • Enables non-capturing overlays in extension UIs with explicit focus control via OverlayOptions.nonCapturing and OverlayHandle.focus() / unfocus() / isFocused(). v0.57.0 · Mar 2026 · source · release history
  • Introduces FooterDataProvider API: ctx.ui.setFooter() gains a third footerData parameter exposing getGitBranch(), getExtensionStatuses(), and onBranchChange() for reactive custom footers. v0.42.2 · Jan 2026 · source · release history
  • Adds experimental { overlay: true } option to ctx.ui.custom() for floating modal components that composite over existing content without clearing the screen. v0.39.0 · Jan 2026 · source · release history
  • Adds optional AbortSignal parameter to ctx.ui.select(), ctx.ui.confirm(), and ctx.ui.input() extension dialogs, enabling programmatic dismissal and timeout patterns. v0.37.6 · Jan 2026 · source · release history
  • New Common Patterns and Key Rules sections in docs/tui.md with copy-paste code for SelectList, BorderedLoader, SettingsList, setStatus, setWidget, and setFooter. v0.37.5 · Jan 2026 · source · release history
Agent interruption and request cancellation shipped Allows queuing a new message while tools are running to skip remaining steps, plus support for terminating long-running shell commands via signal/timeout. 6 releases · 1 other source · first seen Dec 2025

release

  • Removed the inherited shouldStopAfterTurn agent option; use finishTurn and return { action: "end" } instead. v0.87.0 · Sep 2026 · source · release history
  • The shouldStopAfterTurn agent option is removed; replace it with finishTurn returning { action: "end" }. finishTurn runs before turn_end, also receives error and aborted responses, and normal-response predicates should return undefined for those hard exits. v0.87.0 · Sep 2026 · source · release history
  • 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 }. v0.86.0 · Sep 2026 · source · release history
  • user_bash fails closed on errors or invalid defined results, aborting without invoking later handlers or executing locally (return undefined to continue propagation). v0.86.0 · Sep 2026 · source · release history
  • Custom tools execute signature reordered to execute(toolCallId, params, onUpdate, ctx, signal?) and gains CustomToolContext with sessionManager, modelRegistry, model, isIdle(), hasQueuedMessages(), and abort(). v0.31.0 · Jan 2026 · source · release history
  • Enables mid-task agent interruption: queuing a message while tools are running skips remaining tools and processes your new message immediately. v0.25.0 · Dec 2025 · source · release history

docs

  • clear_queue Remove queued steering and follow-up messages and return their text. {"type": clear_queue} command: clear_queue, steering: [Change direction], followUp: [Summarize when finished] To implement interactive Esc behavior, send clear_queue before , then restore the returned text in the client… docs update · Aug 2026 · source
Tool allowlist filtering shipped Users can replace the default tool selection with a comma-separated allowlist of built-in, extension, or MCP tool names or glob patterns, restricting which tools are available to the model at runtime. 4 releases · 2 other sources · first seen Jan 2026

Also counts toward: Command-line interface

release

  • Adds +name/-name modifiers to --tools (e.g.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ pi -t +codemode,-write) so entries change the default tool selection instead of replacing it entirely. v1.1.0 · Oct 2026 · source · release history
  • Adds --no-builtin-tools CLI flag and createAgentSession({ noTools: "builtin" }) SDK option to disable only built-in tools while keeping extension tools active. v0.70.0 · Apr 2026 · source · release history
  • --tools now allowlists built-in, extension, and custom tools by name, and --no-tools now disables all tools by default rather than only built-ins. v0.68.0 · Apr 2026 · source · release history
  • Expands the tool registry to include all built-in tools (read, bash, edit, write, grep, find, ls) even when --tools restricts the initially active set, letting hooks enable any registered tool via pi.setActiveTools(). v0.34.0 · Jan 2026 · source · release history

docs

  • Providers lookup to one provider. It requires Replaces the default selection with a comma-separated allowlist of built-in, extension, or custom tools. Entries are tool names or patterns where * matches any characters. MCP tools are kept unless an entry starts with mcp__ MCP tools ). docs update · Oct 2026 · source

example

  • Enable an extra tool on top of Pi's defaults without throwing away the rest of the default set. pi -t +codemode v1.1.0 · Oct 2026 · source
System prompt extension shipped Appends inline text or file contents to the system prompt without replacing the base instructions. 4 releases · 2 other sources · first seen Dec 2025

Also counts toward: Command-line interface

release

  • Adds before_agent_start extension hook support for transcript-backed mid-conversation system prompt and tool changes that survive resume and branch navigation while preserving cached prefixes. v0.86.0 · Sep 2026 · source · release history
  • Adds promptSnippet field to ToolDefinition for injecting a one-line entry into the default system prompt's Available tools section while the tool is active. v0.55.4 · Mar 2026 · source · release history
  • Enables before_agent_start hook handlers to return systemPromptAppend to dynamically inject text into the system prompt per turn; multiple hooks' appends are concatenated. v0.34.0 · Jan 2026 · source · release history
  • New --append-system-prompt flag appends inline text or file contents to the system prompt without replacing the base prompt. v0.12.11 · Dec 2025 · source · release history

docs

  • Sep 21, 2026 Pi 0.87.0 Canonical session context and extension boundaries — Edit model context without rewriting history and add actionable lifecycle hooks. See ContextEditEntry extension events Full-transcript context extensions context_with_system for per-request system-message transformations. docs update · Sep 2026 · source

example

  • Layer multiple system prompt fragments at launch — useful when composing role instructions with dynamic context (e.g., rules file + live asset list) without modifying a base config. pi --append-system-prompt "You are a security analyst. Follow OWASP guidelines." --append-system-prompt "Scope: only assess endpoints under /api/v2." v0.67.2 · Apr 2026 · source
Transient error retry with backoff shipped Automatically retries requests on transient provider errors (429, 5xx) using exponential backoff, with configurable limits and programmatic event hooks. 5 releases · 1 other source · first seen Dec 2025

release

  • Exposes retry lifecycle events — summarization_retry_scheduled, summarization_retry_attempt_start, and summarization_retry_finished — to interactive, JSON, RPC, and SDK consumers when compaction or branch summarization retries transient provider failures. v0.81.1 · Jul 2026 · source · release history
  • New retry.maxDelayMs setting caps how long Pi will wait on server-requested retry delays — requests exceeding the cap fail immediately with an informative error instead of hanging silently (default: 60 000 ms). v0.50.8 · Feb 2026 · source · release history
  • Adds auto-retry on transient provider errors (429, 500, 502–504) using exponential backoff (2s, 4s, 8s), with TUI retry status display and Escape-to-cancel support. v0.18.2 · Dec 2025 · source · release history
  • Emits auto_retry_start and auto_retry_end events in RPC mode for programmatic retry visibility. v0.18.2 · Dec 2025 · source · release history
  • Exposes retry configuration via retry.enabled, retry.maxRetries, and retry.baseDelayMs in settings.json. v0.18.2 · Dec 2025 · source · release history

example

  • Tune retry behaviour for a slow or rate-limited provider without touching your workflow. # In settings.json { "retry": { "enabled": true, "maxRetries": 5, "baseDelayMs": 2000 } } v0.18.2 · Dec 2025 · source
OpenAI Codex provider support shipped Adds support for OpenAI Codex models with prompt caching and reasoning signature retention across turns. 3 releases · 2 other sources · first seen Jan 2026

Also counts toward: Command-line interface

release

  • Pi adds GPT-6.1 Terra for OpenAI, Azure OpenAI Responses, and OpenAI Codex, with tool search, mid-conversation thinking-level changes, thinking off, and a 500K context window on Codex. v1.5.0 · Nov 2026 · source · release history
  • Adds websocket-cached transport option for the OpenAI Codex provider, keeping a single WebSocket open per session and sending only new conversation items instead of the full chat history on each request. v0.71.1 · May 2026 · source · release history
  • Adds OpenAI Codex provider support (gpt-5.1, gpt-5.2, gpt-5.1-codex-mini, gpt-5.2-codex) with prompt caching via session ID and reasoning signature retention across turns — enable with --provider openai-codex. v0.47.0 · Jan 2026 · source · release history

docs

  • Oct 15, 2026 Pi 1.3.0 Choose where /share uploads sessionShareDestination selects auto gist radius Sessions and context 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. docs update · Oct 2026 · source
  • Sep 5, 2026 Pi 0.85.1 GPT-6 Astra — Available through OpenAI API keys and OpenAI Codex subscriptions. See 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 docs update · Sep 2026 · source
Virtual model routing shipped Extensions can register virtual models via `pi.registerVirtualModel()` to route each request to a different physical model or thinking level based on input content, with per-physical-model cost reported in `/session`. 3 releases · 2 other sources · first seen Sep 2026

Also counts toward: Plugin API support, Scripting API

release

  • Access concrete responseModel metadata on messages from pi-messages providers such as Radius, including when a virtual model is requested. v1.5.0 · Nov 2026 · source · release history
  • Adds experimental virtual models: extensions register them with pi.registerVirtualModel() to route each request to a different physical model and thinking level; /session lists cost per physical model. v0.99.0 · Sep 2026 · source · release history
  • Adds pi.registerVirtualModel() API and /session cost reporting to route requests to different physical models v0.99.0 · Sep 2026 · source · release history

docs

  • Navigation On this page Documentation On this page A virtual model is a selectable model that picks a physical model for each request. Use one to route by task, cost, or conversation state. docs update · Sep 2026 · source

example

  • Register a virtual model programmatically to route requests based on input content. pi.registerVirtualModel('my-router', (req) => req.type === 'code' ? 'claude-sonnet' : 'gpt-4o'); v0.99.0 · Sep 2026 · source
Tool search extension shipped A built-in `tool_search` extension discovers and declares undeclared tools to the model at runtime, including MCP tools searchable by namespace from codemode scripts. 3 releases · 2 other sources · first seen Sep 2026

Also counts toward: Scripting API

release

  • describeNamespace() and searchTools() codemode functions to discover MCP tools by namespace without direct exposure v0.99.2 · Sep 2026 · source · release history
  • codemode-deferred is now an alias for codemode; use direct exposure for tools the model should see without searching. v0.99.2 · Sep 2026 · source · release history
  • Adds tool_search built-in extension that finds undeclared tools and declares them to the model at runtime. v0.99.0 · Sep 2026 · source · release history

docs

  • lookup to one provider. It requires description lists the callable tools with their TypeScript declarations, grouped by namespace (for example one MCP server). docs update · Oct 2026 · source
  • description Search and read the product documentation description : what the server offers, in a sentence. It lists the server in the system prompt (see ), tool search ranks the server's tools by it, and codemode's describeNamespace() returns it. docs update · Oct 2026 · source
Built-in extension management shipped Built-in extensions (`mcp`, `llama.cpp`, `codemode`, `tool-search`) can be disabled globally or per project via `pi config` or the `--no-extensions` flag, and individually restored with `-e builtin:<name>`. 5 releases · first seen Jan 2026

Also counts toward: Command-line interface

release

  • --no-extensions now also disables the built-in extensions; load one explicitly with -e builtin:<name> v0.99.0 · Sep 2026 · source · release history
  • --no-extensions now also disables the built-in extensions including the llama.cpp provider; previously built-ins were unaffected. Restore a specific built-in with -e builtin:<name>. v0.99.0 · Sep 2026 · source · release history
  • Extends --no-extensions to also disable built-in extensions including the llama.cpp provider; load one back explicitly with -e builtin:<name> (e.g. pi -ne -e builtin:mcp). v0.99.0 · Sep 2026 · source · release history
  • Adds a Built-in section in pi config to disable built-in extensions (mcp, llama.cpp, codemode, tool-search) globally or per project using -builtin:<name> in the extensions setting. v0.99.0 · Sep 2026 · source · release history
  • The hooks and customTools arrays in settings.json are replaced by a single extensions array; existing configs must be updated manually. v0.35.0 · Jan 2026 · source · release history
Windows and Android platform support shipped Pi runs natively on Windows (with Git Bash or optional PowerShell) or inside WSL, and on Android via Termux with text input, file tools, shell commands, and clipboard integration. 5 other sources · first seen Dec 2025

Also counts toward: Command-line interface

docs

  • Pi runs on Android through , a terminal emulator and Linux environment. Text input, file tools, and shell commands are supported. Pi can copy and paste text through the Android clipboard with Termux:API. Clipboard image paste is not supported. Before you begin Install Termux from GitHub or F-Droid . docs update · Sep 2026 · source
  • Run Pi either as a native Windows process or inside Windows Subsystem for Linux (WSL). Native Windows uses Git Bash by default for Bash commands and can optionally expose PowerShell to the model. Pi inside WSL uses the Linux environment and its Bash installation. docs update · Sep 2026 · source
  • Aug 24, 2026 Pi 0.84.3 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. docs update · Aug 2026 · source
  • Pi uses Git Bash by default on Windows. Checked locations (in order): PowerShell Tool The optional powershell tool runs commands through pwsh.exe when available, otherwise Windows PowerShell. It starts PowerShell with -NoProfile -NonInteractive -ExecutionPolicy Bypass . docs update · Aug 2026 · source

example

  • Point Pi at a Cygwin bash installation on Windows instead of the default Git Bash. echo '{"shellPath": "C:\\cygwin64\\bin\\bash.exe"}' > ~/.pi/agent/settings.json v0.13.1 · Dec 2025 · source
Custom provider bearer token configuration shipped Allows custom providers to automatically inject Authorization: Bearer headers via models.json configuration. 3 releases · 2 other sources · first seen Dec 2025

release

  • Adds vllmPriority and supportsMaxOutputTokens model settings for OpenAI-compatible vLLM transports, controlling vLLM scheduler priority and OpenAI Responses output-token limits. v0.85.0 · Sep 2026 · source · release history
  • Adds provider-scoped env overrides in auth.json API key entries for Cloudflare, Azure OpenAI, Google Vertex, Amazon Bedrock, cache retention, and proxy settings — scoped to Pi without touching the project shell. v0.79.5 · Jun 2026 · source · release history
  • New authHeader option in models.json lets custom providers automatically inject Authorization: Bearer <apiKey> headers. v0.12.11 · Dec 2025 · source · release history

example

  • Query a Mistral model by setting your API key before invoking Pi. export MISTRAL_API_KEY=<your-key> pi <your-prompt> v0.18.1 · Dec 2025 · source
  • Enable bearer-token auth for a custom provider without manually specifying headers each time. { "name": "my-provider", "apiKey": "sk-...", "authHeader": true, "baseUrl": "https://my-provider.example.com/v1" } v0.12.11 · Dec 2025 · source
Session copy command shipped Copies the last assistant message to the system clipboard with cross-platform support, preserving Markdown formatting. 2 releases · 2 other sources · first seen Dec 2025

release

  • Adds PI_CLIPBOARD_OSC52=1 environment variable to send copied text via OSC 52, reaching a remote client's clipboard when Pi cannot detect the remote session (e.g.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ multiplexer attached from another machine or remote IDE daemon). v1.2.0 · Oct 2026 · source · release history
  • Adds /copy command to copy the last agent message to the clipboard, with cross-platform support (macOS, Windows, Linux) — useful for extracting text from rendered Markdown output. v0.12.9 · Dec 2025 · source · release history

docs

  • Ctrl+X copies the selected message in ; otherwise it copies the last assistant message, or the active fullscreen text selection when fullscreenCopyOnSelect is disabled Switch models; Ctrl+S in the picker saves the startup default /thinking Switch thinking level; Ctrl+S in the picker saves the startup default Theme,… docs update · Aug 2026 · source

example

  • After receiving a long Markdown-formatted agent response, copy it to clipboard for pasting into a report or ticket without losing formatting. /copy v0.12.9 · Dec 2025 · source
Sampling parameters by thinking level shipped The `samplingParamsByThinkingLevel` field in `models.json` lets users set per-thinking-level `temperature` and `top_p` overrides on OpenAI-compatible APIs, so lighter reasoning modes can use higher temperature while deep-think modes stay deterministic. 1 release · 3 other sources · first seen Oct 2026

release

  • Adds samplingParamsByThinkingLevel to models.json to set temperature and top_p per thinking level on OpenAI-compatible APIs.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ v1.0.2 · Oct 2026 · source · release history

docs

  • Oct 4, 2026 Pi 1.0.2 Sampling by thinking level samplingParamsByThinkingLevel sets sampling parameters such as temperature top_p for each thinking level on OpenAI-compatible APIs. docs update · Oct 2026 · source
  • Providers lists the variables and provider-specific setup. Configure sampling by thinking level OpenAI-compatible APIs support free-form samplingParams model defaults and samplingParamsByThinkingLevel overrides. docs update · Oct 2026 · source

example

  • Tune sampling per thinking level so lighter reasoning modes use higher temperature while deep-think modes stay deterministic. { "samplingParamsByThinkingLevel": { "low": { "temperature": 1.0, "top_p": 0.95 }, "medium": { "temperature": 0.7, "top_p": 0.9 }, "high": { "temperature": 0.2, "top_p": 0.8 } } } v1.0.2 · Oct 2026 · source
Skills system overhaul shipped Replaces the old skills directory convention with a structured SKILL.md discovery system that auto-loads instructions on demand. 3 releases · 1 other source · first seen Dec 2025

release

  • Displays loaded skills on startup in interactive mode so you can confirm which skills are active before issuing commands. v0.20.0 · Dec 2025 · source · release history
  • Pi skills must now be named SKILL.md inside a directory (e.g. ~/.pi/agent/skills/foo/SKILL.md); the previous convention of any *.md file directly under the skills directory is no longer supported. Migrate by renaming ~/.pi/agent/skills/foo.md to ~/.pi/agent/skills/foo/SKILL.md. v0.20.0 · Dec 2025 · source · release history
  • New skills system auto-discovers and loads instruction files on demand from Claude Code, Codex CLI, and Pi-native skill directories, with descriptions surfaced in the system prompt. v0.19.0 · Dec 2025 · source · release history

docs

  • Skills give Pi specialized instructions and supporting files for a particular kind of work. Pi advertises each available skill by name and description, then loads its full instructions only when the task calls for them. docs update · Sep 2026 · source
Extended tool context API shipped Grants custom tools access to the full runtime context, including UI prompts, session management, and truncation utilities. 3 releases · first seen Jan 2026

release

  • Control pi.exec() output with a maxBuffer option; the result now includes a truncated field that is true when output exceeded the limit. v1.5.0 · Nov 2026 · source · release history
  • Exports truncation utilities (truncateHead, truncateTail, truncateLine, formatSize, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, TruncationOptions, TruncationResult) for use in custom tools. v0.37.5 · Jan 2026 · source · release history
  • Custom tools registered via pi.registerTool() now receive the same full ctx object as event handlers, giving them access to UI prompts, session management, and all other context capabilities. v0.35.0 · Jan 2026 · source · release history
Manual session compaction shipped Enables users to manually summarize older messages in a long session using a slash command with optional custom instructions for the summary. 2 releases · 1 other source · first seen Dec 2025

release

  • generateSummary() and generateSummaryWithUsage() now ignore their reserveTokens parameter — callers that relied on it to bound summary output length will see that bound removed. v1.4.0 · Oct 2026 · source · release history
  • Adds /compact [instructions] command to manually summarize older messages and reduce context usage, with optional custom instructions for the summary. v0.12.7 · Dec 2025 · source · release history

example

  • Manually compact a long session mid-conversation, directing the summary to focus on a specific area of work. /compact focus on the authentication module decisions and discard unrelated tangents v0.12.7 · Dec 2025 · source
Unified settings menu shipped Consolidates various slash commands for thinking, theme, and queue modes into a single interactive /settings interface. 3 releases · first seen Dec 2025

release

  • Adds $schema support to settings.json, models.json, keybindings, and themes config files for editor validation and completion, with schemas published at https://pi.dev/schemas/*.schema.json. v1.2.0 · Oct 2026 · source · release history
  • The /thinking, /queue, /theme, /autocompact, and /show-images commands are replaced by the new /settings menu. v0.29.1 · Dec 2025 · source · release history
  • Introduces unified /settings command consolidating thinking level, theme, queue mode, auto-compact, show images, hide thinking, and collapse changelog into a single menu. v0.29.1 · Dec 2025 · source · release history
Tool renderer extension API shipped Extensions can register custom renderers via `pi.registerToolRenderer()` to control how tool calls — including unregistered MCP tools in resumed sessions — are displayed. 3 releases · first seen Oct 2026

Also counts toward: Plugin API support

release

  • Adds durationMs to the tool render context and to tool_execution_end extension events, recording the execution time of a final tool result. v1.1.0 · Oct 2026 · source · release history
  • Adds outputPad to the tool render context. v1.1.0 · Oct 2026 · source · release history
  • Adds pi.registerToolRenderer() extension API to control how calls to any tool — including unregistered MCP tools in resumed sessions — are drawn. v1.0.1 · Oct 2026 · source · release history
Nix package installation shipped Pi can be installed or run on macOS and Linux via Nix using `nix run` or `nix profile add` against the stable GitHub flake, without npm or manual binary management. 1 release · 2 other sources · first seen Oct 2026

Also counts toward: Command-line interface

release

  • Adds nix run github:earendil-works/pi/stable and nix profile add github:earendil-works/pi/stable for Nix-based install on macOS and Linux.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ v1.0.1 · Oct 2026 · source · release history

example

  • Install pi on a Nix-enabled system without npm or manual binary management. nix profile add github:earendil-works/pi/stable v1.0.1 · Oct 2026 · source
  • Run pi from sources ./pi-test.sh
Anthropic workload identity federation shipped Supports Anthropic workload identity federation via `ANTHROPIC_FEDERATION_RULE_ID`, `ANTHROPIC_ORGANIZATION_ID`, and `ANTHROPIC_IDENTITY_TOKEN_FILE` environment variables. 2 releases · 1 other source · first seen Sep 2026

release

  • Support for Anthropic workload identity federation via ANTHROPIC_FEDERATION_RULE_ID, ANTHROPIC_ORGANIZATION_ID, and ANTHROPIC_IDENTITY_TOKEN_FILE env vars v0.99.2 · Sep 2026 · source · release history
  • Adds Anthropic workload identity federation via ANTHROPIC_FEDERATION_RULE_ID, ANTHROPIC_ORGANIZATION_ID, and ANTHROPIC_IDENTITY_TOKEN_FILE environment variables. v0.99.2 · Sep 2026 · source · release history

example

  • Enable Anthropic workload identity federation so Pi authenticates without a static API key, e.g. in a CI environment with federated credentials. export ANTHROPIC_FEDERATION_RULE_ID=rule-abc123 export ANTHROPIC_ORGANIZATION_ID=org-xyz export ANTHROPIC_IDENTITY_TOKEN_FILE=/run/secrets/anthropic_token pi v0.99.2 · Sep 2026 · source
Version reporting shipped Prints the installed AI tool version to the terminal via a CLI flag and exits. 1 release · 2 other sources · first seen Dec 2025

Also counts toward: Command-line interface

release

  • Adds --version / -v flag to print the current Pi version and exit. v0.19.0 · Dec 2025 · source · release history

docs

  • Navigation On this page Documentation On this page By default, running pi opens the interactive terminal interface. When input or output is piped or redirected, Pi uses print mode instead. You can also select print, JSON, or RPC mode explicitly for scripts and applications. docs update · Sep 2026 · source

example

  • Check the installed Pi version quickly from the terminal. pi --version v0.19.0 · Dec 2025 · source
Prompt cache warming shipped Maintains prompt cache entries during long tool runs and idle periods using cost-aware refreshes to avoid cold starts. 1 release · 2 other sources · first seen Sep 2026

release

  • Adds cost-aware prompt-cache warming during long tool runs and optionally while idle, with configurable modes, /session diagnostics, transcript notices, and the cache_warming_decision extension event. v0.86.0 · Sep 2026 · source · release history

docs

  • Sep 19, 2026 Pi 0.86.0 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. docs update · Sep 2026 · source
  • Show transcript notices for significant prompt-cache misses, successful cache-warming usage, compaction or branch-summary usage, and provider recovery diagnostics such as dropped Anthropic thinking blocks cacheWarming Prompt cache-warming mode: idle Cache Warming Providers drop a prompt cache entry after a period of… docs update · Sep 2026 · source
Self-contained binary distribution shipped Builds and distributes standalone, platform-specific binaries for macOS, Linux, and Windows via GitHub Releases and npm scripts. 2 releases · 1 other source · first seen Dec 2025

release

  • Adds ./scripts/build-binaries.sh with --offline-model-data, --platform, --out, --skip-install, and --skip-deps flags for rebuilding standalone binaries from release source archives. v0.81.1 · Jul 2026 · source · release history
  • Adds standalone self-contained binary builds via npm run build:binary, with pre-built releases for macOS (arm64/x64), Linux (x64/arm64), and Windows (x64) on GitHub Releases. v0.12.0 · Dec 2025 · source · release history

example

  • Build standalone binaries for Linux x64 ./scripts/build-binaries.sh --offline-model-data --platform linux-x64 --out "$PWD/out"
Install and update telemetry shipped Collects anonymous adoption metrics for interactive installations and updates, with opt-out controls. 3 releases · first seen Apr 2026

release

  • Adds experimental first-time setup flow (enabled via PI_EXPERIMENTAL=1) that prompts for dark/light theme choice and opt-in analytics, storing a trackingId in settings.json. v0.79.2 · Jun 2026 · source · release history
  • Adds anonymous install/update telemetry ping (only in interactive mode) to count per-version adoption; disable via /settings → Install telemetry, enableInstallTelemetry: false in settings.json, PI_OFFLINE=1, or PI_TELEMETRY=0. v0.67.1 · Apr 2026 · source · release history
  • Adds lightweight anonymous install/update telemetry ping to track per-version adoption; controllable via /settings, enableInstallTelemetry in settings.json, PI_OFFLINE=1, or PI_TELEMETRY=0. v0.67.0 · Apr 2026 · source · release history
Terminal rendering diagnostics shipped Provides commands and logging utilities to diagnose terminal display issues such as misaligned lines, truncation, or incorrect width calculations. 2 releases · 1 other source · first seen Dec 2025

release

  • OSC 9;4 terminal progress indicators are now disabled by default; set terminal.showTerminalProgress to true in /settings to re-enable. v0.70.0 · Apr 2026 · source · release history
  • New /debug slash command writes terminal width and all rendered lines with their visible widths to ~/.pi/agent/pi-debug.log for diagnosing rendering issues. v0.12.4 · Dec 2025 · source · release history

example

  • Capture a rendering diagnostic snapshot when lines appear misaligned or truncated in your terminal. /debug v0.12.4 · Dec 2025 · source
Tool rendering constraints shipped Extensions can register custom renderers to control how tool calls are displayed, and ToolDefinitions must return Component values for slots. 3 releases · first seen Mar 2026

release

  • New renderShell: "self" option for custom and built-in tool renderers lets tools own their outer shell instead of the default boxed shell, enabling stable large previews such as edit diffs. v0.67.3 · Apr 2026 · source · release history
  • If renderCall or renderResult is defined on a ToolDefinition, it must now return a Component; fallback rendering only occurs when no renderer is defined for that slot. v0.62.0 · Mar 2026 · source · release history
  • Enables extension authors to override rendering of built-in read/write/edit/bash/grep/find/ls tools with custom renderCall/renderResult components via extensible ToolDefinitions. v0.62.0 · Mar 2026 · source · release history
Session directory configuration shipped Allows specifying a custom directory for storing session data via CLI flags or SDK arguments, decoupling session storage from the current working directory. 3 releases · first seen Dec 2025

release

  • New session_directory extension event fires before session manager creation, letting extensions customize the session directory path based on cwd or other factors (CLI --session-dir still takes precedence). v0.57.1 · Mar 2026 · source · release history
  • The second parameter of SessionManager.create(), continueRecent(), and list() is renamed from agentDir to sessionDir with changed semantics: when provided it now specifies the session directory directly (no cwd encoding); when omitted it falls back to ~/.pi/agent/sessions/<encoded-cwd>/. v0.30.0 · Dec 2025 · source · release history
  • New --session-dir flag lets you store sessions in any directory instead of the default ~/.pi/agent/sessions/<encoded-cwd>/, compatible with -c (continue) and -r (resume) flags. v0.30.0 · Dec 2025 · source · release history
Model and session fuzzy search shipped Provides fuzzy matching for models and sessions in the interactive selector to facilitate quick discovery. 3 releases · first seen Dec 2025

Also counts toward: Command-line interface

release

  • Expands --model flag to support provider/id syntax, fuzzy matching, and :<thinking> suffixes (e.g., --model sonnet:high, --model openai/gpt-4o) without requiring --provider. v0.52.10 · Feb 2026 · source · release history
  • The /resume picker sort toggle is moved from Ctrl+R to Ctrl+S (freeing Ctrl+R for session rename). v0.50.0 · Jan 2026 · source · release history
  • Adds fuzzy search for models and sessions (e.g., codexmax matches gpt-5.1-codex-max) in the interactive selector. v0.12.12 · Dec 2025 · source · release history
Mid-conversation session switching shipped Enables switching to a different session mid-conversation via an interactive selector without restarting the agent. 2 releases · 1 other source · first seen Dec 2025

Also counts toward: Command-line interface

release

  • Moves credential storage (API keys and OAuth tokens) from oauth.json and settings.json to ~/.pi/agent/auth.json; existing credentials are automatically migrated on first run. v0.28.0 · Dec 2025 · source · release history
  • New /resume command lets you switch to a different session mid-conversation via an interactive selector, without restarting the agent. v0.12.12 · Dec 2025 · source · release history

example

  • Switch to a previous session without restarting the agent — useful when you need to continue a different investigation mid-conversation. /resume v0.12.12 · Dec 2025 · source
HTML export line number display shipped Shows line number ranges for read tool calls in HTML exports, with highlighting for offset/limit usage. 3 releases · first seen Dec 2025

release

  • Adds syntax highlighting to code blocks in HTML exports using highlight.js, with theme-aware colors matching the TUI. v0.27.5 · Dec 2025 · source · release history
  • Adds server-side markdown rendering in HTML exports (tables, headings, code blocks, image rendering for user messages, TUI-style language markers, light/dark theme support). v0.27.5 · Dec 2025 · source · release history
  • HTML exports now show line number ranges (e.g., file.txt:10-20) for read tool calls when offset/limit parameters are used, with yellow highlighting. v0.18.2 · Dec 2025 · source · release history
GitHub Copilot integration shipped Adds GitHub Copilot integration via OAuth login, enabling access to various models through models.dev. 3 releases · first seen Dec 2025

release

  • Adds gemini-3-pro-preview and gemini-3-flash-preview models to the google-gemini-cli provider. v0.25.3 · Dec 2025 · source · release history
  • New Google Gemini CLI OAuth provider: access Gemini 2.0/2.5 models for free via Google Cloud Code Assist using /login → Google Gemini CLI. v0.25.0 · Dec 2025 · source · release history
  • Adds GitHub Copilot integration via OAuth login (/login → GitHub Copilot), supporting github.com and GitHub Enterprise with models sourced from models.dev including Claude, GPT, Gemini, and Grok — all automatically enabled after login. v0.22.0 · Dec 2025 · source · release history
Structured diagnostics reporting shipped Returns standardized info, warning, and error diagnostics for CLI parsing, service setup, and session configuration instead of logging or exiting. 2 releases · first seen Apr 2026

release

  • Validation failure messages seen by the model are now in pi-schema format (e.g. - path: missing, - limit: expected number, got string) instead of TypeBox format (e.g. must have required properties path, must be number). v1.5.0 · Nov 2026 · source · release history
  • Unified structured diagnostics: arg parsing, service creation, session option resolution, and resource loading now return info/warning/error diagnostics instead of logging or exiting, letting the app layer control presentation and exit behavior. v0.65.0 · Apr 2026 · source · release history
Startup output verbosity control shipped A `quietStartup` config setting (e.g. `"header"`) suppresses the model-scope line and loaded-resource listing at startup while keeping the version banner and key hints. 1 release · 1 other source · first seen Oct 2026

release

  • Adds quietStartup: "header" config setting to keep the version/key-hint header while hiding the model scope line and loaded-resource listing. v1.0.0 · Oct 2026 · source · release history

example

  • Suppress the verbose startup resource listing on a shared/monitored terminal while keeping the version banner and key hints. quietStartup: "header" v1.0.0 · Oct 2026 · source
Bash tool execution context shipped Explains that Bash commands run in separate non-interactive processes that do not expand aliases or load interactive startup files. 1 release · 1 other source · first seen Jul 2026

release

  • Adds streaming bash_execution_update RPC events for direct RPC bash commands, correlated with request IDs, so callers can consume incremental output as it arrives. v0.82.0 · Jul 2026 · source · release history

docs

  • On this page Documentation On this page Pi starts a separate non-interactive shell process for each Bash command. Non-interactive Bash does not expand aliases by default and usually does not load the same startup files as an interactive terminal. docs update · Sep 2026 · source
Docker sandbox integration documented Isolates tool execution and process access using Docker Sandboxes while keeping provider keys on the host. 2 other sources · first seen Sep 2026

docs

  • Use an isolated environment to limit the files, credentials, processes, and network services that generated commands can access or affect. You can isolate the complete Pi process or keep Pi on the host and route selected tools into an isolated environment. docs update · Sep 2026 · source
  • Docker Sandboxes process in a managed sandbox Local isolation with provider keys kept on the host Requires Docker Sandboxes ( sbx ). Docker Sandboxes Docker Sandboxes is a managed sandbox runtime from Docker that runs the whole process inside a sandbox. docs update · Sep 2026 · source
Prompt templates shipped Converts Markdown files into reusable commands with argument support and completion, allowing instruction reuse without executable behavior. 1 release · 1 other source · first seen Apr 2026

release

  • Adds argument-hint frontmatter field for prompt templates, displayed before the description in the / autocomplete dropdown using <angle> for required and [square] for optional arguments. v0.67.6 · Apr 2026 · source · release history

docs

  • Prompt templates turn Markdown files into reusable commands. Use one when you want to reuse the same prompt without adding executable behavior or a larger set of supporting instructions. A template can accept arguments and appear in command completion. docs update · Sep 2026 · source
Session context editing shipped Appends edits to the model context to omit messages from future provider context without altering raw history or usage. 2 releases · first seen Sep 2026

release

  • Adds append-only model-context edits via sessionManager.appendContextEdit(entryId, null) to omit messages from future provider context without altering raw history, usage, or UI history. v0.87.0 · Sep 2026 · source · release history
  • sessionManager.appendContextEdit(entryId, null) appends an append-only model-context edit to omit messages from future provider context without changing raw history. v0.87.0 · Sep 2026 · source · release history
Bug reporting command shipped Provides a /bug command that collects redacted diagnostics, optional transcripts, and exports reports for developers. 1 release · 1 other source · first seen Sep 2026

release

  • Adds /bug [description] command to report problems to Pi developers, bundling redacted environment/model/provider/settings metadata, optional session transcripts, and exporting as a ZIP or uploading to Radius; crashes are tracked in ~/.pi/agent/crashes.json. v0.86.0 · Sep 2026 · source · release history

docs

  • /bug [description] Report a bug to the Pi developers; see Reporting Bugs Reporting Bugs /bug [description] collects a bug report for the Pi developers. The report is not shared publicly. The dialog asks for an optional description and whether to include the session transcript. docs update · Sep 2026 · source
Meta Muse authentication shipped Enables interactive device-code OAuth login for Meta Muse subscriptions, automatically minting and refreshing API keys. 1 release · 1 other source · first seen Sep 2026

release

  • Adds Meta Muse provider access via /login meta with automatic Model API key refresh, or by setting META_API_KEY to use Muse Spark models.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ v0.86.1 · Sep 2026 · source · release history

docs

  • Meta (Muse subscription) Meta (Muse subscription) /login meta Sign in with Meta to open the device authorization flow The login mints a Model API key that is re-minted automatically about once a day META_API_KEY Meta META_API_KEY meta docs update · Sep 2026 · source
Google Gemini 3 Pro thinking level support shipped Extends the thinking level selector to map Minimal/Low and Medium/High levels to Google LOW and HIGH for Gemini 3 Pro models. 2 releases · first seen Dec 2025

release

  • The GoogleThinkingLevel type is renamed to GoogleApiThinkingLevel; any code referencing GoogleThinkingLevel will break on upgrade. v0.84.3 · Aug 2026 · source · release history
  • Extends thinking level selector (Minimal/Low → Google LOW, Medium/High → Google HIGH) to Gemini 3 Pro models. v0.21.0 · Dec 2025 · source · release history
Prompt history navigation shipped Allows browsing up to 100 previously submitted prompts using arrow keys when the input editor is empty. 2 releases · first seen Dec 2025

release

  • Adds opt-in Ctrl+P/Ctrl+N prompt history navigation with explicit history bindings that take precedence over application shortcuts while the editor is focused. v0.84.0 · Aug 2026 · source · release history
  • Adds prompt history navigation: browse up to 100 previously submitted prompts using Up/Down arrow keys when the editor is empty. v0.12.12 · Dec 2025 · source · release history
Bash tool environment variables shipped Exposes session, provider, and model metadata as environment variables to bash tools so scripts can introspect the active context. 2 releases · first seen Jul 2026

release

  • Exposes PI_SESSION_ID, PI_SESSION_FILE, PI_PROVIDER, PI_MODEL, and PI_REASONING_LEVEL as environment variables to commands run by built-in and factory-created bash tools. v0.82.0 · Jul 2026 · source · release history
  • Exposes PI_SESSION_ID, PI_SESSION_FILE, PI_PROVIDER, PI_MODEL, and PI_REASONING_LEVEL environment variables to commands run by built-in and factory-created bash tools, enabling scripts to introspect the active session and model. v0.82.0 · Jul 2026 · source · release history
Project-specific configuration shipped Allows overriding global settings and credentials in a project directory (.pi/settings.json) and storing them in version control, with precedence over global defaults. 2 releases · first seen Dec 2025

Also counts toward: Command-line interface

release

  • Adds project trust gating: Pi now prompts before loading project-local settings, resources, instructions, and packages, with --approve / --no-approve flags for non-interactive automation. v0.79.0 · Jun 2026 · source · release history
  • Supports project-specific settings loaded from <cwd>/.pi/settings.json, deep-merged over global ~/.pi/agent/settings.json, and treated as read-only for version control. v0.26.0 · Dec 2025 · source · release history
Model provider migration shipped Deprecated or removed model providers are replaced with new supported options and billing configurations. 2 releases · first seen Mar 2026

release

  • The /login display name for the built-in Xiaomi provider is renamed from Xiaomi MiMo Token Plan to Xiaomi MiMo. v0.73.0 · May 2026 · source · release history
  • Deprecated direct model IDs minimax and minimax-cn are removed; pinned model IDs must be updated to MiniMax-M2.7 or MiniMax-M2.7-highspeed. v0.63.0 · Mar 2026 · source · release history
Namespaced keybinding system shipped Replaces global keybindings with a namespaced system, allowing extensions to register and consume keys without namespace collisions. 2 releases · first seen Mar 2026

release

  • Keybinding IDs in keybindings.json are now namespaced; extension authors must update keyHint(), keyText(), and keybindings.matches(...) calls from old names like "expandTools", "selectConfirm", and "interrupt" to namespaced IDs like "app.tools.expand", "tui.select.confirm", and "app.interrupt". v0.61.0 · Mar 2026 · source · release history
  • Introduces namespaced keybinding IDs and a unified keybinding manager across the app and TUI, with automatic migration of older keybindings.json config files. v0.61.0 · Mar 2026 · source · release history
Session message delivery control shipped Allows interrupting active agent runs or queuing messages for post-run processing via distinct delivery semantics. 2 releases · first seen Jan 2026

release

  • Adds steer(text) and followUp(text) methods to AgentSession, replacing queueMessage(), with distinct delivery semantics: steer interrupts mid-run, followUp waits until the agent finishes. v0.32.0 · Jan 2026 · source · release history
  • Adds deliverAs: "followUp" option to pi.sendMessage() second parameter (now options?: { triggerTurn?, deliverAs? }), enabling follow-up delivery from hooks. v0.32.0 · Jan 2026 · source · release history
Custom system prompt persistence shipped Auto-loads project-specific or global system prompts from SYSTEM.md files and allows persistent override via settings, replacing manual CLI flags. 1 release · 1 other source · first seen Dec 2025

release

  • Adds automatic custom system prompt loading: Pi now auto-loads .pi/SYSTEM.md (project-local) or ~/.pi/agent/SYSTEM.md (global), with --system-prompt flag taking highest precedence. v0.29.1 · Dec 2025 · source · release history

example

  • Override the default system prompt for a specific project without touching the CLI flag on every invocation. mkdir -p .pi && echo 'You are a security-focused assistant. Always recommend least-privilege principles.' > .pi/SYSTEM.md v0.29.1 · Dec 2025 · source
Comprehensive model listing shipped Lists all available models filtered by configured API keys, showing provider, context window, and capability metadata with fuzzy search support. 2 releases · first seen Dec 2025

Also counts toward: Command-line interface

release

  • The /model command now filters to only the models specified by --models, preventing accidental selection of out-of-scope providers. v0.25.0 · Dec 2025 · source · release history
  • New --list-models [search] flag lists all available models filtered by configured API keys, showing provider, model ID, context window, max output, thinking support, and image support — with optional fuzzy search. v0.22.4 · Dec 2025 · source · release history
CLI forkability shipped Allows the CLI to be forked or rebranded by configuring name and config paths in package.json without modifying source code. 1 release · 1 other source · first seen Dec 2025

Also counts toward: Command-line interface

release

  • Supports forking/rebranding the CLI by setting piConfig.name and piConfig.configDir in package.json, updating the banner, help text, config paths, and error messages without code changes. v0.12.5 · Dec 2025 · source · release history

example

  • Rebrand the CLI for a fork by declaring piConfig in your package.json — no source changes required. { "piConfig": { "name": "mytool", "configDir": ".mytool" } } v0.12.5 · Dec 2025 · source
MiniMax model support shipped Adds MiniMax-M3.1-Flash to the minimax and minimax-cn providers with selectable thinking levels from low to max. 1 release · first seen Oct 2026

release

  • Adds MiniMax-M3.1-Flash to the minimax and minimax-cn providers with thinking levels low through max. v1.4.0 · Oct 2026 · source · release history
Image generation in scripts documented Scripts can invoke image generation tasks, with a configurable hard deadline covering the full script execution including any wait for a free worker. 1 other source · first seen Oct 2026

docs

  • is a hard deadline for the whole script, including any wait for a free worker. It is unset by default. Image generation can take minutes, so do not set a short deadline for scripts that generate images. docs update · Oct 2026 · source
Session sharing and export documented Directs /share uploads to configured destinations like auto gist or Radius, enabling session sharing and context export. 1 other source · first seen Oct 2026

docs

  • Oct 15, 2026 Pi 1.3.0 Choose where /share uploads sessionShareDestination selects auto gist radius Sessions and context 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. docs update · Oct 2026 · source
Tool namespace aliases shipped Allows defining aliases for tool namespaces that are matched during tool search and discovery. 1 release · first seen Oct 2026

release

  • Adds aliases to tool namespaces; codemode's describeNamespace() and the namespace option of searchTools() match them, and MCP namespaces use the server name. v1.2.0 · Oct 2026 · source · release history
OpenAI ChatGPT subscription login shipped Users can authenticate to the OpenAI provider using a ChatGPT subscription via `/login openai` Sign in with ChatGPT. 1 release · first seen Sep 2026

release

  • Adds /login openai Sign in with ChatGPT, letting users authenticate with a ChatGPT subscription against the OpenAI provider. v0.99.0 · Sep 2026 · source · release history
Provider stream event extension hook shipped Extensions can observe raw parsed provider events before normalization via the `provider_stream_event` extension event. 1 release · first seen Sep 2026

release

  • Adds the provider_stream_event extension event for observing parsed provider events before normalization. v0.99.0 · Sep 2026 · source · release history
Session state inspection API shipped Provides session runtime state via SessionSnapshot values and durable metadata rather than direct remote list exposure. 1 release · first seen Aug 2026

release

  • The Session, SessionStorage, and SessionRepo APIs are replaced with v4 lane-based versions including durable operation records, global facts, shared sequence numbers, and tree-scoped lane views. v0.84.0 · Aug 2026 · source · release history
Cloudflare Workers AI provider shipped Provides built-in support for Cloudflare Workers AI with account configuration and interactive login. 1 release · first seen Apr 2026

release

  • Adds Cloudflare Workers AI as a built-in provider, configured via CLOUDFLARE_API_KEY and CLOUDFLARE_ACCOUNT_ID, with default model resolution and /login support. v0.70.6 · Apr 2026 · source · release history
Credential source labeling shipped Displays labels in the login interface indicating whether credentials originate from API keys, environment variables, or custom providers. 1 release · first seen Apr 2026

release

  • Adds auth source labels in /login showing whether credentials come from --api-key, an environment variable, or a custom provider fallback — without exposing secrets. v0.70.0 · Apr 2026 · source · release history
Custom OAuth callback host shipped Allows binding the built-in OAuth login callback server to a custom network interface instead of the default loopback address. 1 release · first seen Apr 2026

release

  • New PI_OAUTH_CALLBACK_HOST environment variable lets the built-in OAuth login flow (pi auth) bind its local callback server to a custom interface instead of hardcoded 127.0.0.1. v0.68.0 · Apr 2026 · source · release history
Interactive startup header shipped Displays loaded configuration files, templates, skills, and extensions in the startup header with a toggle for expanded details. 1 release · first seen Apr 2026

release

  • Compact interactive startup header now shows loaded AGENTS.md files, prompt templates, skills, and extensions as a comma-separated list; press Ctrl+O to toggle the expanded view. v0.67.6 · Apr 2026 · source · release history
Prompt caching & tool schema caching shipped Adds tool definition caching breakpoints to provider prompt caches, keeping schemas stable across transcript updates. 1 release · first seen Apr 2026

release

  • Anthropic prompt caching now adds a cache_control breakpoint on the last tool definition, enabling tool schemas to be cached independently from transcript updates. v0.67.4 · Apr 2026 · source · release history
Advanced provider routing & cost control shipped Routes model requests through fallback providers with geo-residency guarantees and per-request price caps. 1 other source · first seen Apr 2026

example

  • Route a model through OpenRouter with fallback providers, ZDR, and a max price cap — useful when you need data-residency guarantees or cost control in a shared team setup. # In models.json, add an openRouterRouting block to your model entry: { "id": "my-model", "openRouterRouting": { "fallbacks": ["openai/gpt-4o", "anthropic/claude-3-5-sonnet"], "dataCollection":… v0.67.1 · Apr 2026 · source
Strict LF-delimited JSONL RPC framing shipped RPC mode now uses strict line feed delimited JSONL for message transport, removing legacy Unicode separator support. 1 release · first seen Mar 2026

release

  • RPC mode now uses strict LF-delimited JSONL framing: clients must split records on \n only and can no longer use generic line readers such as Node readline, which also split on Unicode separators (U+2028, U+2029) inside JSON payloads. v0.57.0 · Mar 2026 · source · release history
Live tool registration & hot-reloading shipped Registers tools at runtime that immediately become available to active sessions and the LLM without a reload. 1 release · first seen Mar 2026

release

  • Enables runtime tool registration that takes effect immediately in active sessions — tools added via pi.registerTool() are available to pi.getAllTools() and the LLM without /reload. v0.55.4 · Mar 2026 · source · release history
Pluggable authentication storage shipped Wires custom backends (file, in-memory, etc.) for flexible credential persistence and token management. 1 release · first seen Feb 2026

Also counts toward: Plugin system

release

  • Adds pluggable auth storage backends (FileAuthStorageBackend, InMemoryAuthStorageBackend) and AuthStorage.fromStorage(...) for flexible auth persistence wiring. v0.53.0 · Feb 2026 · source · release history
Environment variable header resolution shipped Allows literal values in `models.json` headers to resolve to environment variables at runtime, enabling credential injection without config changes. 1 release · first seen Jan 2026

release

  • Header values in models.json now resolve environment variables: if a literal header value matches an env var name, the env var's value is used instead, which may change behavior for existing configs. v0.50.0 · Jan 2026 · source · release history
Pluggable tool execution routing shipped Routes built-in tool calls over custom transports like SSH by implementing pluggable operation interfaces. 1 release · first seen Jan 2026

Also counts toward: Plugin API support, Plugin system

release

  • Adds pluggable operations interfaces (ReadOperations, WriteOperations, BashOperations, GrepOperations, etc.) for routing built-in tool calls over SSH or other transports. v0.39.0 · Jan 2026 · source · release history
Image preprocessing & auto-resizing shipped Automatically resizes large input images and injects original dimensions into the prompt to optimize token usage. 1 release · first seen Jan 2026

release

  • Adds images.autoResize key to settings.json (also configurable via /settings) to automatically resize images larger than 2000x2000 and inject original dimensions into the prompt. v0.32.0 · Jan 2026 · source · release history
Private command execution shipped Executes shell commands in the TUI and history while explicitly excluding them from the LLM context window. 1 release · first seen Jan 2026

Also counts toward: Command-line interface

release

  • New !!command syntax executes bash commands that appear in the TUI and session history but are excluded from LLM context, keeping sensitive commands private from the AI. v0.32.1 · Jan 2026 · source · release history
Unicode text input shipped Supports full Unicode character input beyond ASCII in all terminal input fields. 1 release · first seen Dec 2025

release

  • Supports full Unicode input beyond ASCII in all input fields. v0.29.0 · Dec 2025 · source · release history
Startup performance diagnostics shipped Provides environment variables and commands to measure exactly where time is spent during Pi initialization. 1 other source · first seen Dec 2025

Also counts toward: Command-line interface

example

  • Diagnose slow Pi startup times by seeing exactly where time is spent during initialization. PI_TIMING=1 pi v0.27.1 · Dec 2025 · source
Granular skill source control shipped Provides fine-grained toggles to enable or disable skills from specific sources (e.g., Codex, Claude, project-local) and configure custom directories. 1 release · first seen Dec 2025

release

  • Adds granular skill-source toggles: enableCodexUser, enableClaudeUser, enableClaudeProject, enablePiUser, enablePiProject, plus customDirectories and ignoredSkills settings. v0.25.3 · Dec 2025 · source · release history
Terminal job control shipped Allows suspending the AI tool to the shell with a keybinding and resuming it later. 1 release · first seen Dec 2025

release

  • New Ctrl+Z keybinding suspends Pi to the shell; resume with fg. v0.25.3 · Dec 2025 · source · release history
Custom tool entry point enforcement shipped Requires auto-discovered custom tools to have an index.ts entry point in a subdirectory, changing the previous loose file-path pattern. 1 release · first seen Dec 2025

release

  • Auto-discovered custom tools now require an index.ts entry point inside a subdirectory: the old pattern ~/.pi/agent/tools/mytool.ts must become ~/.pi/agent/tools/mytool/index.ts. Explicit paths via --tool or settings.json still accept any .ts file. v0.24.0 · Dec 2025 · source · release history
Markdown table rendering shipped Renders markdown tables with proper formatting and borders in the terminal output. 1 release · first seen Dec 2025

release

  • Renders markdown tables with proper top and bottom borders. v0.24.0 · Dec 2025 · source · release history
Windows shell path customization shipped Supports configuring custom Windows shell paths (e.g., Cygwin, MSYS2) beyond Git Bash via settings.json. 1 release · first seen Dec 2025

release

  • Supports custom Windows shell configuration via shellPath in ~/.pi/agent/settings.json, enabling Cygwin, MSYS2, and other bash environments beyond Git Bash. v0.13.1 · Dec 2025 · source · release history

Lines in monospace are the tool's own words: help text parsed from its source, or an endpoint from its API document. Under release, a line is our summary of a dated release. Under docs, it is quoted from the tool's own documentation or website. Each links back to the source it came from.

Command line

30 commands for Pi, each with where it came from. This tool has no source analysis yet, so there is no option reference and no captured run beside them.

Source

Release-note detail over time

See how much detail Pi puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.

Checking release-note history…

Explore the full chart →

Releases

Show

213 entries

  1. September 20268
  2. August 202618
  3. July 202651
  4. June 202612
  5. May 202610
  6. April 202617
  7. March 202616
  8. February 202618
  9. January 202631
  10. December 202532
    Show

    213 entries

    Add the badge to your README

    Maintain this project? The badge links readers straight to this page, so they can follow every release here.

    Tracked by Cyber Toolchain Choose a badge style and copy the code →
    browse all tools → score card for your toolchain →