Release · Oh My Pi · can1357

Oh My Pi v18.4.10

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

Release notes

Oh My Pi v18.4.10

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

Fixed
  • streamProxy no longer finalizes a cut-off tool-call argument buffer into an executable auto-closed preview; such a call gets the parse-error arguments, so the tool is not run and the model receives the parse error (#13868 by @alphastorm)
  • OpenAI remote compaction no longer sends stored native tool calls whose names are blank, longer than 128 characters, or contain whitespace or control characters. The outputs that answer those calls are dropped as well (#13985 by @Xytronix).

@oh-my-pi/pi-ai

Fixed
  • Factory Droid login now reports the account's organization error instead of accepting a credential that every request rejects (#14032).
  • Fixed Cursor turns being aborted with "Provider stream stalled while waiting for the next event" right after a long local tool finished; the provider now gets a full idle window once local tool work completes (#13682 by @eggpeat)
  • Tool calls whose final argument JSON is cut off or followed by trailing text are no longer executed from an auto-closed preview. OpenAI Completions, Anthropic, Bedrock, Responses, Codex, Devin, Ollama, Apple, Cursor, GitLab Duo, and the in-band JSON dialects now give such a call the existing parse-error arguments, so the tool is not run and the model receives the parse error and can resend the call (#13868 by @alphastorm)
  • Fixed Cursor "prepaid balance is used up" (USAGE_PRICING_REQUIRED) failures repeating on the same account instead of rotating to a sibling Cursor credential (#14053)
  • Sessions no longer get stuck on 400 string_above_max_length after a model writes its whole tool invocation into the tool name. Tool calls with blank names, names longer than 128 characters, or names containing whitespace or control characters are dropped from replayed history, together with their tool results. This also applies when OpenAI Responses replays its stored native history (#13985 by @Xytronix).
  • Fixed Bedrock Converse requests failing with a "bound to a different conversation" 400 after the system prompt changed under signed thinking: the request is retried once without replayed reasoning (#14019 by @nick-maderight)

@oh-my-pi/pi-catalog

Fixed
  • Fixed MiniMax Token Plan (minimax-code, minimax-code-cn) usage showing as free; turns now show the pay-as-you-go equivalent cost, with MiniMax-M3.1-Flash-Preview estimated at the MiniMax-M3 rate since it has no published price (#13695 by @eggpeat)
  • Fixed namespaced LiteLLM models such as azure/gpt-5.6-sol-pro showing raw IDs instead of catalog display names when the proxy supplies no friendly name (#13964 by @gabrielrinaldi).
  • Bundled prompt-cache lifetimes are recomputed from current policy instead of being inherited from previous generated models (#13966 by @anatoli-tsinovoy).
  • Fixed HTTP 400 messages.N.output_config: Extra inputs are not permitted on later turns with Claude Sonnet 5.5, Opus 5, Opus 5.5, and Fable 5.1 on Google Vertex AI (#13994)
  • Fixed Claude Opus 5.5 conversations failing with a "bound to a different conversation" 400 after the system prompt changed. Opus 5.5 now gets Sonnet 5.5's prefix-bound thinking handling on every provider, and Bedrock asks the server to drop stale signed thinking instead of rejecting the request (#14019 by @nick-maderight)

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

Added
  • Added global and per-advisor review cadence, including final-yield reviews and intervals that accumulate skipped transcript updates (#12385 by @olegpulatov).
  • Added per-advisor catch-up policy and cancellable strict waiting, so asynchronous turn reviewers can run beside synchronous final reviewers (#12385 by @olegpulatov).
  • Added /jobs full to show each background bash job's full command line; plain /jobs still shortens it to fit the terminal (#13980 by @rickythefox)
Changed
  • Advisor notes merge at final boundaries with age markers and at most one permitted continuation per batch; advisor continuations no longer trigger recursive reviews (#12387 by @olegpulatov).
Fixed
  • Fixed read of an executable and ida hanging indefinitely while IDA's initial analysis of a large binary runs; they now give up after two minutes with an error naming the still-analyzing host, which keeps analyzing for later calls
  • Fixed await completion(...), await agent(...) and asyncio.gather(*handles) in Python eval cells failing with Missing session/run/name (#13999)
  • Fixed isolated tasks picking up edits that other agents or merges made in the parent checkout while the task was starting, which put unrelated changes on task branches
  • Fixed releasing a kept-alive isolated agent creating a duplicate omp/task/* branch for work that had already been merged
  • Fixed isolated task branch capture leaving full-checkout temporary worktrees and empty omp/task/* branches behind when interrupted
  • Fixed merging isolated task branches stashing the entire working tree, which rewrote every Git LFS file and left omp-task-merge stash entries; merges now touch only the picked files and combine them with your unstaged edits
  • Fixed openai-models-list discovery to honor nested OpenAI model-list input/output token limits while preserving explicit top-level context precedence (#13988 by @github-nicolas-stadler)
  • Fixed importing @oh-my-pi/pi-coding-agent source from an installed package (SDK, extension loader, bun-global omp) failing with Export named 'createRatchetPrelude' not found (#14027)
  • Fixed finished subagent runs staying in memory for as long as the session that spawned them, through an abort listener left on the session's signal (#14038 by @theolundqvist).
  • Fixed print, RPC and ACP runs recording startup timing spans for their whole lifetime, which grew memory with every session and subagent they started (#14039 by @theolundqvist).
  • Fixed parked subagents keeping their spawn-time run state and settings in memory until the process exits, which grew memory with every subagent a long session spawned (#14040 by @theolundqvist).

…