Release notes
Oh My Pi v18.11.3
@oh-my-pi/pi-agent-core
Added
prepareQueuedMessagesreceives which queue (steeringorfollowUp) a batch came from (#16026)
@oh-my-pi/pi-ai
Fixed
- Fixed JSON Schema dereferencing rewriting literal values in
const,enum,default, examples, and custom annotations, or treating property names as schema keywords (#15927 by @jchanghong023). - Fixed Anthropic requests hanging forever on Bun 1.3 when the upstream accepted the request but never sent headers: aborting the request (including the first-event timeout) now fails it, so the turn retries instead of waiting until the user interrupts it (#16010 by @ca-io-systems)
- Fixed the auth gateway's
POST /v1/chat/completionsstreams being dropped (terminated) after ~255 s without upstream output, e.g. while xAI generates a large tool call's arguments, which arrive only when complete; the stream now sends an SSE: keepalivecomment every 15 s (#15940 by @radkawar) - Fixed Anthropic models with mid-conversation system messages (e.g. Claude Opus 5.5) receiving
@filemention contents and hidden extension messages as a trailingsystemmessage instead of ending the request on the user's turn (#15881)
@oh-my-pi/pi-catalog
Changed
- Renamed the built-in
google-antigravitylogin option to "Google Antigravity (Gemini, Claude, GPT-OSS)" so it is distinguishable from similarly named third-party plugins and no longer implies support stops at Gemini 3 (#15998 by @savanne-kham).
Fixed
- Fixed Command Code's
z-ai/glm-5.3-flashfailing every request with "not available on this endpoint": the catalog routes it to chat completions, the only endpoint Command Code lists for it (#15922 by @jasonharrison) - Fixed
/handofffailing with400 Provider returned erroron OpenRouter's hosted Muse Spark 1.x and Muse Wonder models: requests no longer send atool_choicethe upstream Meta backend rejects (#15910) - Fixed OpenCode Zen bringing back retired bundled models from an authoritative model cache, and dropping drop-listed models such as
gemini-3.7-flashwhen a refresh fails after an upgrade (#15770 by @adi-IL)
@oh-my-pi/pi-coding-agent
Breaking Changes
- Extension
ui.approve()hosts receive an optionalsessionchoice label and answer"once","session", or"deny"instead of a boolean
Added
- Added
imageCountBudgetto custom models andmodelOverridesin models.yml, so a custom gateway can state its host's image limit instead of the default of 5; past that limit the oldest images were dropped on every new image, which rewrote the provider's prompt cache (#15002, #15969 by @aramalipoor) - The status line names the active profile next to the
πbrand (π-work), so sessions from different profiles are distinguishable at a glance; the default profile is unchanged (#15622 by @matthewrball) - Added opt-in
prewalk.auto(off,suggest, oron): the native judge decides per task whether to arm a prewalk handoff toprewalk.autoTarget, and the next task starts back on the planning model (#16026 by @taibenvenuti) - Added
/seanceand the taskseanceagent: consult a saved session read-only, in place, without resuming it or copying its artifacts; pick the source and an optional model from pickers, and send follow-ups to the consultant (#15036 by @anatoli-tsinovoy)
Changed
- Tool approval prompts list Approve, Approve
<tool>for this session, and Deny again: with an empty composer, pick with the arrow keys and Enter; typing in the composer denies and steers instead, and the Deny row reads "Deny and send message" while you do
Fixed
- Fixed the Isolate Subagents setting description implying that all tasks run isolated; each task must opt in with
isolated: true(#15987). - Fixed
readlabeling re-encoded images with the display format instead of the source file's format; it now identifies both when they differ (#15890). - Fixed
omp -pandtasksubagents reporting a clean finish with an earlier answer when a context overflow could not be compacted enough to retry; the overflow error is now the run's outcome (#15897 by @nhthung) - Fixed Cursor's Shell tool killing commands once its
block_until_mswait elapsed; the wait no longer sets the kill deadline, which comes from Cursor'shard_timeoutor the bash default (#15898 by @nhthung) - Fixed an interrupted prompt's late setup cleanup marking the next prompt idle early, allowing overlapping submissions and releasing sleep prevention mid-turn (#15946)
- Fixed hashline
REMhiding the path-recovery warning when a nonexistent path matched an earlier-read file (#15957). - Fixed tool downloads (
sd,sg,yt-dlp,trafilatura) failing withGitHub API error: 403on a machine whose egress IP has spent GitHub's anonymous 60/hour budget; the release lookup now sendsGITHUB_TOKEN/GH_TOKENlike omp's other GitHub API call sites (#15981 by @iacore) - Background local memory extraction now stops after one bounded retry budget on repeated OpenAI-compatible 429 responses instead of multiplying transport, provider, and completion retries (#15826).
- Fixed a message-result subagent resumed by typing into its focused session leaving
agent://<id>empty and never reporting its final reply to the parent (#15948) - Fixed
readof an RSS or Atom feed showingUntitledfor every item and dropping feed titles, descriptions, dates, and RSS item links (#15954) - Fixed
readshowing a binary notice instead of an HTML page when a server sends unlabeled gzip to the first request but decodable HTML to the second (#15956) - Fixed
readreturning a homepage's site-wide feed or a page's site-widellms.txtalternate instead of the requested page (#15955). - Fixed
ast_grep
…