Pi, the open-source coding agent maintained by Earendil, has released version 1.5.1. The update keeps prompt caches warm for longer between tasks, makes requests to Anthropic’s Claude models smaller, lets people sign in to AI providers from the command line, and moves several providers to newer default models. It also includes two breaking changes for people who customise Pi’s search tool or run it through certain OpenAI-compatible servers.
An unofficial account that posts Pi release notes summarised the highlights on X:
Pi v1.5.1 is out!
— Pi Changelog (unofficial) on X
Highlights:
– pi auth login <provider> and pi auth logout <provider> work from the shell without starting a session, with –api-key and –no-browser options
– Idle prompt cache warming: eligible caches now stay warm for up to 30 minutes between agent runs when a refresh is expected to pay for itself
– Anthropic message threads: each request sends only the new messages; the server continues from the previous reply, with full-request fallback when context changes
– Default model for the anthropic provider is now Claude Opus 5.5 (claude-opus-5-5)
Complete details in thread ↓
That summary matches the official release notes on GitHub and pi.dev, which this article relies on.
What Pi is
Pi is a program that runs in a computer’s terminal and lets an AI model work on a software project. The model can read and edit files and run commands, using whichever AI provider the user signs in to. Its documentation calls it “a minimal, extensible agent harness”: it ships with a small set of tools, and people add features through extensions, skills and packages. It doesn’t have a built-in permission system, so it runs with the same access as the person who starts it, and the project suggests a container or sandbox for stronger limits.
Mario Zechner wrote Pi. Earendil, a public benefit corporation founded by Armin Ronacher and Colin Daymond Hanna, acquired the project this year, and Zechner joined the company. In his own post about the move, Zechner said he remains in charge of Pi decisions along with Ronacher and Hanna. The code stays under the MIT licence. Earendil shipped Pi 1.0 on 1 October and said then that “hundreds of thousands of people around the world use Pi every week”.
Caches now stay warm between tasks
Many AI providers offer prompt caching. When an agent sends the same long conversation again, the provider can reuse the part it has already processed, which is much cheaper and faster than reading it from scratch. These caches expire quickly. Anthropic’s default lasts five minutes, renewed each time the cache is used. When a person steps away from a coding session for longer than that, the next request has to write the cache again, which costs more than reading it.
Pi added cache warming in September, according to its changelog. It sends refresh requests so a cache doesn’t lapse, and until now it did this by default only while an agent was working. Version 1.5.1 changes the default setting from “streaming” to “idle”, so Pi also keeps eligible caches warm for up to 30 minutes after a task ends.
Pi doesn’t refresh every cache. Its settings documentation says warming only runs for models that declare how long their cache lasts, and only when Pi estimates it will avoid at least US$0.05 in cache-miss costs. Refreshes count towards the session’s usage totals. Pi now shows a run of refreshes as a single “Cache warmed” line with the total cost.
Anthropic’s price list shows why that can pay off. On Claude Opus 5.5, reading cached input costs US$0.20 per million tokens, while writing it to a five-minute cache costs US$5 per million. For a conversation of 100,000 tokens, that’s about 2 US cents to read the cache and about 50 US cents to write it again. Pi doesn’t publish how it calculates each estimate beyond the US$0.05 threshold.
“pi also keeps eligible prompt caches warm for up to 30 minutes between agent runs, but only when a refresh is expected to pay for itself.”
— Pi 1.5.1 release notes
Anyone who prefers the old behaviour can set "cacheWarming": "streaming" in Pi’s global settings. Setting it to "off" turns warming off.
Claude requests send only the new messages
Normally, every turn of a conversation with Claude resends the whole history, along with the instructions and the list of tools. Anthropic’s message threads, a beta feature of its API, let the server hold the conversation for a short time. After the first request, a program sends only the new messages and the ID of the previous reply. Anthropic says this makes requests smaller and keeps the delay before the first word of a reply “lower and steadier as the conversation grows”. Threads don’t change prices or rate limits, according to Anthropic.
Pi 1.5.1 turns threads on by default for its anthropic provider when it talks to Anthropic’s own API. The release notes say it sends the full request instead when the conversation has changed, for example after Pi compacts a long session or the tool list changes. Pi’s source code also starts a new thread when Anthropic reports that the previous one has expired. Anthropic says a thread expires five minutes after its last request. Pi’s cache warming doesn’t touch the thread.
Gateways that pass Anthropic’s thread field through can opt in with the supportsMessageThreads setting in models.json, which can also turn the feature off. Anthropic’s documentation says threads aren’t eligible for its zero data retention arrangement. It holds them in encrypted memory, never writes them to permanent storage and deletes them no more than an hour after their last use.
New default models, and Claude Fable 5.2
The default model for Pi’s anthropic provider is now Claude Opus 5.5 instead of Claude Opus 4.8. Anthropic lists Opus 5.5 at US$4 per million input tokens and US$20 per million output tokens, below Opus 4.8’s US$5 and US$25. The release notes say every changed default moved to a newer model “at the same or a lower price”.
| Pi provider | New default | Previous default named in the notes |
|---|---|---|
anthropic | Claude Opus 5.5 | Claude Opus 4.8 |
amazon-bedrock | Claude Opus 5.5 | Not stated |
azure | GPT-6.1 Sol | Not stated |
google, google-vertex | Gemini 4 Argon | Not stated |
vercel-ai-gateway, baseten | GLM 5.3 | Not stated |
minimax, minimax-cn | MiniMax-M3 | Not stated |
qwen-token-plan, qwen-token-plan-cn | Qwen3.8 Max | Not stated |
opencode-go | Kimi K3.1 Pro | Not stated |
moonshotai, moonshotai-cn, huggingface, opencode, openrouter, cloudflare-workers-ai, cloudflare-ai-gateway | Kimi K2.7 Code | Kimi K2.6 |
Pi also adds Claude Fable 5.2, which Anthropic released on 9 November, to its anthropic provider. Pi lists it at US$8 per million input tokens and US$40 per million output tokens, with a context window of 1 million tokens and up to 128,000 output tokens, which matches Anthropic’s model table. According to Pi’s notes, when Fable 5.2’s safety classifiers refuse a request before producing any output, Anthropic answers with Claude Opus 5 instead and bills that reply at Opus 5’s price.
Other fixes in the release affect Claude users. Pi no longer sends a temperature setting that Claude Sonnet 5 doesn’t support. It stops resending “strict” tool definitions after Claude has rejected them once in a session, which had cost a failed request on every turn. And it no longer drops shared definitions from some tool schemas sent to Anthropic, which had led Claude to produce wrong arguments for some tools, a problem the notes say was common with MCP servers.
Signing in without opening a session
People can now sign in to a provider from the terminal with pi auth login <provider> and sign out with pi auth logout <provider>, without starting a Pi session first. Until now they used the /login command inside a session. By default the command signs in with an account through a web browser, and providers without account sign-in ask for an API key. The command-line documentation says --api-key saves an API key instead, and --no-browser uses another sign-in method, such as a device code, “for example over SSH”. The login command still needs an interactive terminal. Logging out leaves environment variables and models.json untouched.
pi auth login <provider>
pi auth login <provider> --api-key
pi auth login <provider> --no-browser
pi auth logout <provider>
Two changes that can break existing setups
The first affects extensions that change how Pi’s grep search tool reads files, usually to search a remote machine. Pi no longer calls a custom GrepOperations.readFile function to fetch the lines around each match. The search program ripgrep supplies them instead, which the notes say fixes memory exhaustion on large files and the handling of UTF-16 files. The field is still accepted, but it’s deprecated, and the notes say remote search should override grep’s execute() function instead (#9276).
The second affects OpenAI-compatible servers. When every tool is turned off in a session that has already used tools, Pi now leaves the tools field out of the request instead of sending an empty list. The notes say this fixes “tools must not be an empty array” errors from vLLM 0.20 and later, including behind the LiteLLM proxy (#11843). Some proxies need the field once tool calls appear in the history, such as older LiteLLM versions in front of Anthropic. For those, the notes say to set compat.requiresToolsWithToolHistory: true for that model in models.json.
Smaller additions
- Terminal Mermaid diagrams now support more diagram types, including pie charts, custom styles and clickable labels on terminals that support links.
- Microsoft-Decision-1, a classifier model that returns typed answers with probabilities, is available through GitHub Copilot via codemode’s
models.classify(). pi updatelists each updated package with its version or commit change, and says when nothing changed.- Azure’s GPT-6 and GPT-6.1 models now use the 1,050,000-token context window Azure deploys them with, instead of the 272,000 tokens Pi had assumed.
- OpenAI Responses requests now send the documented
session-idheader, and a group of MCP fixes covers token refresh, line endings, message-size limits and leftover server processes.
Pi’s team says it watches costs closely. Last week Joël Niklaus published a harness leaderboard that ran nine coding agents on the same open models. He reported that Pi solved 49.4% of tasks at US$0.29 per solved task. Pi’s official account responded:
Thanks @joelniklaus for burning this compute for all of us and sharing the learnings openly. Cost per task is a critical metric for our team so your results make us feel warm and fuzzy
— Pi on X
Copies installed with the pi.dev installer update with pi update. The release notes list more than 60 other fixes.
Discover more from Sulat AI & Tech News
Subscribe to get the latest posts sent to your email.




