Release · Oh My Pi · can1357

Oh My Pi v18.18.4

What's new in Oh My Pi v18.18.4, released Nov 9, 2026 (). Newer: v18.20.0 (Nov 12, 2026)

Release notes

Oh My Pi v18.18.4

@oh-my-pi/pi-ai

Added
  • Added the base64SkipThoughtSignature compat flag so Gemini gateways that decode thoughtSignature as 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 disabled auth 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 otari with OTARI_API_KEY, models discovered live per workspace (#17841 by @tbille)
  • Added the base64SkipThoughtSignature Google compat flag, which sends the Gemini unsigned-tool-call bypass sentinel base64-encoded for gateways that decode thoughtSignature as 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.followUps queues prompts to run after the prompt, in order; if the prompt never reaches the agent they come back with it in DroppedPrompt.followUps
Changed
  • The task tool no longer advertises a per-call model field unless task.perCallModel is on or the bundled seance is spawnable; a model sent anyway is still refused before dispatch (#18554 by @xiangnan0811)
Fixed
  • /usage, session statistics, and omp stats now 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's retry.fallbackChains entry instead of the default chain, 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, eval agent() and eval workpool() instead of using the agent's configured model (#18576 by @iwangjie)
  • task tool calls with an empty model string or empty model array now use the agent's normal model routing (#18554 by @xiangnan0811)
  • Fixed todo append without a phase failing instead of adding tasks to the active phase, the last phase, or a new Tasks phase (#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 wait that 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 start sleep jobs to wait longer (#18612 by @alphastorm).
  • auth-gateway stdio now follows a role's configured fallback chain even when modelRoles does not set the role (a chat role without its own chain inherits the default chain) (#18509 by @enieuwy)
  • In the Pseudo shell visualization, a ;-separated chain no longer draws its statement separators as rows of their own, so echo a; echo b reads as two statements (#18258, #18497 by @yuzu-octopus)
  • Autoresearch update_notes with append_idea now creates an ## Ideas section instead of inserting the bullet before the first heading when notes contain only a similarly named heading such as ## Ideas backlog or ### 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

…