AI IDEs · can1357 · ↗ Trending on GitHub

Oh My Pi changelog

⌥ Coding agent with the IDE wired in. Built by Stencil Labs.

Latest version
v18.12.2
Last shipped
14h ago
GitHub stars
36k +392/wk
Avg. release gap
<1 days
Weekly activity · last 26 weeks0 updates · 25w ago0 updates · 24w ago0 updates · 23w ago0 updates · 22w ago0 updates · 21w ago0 updates · 20w ago0 updates · 19w ago0 updates · 18w ago0 updates · 17w ago0 updates · 16w ago0 updates · 15w ago0 updates · 14w ago0 updates · 13w ago0 updates · 12w ago0 updates · 11w ago0 updates · 10w ago0 updates · 9w ago0 updates · 8w ago0 updates · 7w ago0 updates · 6w ago0 updates · 5w ago8 updates · 4w ago11 updates · 3w ago14 updates · 2w ago17 updates · 1w ago10 updates · this week

Release history

Recent updates

YesterdayOct 18, 2026

Release v18.12.2

Oh My Pi v18.12.2

@oh-my-pi/pi-agent-core Changed The failed-tool-call correction sent to DeepSeek models now also covers chat-template tool-call tokens written out as text, not only malformed DSML (#16216 by @H4vC) Fixed Fixed Ollama chat history estimates counting stripped…

Read full notes

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

Changed
  • The failed-tool-call correction sent to DeepSeek models now also covers chat-template tool-call tokens written out as text, not only malformed DSML (#16216 by @H4vC)
Fixed
  • Fixed Ollama chat history estimates counting stripped native thinking and missing foreign thinking replayed as text, which skewed compaction after model switches (#16164)

@oh-my-pi/pi-ai

Added
  • Added nativeJudgmentImageBounds(): the image bounds a native judge enforces, its wire's transport limits tightened by the catalog's model bounds
  • Added Box judgment questions (BoxQuestion/BoxAnswer, TypeSafe Jev 1.14+ direct or through OpenRouter): each names the request image it searches by image index, and comes back as that image's edges as 0–1 fractions; text, OpenAI Decisions, and Workers AI judges reject them
Fixed
  • Fixed Muse Code usage going stale whenever its 5-hour window sits idle: the idle window now reports as unused, and weekly usage carries over from the last active window until its reset (#16193 by @eggpeat)
  • Fixed DeepSeek tool calls never running when the model writes them as chat-template tokens with _ in place of ▁, a missing |, or no per-call close (e.g. <|tool_calls_begin|>…<|tool_calls_end|>): they now run as tool calls, and any that still cannot be parsed are removed from history and reported to the model as a failed call (#16216 by @H4vC)

@oh-my-pi/browser-relay

Fixed
  • Fixed a relay tab close failing when Chrome refuses it for a moment (a tab being dragged); the extension retries it (#16119 by @will-bogusz)
  • Fixed tabs created for a relay request whose connection dropped mid-create staying open, and answers to such requests going to a later connection (#16119)
  • Fixed the relay resolving an old tab id to a different tab after a browser restart; the extension now reports each browser run (#16119)

@oh-my-pi/pi-catalog

Changed
  • Seeded TypeSafe jev-1.14.0 and OpenRouter typesafe/jev-1.14, and made them the judge role defaults and TypeSafe's default model; TypeSafe discovery keeps seeded ids its alias-only /v1/models listing omits

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

Added
  • Added computer.backgroundFallback (takeover by default, or refuse): when a computer window input call has no background route, the tool reruns that one call in takeover, hands focus back to your app and says so in its result; refuse fails the call instead and also refuses the agent's own foreground requests (takeover: true, raise(), an activating apps.open, desktop input, and on macOS menus and AXOpen) (#15191 by @will-bogusz)
  • Added DeepSeek as a web search engine (web/deepseek), using DeepSeek's new Search API with your existing DEEPSEEK_API_KEY or stored deepseek credential
  • Added el.selectText(text, { prefix?, suffix?, select? }) to the macOS computer tool: it selects text (or places a caret) in a background app's text field without taking focus, moving the pointer or sending keys, so typing into that field replaces it (#15175 by @will-bogusz)
  • Added { takeover: true } to computer-use win.move, so a hover that a window refuses in the background can be retried in the foreground (#15173 by @will-bogusz)
  • Added a menu option to the computer tool's win.click, el.click, el.press and el.perform, so on macOS the call that opens a menu also chooses its item, e.g. menu: ["Add to", "Fonts"] (#15185 by @will-bogusz)
  • Added el.type(text) and el.press(chord) to the computer tool, which send text and keys to that element instead of wherever its window's focus is; on macOS and Windows nothing is sent when the element cannot be addressed without taking your focus (#15563 by @will-bogusz)
  • Added: pressing Escape during takeover input now stops computer use for the rest of the turn, and that session's later computer calls are refused, unsent, until your next message (#15564 by @will-bogusz)
  • Added the computer tool's UserIntervened error on macOS: input into an app you have used since the agent last read its window fails without sending, and the agent is told to read the window again and keep your edits (#15562 by @will-bogusz)
  • Added tui.completeScrollback: rows a growing HUD or dialog pushes off screen go straight to scrollback instead of missing from it until it shrinks (#15692 by @Ilm-Alan)
Changed
  • The computer tool and its errors no longer tell the model to retry with takeover: true, and its instructions tell it never to call raise() or apps.open(…, { activate: true }) to make input work (#15191 by @will-bogusz)
  • Computer-use window input with takeover omitted now stays in the background after computer.control.acquire, so an acquired grant no longer activates the target app or moves the user's pointer; pass takeover: true for foreground input (#15173 by @will-bogusz)
  • Pressing Escape in your own app no longer stops the computer tool's background window input unless task control is held; Escape in omp still interrupts it, and physical Escape still stops takeover input (#15176 by @will-bogusz)
  • Added Box questions to ChainJudge: they go only to Jev judges that answer them, and the box edges measure the image you passed even when it was padded to fit Jev's size bounds
  • A relay browser.open without app.target now opens its own background tab instead of adopting the visible one (after reinstalling the relay extension; older ones select it), and browser.close closes it; app.target still borrows an existing tab (#16119 by @nnnnoel and @will-bogusz)
  • Computer-use win.menu.items now needs exec approval and is rejected in read_only runs, since on macOS it makes the window key in its own application before reading its menus (#15184 by @will-bogusz)
  • The computer

…

Saturday, October 17Oct 17, 2026

Release v18.12.1

Oh My Pi v18.12.1

@oh-my-pi/pi-ai Fixed Fixed every request failing behind a TLS-inspecting proxy that refuses compressed uploads: a 400/403/415 whose body is not JSON, or the Anthropic API's "request body is not valid JSON" after a proxy drops Content-Encoding, now resends the…

Read full notes

@oh-my-pi/pi-ai

Fixed
  • Fixed every request failing behind a TLS-inspecting proxy that refuses compressed uploads: a 400/403/415 whose body is not JSON, or the Anthropic API's "request body is not valid JSON" after a proxy drops Content-Encoding, now resends the body uncompressed and stops compressing for that host (#16108 by @alphastorm)

@oh-my-pi/pi-catalog

Fixed
  • Anthropic's request-encoding-rejection now also matches the API's "request body is not valid JSON" 400, which a gzip body gets when a proxy drops its Content-Encoding header (#16108 by @alphastorm)

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

Breaking Changes
  • Removed display() from eval in both Python and JavaScript; print (and console.log in JavaScript) covers it
Added
  • Added advisor.continueSeverity (nit, concern, blocker) to choose the minimum advisor note severity that wakes the agent after it finished with a final answer; lower-severity notes stay as a card at the end of the transcript
  • Printed DataFrames/Series render as tables, large dicts/lists and objects as JSON trees, and Markdown objects as Markdown for the user, while the model sees the printed text
  • Printing a figure or image in eval attaches the image to the result
Changed
  • An advisor concern raised after the agent's final answer now continues the run by default instead of waiting at the end of the transcript; set advisor.continueSeverity to blocker for the previous behavior
Fixed
  • Fixed context-file @ imports failing to load paths containing backslash-escaped spaces (#16090)

@oh-my-pi/pi-natives

Fixed
  • Fixed native memory growing without bound, and eventually crashing the process, when files in a downloaded (WASM) grammar language such as C# were parsed repeatedly (#16067)

@oh-my-pi/pi-tui

Breaking Changes
  • numberedCode, readContentCode and nativeDiff take the file's path (path) instead of a language, and describeGroupedOutput drops its lang option: Tern picks the grammar of file contents from their path
Changed
  • Advisor notes in Tern read as a callout tinted by their worst severity: its icon and a tally (Concern, 1 blocker · 2 concerns) head the card with the advisor's name at the end, and several notes each lead with their own severity icon
Fixed
  • Fixed images rendering blank inside tmux on Kitty-capable terminals when tmux's allow-passthrough is off (the default); omp now falls back to SIXEL or the text placeholder instead of sending Kitty graphics tmux drops
  • Fixed Tern drawing tool cards' file contents (write, read, edit, grep, find, ast-grep, ast-edit) plain or in the wrong language when omp did not know the file's extension (.ptx) or mapped it to a neighbor (.cu as C++); omp now sends the file's path and Tern picks the grammar

What's Changed

Full Changelog: https://github.com/can1357/oh-my-pi/compare/v18.12.0...v18.12.1

Release v18.12.0

Oh My Pi v18.12.0

@oh-my-pi/pi-agent-core Fixed Fixed Cursor turns failing with PROVIDER_ERROR when a follow-up (a finished background job, a late diagnostic, a reminder) arrived while the previous turn was still streaming (#15821 by @robfeldmann) @oh-my-pi/pi-ai Breaking…

Read full notes

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

Fixed
  • Fixed Cursor turns failing with PROVIDER_ERROR when a follow-up (a finished background job, a late diagnostic, a reminder) arrived while the previous turn was still streaming (#15821 by @robfeldmann)

@oh-my-pi/pi-ai

Breaking Changes
  • PI_CODEX_ZSTD is replaced by PI_REQUEST_COMPRESSION; set PI_REQUEST_COMPRESSION=0 to send Codex (and every other) request body uncompressed (#16086 by @H4vC)
Added
  • Added ThinkingContent.narration, set on Anthropic and Bedrock thinking blocks whose signature marks them as between-tool narration, and presentNarrationAsAnswer(message) to show those blocks as reply text while replay keeps them as signed thinking
  • Added keys.peek(provider, { includeExpired: true }) to name the stored account behind an expired OAuth token for reads that never send it, such as keying an offline model-cache lookup (#16061 by @gchai)
  • Added prewarmModelConnection(model) (providers/connection-prewarm), which opens the model's API connection ahead of a request using the same transport and TLS settings so the request reuses it instead of paying the connection handshake (#16086 by @H4vC)
Changed
  • Anthropic requests to the official API now gzip the request body, so long conversations reach the model sooner on slow uplinks; set PI_REQUEST_COMPRESSION=0 to disable it (#16044 by @H4vC)
  • GitHub Copilot requests (chat completions, Responses, and Claude messages) now send zstd-compressed bodies, cutting upload size by roughly 60–75% on long conversations; set PI_REQUEST_COMPRESSION=0 to disable it (#16086 by @H4vC)
  • A rejected request-body encoding now only disables compression for that host, and only after the uncompressed resend succeeds, so a genuine 400 no longer turns compression off (#16086 by @H4vC)
  • Connection warm-up now covers every catalog provider, not only the official Anthropic API: it re-warms the origin a model's requests actually reach (Copilot plan hosts, MOONSHOT_BASE_URL, regional hosts), throttled per host; custom providers, built-in provider ids routed to a gateway, local hosts, and Anthropic gateways are never probed (#16086 by @H4vC)
Fixed
  • Fixed Ollama and Ollama Cloud streaming errors being silently accepted as successful responses (#16039 by @mottopanikeiku)
  • Fixed the hermes in-band scanner exposing a truncated tool name for streaming tool calls: toolStart now waits for the complete JSON name, so a stream that splits or stops mid-name never reports a partial tool name (#16064 by @adi-IL)
  • Fixed keys.peek() rotating through stored accounts on each call; it now returns the first account whose token has not expired, every time, so model discovery keeps reading one account's cached catalog (#16061 by @gchai)
  • Fixed local JSON Schema references with URI-percent-encoded, JSON Pointer-escaped, or empty definition names resolving incorrectly during dereferencing, strict conversion, and value validation (#15926 by @jchanghong023).
  • Fixed network failures showing a generic "Connection error."; offline, connection-refused, and TLS-verification failures now name the host and the cause (#16036 by @jorgoose)
  • Fixed Jev image limits rejecting inputs for unrelated native judges and redundant TypeSafe image judgments when only detail changes (#16002 by @anatoli-tsinovoy).
  • Fixed SIGTERM interrupting an in-flight OAuth token rotation before its replacement refresh token was saved (#15845).
  • Fixed sessions getting stuck on HTTP 400 after replaying tool names unsupported by the target provider, including invented proc://* calls and Google tool names sent to Bedrock (#15839)

@oh-my-pi/pi-catalog

Added
  • Added the request-encodings, request-encoding-rejection, and endpoint-hosts rule axes, resolveRequestCompression(model, url), and isCatalogEndpointUrl(model, url), declaring which providers' own endpoints decode compressed request bodies: official Anthropic API (gzip), Codex backend (zstd), and GitHub Copilot's API hosts (zstd, then gzip); Moonshot's China host counts as its own endpoint (#16086 by @H4vC)
Changed
  • Bundled GPT-5.4 rows on OpenAI, Azure, OpenCode Zen, and Command Code report a 1M context window, the window the coding agent already applied at runtime; GitHub Copilot and Factory Droid keep their own windows (#16094 by @H4vC)
Fixed
  • Fixed custom providers that declare a built-in providerType (Azure, GitHub Copilot, OpenCode, ClinePass, DeepSeek, NVIDIA) missing that provider's wire quirks, such as strict Responses pairing and the ClinePass reasoning field: they now follow the same catalog rules as the built-in provider (#16093 by @H4vC)
  • Fixed OpenCode Zen bringing back its retired bundled models after a failed refresh: the retry-backoff write no longer drops the cached snapshot's retention, so the pruned catalog survives the retry window and offline launches. (#16054 by @adi-IL)
  • Fixed providers.cacheWarming never arming for Claude on Google Antigravity: Claude models there now declare Vertex Anthropic's five-minute prompt-cache lifetime; Gemini models stay unwarmed because Google's implicit cache has no fixed lifetime (#15764, #16025 by @harshaygadekar)
  • Scoped Jev image bounds to the selected models instead of applying them to unrelated native judges (#16002 by @anatoli-tsinovoy)
  • Fixed Bedrock sessions rejecting replayed tool names over 64 characters after a model switch (#15839)

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

Added
  • Added statusLine.segmentOptions.pi.showProfile: set it to false to hide the profile name next to the π brand, for example when each profile already has its own theme (#16063 by @shgew)
  • Added sharpshooter.minPromptLength (default 16, minimum 2) to control the shortest prompt Sharpshooter extracts decisions from (#16043 by @bigHippoZz)
Changed

…

Friday, October 16Oct 16, 2026

Release v18.11.3

Oh My Pi v18.11.3

@oh-my-pi/pi-agent-core Added prepareQueuedMessages receives which queue (steering or followUp) 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,…

Read full notes

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

Added
  • prepareQueuedMessages receives which queue (steering or followUp) 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/completions streams 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 : keepalive comment every 15 s (#15940 by @radkawar)
  • Fixed Anthropic models with mid-conversation system messages (e.g. Claude Opus 5.5) receiving @file mention contents and hidden extension messages as a trailing system message instead of ending the request on the user's turn (#15881)

@oh-my-pi/pi-catalog

Changed
  • Renamed the built-in google-antigravity login 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-flash failing 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 /handoff failing with 400 Provider returned error on OpenRouter's hosted Muse Spark 1.x and Muse Wonder models: requests no longer send a tool_choice the 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-flash when a refresh fails after an upgrade (#15770 by @adi-IL)

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

Breaking Changes
  • Extension ui.approve() hosts receive an optional session choice label and answer "once", "session", or "deny" instead of a boolean
Added
  • Added imageCountBudget to custom models and modelOverrides in 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, or on): the native judge decides per task whether to arm a prewalk handoff to prewalk.autoTarget, and the next task starts back on the planning model (#16026 by @taibenvenuti)
  • Added /seance and the task seance agent: 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 read labeling re-encoded images with the display format instead of the source file's format; it now identifies both when they differ (#15890).
  • Fixed omp -p and task subagents 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_ms wait elapsed; the wait no longer sets the kill deadline, which comes from Cursor's hard_timeout or 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 REM hiding the path-recovery warning when a nonexistent path matched an earlier-read file (#15957).
  • Fixed tool downloads (sd, sg, yt-dlp, trafilatura) failing with GitHub API error: 403 on a machine whose egress IP has spent GitHub's anonymous 60/hour budget; the release lookup now sends GITHUB_TOKEN/GH_TOKEN like 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 read of an RSS or Atom feed showing Untitled for every item and dropping feed titles, descriptions, dates, and RSS item links (#15954)
  • Fixed read showing 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 read returning a homepage's site-wide feed or a page's site-wide llms.txt alternate instead of the requested page (#15955).
  • Fixed ast_grep

…

Release v18.11.2

Oh My Pi v18.11.2

@oh-my-pi/pi-agent-core Added agent_start carries resumedToolCallIds when a continued run first executes the calls of an unpaired assistant tail Fixed Cancelling an ask after a background job finishes now reports the user cancellation instead of telling the…

Read full notes

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

Added
  • agent_start carries resumedToolCallIds when a continued run first executes the calls of an unpaired assistant tail
Fixed
  • Cancelling an ask after a background job finishes now reports the user cancellation instead of telling the model to retry a skipped tool (#15985)

@oh-my-pi/pi-ai

Breaking Changes
  • resolveGatewayApiKey and buildGatewayApiKeyResolver (@oh-my-pi/pi-ai/auth-gateway) take the request's route options ({ storage, client? }) instead of an AuthStorage, their resolver callback receives the resolved credential, and resolveGatewayAccount takes that credential (#15900 by @alphastorm)
Added
  • Added scoped clients to startAuthGateway (clients, setClients): each client bearer is limited to its own models and OAuth accounts, with no fallback to other accounts or API keys, and request log lines name the client and the credential a request started on (#5098, #15900 by @alphastorm)
  • Added experimental native image judgments for TypeSafe Jev's jev-latest, jev-preview, jev-1.13.0, and jev-1.14.0, plus OpenRouter's typesafe/jev-1.13, typesafe/jev-1.14, and ~typesafe/jev-latest models; images outside Jev's documented size bounds fall through to a vision chat judge instead of failing (#15887 by @anatoli-tsinovoy)
Fixed
  • Fixed error results from non-first-party providers regaining partial output the provider had discarded; an error with empty content now stays empty (#14516, #14572 by @oleg494)
  • Fixed the auth gateway's POST /v1/audio/speech answering 502 for requests the speech adapter rejects (unsupported format, over-long input); they now get 400 invalid_request_error (#14508 by @F0Rextasy)
  • Fixed a single-string tool call with two or more mislabelled string fields silently dispatching whichever field came first in the JSON; such ambiguous calls now fail validation and the model sees its own arguments back (#14414 by @F0Rextasy)
  • Fixed GLM-5.2 on Ollama Cloud losing its reasoning between turns; Ollama Cloud now keeps assistant thinking in history for models verified to accept it (#14440 by @Dante-dan)
  • Fixed GPT Image generation and edits failing on gateways that validate request parameters, such as LiteLLM; response_format is no longer sent to GPT Image models (#14619 by @jimhester)
  • Fixed OpenRouter errors such as "Access denied by security policy" dropping the routed upstream's own explanation from error.metadata.raw (#10906, #14435 by @F0Rextasy)
  • Fixed GitHub Copilot usage reporting an AI-credit allowance as "Premium Requests" in request units; the unit each billing item reports is now honoured (#13849, #14501 by @F0Rextasy)
  • Fixed an OpenAI-compatible server's finish_reason: "repetition" or stop_reason: "repetition_detected" not being treated as a thinking loop, so the degenerate partial reasoning was kept and replayed into the next turn (#12525, #14535 by @F0Rextasy)

@oh-my-pi/pi-catalog

Added
  • Added keep-bundled-names catalog attribute to preserve static model display names during discovery
  • Updated openai-codex provider configuration to prevent model name regressions during live discovery
Changed
  • GPT Image models (gpt-image-*, chatgpt-image-*) now classify as their own gpt-image family instead of gpt or chatgpt, so GPT chat-model rules no longer apply to them (#14619 by @jimhester)
Fixed
  • Fixed OpenCode Zen Gemini 4 Argon failing with an unsupported protocol; it now uses the native Gemini endpoint (#15977).

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

Added
  • Added lsp.requestTimeout setting to configure wait durations for language server diagnostics and requests
  • Added omp auth-gateway serve --clients=<file>: per-client bearer tokens, each limited to listed models and broker OAuth accounts with no fallback to other accounts or API keys, re-read while serving (#5098, #15900 by @alphastorm)
Changed
  • The lsp tool now uses lsp.requestTimeout to dynamically adjust both call deadlines and project-aware diagnostic wait times, with support for per-call overrides
  • Reduced CPU overhead during syntax checks and automatic edit repairs (#15904 by @iliaal).
  • Reduced status-line refresh overhead while subagents have long conversations (#15874 by @iliaal).
  • Agents now send todo updates alongside their next tool call instead of spending a separate model turn on them (#15402 by @will-bogusz)
  • The Shared Language Servers setting now says what it does: each connection gets its own server, and a released one is reused while another omp instance keeps the project's mux running (#14633 by @jorgoose)
  • Memories saved explicitly through the extension memory.save API are now stored as stated rather than unknown, so they rank as deliberate memories in Mnemopi recall (#13824 by @sjawhar)
Fixed
  • Fixed prewalk switching models during read-only MCP lookups through write xd:// when the server marks the tool read-only (#15994)
  • Fixed Ctrl+C printing 9;5u in the shell after force-quitting omp with a third Ctrl+C while it was still closing the session
  • Fixed Smart unexpected-stop recovery continuing finished answers, which added extra "nothing more to add" turns
  • Fixed grep searching only the first 4 MB of a file named directly, so later matches were reported as absent; the whole file is now searched, and a multiline pattern, which still reads only the first 4 MB, says so in its no-match headline (#15942)
  • Fixed browser uploadFile

…

Thursday, October 15Oct 15, 2026

Release v18.11.1

Oh My Pi v18.11.1

@oh-my-pi/pi-agent-core Added Tokenizer.countLatestTurn: counts a message as the transcript's latest assistant turn, which an Anthropic Messages replay keeps byte-for-byte (#15791 by @will-bogusz) Agent.prioritizeSteering: moves given pending steering messages…

Read full notes

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

Added
  • Tokenizer.countLatestTurn: counts a message as the transcript's latest assistant turn, which an Anthropic Messages replay keeps byte-for-byte (#15791 by @will-bogusz)
  • Agent.prioritizeSteering: moves given pending steering messages ahead of older ones so one-at-a-time delivery takes them first (#15642)
Fixed
  • Fixed a Cursor tool call re-sent by the server persisting two results under one id; the re-run's result replaces the first (#15749)
  • Fixed compaction keeping more recent history than keepRecentTokens when the latest Claude turn on the Anthropic Messages API ended its tool calls on stop or length: the replay keeps that turn's signed reasoning, but the cut point counted only its visible blocks (#15791 by @will-bogusz)

@oh-my-pi/pi-ai

Added
  • Added image support for native OpenAI Decisions and Workers AI judgments, prompted vision chat, and auth-gateway System One requests; images exceeding a judgment API's documented caps (e.g. Clef's 4 images, 4 MiB each) are rejected locally (#15471 by @anatoli-tsinovoy).
  • isSurvivingAssistant in providers/transform-messages: whether an assistant turn reaches a replay, malformed tool calls dropped first, so callers outside transformMessages pick the same latest turn (#15791 by @will-bogusz)
Fixed
  • Fixed Codex-hosted image generation ignoring the requested aspect_ratio/image_size, and 3:2/2:3 requests sending no size to OpenAI image models (#15601 by @chulmin-dev)
  • Fixed Claude subagents failing to return structured results when yield arguments arrived as invalid JSON (#15605 by @farnoy)
  • Fixed turns stopping instead of retrying when a gateway reports its upstream WebSocket closed before response.completed (#15628 by @nqrwhal).
  • Fixed Claude on Google Vertex ignoring cacheRetention: "long": prompt caches now get the 1h TTL instead of expiring after 5 minutes, and the extended-cache-ttl beta (which Vertex rejects) is never sent there (#15505 by @hpost)
  • Fixed Gemini tool continuations failing on OpenAI-compatible gateways that return reasoning_signature, including restored sessions (#15678 by @Zzz141592653)
  • Fixed Cursor sessions failing every rebuilt request with PROVIDER_ERROR after the server re-sent a tool call: the call is recorded once, and histories that already repeat it replay it once with its latest result (#15749)
  • Fixed Cursor turns cut off mid-stream failing every retry with PROVIDER_ERROR until you sent a new message; the retry now starts a fresh Cursor conversation (#15830)
  • Fixed malformed image-generation inputs being forwarded to providers or reported as credential/upstream errors (#15765 by @anatoli-tsinovoy).
  • Fixed broker-backed auth-gateway processes retaining a cache entry for every distinct client session indefinitely under sustained traffic (#15841).
  • Fixed turns ending on a pinned error when a provider reports "temporarily unavailable" or finishes with an unknown, other or unspecified finish reason: these now retry automatically (#15424 by @lockwo)

@oh-my-pi/pi-catalog

Fixed
  • Enabled long prompt-cache retention (ttl: "1h") for Claude models on google-vertex (#15505 by @hpost)
  • Fixed Gemini 4 Argon on Google Vertex and the Gemini API failing every request with "Thinking budget is not supported for this model": Gemini 4 now sends thinkingLevel instead of thinkingBudget, and Argon offers only the low, medium, and high levels Google accepts (#15643 by @kevcube)
  • Fixed the Antigravity model selector offering roster rows the backend marks disabled (disabled: true, e.g. gemini-4-argon-disabled on accounts without Argon access), which answered Cloud Code Assist API error (404): Requested entity was not found.; discovery now skips them the way it already skips isInternal rows (#15684 by @CharleoYang)
  • Removed Google Antigravity's Gemini 3.5 Flash and its gemini-3-flash alias from the model list; Antigravity retired them and answers every request with a retirement notice instead of a reply (#15445 by @will-bogusz)
  • Fixed xai-oauth Grok 4.20 models (grok-4.20-0309-reasoning, -non-reasoning, grok-4.20-multi-agent-0309) advertising a 2M context window when the SuperGrok API rejects prompts over 1M; auto-compaction and context usage now work from the 1M window (#15443 by @will-bogusz)
  • Fixed trailing-dot localhost. and *.local. custom endpoints losing local-backend compatibility settings (#15798).

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

Added
  • Added image attachments to single and batch eval judge()/judge_batch() calls (local paths or embedded images); image judgments skip candidates without image support and fail explicitly instead of dropping images (#15471 by @anatoli-tsinovoy)
  • Added a job tree to /jobs, /jobs full and the jobs pill's sheet, in the terminal UI and over ACP: subagents' background jobs now appear nested under the task that runs them, with the busiest branches listed first; only your own jobs offer Cancel (#15854 by @H4vC)
  • Added ctx.ui.getEditorComponent() so extensions can wrap the active custom editor factory instead of replacing it (#8655 by @jovi-tsx)
Changed
  • Reduced memory used by bundled model catalog data in standalone and npm installs (#15876 by @iliaal).
Fixed
  • Fixed /shake and automatic shake leaving old transcript rows in native scrollback or obscuring the start of a response beside the Todo HUD (#15877).
  • Fixed write making Rust source files beginning with #![...] executable instead of preserving their permissions (#15858

…

Wednesday, October 14Oct 14, 2026

Release v18.11.0

Oh My Pi v18.11.0

@oh-my-pi/pi-agent-core Breaking Changes Removed ApprovalDetailsOptions; formatApprovalDetails takes only args again, since the compact approval prompt no longer shows tool details (#15642 by @H4vC) Added AgentTool.delegationGuidance: instructions a same-name…

Read full notes

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

Breaking Changes
  • Removed ApprovalDetailsOptions; formatApprovalDetails takes only args again, since the compact approval prompt no longer shows tool details (#15642 by @H4vC)
Added
  • AgentTool.delegationGuidance: instructions a same-name extension replacement inherits in its description when it delegates to the native tool (#15477 by @iliaal)
  • CompactionPreparation.lastSummarizedEntryId and CompactionResult.providerReplayThroughEntryId: a remote compaction that could only fit the history before the kept tail reports the last entry its native history covers; later entries replay normally (#15712 by @H4vC)
Fixed
  • Fixed native (OpenAI/Codex) remote compaction refusing or truncating sessions that fit the window: its preflight counted the JSON-escaped request, inflating quote-, backslash- and newline-heavy tool output such as disassembly by ~10–20%; it now counts text as the model reads it (#15712 by @H4vC)
  • Fixed OpenAI V1/V2 remote compaction failing outright when the history, kept tail included, exceeds the context window (a large final response or tool output after the last check); it retries on the history before the kept tail (#15712 by @H4vC)
  • Fixed fitted output caps overflowing the context window on strict hosts (llama.cpp-family) after turns with many parallel tool results; chat-template framing is now charged per locally counted message (#15699)
  • Fixed leaked DeepSeek DSML markup reaching saved history from reasoning blocks and from turns that also made a valid tool call (#15485)

@oh-my-pi/pi-ai

Fixed
  • Fixed parallel tool calls failing with "Tool call arguments are not valid JSON" on some OpenAI-compatible gateways, such as Gemini (#15682 by @Zzz141592653)
  • Fixed Anthropic fallback-credit redemption losing its credit on errors that only mention 400 in their text, such as an overload message (#15702 by @H4vC)
  • Fixed Anthropic fallback-credit redemption sending an extra fallback-credit-2026-06-01 beta when the refused request used a newer one (#15702 by @H4vC)
  • Fixed Anthropic fallback-credit redemptions failing when the refused turn included unsigned thinking (#15702 by @H4vC)
  • Fixed turns ending without automatic retry when a gateway forwards Go's use of closed network connection transport error; it now retries like other dropped connections (#15385)
  • Fixed Codex SSE streams failing with an abort instead of retrying when the first event stalls (#15542)
  • Fixed Codex (ChatGPT subscription) requests with reasoning disabled, such as judges, titles, commit messages, and thinking off, leaving effort to the server default; they now send the lowest supported effort, or none where the model accepts it (#15514)
  • Fixed a Codex account whose token OpenAI rejects (401/403) continuing to show its last quota as healthy; omp usage now drops the stale report and omp auth-gateway check reports the credential as failing (#15439)
  • Fixed usage reports being served indefinitely while their provider keeps failing; the last successful report is now shown for at most 24 hours after it was fetched (#15439)
  • Fixed Responses requests 400ing (DeepSeek: "The reasoning_text in the thinking mode must be passed back to the API") after a tool call whose arguments were invalid JSON: the call is now replayed with its parse diagnostic instead of being dropped and leaving a trailing [Orphan tool result] note (#15568)
  • Fixed DeepSeek on OpenAI-compatible gateways leaving doubled-pipe DSML markup (</||DSML||parameter>) in assistant text and reasoning (#15485)
  • Fixed sessions failing every request with 400 … thinking or redacted_thinking blocks in the latest assistant message cannot be modified after a response fell back to another model mid-turn (e.g. through a gateway that opts into Anthropic server-side fallback); the turn now replays one model's reasoning, and a session already stuck on such a turn recovers by dropping that turn's reasoning and retrying (#15654 by @abilliontokens)
  • Fixed omp auth-gateway's Anthropic /v1/messages stream misnumbering content blocks after a redacted reasoning block, which misrouted every later delta in index-addressed clients (#15654 by @abilliontokens)

@oh-my-pi/pi-catalog

Added
  • Added local/nemotron-streaming-en-0.6b for local streaming English dictation (#15759 by @daaximus).
  • Added SambaNova Cloud (sambanova) as a provider: /login sambanova with an API key, and the live /v1/models roster with its prices, reasoning models, and Gemma 4 image input (#14986 by @rjuez00)
Changed
  • OpenCode Go requests now go to the current https://opencode.ai/inference/go/v1 endpoint instead of the legacy /zen/go one (#15722)
Fixed
  • Fixed OpenCode Go's deepseek-flash alias showing $0, unknown limits, and no reasoning instead of the V4.1 Flash rate card and capabilities (#15357)
  • Fixed OpenCode Go's Gemini 4 Argon Contributor failing with an unsupported protocol and thinking level; it now uses the native Gemini endpoint (#15722)

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

Added
  • Added a microphone button beside Send in Tern: click to record, click Stop to finish, then review and submit the transcription yourself. Clicking while it says Starting… cancels a slow first model load (#15759 by @daaximus).
  • Added local Nemotron streaming dictation: words appear while you speak, and the microphone waits for the recognizer to be ready before recording (#15759 by @daaximus).
  • Added agent frontmatter structured: true: that agent's task spawns keep the yield tool and its output schema validation while task.structured is off (#15717 by @alphastorm)
  • The composer stays usable while a tool approval is pending: sending a message denies the call and steers the turn with it, so the agent knows why it was denied (#15642

…

Tuesday, October 13Oct 13, 2026

Release v18.10.4

Oh My Pi v18.10.4

@oh-my-pi/pi-agent-core Added AgentTool.formatApprovalDetails receives ApprovalDetailsOptions; compact: true asks for untruncated bodies so a compact approval prompt can count their lines (#15550 by @H4vC) Changed Before-model-call hooks now receive the loop…

Read full notes

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

Added
  • AgentTool.formatApprovalDetails receives ApprovalDetailsOptions; compact: true asks for untruncated bodies so a compact approval prompt can count their lines (#15550 by @H4vC)
Changed
  • Before-model-call hooks now receive the loop context as a second argument, and buildProviderContext receives the summarizer model (#15436 by @will-bogusz)
Fixed
  • Fixed a Claude compaction or branch summarizer receiving assistant reasoning from a snapcompact archive rendered under another model, which Claude refuses (reasoning_extraction) (#15436 by @will-bogusz)

@oh-my-pi/pi-ai

Fixed
  • Fixed Codex cybersecurity policy errors incorrectly retrying without Daybreak and disabling it for subsequent requests, while preserving retries without Daybreak when access is rejected (#15472 by @taibenvenuti)
Removed
  • Removed the toolNamespacesInfo stream option; Codex requests no longer send tool_namespaces_info turn metadata, and code_mode_tool_names/tool_namespaces_info are no longer reserved client metadata keys.

@oh-my-pi/pi-catalog

Added
  • Added Muse Code's subscription-only Muse Wonder Full and Wonder contributor tiers with the max effort, recording API-equivalent cost instead of $0: Wonder Full at Muse Wonder's $4 input / $0.20 cached / $20 output per 1M tokens, contributor tiers at the measured $1.60 / $0.08 / $8 (#15522 by @eggpeat)
  • Added the classifier-cot-extraction rule axis, set for Claude, marking models whose classifier refuses earlier reasoning quoted back into their input (#15436 by @will-bogusz)
  • Added Gemini 4 Argon pricing on Cursor ($2 input / $0.10 cached / $10 output per 1M tokens) and Google Antigravity, which now uses Google's first-party rate instead of showing $0 (#15620 by @eggpeat)
  • Added scheduled list-price changes to cost-patch, as cost-fallback already allowed: a dated effective-rates card sets the price from its date, and each request is priced at the card in force when it was made, even on models loaded before the change, on rebuilt models, and on Cursor lanes priced from a sibling's card. A malformed dated card now fails the model build instead of silently keeping the old price. getEffectiveTokenCost returns that card for price displays, and hasRecurringTariff tells these dated-only schedules apart from peak/off-peak tariffs, which alone show a status-line arrow (#15620 by @eggpeat)
Changed
  • Devin models with a long-context price tier (GPT-5.4 through 5.6 standard lanes, GPT-6 through 6.1, Gemini Pro, and Grok 4.5 through 4.7) now default to a 272K or 200K context window, where that pricing starts; run /extended-context on to use the full window at long-context rates (#14891 by @eggpeat).
  • Devin SWE-2, SWE-1.7, and GLM-5.2 fallback pricing no longer charges cache writes at the input rate, since Devin publishes no cache-write rate for them (#14891 by @eggpeat).
  • Google Antigravity now lists Gemini 4 Argon once, with selectable low, medium, and high thinking levels, instead of a separate entry per thinking tier (#15620 by @eggpeat)
  • Gemini 4 Argon on Google, Vertex, Google Antigravity, and Cursor moves to Google's $4 input / $0.20 cached / $20 output list price on 2026-12-01 (midnight US Pacific), including requests on models loaded before then, without a catalog update (#15620 by @eggpeat)
  • Devin SWE-2's promotional fallback price now ends on 2027-01-01 for requests on models loaded before then too (#15620 by @eggpeat)
Fixed
  • Fixed Devin Claude and GPT-5.6 through GPT-6 models pricing prompt-cache writes at $0; they now use Devin's published rate of 1.25x input, and Adaptive uses its input rate (#14891 by @eggpeat).
  • Fixed Devin GPT-5.4 through GPT-6.1, Gemini Pro, and Grok 4.5 through 4.7 models missing the long-context price tiers Devin publishes above 272K and 200K prompt tokens (#14891 by @eggpeat).
  • Fixed Devin Fusion pairings ignoring their lead model's rules, including its cache-write rate and long-context tier (#14891 by @eggpeat).
  • Fixed Kilo and NanoGPT models showing stale or missing prices (for example Gemini 4 Argon at $4/$20 instead of $2/$10, and many models at $0); prices now come from each gateway's live model list (#15623 by @eggpeat)
  • Fixed NanoGPT models showing their raw id as the name and no context window (disabling auto-compaction) when the bundled catalog lacked them; names, context windows and output limits now come from NanoGPT's live model list (#15623 by @eggpeat)
Removed
  • Removed the Codex toolMode model field (code_mode_only); Codex discovery no longer maps tool_mode

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

Added
  • Extensions can observe and answer the interactive plan review, including refinement feedback and save-and-quit (#14250 by @rlfleming93)
  • Added opt-in omp gc --compress (or gc.compress), which stores sessions idle for gc.compressAfterDays (default 7) with filesystem transparent compression (APFS, NTFS); they stay resumable and searchable (#15600 by @wolfiesch)
  • Extensions can reopen a dismissed plan review while the session is idle (ctx.openPlanReview()) and pick the execution tier on ctx.resolvePlanReview (input.role); plan_review_requested now reports the slider's tiers (#15552 by @Shadorain)
Changed
  • Tool approval prompts now replace the composer like ask, show one row per detail, and approve with Ctrl+Enter (or Ctrl+Q) instead of Enter (#15548 by @H4vC)
Fixed
  • Fixed late completion probes rewinding resumed conversations and stale history scans lowering parked subagent costs (#15594 by @anatoli-tsinovoy).
  • Fixed read.renderMarkdown having no effect on plain-file reads: inline read previews now render Markdown files as formatted Markdown instead of numbered source (#15007).

…

Monday, October 12Oct 12, 2026

Release v18.10.3

Oh My Pi v18.10.3

@oh-my-pi/pi-agent-core Breaking Changes Removed estimateImageContentTokens() from @oh-my-pi/pi-agent-core/image-tokens; use Tokenizer.imageTokens(size, detail), which prices with the reading model's catalog image rule (#15446 by @will-bogusz)…

Read full notes

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

Breaking Changes
  • Removed estimateImageContentTokens() from @oh-my-pi/pi-agent-core/image-tokens; use Tokenizer.imageTokens(size, detail), which prices with the reading model's catalog image rule (#15446 by @will-bogusz)
  • applyShakeRegion() and applyShakeRegions() take the replacement's token count (replacementTokens); a block rewrite of an assistant turn adds the tokens it removes to elidedOutputTokens, so a replayed Claude turn's count stays lowered after a reload (#15446 by @will-bogusz)
Fixed
  • Fixed Claude context counts reading Opus 5.5 requests about 55% over their billed input: a replayed thinking turn now counts at the output size Claude billed for it, not its signature's bytes (#15446 by @will-bogusz)
  • Fixed screenshots and other non-frame images being counted at the OpenAI rate for every model instead of the reading model's own; Claude billed them about 16% higher (#15446 by @will-bogusz)
  • Fixed OpenAI Responses and Codex context estimates leaving out replayed reasoning: each turn whose encrypted reasoning actually replays now counts its reported reasoning tokens (its ciphertext when the backend reports none), and none while a cold session rebuilds it out of the request, so compaction and snapcompact sizing match billing; branch summaries no longer budget for encrypted reasoning they never send (#15447 by @will-bogusz)

@oh-my-pi/pi-ai

Breaking Changes
  • isOfficialCodexApiUrl moved from @oh-my-pi/pi-ai to @oh-my-pi/pi-catalog/wire/codex, next to CODEX_BASE_URL, so the catalog's compat resolver classifies Codex endpoints with the same check (#15434 by @will-bogusz)
Added
  • Added withoutUnverifiedThinking utility to filter reasoning capability from models when no effort is requested
  • Added reachesOfficialEndpoint(model): whether a request to the model reaches the official endpoint its compat was built for, following ANTHROPIC_BASE_URL and Foundry's FOUNDRY_BASE_URL reroutes of first-party Anthropic models (#15434 by @will-bogusz)
  • Added AssistantMessage.elidedOutputTokens, the visible output tokens a history rewrite (shake) has removed from the turn, which usage.output still counts (#15446 by @will-bogusz)
  • Exported shouldDropTruncatedThinkingOnlyAssistant from providers/transform-messages, isColdReplayableResponsesTurn from providers/openai-shared and the new openAIResponsesReplaysNativeHistory from providers/openai-responses, so local token estimates can follow which turns replay drops and whether a session replays native history (#15447 by @will-bogusz)
Fixed
  • Fixed Claude on Google Antigravity failing every turn with "image exceeds 5 MB maximum" once a large image entered the conversation; images are now downscaled to the host's limits before sending, as on the Anthropic API (#15444 by @will-bogusz)

@oh-my-pi/pi-catalog

Breaking Changes
  • resolveInlineImageByteBudget(model, officialEndpoint) and resolveImageCountBudget(model, officialEndpoint) take whether the request reaches the official endpoint instead of reading compat.officialEndpoint, which misses request-time reroutes such as ANTHROPIC_BASE_URL; pass pi-ai's reachesOfficialEndpoint(model) (#15434 by @will-bogusz)
Added
  • Added Muse Wonder (muse-wonder-1.0) to Meta and Muse Code with its minimal–max effort ladder and pricing
  • Added the thinking-unverified rule axis: on hosts whose model list carries no capability metadata (Meta, Muse Code), unrecognized models now offer an opt-in thinking ladder (ThinkingConfig.unverified) instead of none
  • Added thinking-unverified axis for offering reasoning ladders on unclassified model IDs
  • Added Muse Wonder 1.0 model definition to Meta provider
  • Added the opt-in snapcompact-image-reads axis: snapcompact images a fresh read result only for readers whose rule sets it; Claude Opus 5.5 and later opt in (#14249 by @will-bogusz)
  • Added the image-count-budget rule for how many images one request may carry (Anthropic 90, Codex 200, other hosts unchanged) and the official-image-count-budget override that applies only on the official endpoint: Anthropic 600 (100 on 200k-window Claude models), Codex 2,000 (#15434 by @will-bogusz)
  • Added a 24 MB inline-image byte budget for the Codex backend, which now counts as its official endpoint at its default URL and at paths under it such as /codex/responses (#15434 by @will-bogusz)
  • Added isOfficialCodexApiUrl to wire/codex, moved from pi-ai (#15434 by @will-bogusz)
  • Added verified to image-tokenization rules, marking the Claude 4.7+ high-res tier and the GPT-5.5 to 6.1 and gpt-6-astra rules as matching measured provider billing (#15442 by @will-bogusz)
  • Added the image-max-edge axis and resolveImageMaxEdge() for hosts that shrink images before the model reads them; Cursor's Claude and GPT models and its default (Auto) route fit 1024×1024 (#15448 by @will-bogusz)
  • Added the thinking-replay-tokens axis; Claude lines set it to output on every host, since a replayed signed thinking block bills the turn's full reasoning, not the signature's bytes (#15446 by @will-bogusz)
  • Added a KDL opt-in for sibling subagent prompt-cache sharing, enabled for Muse Code's Spark 1.3, Wonder 1.0, and Wonder Full 1.0 variants over the Responses API (#15467 by @iliaal)
Changed
  • Updated model definitions and compatibility rules for provider metadata
  • Google Antigravity, xAI and Cursor requests keep up to 60 images, 20 for Claude on Antigravity and Cursor, up from 5; this counts snapcompact frames and live screenshots together (#15449 by @will-bogusz)
  • Snapcompact sizes archives at the frame prices measured for Antigravity Gemini (a fixed 1,089 tokens), Grok 4.6 to 4.20, and Claude Sonnet 4.6's standard tier (#15449 by @will-bogusz)
Fixed
  • Applied max-image-dimension

…

Release v18.10.2

Oh My Pi v18.10.2

@oh-my-pi/pi-agent-core Added Added AgentLoopConfig.onDetachedToolUpdate: a tool's onUpdate frames that arrive after its run's event stream ended (a returned call whose background job keeps reporting) reach it instead of being dropped; Agent forwards them to…

Read full notes

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

Added
  • Added AgentLoopConfig.onDetachedToolUpdate: a tool's onUpdate frames that arrive after its run's event stream ended (a returned call whose background job keeps reporting) reach it instead of being dropped; Agent forwards them to its subscribers as tool_execution_update events

@oh-my-pi/pi-ai

Added
  • Added support for CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS on the anthropic provider: when set, requests omit pre-release fields (context_management, beta tool fields such as strict and defer_loading, task budgets, structured-output format, thinking.block_binding, and Anthropic server compaction) along with their beta headers, so ANTHROPIC_BASE_URL gateways that reject them keep working (#15458 by @H4vC)

@oh-my-pi/pi-catalog

Added
  • Added the honors-claude-code-beta-kill-switch axis (compat.honorsClaudeCodeBetaKillSwitch), on for the anthropic provider, so a rule or models.yml override decides which providers honor CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS (#15458 by @H4vC)

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

Added
  • Added CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS support: set it to stop Anthropic requests sending experimental beta fields that a company ANTHROPIC_BASE_URL gateway rejects, such as the Sonnet 5.5 thinking.adaptive.block_binding 400 (#15458 by @H4vC)
  • Added the task.structured setting (default off) for structured task results: when on, the task tool accepts outputSchema/schemaMode and subagents return results through yield as before
Changed
  • Subagents spawned by the task tool now return their final message as plain text, with no yield tool, output schemas, or "Submit Result" fields; eval agent()/workpool spawns still return structured results
  • In Tern, a backgrounded bash command or eval cell keeps filling its own card with live output (In background, with a running clock) and settles it with the job's outcome, Cancelled when the job is killed; wait lists each job on one line (type, id, label, duration) instead of repeating its output
  • ACP clients now see a backgrounded call's job output stream into its tool call, which settles completed or failed with the job
Fixed
  • Fails unstructured task runs that conclude without a final message
  • Background task cards no longer stop updating once the agent ends its turn while the task is still running
  • Transparent images the model receives (small icons, oversized screenshots) keep their transparency instead of turning into a black square, and resized edges no longer pick up a dark fringe

@oh-my-pi/pi-natives

Added
  • Added in-process env, du, chmod, fold, rmdir, od, df, uptime, id, and dd shell builtins matching GNU coreutils 9.x options, output, and exit codes (chmod and id on Unix only; dd is disabled with the destructive set by PI_DISABLE_UUTILS_DESTRUCTIVE).
  • Added an in-process nl shell builtin (ported from uutils coreutils 0.8.0, matching GNU nl), with header/body/footer numbering styles including pBRE regex styles, logical-page section delimiters, -l blank-line grouping, and ln/rn/rz number formats.

@oh-my-pi/pi-tui

Added
  • Added opt-in /tree branch navigation across visible branches and nested fork depths; bind app.tree.previousBranch / app.tree.nextBranch (e.g. to Shift+Left / Shift+Right) in keybindings.yml (#12623 by @azain47).
Changed
  • The wait tool's native job rows (omp.wait.job) are a single row: badge, id and label, progress and clock, without the output preview or capture notice beneath
  • The native bash run foot reads In background with a live clock (omp.run.time without stopped) while a parked job's frames stream (details.async.state === "running", partial), instead of Running
  • Native model pickers (/model, the quick switch and the advisor's) mark providers with their logo (mark.icon: "provider:<id>", initials where the terminal has none), and every model row leads with its provider's mark
Removed
  • Removed the unused app.tree.foldOrUp / app.tree.unfoldOrDown keybinding ids, which no longer did anything.
  • Added parksAsBackground(toolName, details), asyncJobState(details), isSettledJobFrame(details) and settleWithJobFrame(component, frame, toolCallId) (chat/tool-execution): whether a returned call's card stays live for its background job's frames (task always; bash and eval under native rendering), the job state a frame reports, and settling the card with the job's last frame (a cancelled job keeps its output and seals as cancelled)
  • BashToolDetails.async.state and EvalToolDetails.async.state gain cancelled for a job killed before it finished

@oh-my-pi/pi-wire

Added
  • Added TspPickerMark.icon: an icon a picker mark draws instead of its initials when the terminal has it (provider:<id> names a model provider's logo)

What's Changed

Full Changelog: https://github.com/can1357/oh-my-pi/compare/v18.10.1...v18.10.2

Release v18.10.1

Oh My Pi v18.10.1

@oh-my-pi/pi-coding-agent Added Added a Copy button that leads the turn footer under an answer in Tern (⧉ · 2m13s · 71K tok · $0.85 this turn, in place of the clock), which copies that answer Changed Running agents and background jobs in Tern now share one…

Read full notes

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

Added
  • Added a Copy button that leads the turn footer under an answer in Tern (⧉ · 2m13s · 71K tok · $0.85 this turn, in place of the clock), which copies that answer
Changed
  • Running agents and background jobs in Tern now share one compact counter over the composer (an icon and a count each, the words on hover) instead of two "N running" pills; each count still opens its own sheet
  • In Tern, /session pin and /usage reset open the same picker sheet as the other small selectors (the active account checked, a confirm strip before a reset is spent, unusable accounts dimmed with the reason); the thinking level picker shows each level's depth as a meter, the plugin and queue mode pickers use badges (version, installed, scope, recommended) and plain-language names instead of bracketed text, and the theme picker no longer repeats "(current)" beside its check
  • In Tern, the text editor an extension opens (and the ask tool's custom answer and note) is now a sheet in the composer's place: the title over its details, the text written straight on the sheet, and Open in editor, Cancel and Submit buttons whose keys show in their tooltips instead of a keycap hint row
Fixed
  • Fixed grep on a single file showing in Tern as separate boxed snippets with no file row or syntax colors; it now looks the same as a grep over a directory

@oh-my-pi/pi-tui

Added
  • AssistantMessageComponent's native turn footer leads with a Copy icon (omp.turn.copy) and a dot instead of the clock icon; it copies the answer's text and shows when the host handles transcript actions
Changed
  • UserMessageComponent's native hover toolbar (omp.user.tools) leads with Copy and Rewind icon buttons (copy, rewind) instead of text labels, then a dot and the time, like the turn usage footer
  • ContextUsageView's native body (on terminals with meter) leads with the tokens used and the room left before auto-compaction, then one stacked bar ticked at the threshold, the breakdown as rows (omp.context.cat, .cat.free, .cat.buffer: swatch, name, tokens, share; the exact count in the row's title) and the snapcompact estimate as labelled rows (omp.context.snap); the blocks meter and legend kv are gone, and contextUsageHead no longer repeats the window size
  • AskDialogComponent's native root is omp.editor.ask (collapsed: omp.editor.ask.hidden, the countdown, the question as omp.ask.summary, Skip and Show): a chosen answer is the accent-toned row (a check also carries the check icon) instead of the highlighted one; multi-select Other… is omp.ask.other.check; the question tabs check answered questions and say their keys in the strip's title; the countdown moves from the head to the action bar beside Hide; the preview is omp.ask.preview; the Review tab leads with omp.ask.notice and lists answers (omp.ask.answers) by question name with inline code mono and no (Recommended) suffix; option descriptions run inline code mono, notes ride the row's detail as em; Submit/Next's tooltip names only Enter (and Space on a multi-select)
  • MCPAddWizard's native sheet asks one question per step: a phase strip (omp.mcpAdd.progress of omp.mcpAdd.phase, toned done/current/upcoming and neutral when no auth was needed), the question and its lead (omp.mcpAdd.title, omp.mcpAdd.tag for optional fields, omp.mcpAdd.lead), then a mono field with a placeholder and its rule or refusal (omp.mcpAdd.field, tone: "error"; omp.mcpAdd.note), choice rows with icons and mono tags (omp.mcpAdd.choices), status lines (omp.mcpAdd.status, omp.mcpAdd.checks, omp.mcpAdd.error) or the review rows (omp.mcpAdd.summary). Cancel, Back and Continue / Save server buttons run Ctrl+C, Esc and Enter instead of a key-hint strip. The connection test shows its own busy step, the OAuth client secret field is masked, and the review saves on Enter (no Yes/No choice)
  • ReportPanel's native body carries the role omp.report.body
  • HookInputComponent describes a dock sheet (omp.overlay.hook-input col) like HookEditorComponent's: the title's first line (omp.hook-input.title, the countdown as omp.hook-input.timer) over its further lines (omp.hook-input.detail), the field (omp.hook-input.field, tone: "error" while a submit was refused) with its placeholder, and Cancel / Submit buttons that run Esc / Enter; the key legend under the field is terminal-only
  • JobsSheet's native body is a master–detail split (omp.jobs.split: omp.jobs.master | omp.jobs.detail): the job list grouped Running / Recent (omp.jobs.group labels), each row a type icon tinted by status with its duration, beside the selected job's status pill, live elapsed and Cancel job (omp.jobs.status), its task title or command (omp.jobs.title / omp.jobs.command), facts (omp.jobs.facts: agent, directory, pids, exit code, artifact) and output (omp.jobs.out, omp.jobs.nooutput); the footer counts running and recent jobs (omp.jobs.summary), and no jobs shows an empty state (omp.jobs.empty). Task jobs no longer draw an agent node here
  • BtwHistoryPanel's native sheet is centered and reads like a mail reader: the questions as two-line rows (omp.btw.history, list omp.btw.list / omp.btw.list.idle while the answer has the keys) beside the selected thread (omp.btw.reader › omp.btw.thread › omp.btw.turn: omp.btw.question / omp.btw.followup, omp.btw.meta, omp.btw.answer, omp.btw.error), the follow-up field under the last answer (omp.btw.composer), and footer buttons Stop answer, Copy answer, Close and Follow up (Cancel and Send while composing) in place of the focus labels and key-hint strip; an empty history is an md sheet (omp.btw.empty)
Fixed
  • CountdownTimer's native elapsed no longer sends stopped: 0, which froze every native countdown (extension input, selector and editor prompts) at zero from the start
  • The native backend's focus now reaches a field inside an overlay/picker sheet hoisted into the layer from a dock component (the MCP add wizard, login), so that field shows the live caret and focus ring
  • MCPAddWizard keeps a refused name or URL in its field, clears a stale refusal on Back, ignores a connection test that settles after the user stepped back, and Edit OAuth settings after a failed sign-in opens the settings again instead of doing nothing

Full Changelog: https://github.com/can1357/oh-my-pi/compare/v18.10.0...v18.10.1

Release v18.10.0

Oh My Pi v18.10.0

@oh-my-pi/pi-catalog Changed Raised the default context window for openai-codex/gpt-6.1-sol and gpt-6.1-sol-wm from 272K to 500K, matching OpenAI's new Codex default; extended context still opens 922K (#15421) @oh-my-pi/pi-coding-agent Added Added /fork…

Read full notes

@oh-my-pi/pi-catalog

Changed
  • Raised the default context window for openai-codex/gpt-6.1-sol and gpt-6.1-sol-wm from 272K to 500K, matching OpenAI's new Codex default; extended context still opens 922K (#15421)

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

Added
  • Added /fork support for creating a new Tern pane while a turn is streaming, preserving the original session
  • Added omp session pack, omp session unpack and omp session moved to move a session with its artifacts to another machine and continue it there; resuming the copy left behind forks it instead of continuing it
  • Added omp auth export and omp auth import to carry model sign-ins to another machine
  • Added hiding a pending ask question without answering it: Alt+H (app.ask.hide) or the Hide button in Tern collapses the dialog to one line; the same key, Enter, or Show brings it back (#15400 by @H4vC)
Changed
  • Local IPC endpoints (daemon broker, LSP mux, IDA hosts, text prediction, omp stream, Collab discovery, local model workers) now run on a native transport: owner-only on every platform, including Windows named pipes; on Windows, daemons started by an older omp are not reused, so close older sessions after upgrading.
  • Output hidden behind an open ask dialog, command report or todo list now reaches terminal scrollback once it closes, rather than while it is still open (#15405 by @H4vC)
Fixed
  • Fixed every session loading its own copy of the local mnemopi embedding model and keeping it in memory until exit; one server per model is shared across sessions and exits after 15 idle minutes (#9908)
  • Fixed the first-use mnemopi embedding-model download never completing for sessions shorter than the download; it now finishes in the shared embedding server after the session exits (#10240)
  • Fixed RpcClient.stop() occasionally waiting forever because the agent process was never signaled.
  • Fixed blank rows opening under the input after an ask dialog, command report or todo list closed in a session that had filled the screen; the transcript now refills the screen (#15405 by @H4vC)
  • Fixed blank rows appearing between the last paragraphs of a streamed answer when the turn ended (#15405 by @H4vC)

@oh-my-pi/pi-natives

Added
  • Added IpcServer, IpcConnection, and ipcEndpoint: a local IPC transport over Unix sockets and Windows named pipes with owner-only access, single-instance binding, stale-endpoint takeover, and newline framing.
Changed
  • Optimized transport performance with task-local write coalescing and batch-based newline processing

@oh-my-pi/pi-tui

Breaking Changes
  • Removed RuntimeChildrenOptions.transient and Component.retireDisplacedTranscript: the composer now bills all chrome below the transcript at the smallest height it has rendered, so no root opts in or out (#15405 by @H4vC)
Added
  • Added the app.ask.hide keybinding (default Alt+H) and Hide/Show actions on AskDialogComponent, which collapse the dialog to a single line while its question stays pending (#15400 by @H4vC)
Changed
  • The OMP_TUI_DEBUG control socket now uses the native IPC transport: it is owner-only and no longer replaces a socket another live process is serving.
  • Transcript rows pushed aside by an open dialog, report or HUD now reach scrollback when it closes or newer output pushes them out, instead of while it is open (#15405 by @H4vC)
  • A transcript block straddling the top of the screen now sends only its off-screen rows to scrollback; the rest stays live (#15405 by @H4vC)
Fixed
  • Fixed blank rows opening under the editor after an ask or other inline dialog, command report or todo/loader HUD closed in a session that had filled the screen; the screen now refills with the transcript (#15405 by @H4vC)
  • Fixed the editor rising above blank rows when a live tool preview collapses under scrolled-off output; it now stays on the bottom row (#15405 by @H4vC)
  • Fixed blank rows opening inside a streamed answer when the working loader went away at the end of a turn (#15405 by @H4vC)
  • Fixed a split transcript block dropping punctuation-only rows it reveals after the split (such as a tool pane's rule line on expand); the seam now stops before them instead of treating them as already committed (#15420 by @H4vC)
  • Fixed a split transcript block fingerprinting measured rows instead of the bytes committed to scrollback, which could duplicate a SIXEL image prefix once its pending encode landed (#15420 by @H4vC)
  • Fixed a transcript block straddling the top of the screen losing its off-screen rows when the inline-image limit demoted its images to text in the same frame; those rows now reach scrollback as text
Removed
  • Removed Composer.pinInputToBottom(); the composer keeps the input on the bottom row by itself (#15405 by @H4vC)

@oh-my-pi/pi-utils

Added
  • Added getMnemopiEmbedRuntimeDir() for the shared mnemopi embedding server endpoints and logs.
Fixed
  • Fixed ChildProcess.kill() silently leaving the child running when the native process handle could not be resolved or used; it now signals the child directly and escalates to SIGKILL after the grace period.

What's Changed

Full Changelog: https://github.com/can1357/oh-my-pi/compare/v18.9.2...v18.10.0

Sunday, October 11Oct 11, 2026

Release v18.9.2

Oh My Pi v18.9.2

@oh-my-pi/pi-agent-core Changed Improved context caching for repeat turns, reducing redundant prompt processing and making subsequent turns faster when the system prompt is unchanged. @oh-my-pi/pi-ai Breaking Changes Renamed TypeSafeJudge to NativeJudge and…

Read full notes

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

Changed
  • Improved context caching for repeat turns, reducing redundant prompt processing and making subsequent turns faster when the system prompt is unchanged.

@oh-my-pi/pi-ai

Breaking Changes
  • Renamed TypeSafeJudge to NativeJudge and TypeSafeApiError to JudgmentApiError, including their associated option types. JUDGMENT_ROUTES has been removed; use isJudgmentApi or create a judge for catalog models with createNativeJudge(model, { apiKey }).
Added
  • Added native judge support for OpenAI’s Decisions API and Cloudflare Workers AI decision models, including the openai-decisions and workers-ai-systemone APIs. The auth gateway’s System One route supports both providers.
  • Added createNativeJudge(model, { apiKey, headers, fetch }) for creating judges from catalog models with their configured request model IDs and question limits.
  • Added Cloudflare Workers AI authentication with loginCloudflareWorkersAi, storing the API token and account ID; logging in again with the same token replaces the existing credential.
  • Added automatic question batching to NativeJudge for endpoints with question limits, with up to four concurrent batches and merged answers and usage reporting. Usage from successful batches is reported through partial-usage callbacks and both session and auth-gateway usage ledgers, even if another batch fails.
Changed
  • Improved Anthropic prompt caching for long conversations, reducing memory usage while selecting cache breakpoints.
Fixed
  • Fixed Devin-routed OpenAI models returning invalid_argument on every turn after an existing session was switched from openai-codex.

@oh-my-pi/pi-catalog

Removed
  • Removed parseCloudflareAiGatewayCredential, serializeCloudflareAiGatewayCredential, and CloudflareAiGatewayCredential from @oh-my-pi/pi-catalog/wire/cloudflare-ai-gateway. Use the equivalents from @oh-my-pi/pi-catalog/wire/cloudflare instead.

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

Fixed
  • Improved responsiveness when adding assistant text after tool calls in long transcripts.
  • Fixed apply_patch handling of context-free hunks when the target text appears multiple times.
  • Fixed find filename ranking and sketch scoring with judge endpoints that limit the number of questions per request.
  • Fixed omp gc --apply leaving temporary session files after an interrupted save.
  • Fixed omp auth-gateway serve handling of OpenRouter routing variants such as :floor and :nitro.
  • Improved validation errors for computer helpers with missing or non-string text arguments by identifying the helper and argument involved.
  • Fixed /tan forks incorrectly inheriting the parent task's subagent spending while preserving token counts.
  • Fixed omp:// documentation links so they open the corresponding files in source checkouts.
  • Fixed bare model IDs in models.yml incorrectly resolving to auto-discovered Ollama, llama.cpp, or LM Studio providers.
  • Added warnings when configured Ollama, llama.cpp, or LM Studio endpoints cannot be reached, identifying the relevant environment variable.

@oh-my-pi/pi-natives

Fixed
  • Fixed stalls when highlighting Markdown tool previews containing many inline spans or backslash escapes.

@oh-my-pi/pi-tui

Added
  • Added native TSP rendering support for Tern terminal sessions running inside tmux, with automatic session detection and safe title-setting behavior.
Fixed
  • Improved responsiveness when inserting assistant messages after tool calls in long transcripts.

@oh-my-pi/pi-utils

Changed
  • Improved streaming JSON parsing performance for tool arguments containing many string values.
Fixed
  • Fixed parsing of long strings that contain closing delimiters other than double or single quotes.

What's Changed

…

Release v18.9.1

Oh My Pi v18.9.1

@oh-my-pi/pi-ai Added Added compat.supportsThinkingBindingControls for Bedrock Converse: setting it to false stops prefix-bound Claude requests from sending thinking.block_binding, the thinking-binding-controls-2026-08-01 beta and the /input_transformations…

Read full notes

@oh-my-pi/pi-ai

Added
  • Added compat.supportsThinkingBindingControls for Bedrock Converse: setting it to false stops prefix-bound Claude requests from sending thinking.block_binding, the thinking-binding-controls-2026-08-01 beta and the /input_transformations response path, for gateways or regions that reject them (#15316 by @harshaygadekar)
Fixed
  • Fixed Bedrock Claude Fable 5.1 requests with thinking off and a forced tool choice sending the forced choice next to adaptive thinking; the choice now falls back to auto (#15316 by @harshaygadekar)

@oh-my-pi/pi-catalog

Added
  • Added the supports-thinking-binding-controls axis to Bedrock Converse models (on by default) so a rule or models.yml override can turn off Claude thinking-binding controls on hosts that reject them (#15316 by @harshaygadekar)

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

Added
  • Added supportsThinkingBindingControls to Bedrock compat in models.yml, so a Bedrock gateway or region that rejects Claude thinking-binding controls can turn them off (#15316 by @harshaygadekar)

@oh-my-pi/pi-natives

Fixed
  • Fixed executable scripts without a #! line failing with "Exec format error" in the embedded shell (#15271 by @iliaal).

@oh-my-pi/pi-tui

Fixed
  • Fixed inline charts and images leaving overlapping copies over text when moved, resized, replaced, or hidden, while preserving images in scrollback.

What's Changed

Full Changelog: https://github.com/can1357/oh-my-pi/compare/v18.9.0...v18.9.1

Release v18.9.0

Oh My Pi v18.9.0

@oh-my-pi/pi-agent-core Fixed Fixed stale queue updates when queued steering is adopted, withdrawn, or added to the transcript, ensuring queue listeners consistently receive the latest state. @oh-my-pi/pi-ai Breaking Changes Removed the retainTextSignature…

Read full notes

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

Fixed
  • Fixed stale queue updates when queued steering is adopted, withdrawn, or added to the transcript, ensuring queue listeners consistently receive the latest state.

@oh-my-pi/pi-ai

Breaking Changes
  • Removed the retainTextSignature option from consumeGoogleStream and streamGoogleGenAI; Google routes now consistently preserve text reply signatures.
  • Custom SessionsApi implementations must implement permits(provider, sessionId, credentialId).
Added
  • Exported matchesReplacementCredential and isSameOAuthAccount to help identify credential replacement and account ownership.
  • Added AuthStorage.sessions.permits(provider, sessionId, credentialId) for checking whether a stored account may serve a session restricted to an account pool.
  • Added judgeQuestions() for loading judge questions from JSON with inferred choice labels and answer types, plus renderQuestion() for templated instructions.
Changed
  • Devin chat turns now use the native Devin CLI sampling settings by default, while continuing to honor explicitly configured temperature, top-p, and stop sequences.
  • Added parentSessionId and minimizeEffort stream options. Branched side requests can reuse a conversation's prompt cache, and supported models can run them at their lowest effort without losing cache reuse.
  • Improved cross-host continuation for supported models so confirmed prior reasoning is preserved as reasoning context rather than exposed as <think> text in replies.
Fixed
  • Fixed Anthropic subscription quota not appearing in /usage when an OAuth token is supplied through ANTHROPIC_API_KEY.
  • Fixed custom OpenAI-compatible Responses streams truncating reasoning and incorrectly invoking custom tools with empty input.
  • Fixed Codex WebSocket prewarming so optional service tiers and model routing are handled consistently with normal requests.
  • Fixed OAuth sign-in result pages breaking or rendering injected markup when provider errors or callback values contain special characters.
  • Fixed Anthropic requests failing when tools are added to a conversation or when resumed sessions no longer include earlier tools.
  • Fixed Anthropic requests rejecting tall or oversized historical screenshots by resizing or re-encoding images to the host's limits.
  • Improved compatibility with Anthropic-compatible endpoints that reject prompt-cache options by retrying without unsupported caching features and reporting the disabled capability.
  • LiteLLM proxy logs now group requests by omp conversation instead of displaying a separate session for each request.
  • Fixed Gemini-family integrations echoing prior thinking as visible fenced thinking blocks; thinking is now restored as model reasoning across Google, Vertex, Antigravity, Gemini CLI, and Factory Droid routes.
  • Fixed Gemini-family integrations losing text reply signatures needed for subsequent requests across Google, Vertex, Antigravity, Gemini CLI, and Factory Droid routes.
  • Fixed Cursor integrations losing previously recorded reasoning, including signed and redacted reasoning, when continuing or resuming a conversation.
  • Fixed invalid auth.accountPolicies entries referring to unavailable accounts from preventing startup, account selection, or login; such entries are now skipped with a warning.
  • Fixed Factory Droid Claude turns with thinking disabled from replaying unsupported earlier thinking blocks, and aligned high-effort Sonnet 5.5 thinking behavior with the native client.
  • Fixed side requests for GPT-6 Responses and Codex models from losing prompt-cache context or applying unsupported reasoning-effort configuration changes.

@oh-my-pi/pi-catalog

Fixed
  • Fixed GLM-5.3-FlashX on Zhipu Coding Plan so bundled context, image, and reasoning-level capabilities are reported correctly.
  • Fixed OpenRouter Decisions endpoint derivation when the chat base URL has a trailing slash.
  • Fixed GPT-6.1 Sol Ultrafast usage pricing to apply OpenAI's published premium rates for the OpenAI API and Codex included usage.
  • Fixed GPT-6 Sol, GPT-6.1 Sol, and GPT-6 Luna so changing reasoning effort preserves prompt caching.

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

Added
  • Added browser target discovery and control, allowing agents to list the user's available pages and operate an already-open Tern browser block instead of opening a new view.
  • Added the ctx.annotations extension API for submitting and collecting /annotate feedback on text and diffs.
  • Added configurable Extra Context Files under /settings → Context, allowing custom instruction filenames without editing YAML.
  • Added optional composer predictions via composer.predictions, which suggest the user's next message as ghost text after each turn and support Tab or Right to accept the suggestion. Predictions use an additional model request and are included in session usage and /stats.
  • Added structured async job metadata exposing native job status and child-agent identity alongside the job ID.
  • Enhanced tui.autoGraph: smart with data-aware chart recommendations, including labels, grouping, ordering, shading, reference rows, measure direction, and suitable chart types.
  • Added retry.fallbackOn to restrict model fallback to quota errors (usage-limit) or to non-quota errors (except-usage-limit), while retaining any as the default.
  • Added omp usage reset commands to list saved Codex and Claude rate-limit resets and redeem a selected reset from the CLI, scripts, or auth-broker clients.
  • Added warnings for saved Codex and Claude resets that are nearing expiry, including affected accounts and redemption targets; interactive sessions also show a one-time conversation warning.
  • On macOS, the computer tool now keeps the display awake while operating and reports when the screen is locked or asleep.
  • Tern browser open results now indicate when a page is not currently visible, helping agents direct users to hidden picture-in-picture or omp-tab views.
Changed
  • Improved computer.window() failure messages by listing open windows grouped by application, with the requested application shown first.
  • Standalone binary updates and installers now use Stencil's build service with SHA-256 verification; recent updates use substantially smaller verified patches, and --binary --ref accepts release tags.
  • After an omp upgrade, an unused older browser relay started by omp is automatically replaced on the next browser call so relay fixes take effect without manual shutdown.
  • Saved Codex and Claude resets in non-interactive sessions are now automatically redeemed when they are about to expire, unless autoRedeem: no is configured.
  • Background Claude reset salvage now checks only accounts with eligible usage, reducing unnecessary usage-limit traffic.
  • Reasoning provenance is preserved when /btw answers are promoted or turns are moved, preventing provider summaries from being sent as model-generated reasoning.
Fixed
  • Fixed unconfigured judge roles incorrectly falling back to a Google Vertex Claude model instead of the configured tiny, smol, or default models.
  • Fixed omp --resume -p continuing stale todos instead of printing the answer and exiting.
  • Fixed /btw, IRC, and composer-prediction requests losing the conversation prompt cache on Codex and after thinking-level changes on GPT-6 models.
  • Fixed Tern browser operations on about:blank and no-op navigations hanging until timeout.
  • Fixed SDK and RPC sessions using stale MCP tool lists when servers changed during extension loading.
  • Fixed installing plugins from non-GitHub Git URLs and prevented inline credentials from being persisted in plugin metadata or lockfiles.
  • Improved recovery from repeated OpenAI Responses request timeouts during productive long-running sessions.
  • Fixed JavaScript eval syntax errors lacking source location and a useful code frame.
  • Fixed Collab sessions failing to reconnect after network interruptions or device sleep.

…

Saturday, October 10Oct 10, 2026

Release v18.8.9

Oh My Pi v18.8.9

@oh-my-pi/pi-ai Changed Updated state field rendering to trim trailing whitespace and normalize empty collection formatting for consistent prompt output @oh-my-pi/pi-coding-agent Added Added capability-driven extension terminal launches for tmux, Zellij,…

Read full notes

@oh-my-pi/pi-ai

Changed
  • Updated state field rendering to trim trailing whitespace and normalize empty collection formatting for consistent prompt output

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

Added
  • Added capability-driven extension terminal launches for tmux, Zellij, Herdr, and CMUX, with consolidated multiplexer detection, provider/shell capability feedback, and required POSIX-shell confirmation for shell-input launches; CMUX shell input preserves non-ASCII arguments and pane working directories (#13620 by @anatoli-tsinovoy).
  • Added /fork pane|window|tab to open a fork of the session in a new multiplexer pane or window while this session keeps running; bare /fork still forks in place (#13620 by @anatoli-tsinovoy).
  • Added Orca CLI-based launches for /fork pane|window|tab and ctx.ui.openTerminal(), with POSIX-shell confirmation; when Orca can only start a tab as a background terminal, the launch reports a warning instead of a visible tab (#13620 by @anatoli-tsinovoy).
Changed
  • CLI --fork now pairs tool calls the source session left unresolved with an unknown-outcome result, and /tan clones report such calls as unknown-outcome instead of aborted; forking a source whose process already exited keeps the process-exit recovery and pending-tool warning (#13620 by @anatoli-tsinovoy).
  • Table charts (tui.autoGraph) now cover before/after tables whose rows are different metrics (time, memory, counts): each row's change is drawn as a factor of its "before" value (48× less, +27%), and rows written in prose are skipped and named under the chart. A single column of scores like 12/12 is drawn as bars filling toward 100%
  • In terminals that speak the Tern Surface Protocol (Tern), the composer's bottom bar shows the git branch and its status beside the model chip when the status line has the git segment; it outlasts the other facts as the bar narrows, and clicking it opens /git (#15220 by @H4vC)
  • Table charts plot scores like 154/160 as the share of their total instead of the first number, and tables comparing two or three columns across four or more metrics now get a chart: a grid of one small panel per metric
Fixed
  • Fixed table charts failing on a table cell such as 3 constructor or 2 valueOf calls

@oh-my-pi/pi-tui

Breaking Changes
  • Removed the isInsideTmux(), isInsideZellij(), and isInsideHerdr() exports; use hasTerminalMultiplexerSession("tmux" | "zellij" | "herdr", env) instead (#13620 by @anatoli-tsinovoy)
Added
  • classifyTerminalMultiplexer() reports "orca" inside Orca terminals while isInsideTerminalMultiplexer() stays false there, so Orca keeps the direct-terminal render path; TERMINAL_MULTIPLEXER_ENV_KEYS lists every environment variable multiplexer detection reads (#13620 by @anatoli-tsinovoy)
  • Added terminalMultiplexerSessions(), terminalMultiplexerForTerm(), classifyTerminalMultiplexerModule(), and routeTerminalMultiplexerNotification(), driven by one multiplexer registry that now owns notification routing and per-multiplexer capability overrides (#13620 by @anatoli-tsinovoy)
  • Added change and progress table-chart kinds with ChartSpec.baseline and TableColumn.scores: a before/after table whose rows have their own units charts each metric as a factor of the baseline column (rows without two numbers are named in the caption), and analyzeTable reads whole-number scores (12/12, 154/160) as the percent of their total, keeping a / b pairs and lists as written
Changed
  • StatusLineComponent.describeComposerFacts() includes the configured git segment among the composer's facts (branch and status, the status.git click action, pinned so it outlasts the other facts) instead of leaving the branch to Tern's pane header (#15220 by @H4vC)
  • Small-multiple table charts with more than three panels and at most six categories draw as bands of per-metric panels with a color legend, and worthCharting counts their panels like categories
  • Table charts take the look of Apple's charts and Tern: a UI sans, hairline gridlines, rounded bars and cells, smooth lines over a soft area fill, dot legends, left-aligned category labels that never run off the edge, and axes labeled in one unit (0, 5k, 10k)
  • Line charts whose series differ 8× or more in size stack panels on their own axes instead of flattening the smaller lines, and their end labels no longer overlap
  • SVG figure series colors --c1…--c6 are an even-weight palette led by the theme accent's hue instead of syntax colors
Fixed
  • Fixed parseCell throwing on table cells such as 3 constructor or 2 valueOf calls, and reading a constructor cell as a missing value

@oh-my-pi/pi-utils

Added
  • Added hueDistance, the angular distance between two OKLCH hues

What's Changed

Full Changelog: https://github.com/can1357/oh-my-pi/compare/v18.8.8...v18.8.9

Release v18.8.8

Oh My Pi v18.8.8

@oh-my-pi/pi-agent-core Added Added Agent.setModelResolver() to fit every model an agent adopts (via setModel, starting with the current one) before it is used (#15048 by @H4vC) Added CompactionSettings.baseWindowTokens: when set, resolveThresholdTokens()…

Read full notes

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

Added
  • Added Agent.setModelResolver() to fit every model an agent adopts (via setModel, starting with the current one) before it is used (#15048 by @H4vC)
  • Added CompactionSettings.baseWindowTokens: when set, resolveThresholdTokens() scales its percentage or reserve-based threshold from that base instead of the full context window (#15065 by @H4vC)
Fixed
  • Fixed OpenAI V1 remote compaction re-attaching a prior Anthropic native payload after a successful compact (#15041 by @PaleRoses)
  • Fixed resolveThresholdTokens() clamping a positive thresholdTokens to baseWindowTokens; a fixed threshold is checked against the real window, and the base only rescales the percentage and reserve policies (#15074 by @H4vC)
  • Fixed resolveThresholdTokens() clamping a fixed thresholdTokens at or past the context window to one token below it, so compaction fired only after the next request overflowed; it now clamps to the window less the reserve (#15146 by @will-bogusz)

@oh-my-pi/pi-ai

Fixed
  • Fixed OpenAI Responses and Codex tool calls running with empty {} arguments when a compatible host or proxy ends the call with an empty arguments payload after streaming the real ones (#15099 by @will-bogusz)
  • Fixed truncated Factory Droid Gemini responses ending as a hard error or a half-received tool call instead of being retried (#15103 by @will-bogusz)
  • Fixed Factory Droid Gemini ignoring an error the server reports mid-response, which hid its status and retried errors that cannot succeed (#15103 by @will-bogusz)
  • Fixed resumed OpenAI Responses sessions (xAI, Factory Droid, OpenAI and other hosts) dropping all earlier encrypted reasoning on their first request; GitHub Copilot still rebuilds history until its first response (#15148 by @will-bogusz)

@oh-my-pi/browser-relay

Fixed
  • Fixed tabs a relay client asks to open in the background being created as the selected tab (#15109 by @will-bogusz)

@oh-my-pi/pi-catalog

Added
  • Added the connection-bound-native-history rule axis for Responses hosts that reject native history items from an earlier connection, set for GitHub Copilot (#15148 by @will-bogusz)
Fixed
  • Fixed Devin's discovered models not marking the account's default model, the one Devin's own CLI starts the account on (SWE-2 High on Pro, SWE-1.6 Slow on Free); when it is an effort lane of a family, the family starts at that effort. Cursor's discovered models no longer carry that marker, so Cursor keeps its existing startup selection (#15115 by @will-bogusz)

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

Added
  • Added /jobs kill <id>|all to cancel a running background job (or every one this session owns) from the command line, even while the agent is busy (#14160 by @KanwarGill)
  • Added omp anonymize [session] [-o dir] to write a shareable copy of a session and its subagent transcripts: only an explicit allowlist of omp metadata (ids, timestamps, models, usage, built-in tool names and options) is kept; message, thinking, and tool-output text become size-annotated [redacted …] markers; tool-call paths become mock paths (/home/seg3/seg4/src/seg9.ts:10-20), shell commands keep known programs and flags, other literals such as a grep pattern become PLACEHOLDER_N, and extension or MCP payloads are redacted whole, with the same original always mapping to the same token across files (#15077 by @H4vC)
  • Added /dump anon, which writes the same anonymized session and subagent JSONL to a zip in the temp directory and copies its path (#15077 by @H4vC)
  • Added message times to /dump transcripts (assistant turns also show request duration and time to first token), and live status, last activity, pending tool calls, and the partially streamed turn to /dump all files for subagents still running, so a stuck subagent can be diagnosed from the archive (#15121 by @H4vC)
  • Added contextFiles.extra to load extra instruction files, such as AGENTS.local.md, beside the usual context file (#15147 by @Shadorain).
  • /annotate opens the note you are writing, a file or typed-prompt source, or (for local diff reviews) the current working-tree file in $VISUAL or $EDITOR with the external-editor key (Ctrl+G by default); a file source is saved back and its notes follow the edited text (#15151 by @Shadorain)
Changed
  • A /models compaction limit set past a model's standard context window now runs that model on its extended window instead of being silently clamped; the hub warns (noting long-context pricing) and saves on a second Enter, in the terminal and in Tern, and rejects limits past the model's largest window (#15048 by @H4vC)
  • A token compaction limit set in /models (or compaction.modelThresholds) is now the base omp scales with its usual policy, as if it were the model's window (85% of it by default for bases above ~109k, or compaction.thresholdPercent of it), instead of the exact point. Plain numbers saved since 18.8.5 therefore compact earlier; rewrite one as "f<tokens>" (or type f400k in the hub) to keep it an exact trigger. The /models limit field shows where the model would compact as you type (compacts at 340K · 85% of 400K base), the preview's Compacts at row says why, and the saved message repeats it (#15065 by @H4vC)
Fixed
  • Fixed /usage (or clicking the status-line cost) while the usage dashboard was already open stacking a second dashboard on top; it now focuses the open one (#15145 by @H4vC)
  • Fixed the browser tool prompt not documenting observe()'s viewportOnly and includeAll options, or that open/close/run timeouts are seconds clamped to 1–300 while waitFor* timeouts are milliseconds (#15104 by @will-bogusz)
  • Fixed browser relay pages opened in the background (browser.newPage({ background: true }) in tab.run

…

Friday, October 9Oct 9, 2026

Release v18.8.7

Oh My Pi v18.8.7

@oh-my-pi/pi-ai Added Added routing-session cleanup for OpenAI Responses and Codex while preserving shared provider fallbacks (#14334 by @iliaal). Fixed Fixed Claude Haiku 5.5 requests silently enabling adaptive thinking when reasoning is off, on native…

Read full notes

@oh-my-pi/pi-ai

Added
  • Added routing-session cleanup for OpenAI Responses and Codex while preserving shared provider fallbacks (#14334 by @iliaal).
Fixed
  • Fixed Claude Haiku 5.5 requests silently enabling adaptive thinking when reasoning is off, on native Bedrock (main and helper calls) and the Anthropic API; conversations whose earlier effort controls rule out disabled thinking fall back to lowest-effort adaptive thinking instead of failing (#14996 by @bse-ai).
  • Fixed /session pin being ignored when every stored account is quota-blocked, which routed the next request to a different exhausted account instead of the pinned one (#14997).
  • Fixed minimax-code-cn sessions staying pinned to a key whose Token Plan quota is exhausted (用量上限 429) instead of rotating to a sibling credential (#15053).

@oh-my-pi/pi-catalog

Added
  • Added built-in CoralBricks support with /login, live model discovery, per-model reasoning levels and off controls, and bundled offline fallbacks. (#14146 by @ryan-brosas)
  • Added gen:models --provider <id> to update one provider without changing other providers' catalog snapshots. (#14146 by @ryan-brosas)
Fixed
  • Fixed Claude Haiku 5.5 thinking Off to request explicitly disabled thinking on every host serving its adaptive thinking (#14996 by @bse-ai).

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

Added
  • Added automated release binary publication to build.stencil.so
  • Added OSC 7501 program status reporting: terminals and agent inboxes that support it now show whether omp is working, waiting on your answer or approval (with the question), done, or failed (with the error), without parsing the window title. Turn it off with terminal.programStatus.
  • Added title cards (icon and short code) to /rename: the title model picks one for a title you type, or for a generated title when the session has no card yet; title.icons: boring keeps renamed titles plain.
  • Grammars for less common languages (Kotlin, Swift, Ruby, PHP, Haskell, Verilog, and others) are now downloaded on first use for code summaries, block context, ast_grep, ast_edit, and TTSR rules; offline, files in those languages are skipped with a note instead of failing. PI_GRAMMARS_URL overrides the download location.
  • Added bash.gitGuard (default off) for checkouts shared by concurrent agents: the bash tool refuses git stash, git reset --hard or to another commit, and git checkout/switch/restore that would overwrite working-tree files unless a merge or rebase conflict is being resolved; unstaging stays allowed, and commands are judged as they actually run, including inside substitutions, functions, and after cd.
Changed
  • Updated write tool error message to mention local:// scratch support
  • Web search now tells the agent about its X post operators (site:x.com, from:<handle>) when you are logged in to xAI, so questions about reactions on X reach X search.
  • Reduced memory retained after merging unchanged discovered and cached models (#14252 by @iliaal).
  • The default smol model now prefers Claude Haiku 5.5 when it is available.
  • Automatic session titles now start when the agent's reply begins rather than when you submit, so a slow-thinking first reply gets a card title (icon and code) instead of a plain fallback title.
  • read file.jsonl?q=… keeps the other lines' results when a line before the last fails and shows jq's error ahead of them, instead of failing the read; anything else the query wrote to stderr, such as debug output, now leads the result too (#14659 by @will-bogusz)
  • Title card icons now picture each session's specific subject instead of a generic bug, flask, speedometer, gear, or terminal, or the project's language logo, so sessions in the same project are easier to tell apart.
  • Agents whose tool list omits write but still get it to run xd:// tools can now also write local:// files (reports, notes) outside plan mode; working-tree writes stay blocked.
  • Added worktree.onStart and worktree.onExit settings to start each session in its own worktree and clean it up on exit (#14908 by @gitpushoriginmaster)
  • Added speech.speed and tts.localSpeed settings (0.5–2.5, default 1) to speed up or slow down local Kokoro speech for live vocalization and the tts tool / omp say, plus an omp say --speed flag; ACP voice clients find both settings and their presets in speech.models.list (#5868)
  • omp update and the startup update notice leave an omp installed by another app (Tern) to that app instead of replacing its files.
  • The startup update notice no longer appears when omp runs from a source checkout.
Fixed
  • Reduced memory growth after one-shot side requests without interrupting ongoing conversations (#14334 by @iliaal).
  • Fixed sessions staying untitled when you interrupted the first reply to send a queued steer message.
  • Fixed browser downloads saving into another tab's downloads folder, and tab.waitForDownload() saving into the system Downloads folder once another tab closed; each tab in a Chromium omp launched or spawned now saves into its own, iframe downloads included. In those browsers a download no tab tracks (started by a page omp did not open, or finishing after its tab closed) now keeps Chromium's GUID file name instead of its suggested name; connected and relay browsers keep real file names (#14544 by @will-bogusz)
  • Fixed browser calls in relay mode failing with "The browser relay … is out of date" after an omp upgrade until the old relay was killed by hand; omp now restarts a relay it started itself under an older version (#14416 by @will-bogusz)
  • Fixed /rename without a title dropping the session's title card (icon and short code) (#14980)
  • Fixed title cards showing the emoji instead of the Nerd Font icon when the model misremembered the icon's name: dashes for underscores (nf-md-text-box), the wrong icon set (nf-md-spinner for nf-fa-spinner), or reordered, missing, or extra words (nf-md-test for nf-md-test_tube).
  • Fixed omp update ignoring the update.channel setting: canary users were checked against stable releases, and --canary/--stable were never remembered.
  • Fixed interrupting a reply to send a queued steer message briefly showing omp as idle (title, progress, working indicator) before the steer ran; RPC and SDK clients also no longer see a final agent_end for that interrupt.
  • Fixed browser tab recordings and video frame/contact-sheet extraction creating omp-browser-recording-* and omp-video-* scratch directories in your working directory instead of the system temp directory.

…

Thursday, October 8Oct 8, 2026

Release v18.8.6

Oh My Pi v18.8.6

@oh-my-pi/pi-agent-core Added Added support for warm-cache-aware conversation pruning, keeping pruned history within the model’s prompt-cache lookback window while preserving Anthropic prompt-cache efficiency. Added AgentLoopConfig.hasQueuedAsides (also…

Read full notes

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

Added
  • Added support for warm-cache-aware conversation pruning, keeping pruned history within the model’s prompt-cache lookback window while preserving Anthropic prompt-cache efficiency.
  • Added AgentLoopConfig.hasQueuedAsides (also available on Agent) to allow interruptible waits to detect queued asides without consuming them or signaling other tools.

@oh-my-pi/pi-ai

Fixed
  • Fixed Google Gemini and Cloud Code Assist (Antigravity) requests failing when tool schemas contain unsupported JSON Schema keywords or fields that allow multiple types.
  • Fixed auth broker account selection and usage-limit enforcement to consistently use the selected account’s quota when multiple accounts are present.
  • Fixed Anthropic-family model streaming so encoded marker tokens are decoded correctly in text, tool-call updates, partial messages, and completed tool calls.

@oh-my-pi/pi-catalog

Added
  • Added prompt-cache lookback support for Claude models across all hosts, including the public prompt-cache-lookback catalog axis and resolvePromptCacheLookback API.
Fixed
  • Fixed model discovery when providers publish models before they are recognized by the catalog; unsupported models are now skipped with a warning so other available models remain discoverable.

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

Added
  • Added per-session Git worktree support with worktree.onStart and worktree.onExit settings to create an isolated worktree for each session and clean it up when the session ends.
  • Expanded xAI web search with X post search, including X-only and author-specific queries, author exclusions, date and recency filters, and automatic xAI routing when credentials are available.
  • Added xAI-powered reading of X posts, threads and replies, profiles, searches, and hashtags when logged in, replacing the unavailable Nitter mirrors.
Changed
  • Web search now prefers an authenticated xai-oauth login over an xai API key when both are available, unless modelProviderOrder specifies a different order.
Fixed
  • Fixed judge-gated features continuing to use a stale model chain after switching judge roles.
  • Improved Anthropic prompt-cache reuse when pruning tool results from long conversations.
  • Fixed resumed Claude sessions losing earlier thinking context and prompt-cache reuse when extensions or MCP tools were registered before the first message.
  • Fixed subagent advisors configured with @advisor using the built-in slow model instead of the configured advisor role.
  • Fixed the /switch command and alternate model picker crashing when stored model speed statistics contained an unnamed model.
  • Fixed lsp and generate_image attempting to read FIFO, terminal, or unbounded device paths, which could hang or exhaust memory.
  • Fixed aside messages from extensions being blocked behind a running wait operation.
  • Fixed extensions importing @oh-my-pi/pi-tui/native/* failing to load in compiled omp binaries.
  • Fixed raw token markers appearing instead of Nerd Font icons in Anthropic idle recaps, /btw and /omfg replies, and streaming previews.
  • Fixed sessions moved with /wt disappearing from resume lists; sessions in Git worktrees now remain discoverable and can be resumed or relocated if their worktree was removed.
  • Fixed live config reload ignoring edits made during startup or right after a config symlink was retargeted, until the next unrelated edit.

@oh-my-pi/pi-tui

Changed
  • Improved rendering performance for streaming long Markdown lists while preserving nested items, numbering, and reference links.
Fixed
  • Added package exports for the native Tern/TSP modules, allowing extensions in compiled omp binaries to import them.
  • Fixed the Tern /model picker's Roles tab so typing and Backspace consistently edit the search field without triggering role commands.
  • Fixed the session picker so sessions retain and display their directory when switching between the current folder and all-project views.

What's Changed

New Contributors

Full Changelog: https://github.com/can1357/oh-my-pi/compare/v18.8.5...v18.8.6

Release v18.8.5

Oh My Pi v18.8.5

@oh-my-pi/pi-ai Added oauth.refresh(id, signal, { reason: "auth-recovery" }) forwards provider-401 recovery intent to a delegated (auth broker) refresh, and AuthStorageOptions.refreshOAuthCredentialMints marks a refreshOAuthCredential hook that exchanges…

Read full notes

@oh-my-pi/pi-ai

Added
  • oauth.refresh(id, signal, { reason: "auth-recovery" }) forwards provider-401 recovery intent to a delegated (auth broker) refresh, and AuthStorageOptions.refreshOAuthCredentialMints marks a refreshOAuthCredential hook that exchanges tokens itself so its tokens are reused for auth recovery (#14752 by @will-bogusz)
  • SessionsApi.inherit accepts an optional filter, called with each provider and whether the source's affinity is an explicit user pin, to copy only the affinities it accepts (#14749 by @will-bogusz)
Changed
  • AuthApiKeyOptions.accountIds also matches the login email, or else the project id, of credentials that carry no account id (see oauthAccountKey), so Antigravity requests prefer accounts that serve the requested model (#14924).
Fixed
  • Fixed accounts sitting exactly at their reservePct (e.g. 70% used with a 30% reserve) still being picked and reported healthy instead of being held in reserve (#14765 by @will-bogusz)
  • Fixed oauth.accessById with forceRefresh returning the stored token unchanged while it was still valid; it now re-mints that one account (through the auth broker when configured) and returns that account's token even if another row is removed meanwhile (#14752 by @will-bogusz)
  • Fixed omp -p and other short-lived auth-broker clients missing from omp usage clients: usage still waiting for the 10-second report batch is now sent to the broker before the process exits (#14899 by @will-bogusz)
  • Fixed Cursor web fetches that were cut off by a dropped connection disappearing from resumed and rebuilt sessions; they now show as interrupted (#14819 by @jchanghong023)
  • Anthropic hosted web search can honor custom providers' OAuth-style request shaping and configured headers consistently with conversations (#14919 by @farnoy)

@oh-my-pi/pi-catalog

Breaking Changes
  • googleAntigravityModelManagerOptions takes resolveAccounts instead of oauthToken, and fetchAntigravityDiscoveryModels returns a roster or credential-rejection result instead of a bare list (#14924).
Fixed
  • Fixed Claude Haiku 5.5 on Cursor showing as unpriced; it now uses Cursor's $0.10/$0.50 rate card and 5x long-context tier above 100K input tokens (#14890 by @eggpeat).
  • Fixed Claude Haiku 5.5 on GitHub Copilot pricing cache reads and writes at $0 on both the standard and -1m long-context rows, and the -1m row billing the 5x long-context band a second time above 100K input tokens (#14890 by @eggpeat).

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

Added
  • Added per-model auto-compaction points: the /models preview shows where each model compacts, and in the Roles view k (or the Compaction limit button) sets it for the selected role's or fallback's model (90000, 90k, 1M, 80%; empty resets). Also configurable as compaction.modelThresholds with provider/model-id or provider/* keys (#14952 by @H4vC)
Fixed
  • Fixed omp usage reporting an account exactly at its reserve (e.g. 30% left with a 30% reserve) as eligible instead of inside reserve (#14765 by @will-bogusz)
  • Fixed the todo reminder pushing the agent to keep working after it offered options and asked the user to choose (#14800 by @mrmans0n)
  • Fixed the todo reminder telling the model to keep working right after it asked the user a bolded or italicised question (#12051, #14353 by @F0Rextasy)
  • Fixed short model selectors such as p/a:max or a:max dropping their explicit thinking level when a role was reassigned or used for image questions; a model whose ID literally ends in :max or :auto is still treated as that model (#14554 by @xiangnan0811)
  • Fixed starting a subagent switching the parent session's later language servers from shared to private (#14628 by @jorgoose)
  • Fixed a finishing subagent cancelling local tiny-model requests (titles, task labels, judgments) still running for the parent or other subagents (#14629 by @jorgoose)
  • Fixed rust-analyzer on Windows not running through a running lspmux server, as it already did on Linux and macOS (#14630 by @jorgoose)
  • Fixed a malformed or unreadable project plugin-overrides.json being ignored silently, which re-enabled project-disabled plugins without a trace; omp now logs a warning naming the file (#14518, #14573 by @oleg494)
  • Fixed Claude Opus 5.5 and Sonnet 5.5 disappearing with mixed-access Google Antigravity accounts; models now route to accounts that serve them, and revoked accounts no longer block catalog refresh (#14924).
  • Fixed clipboard-pasted image chips opening a nonexistent file instead of the image, including after /move (#14927).
  • Fixed clipboard-pasted image chips opening the auto-resized copy sent to the model instead of the image as pasted (#14929)
  • Fixed omp token <provider> --account N --force-refresh printing the stored token unchanged while it was still valid; it now re-mints that account. Security scans pinned to one account, including Codex Security cloud requests, refresh it after a 401 and may reuse a still-usable token minted in the previous five minutes, as omp auth-broker serve now also may for its clients' 401 recovery (#14752 by @will-bogusz)
  • Fixed revived subagents moving to the parent's automatically chosen account and re-writing their whole prompt cache instead of staying on the account that served their earlier turns; a parent's explicit /session pin still moves them (#14749 by @will-bogusz)
  • Fixed a fallback chain switching back to a usage-limited primary model every 30 minutes, failing a request each time, when the provider's usage report showed a later reset; the session now stays on the fallback until that reset (#14757

…

Release v18.8.4

Oh My Pi v18.8.4

@oh-my-pi/pi-ai Breaking Changes AuthBrokerClient.notifyUsageStale and UsageLedgerStore.invalidateUsageCache (including RemoteAuthCredentialStore.invalidateUsageCache) now take an optional leading provider argument: the signature is (provider?: string,…

Read full notes

@oh-my-pi/pi-ai

Breaking Changes
  • AuthBrokerClient.notifyUsageStale and UsageLedgerStore.invalidateUsageCache (including RemoteAuthCredentialStore.invalidateUsageCache) now take an optional leading provider argument: the signature is (provider?: string, signal?: AbortSignal) instead of (signal?: AbortSignal) (#14761 by @will-bogusz)
Added
  • Auth gateway route option excludeProviders leaves those providers' accounts out of /v1/usage and /v1/credentials/check (#14755 by @will-bogusz)
Fixed
  • Fixed a single-provider usage refresh from an auth broker client (omp usage invalidate --provider, Codex auto-redeem, a saved-reset redeem) wiping the broker's cached usage for every provider, so other accounts showed no usage on every client until their next successful probe (#14761 by @will-bogusz)
  • Fixed Anthropic sessions missing the prompt cache a second time after the API dropped thinking blocks from a changed conversation (#14748 by @will-bogusz)
  • Fixed Cursor logins never renewing: every refresh was rejected with "Invalid User API Key", so logins lapsed about 60 days after sign-in; a session Cursor has ended is now disabled with a re-login hint (#14753 by @will-bogusz)
  • Fixed the auth broker logging caller-supplied X-Forwarded-For / X-Real-IP values and unknown request paths; peers come from the socket unless trustProxyHeaders is set (#14762 by @will-bogusz)
  • Fixed false thinking-loop detections on Gemini, DeepSeek, and Grok when the model drafts or answers with repetitive code or markup (VRML, SVG, JSON); such output is no longer discarded and retried.
  • Fixed Cursor provider leaking conversation checkpoints, blob stores and abort listeners after requests end (#14669 by @H4vC)
  • Fixed session-affinity pins growing without bound in long-lived gateways (now capped at 256 sessions per provider) (#14672 by @H4vC)
  • Fixed completed Cursor turns failing with "Cursor stream ended before turnEnded" when the connection closed after the answer had fully arrived (#14851 by @kyle-elliott-asymptote).
  • Fixed Cursor provider errors that Cursor marks as not retryable being retried until the retry budget ran out (#14851 by @kyle-elliott-asymptote).

@oh-my-pi/pi-catalog

Fixed
  • Fixed Claude Haiku 5.5 opening at its full 1M window on Amazon Bedrock, Google Vertex, and other non-Anthropic hosts: every priced host now carries the 5x pricing band above 100K input tokens, so the window stays at 100K unless extended context is on (#14903 by @H4vC).

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

Changed
  • Agent Hub keeps existing agents in place while open; new agents appear first in the flat roster or within their tree sibling group (#13066 by @kmccleary3301)
Fixed
  • Fixed omp auth-broker serve logging every client as unknown (or as whatever a caller put in X-Forwarded-For); it now logs the socket address, with --trust-proxy-headers for brokers behind a reverse proxy (#14762 by @will-bogusz)
  • Fixed relative file links in Tern assistant replies opening against the folder omp was started in after /wt or /move; they now open the file in the session's working directory (#14879 by @H4vC)
  • Fixed the BTW history, git shortcuts, and autoresearch sheets in Tern having no Close button, and the plan review sheet having no Cancel button (#14894 by @H4vC)
  • Fixed the agent transcript viewer and /annotate review in Tern having no clickable way out; both now show a clickable esc at the top right (#14894 by @H4vC)
  • Fixed the /move folder picker in Tern having only key hints; Accept (Tab), Cancel (Esc) and Confirm (Enter) are now clickable buttons (#14894 by @H4vC)
  • Fixed omp usage listing a second "7 days … not reported" row for a Codex account that reports only a weekly window, and misaligning its rows against accounts that report a 5-hour window too (#14760 by @will-bogusz)
  • Fixed omp auth-gateway serve showing the usage and credential health of providers listed in disabledProviders, account emails included, on /v1/usage and /v1/credentials/check (#14755 by @will-bogusz)
  • Fixed omp usage --history on auth-broker clients always reporting no recorded history; it now reads the broker host's history, as omp usage clients already does (#14758 by @will-bogusz)
  • Fixed omp usage --history and omp usage clients dying with a stack dump when the auth broker is unreachable or lacks the endpoint; they now print a one-line error and exit nonzero
  • Fixed omp usage --history showing two Codex accounts that share an email under the same name; they now carry the same qualifier as omp usage (#14767 by @will-bogusz)
  • Fixed --model, /model and /switch with a bare id that several logged-in providers carry ignoring modelProviderOrder and recent use; they now pick the same provider as modelRoles, and omp bench, compress, cleanse and the stdio auth gateway follow the same ranking (#14517 by @will-bogusz)
  • Fixed omp usage --provider <id> blaming a missing usage endpoint when no credentials are stored for that provider, and omp usage invalidate --provider <id> reporting success for it; both now list the providers that have credentials (#14763 by @will-bogusz)
  • Fixed omp usage labelling an exhausted account "inside reserve" on its account-policy line; it now says "exhausted" (#14764 by @will-bogusz)
  • Fixed /new keeping plan mode (and its plan-role model) or goal mode active in the new session (#14653)
  • Fixed parallel first bash calls each spawning an rc-sourcing shell (#14680 by @H4vC)

…

Wednesday, October 7Oct 7, 2026

Release v18.8.3

Oh My Pi v18.8.3

@oh-my-pi/pi-ai Added Added OAuthRefreshUnavailableError, a retryable error that keys.getWithCredential and oauth.access reject with when every usable OAuth credential failed to refresh transiently; keys.get resolves undefined instead so availability probes…

Read full notes

@oh-my-pi/pi-ai

Added
  • Added OAuthRefreshUnavailableError, a retryable error that keys.getWithCredential and oauth.access reject with when every usable OAuth credential failed to refresh transiently; keys.get resolves undefined instead so availability probes move on to their next candidate (#14843 by @H4vC)
Fixed
  • Fixed a single transient OAuth token-refresh failure (network blip, timeout, 5xx) ending a running session, including subagents restricted to an account pool, with a non-retryable "No API key for provider" error while the stored credential was still valid; the refresh error now surfaces and the request is retried (#14843 by @H4vC)

@oh-my-pi/pi-catalog

Added
  • Added Claude Haiku 5.5 with adaptive thinking (low through max effort), image input, a 1M-token context window, 128K output, and its tiered pricing above 100K input tokens.

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

Fixed
  • Fixed repeat opens of the model picker, model hub, or agents views stacking duplicates; the open one is brought forward instead (#14846 by @H4vC)

What's Changed

Full Changelog: https://github.com/can1357/oh-my-pi/compare/v18.8.2...v18.8.3

Release v18.8.2

Oh My Pi v18.8.2

@oh-my-pi/pi-catalog Fixed Fixed Anthropic requests carrying too many inline screenshot bytes by exposing a provider image-byte budget, applied only on the official endpoint (#14453). @oh-my-pi/pi-coding-agent Fixed Fixed long Anthropic sessions with repeated…

Read full notes

@oh-my-pi/pi-catalog

Fixed
  • Fixed Anthropic requests carrying too many inline screenshot bytes by exposing a provider image-byte budget, applied only on the official endpoint (#14453).

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

Fixed
  • Fixed long Anthropic sessions with repeated tool screenshots exceeding the request-size limit; live images are now trimmed by bytes, recoverable 413s may compact older history, and terminal subagent failures reach the parent (#14453).
  • Fixed Tern browser tabs opened with a url returning before the page loaded, which made the first observe() or title() read the blank page.
Removed
  • Removed per-call model overrides from task, eval agent(), and workpool(); subagents use configured agent models and settings.

@oh-my-pi/pi-tui

Removed
  • Removed per-call model fields from task parameter types.

What's Changed

Full Changelog: https://github.com/can1357/oh-my-pi/compare/v18.8.1...v18.8.2

Release v18.8.1

Oh My Pi v18.8.1

@oh-my-pi/pi-agent-core Added Added the public validateAgentToolArguments() API for consistent, lenient-aware validation of agent tool arguments across agent and coding-agent workflows. @oh-my-pi/pi-ai Added Added session restrictions for OAuth account pools…

Read full notes

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

Added
  • Added the public validateAgentToolArguments() API for consistent, lenient-aware validation of agent tool arguments across agent and coding-agent workflows.

@oh-my-pi/pi-ai

Added
  • Added session restrictions for OAuth account pools via AuthStorage.sessions.restrict, limiting selection, fallback, rotation, and authentication to specified accounts until the returned lease is released with sessions.unrestrict. API keys and other accounts are not used when a session is restricted.
  • Exported resolveCredentialIdentityKey for determining the identity key used to match credentials with broker account pools and session restrictions.
Fixed
  • Fixed Codex Fast (priority) and Ultrafast usage being recorded, billed, and reported as Standard when the backend echoed a default service tier; the requested tier is now preserved in usage and performance records.

@oh-my-pi/pi-catalog

Fixed
  • Fixed Codex Fast (priority) pricing to use OpenAI’s 2.5× included-usage rate for supported models, excluding GPT-5.5 and GPT-6 Astra.
  • Fixed GitHub Copilot models with tier-specific prompt limits incorrectly defaulting to the long-context window.

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

Added
  • Added account pools for task agents, allowing an agent and its related work—including advisors, title generation, subagents, and resumed sessions—to use only specified OAuth accounts and fail rather than fall back to another account or an API key.
  • Added omp usage accounts to list OAuth account provider and identity keys without exposing tokens, making account-pool configuration easier.
Changed
  • Generated session titles now include their card icon and short code, so the /resume picker and session listings show this context; title.icons applies to newly generated titles.
  • Symlinked routing configurations now reload when an intermediate file or profile-directory link is replaced, without requiring a session restart.
Fixed
  • Improved Tern ask questions so the question no longer obscures the transcript and can be answered while reviewing and scrolling through the relevant context.
  • Added warnings for unrecognized compat keys in models.yml while continuing to load the configuration; warnings identify the file and key path.
  • Fixed /new so new sessions reset plan and goal modes, todo state, and related planning configuration instead of carrying stale state forward; fresh prewalk behavior is also restored after handoffs, cancellations, or automatic recovery.
  • Fixed OAuth alias login and logout flows so they refresh the underlying provider's models, report authentication state correctly, and list and remove the accounts associated with that provider.
  • Fixed model speed statistics so throughput from non-default OpenAI or Codex service tiers is kept separate and displayed for the tier used by the session.
  • Fixed stale model catalogs remaining in memory after provider or catalog refreshes.
  • Fixed write and edit from hanging or exhausting memory when given FIFOs, terminals, device files, or other non-regular targets; unsupported targets are now rejected safely.
  • Fixed long conversations from losing user and tool-result images when the conversation also contained assistant-generated images.
  • Fixed local:// session paths from escaping their intended storage directory when given . or .. session identifiers.
  • Fixed omp gc --archive --apply from leaving orphaned session-title records behind.
  • Fixed /retry after an interrupted reopened ask prompt when an extension had registered a context handler.
  • Fixed browser relay sessions from missing cross-origin iframe content that loaded before the tab was opened.
  • Fixed browser clicks on invisible native radio and checkbox inputs, including controls commonly used by GOV.UK forms.
  • Fixed /model so selecting the model already assigned to a project's default role still switches to that model correctly.
  • Fixed wait and background task state when a completion has already been consumed elsewhere, preventing premature interruption and incorrect idle detection.
  • Fixed repeated coding-plan fallback confirmations after declining a fallback in cases involving changing thinking settings, unavailable quota data, or account recovery.
  • Fixed Python evaluation when the shared runner temporary directory was created by another user.
  • Added RPC support for completing multi-select ask questions without relying on TUI keyboard navigation.
  • Corrected tool behavior and configuration documentation for read, background bash, Python evaluation, replace editing, goal removal, and advisor.immuneTurns.
  • Fixed custom glob backends from hanging indefinitely; scans now respect the tool deadline and report incomplete results when necessary.
  • Fixed --resume <path> from silently creating a new session for a missing path; it now reports the missing path, consistent with --fork <path> and --resume <id>.

@oh-my-pi/pi-natives

Added
  • Added the PI_NATIVES_DIR configuration option to control where compiled native addons are extracted. The version-specific subdirectory remains appended, allowing separate HOME environments to share the same native addon copy without sharing other data.
Fixed
  • Fixed background shell builtins and other in-process commands so they terminate when their subshell exits and can be stopped with kill %N, matching the behavior of external commands.

@oh-my-pi/pi-tui

Fixed
  • Fixed the native ask dialog on TSP surfaces so it replaces the composer instead of opening as a modal over the transcript, keeping the transcript readable and scrollable.

@oh-my-pi/pi-utils

Added
  • Added PI_NATIVES_DIR support to getNativesDir() for configuring the native addon directory.
  • Added ZipPackage for lazily reading ZIP-based document packages with a total decompressed-size limit, along with DocxImage.readBytes() for accessing raw DOCX image data.

What's Changed

Full Changelog: https://github.com/can1357/oh-my-pi/compare/v18.8.0...v18.8.1

Release v18.8.0

Oh My Pi v18.8.0

@oh-my-pi/pi-agent-core Changed Improved performance when pruning tool output and capturing telemetry messages during long-running sessions. @oh-my-pi/pi-ai Breaking Changes The environment API-key helpers (getEnvApiKey, getEnvApiKeyName, and…

Read full notes

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

Changed
  • Improved performance when pruning tool output and capturing telemetry messages during long-running sessions.

@oh-my-pi/pi-ai

Breaking Changes
  • The environment API-key helpers (getEnvApiKey, getEnvApiKeyName, and listProvidersWithEnvKey) are no longer exported from @oh-my-pi/pi-ai/stream; import them from @oh-my-pi/pi-ai or @oh-my-pi/pi-ai/env-api-key instead.
  • TranscriptionRequest.audio now accepts Uint8Array | Blob. Consumers must handle Blob values when reading transcription requests.
Changed
  • Improved CPU and memory efficiency across streamed model responses, including Cursor, Devin, Codex, OpenAI Responses, and GitLab Duo Workflow.
  • Improved request and authentication performance, including account ranking, OAuth preflight, credential rate-limit checks, credential synchronization, and auth gateway requests.
  • Improved tool-call parsing performance for long calls and Apple Foundation Models requests.
  • Improved Cloudflare AI Gateway request performance and AWS credential-source detection.
  • Reduced memory usage when handling generated images and usage reports.
Fixed
  • Fixed false thinking-loop detections for Gemini, DeepSeek, and Grok when responses contain repetitive code or markup such as VRML, SVG, or JSON; valid output is no longer discarded and retried.
  • Fixed the Cursor provider retaining request resources after requests completed.
  • Fixed session-affinity pins growing without bound in long-lived gateways; pins are now capped at 256 sessions per provider.
  • Fixed Anthropic sessions failing every request with HTTP 400 ("role 'system' must precede an 'assistant' message") after a tool change coincided with compaction or an interrupted or failed reply; sessions already stuck this way recover on the next message (#14746).

@oh-my-pi/pi-catalog

Changed
  • Improved catalog performance by speeding up model cache reads and repeated catalog-wide model builds, especially for large catalogs.

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

Added
  • Write-tool previews now render as files stream: SVG files appear as images, and Mermaid files (.mmd and .mermaid) appear as diagrams. Tern also previews supported 3D model formats (.obj, .ply, .wrl, .x3dv, .stl, .gltf, and .usda) and renders SVG writes as SVG figures.
  • Added the title.icons setting to show session title cards with a Nerd Font glyph and emoji fallback (nf+emoji, default), always the emoji (emoji), or as plain titles (boring).
  • Added the title.generator setting to name sessions from a fork of the reply (fork, default) or with the title model only (tiny).
Changed
  • Session titles are generated using the session's model when possible, with a fallback to the lightweight title model; TITLE_SYSTEM.md continues to override the title prompt.
  • Session titles now include a card index, icon, and short code, with appropriate Nerd Font rendering in Tern panes.
  • When Nerd Font symbols are unavailable, session titling requests only an emoji.
  • Subagent completion indicators now advance to 99% when the subagent submits its result.
  • In Tern panes, headed and headless browser opens are shown in Tern picture-in-picture by default; set app.tern: false, browser.tern, or PI_BROWSER_TERN=0 to open Chromium instead.
  • In Tern panes, /fork opens the fork in a neighboring pane while preserving the original session.
  • Tern's empty composer now shows the session title, or “What are we cooking?” when no title is available.
  • Tern todo cards now display their checklist by default and can be collapsed by clicking the card header.
  • Improved performance across browser extraction, web and document fetching, file tools, search, session handling, LSP/DAP, MCP, subagents, SSH file operations, image processing, voice and dictation, collaboration, and large-output or large-file workflows.
  • Prompt history search now updates shortly after typing stops while Enter and mouse selections use the latest query.
  • Improved responsiveness and reduced resource usage for long sessions, large files and documents, streaming evaluations, terminal graphics, live voice calls, and other high-volume workflows.
  • Hosts that are not supported Mastodon, Lemmy, or Discourse instances are no longer repeatedly probed for those services, improving URL-fetch performance.
Fixed
  • Fixed a message sent while an earlier title request was still running never getting its own try at naming the session when that request came back empty.
  • Fixed /new incorrectly carrying plan mode, its plan-specific model, or goal mode into the new session.
  • Fixed todo lists failing to auto-clear while subagents streamed progress.
  • Fixed memory growth during ACP client-terminal commands.
  • Fixed freezes after large pastes containing unclosed tags.
  • Fixed slowdowns when processing long evaluation output, large Python kernel results, compiler/linter output, and ephemeral side-channel replies.
  • Fixed documents served as application/octet-stream being downloaded twice.
  • Fixed collaboration guests rebuilding the transcript excessively during streaming.

@oh-my-pi/collab-web

Changed
  • Improved streaming transcript performance by reducing unnecessary guest updates and Markdown re-rendering, including faster rendering for transcripts with many unclosed LaTeX delimiters.
  • Stopped tracking finished or no-longer-listed subagents, reducing unnecessary polling and memory usage in the agent drawer.

@oh-my-pi/omp-stats

Changed
  • Improved dashboard responsiveness and efficiency by reducing unnecessary data refreshes and re-rendering, speeding up session synchronization, database access, package imports, and usage, model, and time-series requests, and avoiding repeated downloads of unchanged traces.
  • Dashboard requests are now cancelled when no longer needed, improving responsiveness when switching sessions or closing trace views during loading.

@oh-my-pi/pi-tui

Added
  • SVG and Mermaid files now render as images or diagrams beneath their file cards, with SVG previews updating while the file streams and Mermaid previews appearing when the file is complete.
  • Native tool cards can open expanded regardless of the transcript’s expansion state; the todo checklist uses this behavior.
Changed
  • TSP composer placeholders now appear as the composer title in italicized curly quotes, with “What are we cooking?” used when no title is provided.
  • TSP image transfers are more efficient across reconnects and multiple surfaces: images are sent once per connection, existing terminal blobs are detected before upload, and images in the Tern blob cache can be reused without crossing the terminal pty.
  • Improved performance and responsiveness across the TUI, including large TSP messages and Markdown documents, streaming output, tool-result cards, debug logs, raw SSE and Git diff views, path and model searches, session and settings lists, plan review, agent transcripts, status updates, assistant links, Kitty images, and large prompt or evaluation content.
  • Large debug logs and plan-review histories now retain bounded history to keep the interface responsive, while preserving the newest log entries.
Fixed
  • Fixed slow Markdown processing for certain LaTeX environments and incomplete delimiters.
  • Fixed excessive slowdown when formatting long semicolon-free JavaScript evaluations.
  • Fixed prompt-editor lag in large drafts containing magic keywords.

@oh-my-pi/pi-utils

Added
  • Added ZipPackage to @oh-my-pi/pi-utils/ar for lazily reading ZIP-based document packages with a configurable total-inflation limit, plus DocxImage.readBytes() for accessing raw DOCX image data.
Changed
  • Improved DOCX conversion to inflate only the package contents it needs, reducing unnecessary work and memory use.

…

Tuesday, October 6Oct 6, 2026

Release v18.7.0

Oh My Pi v18.7.0

@oh-my-pi/pi-agent-core Fixed Fixed interrupted runs so assistant message boundaries are emitted reliably, allowing subscribers to persist and recover the interrupted turn. @oh-my-pi/pi-ai Added Added getOAuthCredentialProvider() to resolve login aliases, such…

Read full notes

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

Fixed
  • Fixed interrupted runs so assistant message boundaries are emitted reliably, allowing subscribers to persist and recover the interrupted turn.

@oh-my-pi/pi-ai

Added
  • Added getOAuthCredentialProvider() to resolve login aliases, such as openai-codex-device, to the provider where their credentials are stored.
Fixed
  • Fixed Ultrafast service-tier billing and usage accounting: GPT-6 Astra now applies its published premium rates—6× on the OpenAI API and 8× included usage on Codex—and is counted toward the premium-request limit.
  • Fixed Vertex AI authentication on Windows when credentials are created with gcloud auth application-default login.
  • Fixed selecting Cursor accounts by email through auth.accountPolicies and /session pin; newly refreshed and existing accounts now retain the account email.

@oh-my-pi/pi-catalog

Added
  • Added Mistral Large 4 with reasoning support, image input, a 1M-token context window, and preview pricing.
  • Added configurable thinking levels from low through maximum for MiniMax-M3.1-Flash-Preview; because the model always reasons, requests that disable thinking use the low level.
  • Added Google Antigravity pricing and model support for Claude Opus 5.5 and Sonnet 5.5.
Changed
  • MiniMax Token Plan providers (minimax-code and minimax-code-cn) now use MiniMax's recommended Anthropic-compatible API for model requests and login key validation.
  • Google Antigravity now exposes Claude Opus 5.5 and Sonnet 5.5 once each, with selectable low, medium, and high thinking levels.
Fixed
  • Added the correct published pricing for GPT-6 Astra's Ultrafast service tier: a 6× multiplier on the OpenAI API and an 8× multiplier on the Codex card.

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

Added
  • Added last-chance consumption of eligible banked Codex and Claude resets expiring within five minutes when auto-redeem is enabled, even with low usage or reserved credits.
  • Added inline rendering of agent-generated SVG diagrams, charts, and mockups, with theme-aware colors and a tui.renderSvg setting to disable it.
  • Added automatic chart generation for numeric tables, configurable with tui.autoGraph (always, smart, or off). The agent now chooses suitable visual formats—including charts, Mermaid, SVG, tables, or prose—based on the content. Charts and this guidance apply to the main TUI session only, not to subagents, print, RPC, or ACP.
  • Added first-class JSON and JSONL querying to the read tool with ?q=<jq-filter>, including in-process filtering, raw or compact output, and offset/limit pagination for efficient large-file access.
  • Added /prewalk off to cancel a pending model handoff without changing the active model, saved prewalk setting, or continuation history.
  • Added logout support to RPC clients through get_logout_accounts and logout, with matching methods in the TypeScript, Python, Go, and Rust SDKs.
  • Added custom model-kind declarations for providers and extensions, allowing image, speech, embedding, judge, and other supported model roles to be registered and routed correctly.
  • Added working-directory reporting for Tern terminal sessions so the native composer bar can display the current folder.
Changed
  • Improved JSON and JSONL query streaming and pagination to reduce resource usage, support partial results, and provide clearer continuation between result pages.
  • Clarified the read tool documentation with complete examples for requesting line ranges.
Fixed
  • Fixed model-preset tests failing when provider credentials are configured in the environment.
  • Fixed unauthenticated Macs auto-selecting the on-device Apple model when the default prompt exceeds its context window; Apple remains selectable explicitly.
  • Fixed replay and compaction tests failing after bundled model roster changes.
  • Fixed standalone builds failing when the native addon archive could not be resolved.
  • Fixed JSON query parsing and parameter decoding for filters beginning with hyphens and other encoded query values.
  • Fixed task execution after settings could not be saved; subagents now use the current in-memory settings while the save failure is reported as a warning.
  • Fixed prewalk and model-recovery state across /new, handoffs, cancellations, and automatic recovery.
  • Fixed login, logout, model refresh, and provider-status reporting for aliased providers such as openai-codex-device.
  • Fixed model speed statistics mixing fast service-tier results into standard-tier averages; /models now reports the applicable tier separately.
  • Fixed the write and edit tools hanging or consuming excessive resources when given FIFOs, terminals, device files, or other non-regular targets; unsupported targets are now rejected safely.
  • Fixed long conversations losing user or tool-result images because assistant-generated images were counted against provider image limits.
  • Fixed local session paths for special session IDs such as . and .. so they cannot escape the intended storage directory.
  • Fixed omp gc --archive --apply leaving orphaned session-title records behind.
  • Fixed /retry after an interrupted process exit while an extension-driven prompt was reopening.
  • Fixed browser relay sessions failing to discover or interact with cross-origin iframe content that loaded before the tab was opened.
  • Fixed browser clicks on visually styled radios and checkboxes whose underlying inputs are hidden.
  • Fixed /model failing to switch when selecting the model already assigned to a project's default role.
  • Fixed wait returning early when a background completion had already been consumed by another operation.
  • Fixed symlinked routing configurations failing to reload after their target links were replaced.
  • Fixed repeated coding-plan fallback confirmations in cases involving changing thinking settings, unavailable quota information, or account recovery.
  • Fixed Python evaluation failing when a shared runner temporary directory was created by another user.
  • Fixed RPC clients being unable to complete multi-select questions in multi-question ask prompts.
  • Corrected inaccurate tool and setting descriptions, including read ranges, background bash behavior, Python evaluation capabilities, edit replacement guidance, goal removal behavior, and advisor.immuneTurns.
  • Fixed custom glob backends hanging indefinitely; scans now honor tool deadlines and cancellation.
  • Fixed --resume <path> silently creating a new session when the specified path did not exist; it now reports the missing path.
  • Fixed /settings opening duplicate menus when invoked while the settings menu was already open.
  • Fixed native Git operations resolving repositories incorrectly when run through symbolic links.

@oh-my-pi/pi-natives

Breaking Changes
  • Renamed the linux-all Bazel target (//:natives-linux-all) to all (//:natives-all); the renamed target now includes Darwin addons.
  • Removed the gen:native and gen:native:reset scripts. Standalone binary builds now embed the native addon archive and manifest instead of writing them to native/.
Added
  • Enhanced rasterizeSvg with optional scaling and terminal-cell padding, allowing SVGs to render larger while preserving 1:1 display in terminals.
  • Added OMP_NATIVE_FEATURES for passing extra Cargo features to local native addon builds; Bazel builds ignore this setting.
  • Added support for cross-compiling macOS native addons from Linux hosts.
Changed
  • macOS addon release stamping now works on any host by refreshing the addon's ad-hoc signature automatically.
Fixed
  • Fixed tail failing to print files, or omitting their first 64 KiB, when file sizes were exact multiples of 64 KiB.
  • Fixed tail

…

Release v18.6.3

Oh My Pi v18.6.3

@oh-my-pi/pi-agent-core Breaking Changes Agent.withdrawUndeliveredQueuedMessages() replaces withdrawLiveSteering() and returns { steering, followUp }: it also takes back queued input already dequeued for the next model call, which the aborted run then neither…

Read full notes

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

Breaking Changes
  • Agent.withdrawUndeliveredQueuedMessages() replaces withdrawLiveSteering() and returns { steering, followUp }: it also takes back queued input already dequeued for the next model call, which the aborted run then neither records nor reports in agent_end (#14179 by @andrebrait)
Added
  • Added Agent.setOnModelCallSystemPrompt, called with the exact system prompt each model call is built from (#14338 by @will-bogusz)
Changed
  • SessionInitEntry.systemPrompt holds the system prompt blocks as sent; session files written earlier keep one joined string (#14338 by @will-bogusz)
  • Image token estimates now use the catalog's imageTokens() formula with its OpenAI Responses wire rule; values are unchanged (#14286 by @will-bogusz).
Fixed
  • Fixed the context count and auto-compaction trigger pricing every snapcompact archive frame at Opus's high-res rate, which overcounted Codex and Gemini sessions and could re-trigger compaction right after compacting (#14291 by @will-bogusz)
  • Fixed native (OpenAI) compaction being refused as over the context window in sessions with many screenshots. Images were counted as about 1,200 tokens when deciding to compact but 12,000 when checking whether the compaction request fits; both checks now estimate images from their actual dimensions, and a request is no longer refused when only the image estimate pushes it over the window (#14260 by @H4vC).
  • Fixed OpenAI and Codex Remote Compaction V2 dropping your recent messages instead of keeping them next to the compaction summary (#14247 by @will-bogusz)
  • Fixed the failed V2 remote compaction warning claiming a V1 fallback on Codex, where V1 does not run (#14245 by @will-bogusz)
  • Fixed Anthropic native compaction being rejected with Invalid signature in thinking block (or silently dropping the summarized thinking) on models with preserved thinking (#14251 by @will-bogusz)

@oh-my-pi/pi-ai

Added
  • Added per-model compat.statefulResponses to enable or disable stored Responses chaining (previous_response_id with store: true) for one endpoint without the official-only request fields that compat.officialEndpoint implies (#13686 by @alphastorm).
  • Added Snowflake Cortex with browser OAuth, token refresh, PAT environment authentication, and streaming Claude/OpenAI models with local tool execution (#14507 by @jorgoose).
  • AuthStorage.health.check() accepts excludeProviders to skip credentials of providers the caller does not serve (#14234 by @will-bogusz)
Changed
  • Reduced CPU spent on thinking-loop detection while streaming long reasoning (#14284 by @abilliontokens).
  • Added recordAffinity: false to credential resolution options, selecting as the session would without pinning the choice to that session (#14512 by @will-bogusz)
Fixed
  • Codex native-lane steering rejections (unsupported_native_inflight_message) now classify as retryable from their error text alone, matching the provider's own classification, and AIError.isCodexSteerRejection() identifies them so the agent retry can stay on the same model (#14242 by @alphastorm)
  • Fixed replayed Responses and Codex history, including persisted Codex user/developer and assistant items, sending detail: "original" images to endpoints whose supportsImageDetailOriginal is off (#13687 by @alphastorm).
  • Fixed thinking in turns kept after Anthropic native compaction being rejected or dropped on the next request (#14251 by @will-bogusz)
  • Fixed Claude usage being re-polled every 10 seconds while Anthropic rate-limits the account; a failed refresh now waits a minute before trying again (#14515 by @will-bogusz)
  • Fixed Devin requests skipping the onPayload hook, so payload capture now sees each Devin chat request and a returned replacement is what gets sent (#14506 by @will-bogusz)
  • An OpenAI Responses turn whose connection drops mid-stream can now recover the finished answer from the provider (on hosts that store results, such as Muse Code) instead of re-running the whole turn and discarding the reasoning already done. Storage is opt-in: pass storeResponses: true, set PI_MUSE_STORE_RESPONSES=1, or set a process-wide default with configureProviderStoreResponses (#14293 and #14534 by @abilliontokens).
  • Fixed the auth broker exiting when a background OAuth refresh sweep cannot read the credential store; the failure is now logged and the next sweep retries (#14538)
  • Fixed Anthropic OAuth billing headers changing during developer-first sessions and side turns, preserving the prompt-cache prefix (#14495).
  • Fixed OpenAI-compatible chat-completions gateways recording completed turns as client-cancelled because the connection closed before their [DONE] sentinel arrived (#14481).

@oh-my-pi/browser-relay

Fixed
  • Fixed the extension reporting tabs that DevTools or another debugger extension is inspecting as its own attachments, which made the relay skip attaching to them (#14224 by @will-bogusz)

@oh-my-pi/pi-catalog

Added
  • Added an optional statefulResponses compat field for OpenAI Responses models, kept through OpenRouter's Responses dispatch (#13686 by @alphastorm).
  • Added 15 Snowflake Cortex models with account-specific endpoints, Cortex compatibility rules, and estimated account-billed pricing (#14507 by @jorgoose).
  • Added the image-tokenization axis, which declares how GPT-5.2+, Claude and Gemini 3 lines bill input images on every host, with wire-API fallback rules for other models, plus imageTokens() to price one image (#14286

…

Sunday, October 4Oct 4, 2026

Release v18.6.1

Oh My Pi v18.6.1

@oh-my-pi/pi-agent-core Fixed Fixed native OpenAI context compaction for sessions containing many screenshots, preventing image-size estimates from incorrectly causing compaction requests to be rejected. @oh-my-pi/pi-ai Fixed Fixed compatibility with Command…

Read full notes

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

Fixed
  • Fixed native OpenAI context compaction for sessions containing many screenshots, preventing image-size estimates from incorrectly causing compaction requests to be rejected.

@oh-my-pi/pi-ai

Fixed
  • Fixed compatibility with Command Code DeepSeek and other DeepSeek-family models by preserving the reasoning context required for warm OpenAI Responses sessions and correctly handling incomplete DSML tool-call wrappers in visible output.

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

Fixed
  • Fixed waiting for subagent follow-up messages: responses now appear as background jobs that can be waited on or canceled, and are delivered only once.
  • Improved /switch autocomplete so model and role suggestions use the same relevance ordering as the model picker, including support for @role aliases.
  • Fixed concurrent skill:// searches blocking other filesystem operations and delaying subagent artifact publication.
  • Fixed compatibility checks for browser relays from other OMP versions and added guidance for resolving stale connection-refused errors.
  • Fixed follow-up hashline edits being incorrectly rejected after earlier edits shifted anchored lines, while continuing to reject genuinely stale line references.
  • Fixed pi.exec() reporting exit code 0 when a process was terminated by a timeout or signal; terminated processes now report code -1.
  • Fixed /collab guests being unable to respond to setting-change approval and tool-issue report consent prompts.
  • Fixed follow-up hashline edits being rejected as anchored on lines "never displayed" after an earlier edit shifted those lines, when the replacement carries the anchored content; genuinely stale line numbers are still rejected (#14254 by @abilliontokens).
  • Fixed long /btw answers in Tern being clipped with no way to scroll: /btw now answers in the scrollable BTW history sheet (#14331 by @H4vC)
  • Fixed /btw answers longer than 4 KiB being cut off with […truncated] once they finished (#14331 by @H4vC)
  • In Tern, Esc puts the BTW history sheet away while an answer keeps streaming (/btw reopens it); x cancels the answer (#14331 by @H4vC)

@oh-my-pi/pi-natives

Fixed
  • Fixed concurrent searches through host-provided filesystem callbacks so they no longer starve other asynchronous filesystem operations, and ensured canceled searches release promptly.

@oh-my-pi/pi-tui

Fixed
  • Fixed the Space key in the Git diff pane so it stages or unstages the focused hunk instead of scrolling or acting on the wrong change.
  • Fixed the BTW history sheet in Tern: the history list no longer collapses beside a long answer, the panes lose their foldable ## headings, and the arrow/page keys scroll the answer (#14331 by @H4vC)
  • Fixed a single saved side question in the BTW history panel opening on its one-row list: its answer now has focus, and Enter or f to follow up jumps to the bottom of the conversation (#14331 by @H4vC)

What's Changed

Full Changelog: https://github.com/can1357/oh-my-pi/compare/v18.6.0...v18.6.1

Saturday, October 3Oct 3, 2026

Release v18.6.0

Oh My Pi v18.6.0

@oh-my-pi/pi-agent-core Fixed When a DeepSeek turn ends with raw <|DSML|…> tool-call text that could not be parsed into a real call, and no tool call was made, the broken markup is now removed from the message before it is saved to history. The agent then…

Read full notes

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

Fixed
  • When a DeepSeek turn ends with raw <|DSML|…> tool-call text that could not be parsed into a real call, and no tool call was made, the broken markup is now removed from the message before it is saved to history. The agent then tells the model the tool call failed, shows it the correct format, and asks it again, at most twice in a row. Previously the markup stayed in history, and the agent stopped as if the model had finished (#14202 by @H4vC).

@oh-my-pi/pi-ai

Fixed
  • Fixed Antigravity chat and image requests sending an outdated client version when the model list came from cache, which could make newer models such as Claude Opus 5.5 unavailable.
  • When a DeepSeek model writes a broken DSML tool call (for example with the opening <|DSML|tool_calls> and <|DSML|invoke> tags missing), its closing tags are now kept in the streamed text instead of being dropped. This lets the agent remove exactly the broken call while keeping any text after it (#14202 by @H4vC).

@oh-my-pi/pi-catalog

Fixed
  • Fixed DeepSeek V4 model IDs and the V4.1 Flash alias lacking version information in model identity and dashboards (#14194).
  • Fixed Antigravity models such as Claude Opus 5.5 and Sonnet 5.5 disappearing after omp models refresh. When the update check failed, omp reported an outdated Antigravity client version (2.8.0), so the server left the newer models out of the list. The fallback version is now 2.19.1.
  • DSML tool calls from DeepSeek models are now parsed on every host. This includes local servers (llama.cpp, LM Studio, vLLM), custom providers from models.yml, and gateways that weren't on the old list of supported hosts. Before, a complete <|DSML|tool_calls> envelope from these hosts showed up as plain text and the tool never ran (#14202 by @H4vC).

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

Added
  • The /models Roles view shows which saved model preset is in effect, and Ctrl+←/→ (or p/P on the role rows, for macOS where Ctrl+←/→ switches Spaces) switches to the next or previous one, in Tern and text mode (#14210 by @H4vC)
Changed
  • Picking a model for a role in /models now puts the cursor on the model list, so ↑/↓ choose a model and Enter assigns it right away instead of moving through the sidebar and dropping the role selection; ← still reaches the providers (#14210 by @H4vC)
  • Sped up secret redaction on long conversations: it no longer slows down as history grows (#14213 by @H4vC)
  • Startup is faster with plugins that bundle large dependency trees: the extension loader no longer re-reads and re-checks the same files while loading them (e.g. ~280 ms → ~185 ms with the IDA MCP plugin) (#14219 by @H4vC)
Fixed
  • Fixed an EPIPE: broken pipe unhandled rejection crashing the session when a debug adapter, eval kernel, IDA worker, or RPC server exits mid-write (seen on Windows) (#14196 by @andrebrait)

@oh-my-pi/omp-stats

Fixed
  • Fixed the Frustration page splitting DeepSeek V4 provider variants and the V4.1 Flash alias into separate model-version rows (#14194).

@oh-my-pi/pi-tui

Fixed
  • Fixed Alt+Up (restore queued steering), arrows and other escape-sequence keys on Windows acting as Esc (interrupting the turn) and typing [1;3A into the editor when the console host relays them one byte at a time (#14216 by @H4vC).

What's Changed

Full Changelog: https://github.com/can1357/oh-my-pi/compare/v18.5.1...v18.6.0

Release v18.5.1

Oh My Pi v18.5.1

@oh-my-pi/pi-agent-core Added Added provider-reported usage cost, the unnormalized provider ID, and the requested model ID to CostEstimatorContext, allowing cost estimators to use the cost already recorded for a request instead of recomputing it from token…

Read full notes

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

Added
  • Added provider-reported usage cost, the unnormalized provider ID, and the requested model ID to CostEstimatorContext, allowing cost estimators to use the cost already recorded for a request instead of recomputing it from token counts.
Changed
  • Improved tool-result supersession so path reads with selectors are tracked independently from bare-path reads, while failed results supersede only earlier failed results for the same key.
Fixed
  • Fixed parallel tool calls with reused or empty IDs executing with another call’s arguments or merging results; each call now executes and reports its own payload.
  • Fixed completed tool calls being retried after a transient provider-stream read error; incomplete calls from the affected turn are now discarded.
  • Fixed previously read code being removed from context when a subsequent read returned a summary, truncated content, or an error.
  • Fixed intent tracing for tools that define i as a real argument, preserving the argument and its declared schema order.

@oh-my-pi/pi-ai

Fixed
  • Fixed DeepSeek and OpenAI Responses requests failing or entering retry loops when replayed tool calls contained repaired arguments, orphaned tool results, or missing reasoning context.
  • Fixed requests to models that do not support sampling parameters from failing with HTTP 400 errors when accessed through non-native providers. Sampling parameters are now omitted for incompatible models, including requests made by chat judging, title generation, skill descriptions, and memory extraction.
  • Fixed OpenRouter BYOK usage being reported as free; provider inference costs and applicable credits charges are now included in session and status-line cost reporting.
  • Fixed Claude background and long-running bash commands losing their requested timeout and being terminated at the default deadline.
  • Fixed cleared credential cooldowns being incorrectly restored by another concurrently running session.
  • Fixed retryable Cursor provider errors, such as “Unable to reach the model provider,” from prematurely ending a turn.
  • Fixed resumed OpenAI Responses sessions losing earlier plaintext reasoning, which could cause self-hosted Responses servers to reprocess the entire context after a restart.
  • Fixed non-retryable HTTP 4xx responses being retried when their error messages contained transient-error terms such as “server_error,” “timeout,” or “overloaded.”
  • Fixed Cursor models receiving earlier multi-step tool calls as if they occurred simultaneously instead of in their original execution order.

@oh-my-pi/browser-relay

Fixed
  • Fixed tab adoption stalling when Chrome discards background tabs.

@oh-my-pi/pi-catalog

Added
  • Added support for listing models from Codex-compatible gateways through openaiCodexModelManagerOptions.baseUrl, with discovery caches isolated per endpoint.
  • Exposed the max reasoning-effort tier for Muse Spark 1.3 contributor models on Meta and Muse Code providers.
Changed
  • Added full configurable reasoning-effort ladders for ClinePass DeepSeek V4.1 Flash Free and Muse Spark 1.3 Contributor Free models.
  • Recognize bare and provider-qualified k3 and k3-256k selectors as Kimi K3, enabling K3-specific catalog policies and replace-edit fallback behavior while preserving explicit edit-mode overrides.
  • Updated Fireworks model pricing to use Fireworks-specific rates, correcting missing and inaccurate costs for supported models.
  • Updated Fireworks fast-model listings to replace retired models with glm-5.3-fast and kimi-k3-fast; GLM-5.3 Fast now exposes low, high, and max reasoning levels on Fireworks, Baseten, and Vercel AI Gateway.
Fixed
  • Fixed image input for OpenAI models used through custom Amazon Bedrock Converse providers when images are read through tools.
  • Fixed local Ollama thinking models continuing to reason when thinking was disabled, reducing delays such as slow session-title generation.
  • Fixed reasoning-level availability for OpenCode Go models so unsupported levels are no longer offered and reasoning can be disabled where supported.
  • Fixed Anthropic-compatible Claude Opus 5.5 sessions failing after tool use or system-prompt changes.
  • Fixed Cursor Grok 4.5 and 4.6 model selectors and overrides intermittently resolving to inconsistent model IDs.
  • Fixed Google Antigravity Gemini 3.1 Flash Image being recognized as an image-capable model for image roles and fallback chains.
  • Fixed GitHub Copilot base models reporting an incorrect long-context window when a separate -1m model is available.
  • Fixed newer OpenAI and Anthropic model families being incorrectly marked as accepting sampling parameters when accessed through compatible providers such as Amazon Bedrock, Google, Devin, or OpenRouter; explicit compatibility overrides continue to take precedence.

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

Added
  • Added RPC support for GPT live voice sessions bound to the RPC session, including live start, stop, mute, phase, level, transcript, and end events; closing stdin also stops an active live session.
  • Published a machine-readable RPC wire schema and added generated-client support for Python, Rust, and Go RPC clients, including protocol v2 negotiation, prompt-result handling, host tools, and host URIs. The Python client is now distributed from the SDK package location.
  • Added the read-only archive eval global for browsing projects and past sessions, viewing idle recaps and recap journals, opening session prompts, and searching prompt history. It is enabled by default with archive.enabled.
Changed
  • wait now waits only for background jobs and services started by the calling agent and reports an error when there is no such work to wait for; messages can still end the wait.
  • Improved automatic session titles for image-only requests and mid-session refreshes so titles better reflect the user's actual goal and no longer echo placeholder text.
  • In focused subagent views, submitting . or c now continues the subagent just as it does in the main session.
  • Reduced memory use and loading time when forking sessions or when session history references the same image multiple times.
  • The computer tool's clipboard.write now updates only the desktop clipboard and no longer sends text to the terminal clipboard via OSC 52.
  • Improved terminal layout stability in Rebuild mode when resizing or zooming tmux panes.
  • Advisor concerns and notes now reach an active same-run continuation after a terminal answer instead of being retained unnecessarily.
Fixed
  • Fixed background-job completions being lost when IRC-woken subagents finished while owned asynchronous work was still settling.
  • Fixed session reset leaving stale hashline edit snapshots available for later mismatch diagnostics.
  • Fixed multi-subagent task calls reporting success when one subagent failed.
  • Fixed RPC clients waiting indefinitely for prompt results after automatic compaction handoffs.
  • Fixed the retry prompt layout after interrupted tool calls and eliminated several TUI display issues, including flickering, duplicate streamed tool cards, blank space, and stray escape-code fragments during streaming, resizing, zooming, and clipboard or notification output.
  • Fixed shared headless browsers remaining resident after a failed close; unresponsive browser instances are now replaced automatically.
  • Fixed eval calls to extension and custom tools with strict schemas so they receive the same arguments as direct tool calls.
  • Skill URI reads now expose the selected skill path, allowing nested skills to locate sibling helpers.
  • Fixed strict subagent output schemas rejecting nested optional fields represented as null.
  • Fixed reasoning-only stops and user-uninterrupted aborts leaving sessions idle instead of continuing their configured retries.
  • OTLP exports now include chat request costs in spans, metrics, and completion logs, including provider charges when available and an explicit unavailable status when pricing cannot be determined.
  • Fixed background Bash jobs and automatically backgrounded eval cells being terminated at their default deadlines without clear guidance; async and timeout behavior is now documented and background-start messages show the applicable deadline.

…

Release v18.5.0

Oh My Pi v18.5.0

@oh-my-pi/pi-ai Fixed Fixed AWS credential_process on Windows stripping backslashes from unquoted paths such as C:\Users\me\helper.exe; commands are now split with Windows command-line rules there, matching the AWS CLI. @oh-my-pi/pi-catalog Added Added…

Read full notes

@oh-my-pi/pi-ai

Fixed
  • Fixed AWS credential_process on Windows stripping backslashes from unquoted paths such as C:\Users\me\helper.exe; commands are now split with Windows command-line rules there, matching the AWS CLI.

@oh-my-pi/pi-catalog

Added
  • Added closeModelCache() (@oh-my-pi/pi-catalog/model-cache) to release the shared default models.db handle so an agent directory can be deleted on Windows; the next cache access reopens it

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

Breaking Changes
  • task.completionProbeMs is replaced by the on/off setting task.completionProbe; an existing task.completionProbeMs migrates automatically (0 → off, any period → on).
  • SessionStorage.claimSessionFile(sessionPath) is replaced by claimSession(sessionId, sessionPath) (which also refuses when the path now holds a different session), and sessionOwnerLeasePath() by tryAcquireSessionLease(sessionId): custom storage backends that implemented claimSessionFile must implement claimSession to keep cross-process ownership (#14095 by @andrebrait)
Added
  • /dump all writes a zip to the temp directory with the main transcript, the LLM request JSON, and one file per subagent transcript (nested subagents included, killed ones marked aborted); the TUI copies the archive path to the clipboard. Plain /dump is unchanged (#13908 by @H4vC)
  • Added /effort [level] to set the thinking level without switching models: bare /effort opens a picker, and completions offer only the current model's levels within the session effort ceiling. Its description includes thinking and intelligence so either term finds it; Shift+Tab still cycles levels (#12222 by @Xytronix, #14113 by @andrebrait).
  • Added a per-call model selector to task items, eval agent(), and workpool(): a provider/model[:level] pattern or role alias, or an ordered array of them, that takes precedence over task.agentModelOverrides and the agent definition. Selection is an ordered preference — requested candidates are tried before configured fallbacks — and the spawn fails at preflight instead of silently routing elsewhere when the selector is the ambiguous literal default/inherit with or without a :level suffix (use @default), is blank or comma-only, carries an invalid thinking suffix, matches no available model, or sits on the batch container instead of a tasks[] item. A requested model without working credentials fails the spawn instead of running on the parent's model, and the error tells the caller to report the unavailable model rather than substitute another. A pool applies its selector to each worker's first turn and reuses that worker's session afterwards (#12229 by @Xytronix, #13669 by @andrebrait).
Changed
  • Subagent completion estimates are asked after 2, 5, 10 and 30 more minutes, then hourly, instead of at a fixed interval, and only for subagents the main agent spawns in an interactive session; print (-p), RPC, ACP and SDK runs and nested subagents never request them.
  • /changelog, /context, /tools, /hotkeys, /advisor status, /memory view|queue|stats|diagnostics, and the mental-model views no longer add their report to the transcript. In text mode a report that fits shows above the editor like /btw and Esc dismisses it; a taller one (such as /changelog full) opens as a full-screen page on the alternate screen, scrolled with the arrow/page/Home/End keys and the wheel, and Esc returns to the screen exactly as it was. In the native terminal it opens as a sheet like /usage whose long reports scroll, closed with Esc or Close (#14136 by @H4vC).
  • /jobs, /mcp help|list|resources|prompts|notifications and /ssh help|list no longer add their report to the transcript either: they show the same way, and natively /jobs opens the live background-jobs sheet the jobs pill opens (/jobs full keeps the full command lines in a report sheet) (#14138 by @H4vC).
  • The welcome banner (in the terminal and as Tern's native card) is now the omp logo and wordmark with the version and a tip. It no longer shows the "Welcome back!" greeting, the model (the status line does), LSP servers or recent sessions (/resume), and the # / ! $ prompt prefixes moved into the rotating tips.
Fixed
  • Auto-retry now retries the same model once after a mid-stream socket drop that had already streamed reasoning or tool calls, instead of switching to the fallback chain on the first attempt; the fallback chain is consulted only if that retry also fails. This applies to every provider, since a dropped socket says nothing about the model (#13747 by @abilliontokens)
  • Fixed native git patch apply, checkout, stash, cherry-pick, and worktree removal on Windows ignoring core.autocrlf: LF patches failed to apply to CRLF checkouts and clean CRLF files were treated as modified
  • Fixed the command image-URL uploader stripping backslashes from Windows paths in its command template (C:\tools\upload.exe {file} ran C:toolsupload.exe)
  • Fixed reading a SQLite database (local or by URL) and closing prompt history leaving the database file locked on Windows
  • Fixed RPC mode on Windows freezing when the client stopped reading stdout: the worker blocked on the full stdout pipe and stopped reading stdin, so a client writing a batch of commands before reading replies deadlocked. Output now goes through a non-blocking stdout stream that spools to disk under backpressure, as on Linux and macOS
  • Fixed HTML export hanging when a session's subagent directory held a transcript named ..jsonl; discovery now only descends into real child directories (#13908 by @H4vC)
  • Fixed resuming a session through a symlink or hard link to a file another omp process is writing: the resumed session no longer mixes its turns into that file and continues in a new file next to it (#14095 by @andrebrait)
  • Fixed moving a session to another directory replacing a session file there that another omp process is writing, or moving a session another process is writing; the move now stops with an error and leaves both files untouched (#14095 by @andrebrait)
  • Preserve the parent’s upstream route and live reasoning effort for inherited task/eval/workpool selectors and restored workers; caller effort, a requested @default:<level>, and the agent definition's own thinking-level still take precedence over the inherited effort (#12229 by @Xytronix, #13669 by @andrebrait).
  • Fixed the browser

…

Friday, October 2Oct 2, 2026

Release v18.4.12

Oh My Pi v18.4.12

@oh-my-pi/pi-ai Added Added createAuthGatewayRouter, the auth-gateway's routes without the HTTP listener, and serveAuthGatewayStdio, which serves them as JSON lines ({"id", "path", "body"} in, {"id", "status", "body"} out) for a parent process.…

Read full notes

@oh-my-pi/pi-ai

Added
  • Added createAuthGatewayRouter, the auth-gateway's routes without the HTTP listener, and serveAuthGatewayStdio, which serves them as JSON lines ({"id", "path", "body"} in, {"id", "status", "body"} out) for a parent process.

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

Added
  • Added omp auth-gateway stdio: a long-lived inference server for other programs speaking JSON lines on stdin/stdout ({"id", "path": "/v1/chat/completions", "body"} in, {"id", "status", "body"} out) with your own sign-ins; a request's model takes any --model selector (@smol, sonnet, @commit,@smol) and falls back along retry.fallbackChains when an attempt fails.
Changed
  • Reduced CPU use while streaming with several agents active: extension message_update handlers are delivered through a lighter queue, and RPC no longer processes subagent events unless a client subscribed to them (#13244 by @iliaal).
Fixed
  • Fixed web search stopping at Perplexity's anonymous signup wall instead of falling back to the next configured provider (#12756).
  • Fixed imported Claude Code sessions on Windows reporting the encoded C--… directory name instead of the registered project path when the transcript records no cwd (#13363 by @jchanghong023).
  • Fixed JavaScript eval wait()/handle.wait() ignoring a positional timeout; h.wait(30) now waits up to 30 seconds like { timeout: 30 }, and mixing an options object with positional arguments throws a TypeError (#12720 by @F0Rextasy).
  • Fixed Herdr and other lifecycle-tracking extensions showing a collab guest (omp join) as idle while the host is working; extension-initiated turns (pi.sendMessage with triggerTurn, pi.sendUserMessage) are refused as host-only while joined instead of running on the guest's local model (#13156 by @Fruitseller).
  • Fixed omp update failing with "Malformed npm registry response … missing version" on registries such as Sonatype Nexus that answer the /<pkg>/latest lookup with the full package document or a non-manifest body; the updater now reads the version from the package's dist-tags (#14115).
  • Fixed wait and proc:// failing with "Daemon list request timed out" when the project daemon broker hangs; background jobs and agents are still reported, and proc:// shows that services are unavailable (#14120 by @H4vC).
  • Fixed agent://<id> showing an agent's previous published output as current while that agent runs a follow-up or wake turn; the read now says the output is from the previous run (#14120 by @H4vC).
  • Fixed proc:// listing agents as running when they have no turn in flight; their rows now say the run is stale or already finished, as the jobs tool does (#14120 by @H4vC).
  • Changed subagents to skip their own builds, tests, and smoke runs and leave verification to the main agent, avoiding CPU spikes from many subagents verifying at once.

@oh-my-pi/pi-tui

Changed
  • Changed Ctrl+Z in Tern's native composer to undo the last edit (TSP undo event) instead of suspending

@oh-my-pi/pi-utils

Fixed
  • Fixed multi-second temp directory removal stalls on Windows by forcing a major GC before the first deletion retry (#13044 by @jchanghong023).

What's Changed

New Contributors

Full Changelog: https://github.com/can1357/oh-my-pi/compare/v18.4.11...v18.4.12

Release v18.4.11

Oh My Pi v18.4.11

@oh-my-pi/pi-agent-core Fixed Fixed lenient argument validation for tools such as yield: malformed tool-call JSON is now reported to the model instead of causing the tool to run with empty arguments. @oh-my-pi/pi-ai Fixed Fixed Cursor cached prompt token…

Read full notes

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

Fixed
  • Fixed lenient argument validation for tools such as yield: malformed tool-call JSON is now reported to the model instead of causing the tool to run with empty arguments.

@oh-my-pi/pi-ai

Fixed
  • Fixed Cursor cached prompt token accounting to prevent duplicate input-token and cost reporting on cached turns.
  • Fixed auth-broker credential handling so late token-refresh responses cannot restore logged-out credentials or overwrite a newer login.

@oh-my-pi/pi-catalog

Fixed
  • Fixed new Fireworks sessions failing on the first turn by updating the default model to kimi-k3, which is currently supported by Fireworks.

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

Added
  • Added goal management for RPC hosts and optional automatic goal continuation via goal.continuationModes: ["rpc"]. RPC clients can create, inspect, pause, resume, and remove goals, and view the current goal in get_state.
  • Added --goal <objective> for interactive launches to begin a new session in goal mode without requiring the /goal command.
  • Added periodic completion estimates for running subagents, with configurable polling through task.completionProbeMs and progress displayed in wait and task views.
  • Added the RPC fork command (RpcClient.fork(entryId?), Python fork(entry_id=None)): it moves an RPC session onto a new session file holding the history up to and including any message entry (and the tool results answering a cut tool-call batch), together with the session's artifacts, or a copy of the whole session when entryId is omitted (#14077 by @andrebrait).
  • Added reason ("branch", "fork" or "btw") to the session_before_branch and session_branch extension and hook events, so handlers can tell whether entryId is dropped (branch) or kept (#14077 by @andrebrait).
Fixed
  • Fixed skill-description and text-prediction data not respecting XDG directories; existing data is now migrated to $XDG_DATA_HOME/omp when applicable.
  • Fixed subagent MCP calls ignoring the parent transport timeout, including configured OMP_MCP_TIMEOUT_MS and unlimited (timeout: 0) settings.
  • Fixed fresh setups failing on the first turn when the automatically selected model did not support the configured thinking level.
  • Fixed the read tool hanging and the TUI becoming unresponsive when asked to read standard input, FIFOs, or other non-regular files; these paths are now rejected.
  • Fixed project configuration from ~/.omp being incorrectly applied to unrelated working directories under the user's home directory.
  • Fixed omp update failing on standalone-binary installs when npm advertised a version whose GitHub release was never published; the updater now installs the newest published release instead (#12913).

@oh-my-pi/pi-tui

Added
  • Added subagent completion percentages to the agent tree, task, and wait views.
Changed
  • Updated notebook evaluation cells in native hosts to use directional gutter indicators for inputs and outputs, with a progress indicator while a cell is running.
Fixed
  • Fixed multiline paste on Windows so pasted line breaks are inserted correctly instead of terminal escape sequences.

@oh-my-pi/pi-utils

Added
  • Added XDG-aware utility paths for skill descriptions and prediction state, with automatic adoption of legacy data when XDG locations are first resolved.
Fixed
  • Fixed machine-global daemon runtime paths so brokers such as text prediction use the shared XDG state location across profiles and custom agent directories.

@oh-my-pi/pi-wire

Added
  • Added support for agent completion estimates in the wire protocol.

What's Changed

New Contributors

Full Changelog: https://github.com/can1357/oh-my-pi/compare/v18.4.10...v18.4.11

Release v18.4.10

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…

Read full notes

@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).

…

Thursday, October 1Oct 1, 2026

Release v18.4.9

Oh My Pi v18.4.9

@oh-my-pi/pi-ai Fixed Fixed rejected HTTP 400 requests from consuming unbounded disk space by automatically cleaning up old request logs and enforcing a size limit. Fixed unnecessary credential and session updates that could trigger needless authentication…

Read full notes

@oh-my-pi/pi-ai

Fixed
  • Fixed rejected HTTP 400 requests from consuming unbounded disk space by automatically cleaning up old request logs and enforcing a size limit.
  • Fixed unnecessary credential and session updates that could trigger needless authentication reloads in other running processes.
  • Fixed context-overflow recovery for Strata requests that exceed the model context limit but return no usage information.

@oh-my-pi/pi-catalog

Fixed
  • Fixed model catalog caching so unchanged catalogs refresh without unnecessary rewrites, and offline snapshots for endpoint-less models (such as Azure models) are now handled correctly across startups.

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

Added
  • Added opt-in stale-session garbage collection with omp gc --stale or gc.stale, removing orphaned session markers and terminal breadcrumbs and expiring old debug reports and collaboration replicas according to configurable retention limits.
  • Added RPC controls to cancel or steer individual foreground and background subagents without aborting the session.
  • Added RPC word-completion commands so web and IDE hosts can provide the same ghost-text completion available in the terminal editor.
  • Added an opt-in RPC ask-dialog mode that lets hosts render all questions together with checkbox or radio-button controls and submit their answers in one response.
  • Added SDK notifications when a session moves to a new persistence file, including the previous and new paths.
  • Added SDK APIs to inspect and cancel background jobs, including their command, working directory, process IDs, exit status, and captured output.
Changed
  • Improved the omp predict comparison view with an interactive native interface, table rows, action controls, and clearer status information.
  • Improved MCP authorization prompts with clickable links, native copy/open context menus, and a clearer URL layout.
  • RPC hosts are now notified when omp cancels an expired select, confirm, input, or ask dialog, allowing stale UI prompts to be closed.
  • Limited saved bash, Python, and JavaScript evaluation output artifacts to 16 MB by default while preserving both the beginning and latest output; configure the limit with tools.artifactMaxBytes, or set it to 0 for unlimited output.
Fixed
  • Fixed /wt on filesystems without copy-on-write cloning, including NTFS, so unchanged files are not incorrectly marked modified and staged edits, additions, and deletions retain the correct contents.
  • Fixed Windows Ctrl+V taking about a second to paste by avoiding unnecessary PowerShell clipboard checks.
  • Fixed local:// paths being misinterpreted as local filesystem paths by the read, write, and search tools.
  • Fixed read handling of semicolon-separated URLs, local paths, and line selectors so each entry is processed independently.
  • Fixed session persistence conflicts between multiple omp processes, preventing lost or interleaved turns and continuing in a new session file when necessary.
  • Fixed session image handling to avoid unnecessary rewrites, preserve images after interrupted writes, and prevent garbage collection from removing images that are referenced again.
  • Reduced unnecessary disk writes and improved persistence efficiency across sessions, model data, configuration, and background jobs.
  • Fixed the native composer showing the main session's effort level instead of the selected subagent's level.
  • Fixed the omp predict comparison view and MCP authorization prompt rendering with their full native interfaces, including clickable link actions.

@oh-my-pi/pi-natives

Added
  • Added readTextFromClipboard() for reading plain text from the system clipboard without starting a subprocess.
  • Added Shell.pids() to retrieve the IDs of still-running processes spawned by an in-flight shell command.

@oh-my-pi/pi-tui

Added
  • Exported wordCompletionQuery() so hosts outside the editor can apply the same prose eligibility rules used by ghost-text word completion.
  • Added a full-featured Background jobs view with selectable jobs, live status and elapsed time, working directory, process IDs, exit code, command, tailing output, and cancellation for running jobs.
Changed
  • OutputSink now limits artifact files to 16 MiB by default while preserving the beginning and end of oversized output and marking the omitted bytes. Set artifactMaxBytes: 0 to keep artifacts unbounded; dump() reports omitted bytes and full-output references identify sampled artifacts.
Fixed
  • Reduced unnecessary composer startup-cache writes and ensured the cache database is released when it closes on Windows.
  • Fixed Shift+Enter and Ctrl+Enter prompt behavior in Windows Terminal 1.24 and earlier; Shift+Enter now inserts a newline and Ctrl+Enter sends a follow-up, matching other platforms.
  • Improved the Tern native terminal experience across background jobs, settings, debugging, logs, extension management, interactive shell, and provider streams: views remain usable and navigable, preserve output and selection behavior, support keyboard scrolling, and keep key actions accessible.
  • Fixed multi-line labels in Background jobs and multi-line titles in native-terminal prompts so their formatting remains readable.

@oh-my-pi/pi-utils

Added
  • Added tryAcquireFileLock, a non-blocking file-lock helper that returns null when the lock is already held.
  • Added an unref option to AsyncDrain, allowing applications to use long batch windows without keeping the process alive.
Changed
  • Improved logging efficiency and configurability by batching routine file writes, flushing urgent records promptly, adding on-demand logger.flush() support, and allowing file log levels to be limited with OMP_LOG_LEVEL. Log files are created only when needed, and obsolete log and audit files are cleaned up automatically.

@oh-my-pi/pi-wire

Added
  • Added terminal scrolling support through the TSP scroll operation, allowing keyboard scrolling of the terminal scroller when supported.
  • Added a terminal focus event for requesting keyboard focus on editors and inputs, or returning focus to the preferences sheet.

What's Changed

…

Release v18.4.8

Oh My Pi v18.4.8

@oh-my-pi/pi-natives Fixed Fixed omp 18.4.3 and later crashing with a segmentation fault at startup on Apple silicon Macs running macOS older than 27; Apple Foundation Models support now loads only on macOS 27 and later @oh-my-pi/pi-tui Added Added an optional…

Read full notes

@oh-my-pi/pi-natives

Fixed
  • Fixed omp 18.4.3 and later crashing with a segmentation fault at startup on Apple silicon Macs running macOS older than 27; Apple Foundation Models support now loads only on macOS 27 and later

@oh-my-pi/pi-tui

Added
  • Added an optional terminal section to theme JSON (background, foreground, chrome, widget, 16 ansi colors) naming the terminal a theme was made for, for hosts that paint the terminal themselves; the built-in themes ported from known schemes (GitHub, Nord, Dracula, Catppuccin, Solarized, Gruvbox, Tokyo Night, One, Monokai, Rosé Pine, Poimandres, Celestial) carry their scheme's.
Fixed
  • Fixed native-terminal (TSP) frames held back by unacknowledged credits waiting for an unrelated render after the 5-second stall fallback expired; a credit-blocked change now renders as soon as the oldest frame counts as stalled.

Full Changelog: https://github.com/can1357/oh-my-pi/compare/v18.4.7...v18.4.8

Release v18.4.6

Oh My Pi v18.4.6

@oh-my-pi/pi-agent-core Added Added APIs for improving agent follow-up and steering workflow management, including moving queued follow-ups into steering with a single queue-change notification. Added support for trusted post-tool guidance via afterToolCall…

Read full notes

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

Added
  • Added APIs for improving agent follow-up and steering workflow management, including moving queued follow-ups into steering with a single queue-change notification.
  • Added support for trusted post-tool guidance via afterToolCall results, allowing additional context to be included in the next provider request, including after tool failures.

@oh-my-pi/pi-ai

Fixed
  • Fixed forced tool calls failing for Claude Opus 5.5 and Sonnet 5.5 through Amazon Bedrock, including required-tool retries in plan mode.

@oh-my-pi/pi-catalog

Added
  • Added configurable catalog cache-warming lifetimes for cache-capable Claude models on Amazon Bedrock Converse, Bedrock Runtime, and Mantle, with 5-minute defaults and a 1-hour Converse option where supported.
Fixed
  • Fixed forced tool calls for Claude Opus 5.5 and Sonnet 5.5 on Amazon Bedrock Converse.
  • Fixed the thinking-off setting for Command Code models served through the Responses API so they no longer produce reasoning when disabled.

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

Added
  • Added a live Background Jobs view that lets you monitor running background jobs without interrupting the transcript.
  • Added agent lineage navigation, making it easy to move between subagents and the main session from the composer header.
  • Added queued-message controls to the RPC clients and session API, including promotion of queued follow-ups to steering messages without duplicating text or losing attachments, plus explicit steering or follow-up behavior for prompts sent while the agent is busy.
  • Added support for keeping Claude prompt caches warm on Amazon Bedrock and Bedrock Mantle according to configured model cache lifetimes and retention settings.
  • In Tern terminals, the effort indicator now visualizes the selected thinking level and becomes a fireball at the maximum level.
Changed
  • RPC prompt requests now acknowledge only after the message has been accepted for processing, queued, or routed to an extension command, so subsequent queue-management operations can act on the admitted message reliably.
  • Idle recaps now appear as structured notices in the transcript rather than status-line messages.
  • Attached-image descriptions for text-only models now time out after 20 seconds and stop when aborted, while preserving the image and informing the model when a description is unavailable.
  • The status line now separates the session's own cost from total subagent spend, including nested, background, and resumed subagents, and matches the Agent Hub total.
  • Tool-use reminders are now delivered as separate developer messages, keeping them distinct from tool output.
  • Reworked Tern transcript navigation and presentation: Esc-Esc rewind now uses the transcript with turn-by-turn and branch navigation, attached images open in Tern's image viewer, idle recaps remain unobtrusively in the transcript, and the background-jobs pill opens the live jobs view.
  • Tern now reports agent activity through terminal progress consistently, and its progress and agent indicators update smoothly during subagent work.
Fixed
  • Fixed Tern commands issued while the agent is working so they appear immediately in the transcript instead of being clipped above the prompt.
  • Added a dismiss action for Tern's prompt-area error notifications.
  • Fixed dollar signs in prompts being mistaken for Python mode until a following space confirms the mode.
  • Fixed turns getting stuck in a working state when post-turn maintenance, such as saving the session, fails; the session now becomes idle and reports a warning.
  • Fixed failed tool-output pruning from leaving live context out of sync with saved history.
  • Fixed oversized or undersized attached images being distorted when resized to fit display limits.
  • Fixed interrupted tool calls disappearing from the model's context after resuming a stopped session.
  • Fixed aborted prompts with images still being prepared from starting or entering the queue afterward.
  • Fixed aside messages containing pasted image or video paths so the source path is preserved when sent to the model.
  • Fixed extension-registered prompt-cache settings, including explicit opt-outs, not taking precedence over matching models.yml definitions.
  • Fixed prompt-cache warming to honor cache-retention settings, including disabling replay for no-retention caches and using the lifetime written by long-retention requests.

@oh-my-pi/pi-tui

Added
  • Added a full-page transcript replay experience for Rewind in native terminals, with branching navigation through the conversation.
  • Added agent lineage navigation, including headers and links for moving between a subagent and its ancestors or returning to the main session.
  • Added a Jobs overlay for viewing background jobs.
  • Added OSC 877 protocol support for native TUI surfaces in Windows ConPTY environments.
  • Added customizable native screen layouts through Component.describeScreen and programmatic scrolling for native nodes.
  • Added native-terminal text editing support for selections in the composer and single-line inputs, including undoable host edits and safe handling of stale or token-spanning ranges.
  • Added optional dismissal handling for error banners, including a Dismiss button in native terminal strips.
Changed
  • Notebook evaluation cells now use dedicated input and output gutters with clearer status indicators.
  • Streaming file operations now remain expanded while running and collapse after execution completes.
  • Improved native-terminal effort indicators, using terminal glyphs where available and block meters as a fallback.
  • Updated native composer navigation when viewing a subagent to show the agent lineage and provide a direct return to the main session.
  • Native /resume picker sheets drop the "Resume session" heading and the This folder / All projects tabs: the search placeholder names the scope ("Search sessions in app…", "Search all sessions…") and Tab (the footer's All projects / This folder action) switches it. Picker title is now optional on the wire.
  • Updated the native composer's context display to span the window and provide clearer context usage and session-cost information, with shortcuts to the context and usage views.
  • Updated status-line billing summaries to show subagent spend separately from session spend and avoid repeating the same currency or subscription marker for subsequent amounts.
Fixed
  • Fixed search results so gaps between non-adjacent context runs are displayed correctly.
  • Fixed custom-answer and note prompts in native terminals so questions are shown completely with the correct titles and are no longer truncated or incorrectly wrapped.
  • Fixed text fields in native dialogs to render without a duplicate prompt indicator.
  • Fixed native TUI surfaces falling back to plain text rendering in Tern on Windows by accepting OSC 877 messages received through ConPTY.
  • Fixed streaming edit, patch, and write operation cards so they remain fully visible while running and collapse only after completion.

@oh-my-pi/pi-wire

Added
  • Added the TspMeterMark component for marking a position on a meter track with a custom icon and a total value that defines the full span of the track.

What's Changed

…

Wednesday, September 30Sep 30, 2026

Release v18.4.5

Oh My Pi v18.4.5

@oh-my-pi/pi-ai Added Added Factory Droid OAuth, HTTP streaming across Anthropic, OpenAI and Gemini protocols, and pool-aware usage reporting (#8577 by @will-bogusz, continued in #13276 by @DusKing1). AuthStorage.keys.setConfig(provider, value, { fallback:…

Read full notes

@oh-my-pi/pi-ai

Added
  • Added Factory Droid OAuth, HTTP streaming across Anthropic, OpenAI and Gemini protocols, and pool-aware usage reporting (#8577 by @will-bogusz, continued in #13276 by @DusKing1).
  • AuthStorage.keys.setConfig(provider, value, { fallback: true }) registers a key that is used only when no stored OAuth or /login credential exists, instead of overriding them; removeConfig/clearConfig also clear these fallbacks (#13815 by @H4vC)
  • Cursor turns now fall back to Cursor's HTTP/1 streaming transport when HTTP/2 is unavailable, surface Cursor's structured service errors, and resume from the last safe server checkpoint after a dropped stream (#11613 by @will-bogusz).
Fixed
  • Auth gateway checks for configured bearer tokens in URLs or forwarded/logged headers only after authentication; unauthorized requests use socket peers and redact unknown paths. Authenticated requests with misplaced tokens are rejected before provider dispatch (#13827 by @shawnkoh).
  • Codex sessions no longer keep spending an account's credits after its plan limit is reached while another logged-in account still has plan usage left; new and ongoing sessions switch to that account, and credits are used only when no account has plan usage left (#13889).
  • Runtime usage providers (usage.setProvider, extension registerProvider({ usage })) now key cached reports by their own cacheVersion, so reports written by processes without the override are no longer served to it (#13814).
  • xAI OAuth accounts with active weekly credits no longer switch away solely because an uncertain monthly counter exceeds its limit (#13806).
  • Cursor retries after a rejected conversation now keep the tool calls and results already completed in the turn, instead of re-sending the last message and redoing that work (#11613 by @will-bogusz).

@oh-my-pi/pi-catalog

Added
  • Added the hand-maintained Factory Droid catalog with account policy and regional discovery, upstream-specific reasoning controls, and base credit rates (#8577 by @will-bogusz, continued in #13276 by @DusKing1).
Changed
  • Cursor's model list now comes from the account's own catalog: one entry per model lane with its real context window, image support, and effort ladder, only models the account can run, and Cursor's account default marked (#11613 by @will-bogusz).
Fixed
  • Fixed OpenRouter decision models that report no context/output limits (respan/span-01, respan/span-01-lite, respan/span-01-lite:free) missing from the judge model list (#13888)
  • Fixed every google-vertex/claude-sonnet-5-5 request failing with 400 thinking.adaptive.block_binding: Extra inputs are not permitted (#13795)
  • Fixed Cursor Grok 4.7 appearing as separate grok-4.7-{low,medium,high,xhigh} and -fast models that each also offered an effort selector; they now show as grok-4.7 and grok-4.7-fast with effort picked separately (#12773)
  • Cursor fast lanes whose bundled rate card lists only the base rate now bill at Cursor's declared fast multiplier instead of the base rate (#11613 by @will-bogusz).
  • Cursor's default (Auto) router is marked as variably priced instead of free (#11613 by @will-bogusz).
  • Switching Cursor accounts no longer shows the previous account's cached model list (#11613 by @will-bogusz).

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

Added
  • Added Factory Droid login and model selection with base credit badges and account-matched regional discovery (#8577 by @will-bogusz, continued in #13276 by @DusKing1).
  • Added HELMCODE_API_KEY to the environment variables listed in omp --help (#13630 by @alexcerezo).
  • RPC hosts can send messageUpdates: "delta" with set_event_filter to receive message_update frames without the accumulated message snapshots (message shrinks to { role } and assistantMessageEvent.partial is omitted); the response echoes the active mode (#13716 by @alphastorm)
  • RPC hosts can follow each cache-warming refresh through cache_warming_start and cache_warming_end events (also written by --mode json), which report the outcome and the recorded usage, and can set the session's warming mode with set_cache_warming without changing config.yml; the Python client gains set_cache_warming() (#13717 by @alphastorm)
  • The /review and /annotate code-review menus have a "Review a specific PR" option that lists the repository's open pull requests, with server-side search and a #123 shortcut (#12399 by @abilliontokens)
  • Pinned Subagents rows can show each agent's current (or most recent) tool call with a one-line detail and an elapsed marker; enable with display.subagentLivePreview (off by default) (#3821 by @abilliontokens)
  • Model presets: save every role assignment plus the default thinking level under a name and switch between them with /modelpreset save|switch|delete|list, pick one interactively with /modelpreset, or press s in the /models Roles view to save the current setup (#5253 by @abilliontokens)
  • Subagent tool previews name the files a freeform edit (apply_patch, sloppy, hashline) touches (#11210 by @DarkPhilosophy).
Changed
  • omp auth-gateway serve now attributes peers to the socket address by default; deployments behind a trusted reverse proxy can restore forwarded peer headers with --trust-proxy-headers (#13827 by @shawnkoh)
  • --no-ui now also works with --mode rpc-ui: extensions run headless while tool UI such as the ask

…

Tuesday, September 29Sep 29, 2026

Release v18.4.4

Oh My Pi v18.4.4

@oh-my-pi/pi-agent-core Added Added Agent.replaceQueue() to replace one pending queue without changing the other queue (#11872 by @andrebrait). Added queued-message grouping so owned companion records and their user prompt are dequeued together in…

Read full notes

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

Added
  • Added Agent.replaceQueue() to replace one pending queue without changing the other queue (#11872 by @andrebrait).
  • Added queued-message grouping so owned companion records and their user prompt are dequeued together in one-at-a-time mode (#11872 by @andrebrait).
  • Added Agent.onQueueChange(), a listener called whenever a steering/follow-up queue mutator (enqueue, dequeue on delivery, clear, or restore) runs, so hosts can observe queue changes without polling (#11872 by @andrebrait).
Fixed
  • Fixed GPT models on Amazon Bedrock's OpenAI routes (bedrock-runtime and bedrock-mantle /openai/...) falling back to a local summary instead of OpenAI's native remote compaction; set remoteCompaction.enabled: false to opt out (#13311 by @mustafaabidali).
  • Fixed native compaction on Amazon Bedrock's OpenAI routes skipping the provider's request setup, which sent Bedrock Mantle compaction to an unresolved {region} host and skipped configured headers and proxies; other providers' compaction requests are unchanged (#13311 by @mustafaabidali).

@oh-my-pi/pi-ai

Added
  • Added the ultrafast service tier. It is sent to the OpenAI API as-is, and to Codex only for models that list it in their discovered service tiers; other providers never receive it. On Codex websockets, switching into or out of ultrafast starts a new response chain instead of reusing previous_response_id, matching the Codex CLI. Ultrafast turns are costed at standard rates because no Ultrafast price is published yet (#13782 by @H4vC).
Changed
  • Changed to fall back to adaptive thinking when between_tools is used with xhigh effort
  • xAI requests (xai, xai-oauth chat and image generation) honor XAI_BASE_URL again when the model uses the bundled https://api.x.ai/v1 endpoint; a custom baseUrl from models.yml still wins, and xai-oauth OAuth access tokens always stay on the bundled endpoint.
Fixed
  • Fixed Claude on Amazon Bedrock's Anthropic Messages routes (/anthropic on bedrock-runtime and bedrock-mantle): runtime requests no longer fail with a request-metadata 400, and both routes use Anthropic's on-demand compaction (#13311 by @mustafaabidali).
  • /usage no longer shows an always-empty gpt-4 requests row for Cursor accounts on usage-based plans; the Cursor Models and Other Models meters remain (#13726 by @will-bogusz).
  • Cursor turns routed through an HTTP proxy now finish instead of hanging after the response completes (#13724 by @will-bogusz).
  • Fixed Codex requests sending priority (and scale) to models whose discovered service tiers list other tiers but not that one, matching the Codex CLI; an empty or missing list is treated as not reported, so priority is still sent and /fast keeps working on accounts whose /models lists no tiers (flex is always allowed) (#13782 by @H4vC).
  • Fixed Codex priority cost: a turn the backend reports as served at default is no longer billed at the priority multiplier (#13782 by @H4vC).

@oh-my-pi/pi-catalog

Added
  • Added compat.bedrockMessagesApi for anthropic-messages models: detected from a Bedrock /anthropic base URL under any provider id, it drops tool strict, fits metadata.user_id to Bedrock's pattern, and enables on-demand compaction; set it in models.yml to opt a proxy or an ANTHROPIC_BASE_URL reroute in, or false to opt out (#13311).
  • Added GPT-6.1 Sol pricing for openai-codex (gpt-6.1-sol, gpt-6.1-sol-wm: $2 input, $10 output, $0.10 cached input), so Codex usage shows cost instead of $0 (#13782 by @H4vC).
  • Added Model.serviceTiers, the service tiers a provider advertises for a model; Codex discovery fills it from service_tiers (e.g. priority, ultrafast) (#13782 by @H4vC).
  • Added the documented 922K input maximum for openai-codex/gpt-6.1-sol with extended context on (Codex reports a stale 872K), matching GPT-6 Astra; the default window stays 272K (#13782 by @H4vC).
Fixed
  • Fixed openai-codex/gpt-6.1-sol not appearing in Codex discovery even on accounts where the Codex CLI lists it: the backend hides it from client version 0.155.1, so Codex requests now report 0.159.0, the current Codex CLI release (#13782 by @H4vC).
  • Fixed on-demand compaction staying off for Claude models on the amazon-bedrock and bedrock-mantle providers when they use Bedrock's /anthropic routes (#13311 by @mustafaabidali).
  • Fixed Claude models on Bedrock's /anthropic routes resolving compat.disableStrictTools: false, although those routes reject the tool strict field (#13311 by @mustafaabidali).
  • Fixed Bedrock's FIPS (bedrock-runtime-fips) and AWS PrivateLink (vpce-….vpce.amazonaws.com) hostnames, and Mantle's documented /v1 OpenAI base, not being recognized as Bedrock routes, which left them without native compaction and the /anthropic request fixes (#13311 by @mustafaabidali).
  • Added supportsBetweenToolsThinking Anthropic compat flag (supports-between-tools-thinking KDL axis), enabled for Claude Sonnet 5.5

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

Added
  • Added compat.bedrockMessagesApi to models.yml, so Claude reached through a proxy or an ANTHROPIC_BASE_URL reroute to Bedrock's /anthropic API gets Bedrock request shaping and on-demand compaction; false opts a Bedrock URL out (#13311).
  • Submitting exactly exit, quit, or q (any case, no leading /, nothing else in the input) in a session with no messages now quits; turn off with input.bareExitOnEmptySession (#13755 by @H4vC)
  • Added the opt-in input.bareSlashCommands setting (Interaction > Input): submitting exactly a command name without the leading / (e.g. model, compact

…

Release v18.4.3

Oh My Pi v18.4.3

@oh-my-pi/pi-agent-core Added Added transformAssistantMessagePreservesToolCalls, letting stream speculation and direct speculative candidates run under a transformAssistantMessage that never rewrites streamed tool calls Added authorizeLaunch to the speculative…

Read full notes

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

Added
  • Added transformAssistantMessagePreservesToolCalls, letting stream speculation and direct speculative candidates run under a transformAssistantMessage that never rewrites streamed tool calls
  • Added authorizeLaunch to the speculative execution host and coordinator so tool stream sessions can start host-approved effectful work (e.g. subagents) before their call dispatches
Fixed
  • Fixed auto-compaction with the remote method failing on long Codex/OpenAI sessions with "Remote compaction input exceeds the context window" (#13611)
  • Fixed passive tool-call context being repeated when several calls in one batch returned the same text; identical per-call context is now delivered once, at its first position (#13633 by @andrebrait)

@oh-my-pi/pi-ai

Added
  • Added Command Code usage limits (5-hour, weekly, and credit balance) to /usage and the status line (#13666 by @riicodespretty)
Changed
  • Reduced per-token CPU and allocations while streaming: the leaked-thinking scanner used for OpenAI-compatible and custom endpoints no longer allocates per character, chat-completions and Bedrock look up a delta's content block in constant time, Google, Gemini CLI, Codex, and chat-completions streams skip raw SSE line capture unless an onSseEvent listener is attached, and event streams drain backlogs without Array#shift (#13650 by @H4vC).

@oh-my-pi/pi-catalog

Added
  • Added Command Code's typesafe/jev decision model for the judge role (#13666 by @riicodespretty)
  • Added Command Code's DeepSeek V4.1 Flash Fast model (#13666 by @riicodespretty)
  • Added Command Code's Claude Sonnet 5.5 model (#13666 by @riicodespretty)
  • Added trust-forbidden=#true for optional login validate checks, so a key check that answers 403 keeps the pasted key instead of rejecting it (#13666 by @riicodespretty)
  • hosted-image #false and image-model #false now remove a hosted image flag or image model that a class rule grants (#13666 by @riicodespretty)
  • Added support for Claude Sonnet 5.5 model with image and text inputs
  • Added new compatibility rules for Anthropic Sonnet family enabling mid‑conversation system features and disabling forced tool choice
  • Added the web-search-model, hosted-image, and image-model catalog axes (Model.webSearchModel, hostedImage, imageModel). web-search now comes from the model's lineage and API (GPT-5+ Responses, Claude 4+ Messages, Gemini 2+), so proxies and gateways that expose these models inherit it.
Changed
  • Renamed the Codex image model openai-codex/gpt-image-1 to openai-codex/gpt-image-2 to match what the Codex backend runs (gpt-image-2-codex); saved openai-codex/gpt-image-1 selectors resolve to the new id.
  • Routed Command Code's 10 GPT models through the OpenAI Responses API (#13666 by @riicodespretty)
  • Command Code login now rejects a key that Command Code answers with 401; a 403 or an unreachable check keeps the pasted key, as the Command Code CLI does (#13666 by @riicodespretty)
  • Command Code GPT models no longer advertise hosted image generation or the gpt-image-2 image model, which Command Code does not serve (#13666 by @riicodespretty)
  • Command Code Muse Spark models drop the minimal thinking level, and Muse Spark 1.3 adds max, matching the Command Code CLI (#13666 by @riicodespretty)
  • Changed Command Code prices to match the Command Code CLI: DeepSeek V4 Flash and V4 Flash Vision Exp drop from 0.22 / 0.66 to 0.15 / 0.6 per 1M tokens, Step 3.5 Flash input drops from 0.1 to 0.09, and LongCat 2.0 is no longer shown as free (0.3 / 1.2) (#13666 by @riicodespretty)
Fixed
  • Fixed missing thinking levels, image input, and prices for Command Code models (#13666 by @riicodespretty)

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

Added
  • Batch task calls now start each subagent as soon as its tasks[] item finishes streaming instead of waiting for the whole call; launched agents are aborted if the finished call is invalid, blocked, or changed. Controlled by task.speculativeLaunch (default on; requires auto-allowed task approval and no extension tool lifecycle handlers)
  • Set PI_SMART_GIT=1 to have every git worktree add in the bash tool — including inside compound commands, functions, and loops — copy-on-write clone the checkout (APFS, btrfs/XFS reflink, ReFS) instead of checking out every file, so new worktrees start with ignored build caches (target/, node_modules/) already in place; every worktree add option except --orphan, --no-checkout, --track, and --relative-paths is handled, and anything else still runs real git.
Changed
  • Running omp "prompt" without a terminal on stdin (scripts, CI, </dev/null) now runs the prompt headless like -p; a bare omp without a terminal exits 2 with an error instead of exiting silently (#13623 by @H4vC)
  • Invalid --thinking, --approval-mode, and --mode values are now rejected with a usage error (exit 2) listing the valid values, instead of being silently ignored (#13623 by @H4vC)
  • The default web search chain is now free-only: Parallel, the session's own model (new web/hosted), Exa, Firecrawl, SearXNG, and the credential-free scrapers. Paid engines (Perplexity, Tavily, Brave, Kagi, …) and other providers' chat models run only when you set them on the web role or its fallback chain.
  • Parallel, Exa, and Firecrawl now run their keyless endpoints in the automatic chain instead of only when explicitly selected.
  • Perplexity search no longer falls back to your OpenRouter key; select openrouter/perplexity/… explicitly to search through OpenRouter.
  • Hosted web search now follows the model rather than the host: GPT-5+ over any Responses API, Claude 4+ over any Messages API, and Gemini 2+ (including Gemini CLI), so web/hosted works through proxies and gateways. A model-backed search that returns no sources now counts as a failure, so the chain moves on to the next engine instead of showing an unsourced answer.
  • web/hosted first tries a cheaper model on the session's own provider (e.g. Opus → Haiku, GPT-5.x → GPT-5.6 Luna, Gemini Pro → Flash) and falls back to the session model itself when the host does not offer it or the call fails.
  • Image generation now tries the session provider's own image model first (e.g. GPT-5.x → gpt-image-2

…