Release · Oh My Pi · can1357

Oh My Pi v18.11.1

What's new in Oh My Pi v18.11.1, released Oct 15, 2026 (). Newer: v18.12.6 (Oct 21, 2026)

Release notes

Oh My Pi v18.11.1

@oh-my-pi/pi-agent-core

Added
  • Tokenizer.countLatestTurn: counts a message as the transcript's latest assistant turn, which an Anthropic Messages replay keeps byte-for-byte (#15791 by @will-bogusz)
  • Agent.prioritizeSteering: moves given pending steering messages ahead of older ones so one-at-a-time delivery takes them first (#15642)
Fixed
  • Fixed a Cursor tool call re-sent by the server persisting two results under one id; the re-run's result replaces the first (#15749)
  • Fixed compaction keeping more recent history than keepRecentTokens when the latest Claude turn on the Anthropic Messages API ended its tool calls on stop or length: the replay keeps that turn's signed reasoning, but the cut point counted only its visible blocks (#15791 by @will-bogusz)

@oh-my-pi/pi-ai

Added
  • Added image support for native OpenAI Decisions and Workers AI judgments, prompted vision chat, and auth-gateway System One requests; images exceeding a judgment API's documented caps (e.g. Clef's 4 images, 4 MiB each) are rejected locally (#15471 by @anatoli-tsinovoy).
  • isSurvivingAssistant in providers/transform-messages: whether an assistant turn reaches a replay, malformed tool calls dropped first, so callers outside transformMessages pick the same latest turn (#15791 by @will-bogusz)
Fixed
  • Fixed Codex-hosted image generation ignoring the requested aspect_ratio/image_size, and 3:2/2:3 requests sending no size to OpenAI image models (#15601 by @chulmin-dev)
  • Fixed Claude subagents failing to return structured results when yield arguments arrived as invalid JSON (#15605 by @farnoy)
  • Fixed turns stopping instead of retrying when a gateway reports its upstream WebSocket closed before response.completed (#15628 by @nqrwhal).
  • Fixed Claude on Google Vertex ignoring cacheRetention: "long": prompt caches now get the 1h TTL instead of expiring after 5 minutes, and the extended-cache-ttl beta (which Vertex rejects) is never sent there (#15505 by @hpost)
  • Fixed Gemini tool continuations failing on OpenAI-compatible gateways that return reasoning_signature, including restored sessions (#15678 by @Zzz141592653)
  • Fixed Cursor sessions failing every rebuilt request with PROVIDER_ERROR after the server re-sent a tool call: the call is recorded once, and histories that already repeat it replay it once with its latest result (#15749)
  • Fixed Cursor turns cut off mid-stream failing every retry with PROVIDER_ERROR until you sent a new message; the retry now starts a fresh Cursor conversation (#15830)
  • Fixed malformed image-generation inputs being forwarded to providers or reported as credential/upstream errors (#15765 by @anatoli-tsinovoy).
  • Fixed broker-backed auth-gateway processes retaining a cache entry for every distinct client session indefinitely under sustained traffic (#15841).
  • Fixed turns ending on a pinned error when a provider reports "temporarily unavailable" or finishes with an unknown, other or unspecified finish reason: these now retry automatically (#15424 by @lockwo)

@oh-my-pi/pi-catalog

Fixed
  • Enabled long prompt-cache retention (ttl: "1h") for Claude models on google-vertex (#15505 by @hpost)
  • Fixed Gemini 4 Argon on Google Vertex and the Gemini API failing every request with "Thinking budget is not supported for this model": Gemini 4 now sends thinkingLevel instead of thinkingBudget, and Argon offers only the low, medium, and high levels Google accepts (#15643 by @kevcube)
  • Fixed the Antigravity model selector offering roster rows the backend marks disabled (disabled: true, e.g. gemini-4-argon-disabled on accounts without Argon access), which answered Cloud Code Assist API error (404): Requested entity was not found.; discovery now skips them the way it already skips isInternal rows (#15684 by @CharleoYang)
  • Removed Google Antigravity's Gemini 3.5 Flash and its gemini-3-flash alias from the model list; Antigravity retired them and answers every request with a retirement notice instead of a reply (#15445 by @will-bogusz)
  • Fixed xai-oauth Grok 4.20 models (grok-4.20-0309-reasoning, -non-reasoning, grok-4.20-multi-agent-0309) advertising a 2M context window when the SuperGrok API rejects prompts over 1M; auto-compaction and context usage now work from the 1M window (#15443 by @will-bogusz)
  • Fixed trailing-dot localhost. and *.local. custom endpoints losing local-backend compatibility settings (#15798).

@oh-my-pi/pi-coding-agent

Added
  • Added image attachments to single and batch eval judge()/judge_batch() calls (local paths or embedded images); image judgments skip candidates without image support and fail explicitly instead of dropping images (#15471 by @anatoli-tsinovoy)
  • Added a job tree to /jobs, /jobs full and the jobs pill's sheet, in the terminal UI and over ACP: subagents' background jobs now appear nested under the task that runs them, with the busiest branches listed first; only your own jobs offer Cancel (#15854 by @H4vC)
  • Added ctx.ui.getEditorComponent() so extensions can wrap the active custom editor factory instead of replacing it (#8655 by @jovi-tsx)
Changed
  • Reduced memory used by bundled model catalog data in standalone and npm installs (#15876 by @iliaal).
Fixed
  • Fixed /shake and automatic shake leaving old transcript rows in native scrollback or obscuring the start of a response beside the Todo HUD (#15877).
  • Fixed write making Rust source files beginning with #![...] executable instead of preserving their permissions (#15858

…