Skip to content
AI Primer
release

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.

4 min read
Pi raises minimum Node.js to 22.19.0 after Undici login breakage
Pi raises minimum Node.js to 22.19.0 after Undici login breakage

TL;DR

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:

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.

Further reading

Discussion across the web

Where this story is being discussed, in original context.

On X· 4 threads
TL;DR2 posts
Node 22.19.01 post
Prompt boundaries and provider quirks1 post
Windows packaging2 posts
Share on X