piagent_
← /news
Oct 12, 2026release

pi v1.2.0 lists per-key OpenRouter models, publishes config schemas, and reroutes extension-triggered runs

pi v1.2.0 was published on October 12, 2026 and is the newest release. The headline is provider-aware model listing: with an OpenRouter key, Pi now lists only the chat models that key may use, with the key’s context size, max output, and prices — including guardrails and regional endpoints set as the base URL in models.json — and the list is saved offline (#10353, #10672).

$schema entries in settings.json, models.json, keybindings, and themes now hook up editor validation and completion, backed by generated schemas at pi.dev/schemas/*.schema.json. Breaking-wise, the theme schema moved to pi.dev/schemas/theme.schema.json, themes loaded during startup now receive the same schema validation as later reloads, and theme authors are asked to update $schema references, define reusable colors under vars, and drop unsupported metadata (#9880, #10751).

Extension-triggered runs now go through the same setup as prompts: pi.sendMessage(..., { triggerTurn: true }) fires before_agent_start while idle, with BeforeAgentStartEvent a union on messageType — "user" events carry prompt and images, "custom" events carry the starting message — and handlers for user prompts only must check event.messageType === "user" (#10739). The session counts as busy while a run starts: ctx.isIdle() is false, queued pi.sendMessage() calls join the starting run instead of failing, and a mid-start abort applies once the run begins.

Codemode declarations now show input constraints such as integer, minimum/maximum, length, pattern, and default as @ tags on property comments; codemode rows report elapsed and total time like bash rows. Tool definitions gain reachesTools so tools that reach other tools declare what a call may touch, and tool namespaces gain aliases.

The fix list is wide: PI_CLIPBOARD_OSC52=1 sends copied text to a remote client’s clipboard via OSC 52 when Pi cannot detect the remote session; Mistral streams stop aborting mid-generation because the timeout now applies only to waiting for response headers; print mode prints the partial text, warns, and exits 1 at the token limit; ~ expands in !pattern, +path, and -path entries of the extensions, skills, prompts, and themes settings; MCP tool calls accept non-object structured content per MCP 2026-07-28; OpenRouter router models no longer show a cost of −$1,000,000 per 1M tokens; and Anthropic requests retry once with preferred tools non-strict when the provider rejects the strict tool set.

The release page carries the full breaking-changes list, with each item citing its tracking issue when one exists.

source: https://github.com/earendil-works/pi/releases/tag/v1.2.0