Release notes
Oh My Pi v18.4.10
@oh-my-pi/pi-agent-core
Fixed
streamProxyno 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_lengthafter 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-proshowing 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 permittedon 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
strictwaiting, so asynchronous turn reviewers can run beside synchronous final reviewers (#12385 by @olegpulatov). - Added
/jobs fullto show each background bash job's full command line; plain/jobsstill 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
readof an executable andidahanging 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(...)andasyncio.gather(*handles)in Python eval cells failing withMissing 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-mergestash entries; merges now touch only the picked files and combine them with your unstaged edits - Fixed
openai-models-listdiscovery 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-agentsource from an installed package (SDK, extension loader, bun-globalomp) failing withExport 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).
…