Release · Oh My Pi · can1357

Oh My Pi v18.18.8

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

Release notes

Oh My Pi v18.18.8

@oh-my-pi/pi-ai

Fixed
  • Fixed concurrent OAuth requests rejected as claude_code_version_too_old failing instead of retrying with the required version (#18651)
  • Chat Completions gateway requests preserve explicit tool strict-mode choices, so Codex tools can omit optional arguments when callers set strict: false (#18672 by @0xeb).

@oh-my-pi/pi-catalog

Added
  • Added Muse Ember (muse-ember-1.0) on Meta Model API and Muse Code with the minimal–max reasoning effort ladder and its >200K long-context pricing
  • Added Gemini 4 Carbon pricing on the Gemini API, Vertex AI, Google Antigravity, and Cursor ($2 input / $0.10 cached / $10 output per 1M tokens through 2026-11-30, then $4 / $0.20 / $20), instead of showing $0 (#18734 by @eggpeat)
Fixed
  • Fixed regenerating the catalog marking 18 reasoning models as non-reasoning when NanoGPT's <id>:thinking sibling row had larger limits (#18673, #18728)

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

Changed
  • curl -fsSL https://omp.sh/install | sh and install.ps1 now install the standalone binary by default, even when bun is present, so installs get delta updates; pass --source/-Source for a bun package install
  • Ask forms can attach notes to selected options; those notes accompany the answers separately from submitted form values (#18779 by @Shadorain)
Fixed
  • Claude auto-redeem now spends a full saved reset on an account blocked by its weekly limit when the reset also clears the Fable cap; such resets were treated as Fable-only and skipped while Fable usage had room (#18801)
  • Fixed agents showing as idle in the Agent Hub while still running after a failed streaming edit preview (edit.streamingAbort) auto-recovered the turn (#18790 by @H4vC)
  • A browser call on a tab that is not open now says to open it with await browser.open({ name }) (Python: await browser.open(name=…)) and the url and app it was opened with, instead of pointing at the removed action:"open" (#18739 by @will-bogusz)
  • Fixed computer.window({ app }) and computer.windows({ app }) matching similarly named apps when the exact app name has an open window, such as Google Chrome alongside Google Chrome for Testing (#18744 by @will-bogusz)
  • In Tern, browser role/ selectors keep input roles and names under Turkish and Azeri locales (#18658 by @will-bogusz)
  • Chrome role/RootWebArea waits with visible return the document instead of failing, and hidden waits keep waiting (#18658 by @will-bogusz)
  • An omp -p or other omp that your session's bash tool or eval cell starts inside Tern or cmux no longer picks Tern or cmux from the pane it inherited, so its browser tabs stop floating over your pane (#18773 by @will-bogusz)
  • Browser relay connections sharing a tab no longer lose cross-site frames when another connection disables auto-attachment on its page; automatic children detach locally when their last armed page leaves, while explicitly attached frame subtrees remain usable after opting out (#18657 by @will-bogusz)
  • Browser agents now say when a step can't be done through the page, instead of patching the page with scripts and reporting the step as done (#18761 by @will-bogusz)
  • An extension's assistant_message rewrite now reaches the next Codex Responses request: same-model native replay used to resend the captured original text while the transcript showed the rewritten one (#18312)
  • MCP reconnects and tool-list refreshes now keep extension-deactivated tools inactive while enabling newly discovered tools (#18678).
  • Exiting after aborting a bash command now waits for its TERM-resistant foreground processes to be killed (#18669).
  • An edit touching several files that anchors lines no read displayed now reveals those lines for every file in one rejection, so the identical resend applies instead of being rejected again for the next file (#18742 by @MaisonnatM)
  • omp auth-gateway stdio now serves judge, image, speech, embedding, rerank and video models: /v1/models lists them, and /v1/systemone answers typesafe/jev-* or @judge instead of 404, or 422 from a chat model (#18740 by @andyhite)
  • omp auth-gateway stdio no longer cuts its last responses off at 128 KiB when its input ends before a slow reader has read them (#18740 by @andyhite)
  • omp --session <id> --restore restores that session, as omp --restore --session <id> does, instead of opening the session picker: a bare --restore keeps a session --session or --resume already named (#18685 by @AdamDureyAtWillship)
  • The legacy Pi virtual module now builds in an npm install that keeps the bundled Pi packages nested: it is anchored to the installed package, so its imports resolve through that package's own dependency graph (#15208, #18733 by @yuzu-octopus)
  • User-level agents, commands, and other ~/.omp/agent config (including agents saved from the agents hub) now follow PI_CODING_AGENT_DIR, matching where omp agents unpack writes (#18684)
  • Fixed grep and glob treating a ; list that starts with an internal URL and includes a local path, such as artifact://1;notes.txt, as one address; each listed target is now searched (#18714 by @eggpeat)
  • Isolated tasks that edit a file whose name contains spaces now commit that file, including in a nested git repository, instead of leaving it unstaged or committing a different file that shares part of the name (#18715 by @eggpeat)
  • A disposed or switched session now releases every persistent shell it owns, including the ones a surface keeps under a name of its own (/loop conditions), instead of holding one native shell per surface for the life of the process (#18717 by @eggpeat)

…