Release notes
Oh My Pi v18.18.4
@oh-my-pi/pi-ai
Added
- Added the
base64SkipThoughtSignaturecompat flag so Gemini gateways that decodethoughtSignatureas base64 (such as the Hyperspace AI LLM proxy) can receive the unsigned-tool-call bypass sentinel without rejecting the request with a 400 (#18586 by @tuandinh0801).
Changed
- Providers paused by a
disabledauth rule (currently Google Antigravity) are left out of the built-in login list, refuse login, token refresh and usage probes, resolve no key from any source, and refuse requests and image generation with the pause reason; stored logins are kept and work again once the rule is removed, and an extension that registers its own login under the paused id takes it back (#18622 by @H4vC)
Fixed
- Exclusive tools (
edit,write,eval, …) called as Cursor MCP tools now keep their place in the tool batch, so a shell or read sent with an edit no longer runs against the old file or starts before an earlier call finishes (#18502 by @eggpeat)
@oh-my-pi/pi-catalog
Added
- Added Otari gateway provider:
/login otariwithOTARI_API_KEY, models discovered live per workspace (#17841 by @tbille) - Added the
base64SkipThoughtSignatureGoogle compat flag, which sends the Gemini unsigned-tool-call bypass sentinel base64-encoded for gateways that decodethoughtSignatureas bytes (#18586 by @tuandinh0801). - Added a
disabled "<reason>"auth rule that pauses a provider: no login offers it and nothing calls it, while its code and users' stored logins stay in place (#18622 by @H4vC)
Changed
- Paused Google Antigravity, since Google may restrict accounts that use it outside its own apps (#18622 by @H4vC)
@oh-my-pi/pi-coding-agent
Added
- SDK:
PromptOptions.followUpsqueues prompts to run after the prompt, in order; if the prompt never reaches the agent they come back with it inDroppedPrompt.followUps
Changed
- The
tasktool no longer advertises a per-callmodelfield unlesstask.perCallModelisonor the bundled seance is spawnable; amodelsent anyway is still refused before dispatch (#18554 by @xiangnan0811)
Fixed
/usage, session statistics, andomp statsnow include session title spend from both the default fork title and the tiny title model, and tiny-model titles count toward--max-cost(#18177, #18491 by @yuzu-octopus)- Retries after
--model pi/<role>(or@<role>,<role>) now walk that role'sretry.fallbackChainsentry instead of thedefaultchain, including on--continue(#18389, #18534 by @harshaygadekar) - Fixed a
->/=>list sent to an idle session running its second item before its first; if the first item can't start (Esc, a refused or failed setup), the whole list goes back to the editor (#10802) - Fixed auto-compaction repeating every turn when the system prompt and tool schemas alone exceed the compaction budget; it now warns once instead (#18589).
- Fixed a blank per-call
model(""or whitespace) failing the gate for task calls, evalagent()and evalworkpool()instead of using the agent's configured model (#18576 by @iwangjie) tasktool calls with an empty model string or empty model array now use the agent's normal model routing (#18554 by @xiangnan0811)- Fixed
todo appendwithout a phase failing instead of adding tasks to the active phase, the last phase, or a newTasksphase (#17265, #18575 by @taotao7). - Learned-only memory guidance no longer tells the model to read a missing
memory_summary.md(#18523 by @nick-maderight). - A
waitthat times out now says how long it waited and how long a back-to-back wait allows, instead of returning a bare still-running snapshot that agents read as an empty result, and the back-to-back reminder tells agents not to startsleepjobs to wait longer (#18612 by @alphastorm). auth-gateway stdionow follows a role's configured fallback chain even whenmodelRolesdoes not set the role (a chat role without its own chain inherits thedefaultchain) (#18509 by @enieuwy)- In the Pseudo shell visualization, a
;-separated chain no longer draws its statement separators as rows of their own, soecho a; echo breads as two statements (#18258, #18497 by @yuzu-octopus) - Autoresearch
update_noteswithappend_ideanow creates an## Ideassection instead of inserting the bullet before the first heading when notes contain only a similarly named heading such as## Ideas backlogor### Ideas(#18505 by @eggpeat) - Exclusive tools (
edit,write,eval, …) called as Cursor MCP tools now keep their place in the tool batch, so a check sent right after an edit sees the new file and an edit no longer starts before an earlier read finishes (#18502 by @eggpeat) - Quarantined Hindsight memories are now deleted once their 30-day review period ends even when no new memory is quarantined (#18504 by @eggpeat)
- The compaction display summary no longer requests reasoning, so thinking models return a summary instead of spending the 512-token cap on reasoning and returning nothing (#18541 by @phillipxkang)
- Retries on the same model now stop after three consecutive generic aborts instead of spending the whole retry budget (#18535 by @nick-maderight)
lsp.formatOnWrite
…