Pi raises minimum Node.js to 22.19.0 after Undici login breakage
Pi raised its minimum Node version from 20 to 22.19.0, then shipped a follow-up after Undici-related changes in Node 26 caused Copilot and Codex login failures. This matters because agent CLIs built on Node and Undici can hard-fail on auth or install paths after runtime upgrades.

TL;DR
- Pi shipped v0.75.0 with a breaking runtime bump, raising the minimum supported Node.js version from 20 to 22.19.0 because it needed Undici 8+, according to badlogicgames' Node version note and badlogicgames' 0.75.0 release post.
- The follow-up v0.75.1 landed hours later after Node 26.0.0 introduced Undici-related breakage that blocked some Copilot and Codex logins, per badlogicgames' 0.75.1 post.
- The first release also patched proxy-backed compaction summaries, XML-tag prompt boundaries, npm install paths for user-scoped Pi packages, and several model metadata quirks listed in badlogicgames' 0.75.0 release post.
- The hotfix line reached past login, fixing compressed fetch response parsing on Node 26, Windows npm command quoting, and several provider adapters, according to badlogicgames' 0.75.1 post and badlogicgames' Xiaomi endpoint debug note.
The release notes are all on pi.dev, but the interesting bits are in badlogicgames' 0.75.0 screenshot and badlogicgames' 0.75.1 screenshot: the same patch line touches auth, fetch plumbing, XML prompt boundaries, and package install paths. There is also a very specific provider failure in badlogicgames' Xiaomi endpoint debug note, where an Anthropic-style path started requiring OpenAI-style reasoning_content. And in badlogicgames' Windows install aside, Pi's maintainer says he is wary of auto-installing a 350 MB dependency bundle on Windows.
Node 22.19.0
Pi's immediate change was simple and annoying: Node 22.19.0 became the floor.
The stated reason was an Undici upgrade. badlogicgames' initial note said recent Node changes around Undici forced the move, and badlogicgames' release post makes it explicit that Pi needed Undici 8+, which in turn requires Node 22+.
The breakage matters at install time as much as runtime. The same 0.75.0 notes say user-scoped npm Pi packages now install under ~/.pi/agent/npm/ instead of npm's global package root, which avoids permission errors on system-managed Node installs badlogicgames' 0.75.0 screenshot.
Login breakage on Node 26
The next problem was not older Node, but newer Node. badlogicgames' 0.75.1 post says Node 26.0.0 had "a few undici related booboos," and specifically tells users to update if Copilot or Codex login was failing.
The 0.75.1 notes pin one concrete symptom: compressed fetch responses could fail JSON parsing under Node 26. The fix was to install Undici fetch globals alongside Pi's global dispatcher badlogicgames' 0.75.1 screenshot.
That same hotfix also tightened a few auth and retry edges:
- Anthropic-compatible API key requests now ignore unrelated
ANTHROPIC_AUTH_TOKENvalues, avoiding bad bearer credentials for compatible providers badlogicgames' 0.75.1 screenshot. - Azure OpenAI Responses and OpenAI Responses errors now prefix HTTP status codes so agent-level auto-retry can classify 5xx and 429 failures correctly badlogicgames' 0.75.1 screenshot.
- Non-working OpenAI Codex fast model variants were removed badlogicgames' 0.75.1 screenshot.
Prompt boundaries and provider quirks
The most telling fixes in 0.75.0 are the ones that have nothing to do with Node versions. Pi switched system prompt and context file boundaries from Markdown headings to explicit XML tags, with the release note saying that reduced inconsistent boundary ingestion by models badlogicgames' 0.75.0 screenshot.
The same release patched compaction summary calls so they use custom agent stream functions and preserve proxy-backed LLM routing badlogicgames' 0.75.0 screenshot. That is a small line item, but it points at how much of an agent CLI now lives in its harness, not just in the model call.
Provider compatibility was equally messy. In badlogicgames' Xiaomi endpoint debug note, Pi's maintainer says Xiaomi endpoints were being accessed through the Anthropic Messages API, then changed to require the non-standard OpenAI Completions reasoning_content field. The 0.75.1 notes match that story, saying Xiaomi MiMo metadata was switched to OpenAI-compatible endpoints and the openai-completions API to restore multi-turn thinking and tool-call sessions badlogicgames' 0.75.1 screenshot.
Windows packaging
Pi's recent 0.74.1 release had already added Windows ARM64 standalone binaries, according to badlogicgames' 0.74.1 release post.
The new thread shows that Windows packaging is still unsettled. badlogicgames' Windows install aside says the maintainer does not like auto-installing 350 MB on Windows, and badlogicgames' retweet of mitsuhiko explicitly asks Windows users for pain points. That leaves the Node and Undici fixes sitting inside a broader platform push that is still being shaped in public.