Release · Oh My Pi · can1357

Oh My Pi v18.14.1

What's new in Oh My Pi v18.14.1, released Oct 31, 2026 (). Newer: v18.18.0 (Nov 7, 2026)

Release notes

Oh My Pi v18.14.1

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

Breaking Changes
  • SentToolDefinitions.inactiveFor(messages, tools) is replaced by withInactiveTools(context), which also clears a stale inactiveTools; transformProviderContext now receives the request's inactiveTools (#17492)
Fixed
  • Long tool-call intents no longer block tool execution when intent tracing is enabled (#13140).

@oh-my-pi/pi-ai

Added
  • Added the codexAccessPrograms stream option and configureCodexAccessPrograms() process default to turn off the automatic Daybreak Blue access_programs request on Codex (#17508 by @H4vC)
  • Added waitForSibling to RotateCredentialOptions; set it to false to skip the short sibling-unblock wait in limits.rotate() while still blocking the failed credential (#17439 by @wolfiesch)
Changed
  • Cursor runs served through omp auth-gateway are limited to the client's own tools, all advertised as MCP; Cursor's built-in tools (file, shell, edit, todo, web fetch, SCM) are no longer offered on that path (#17382 by @eggpeat)
Fixed
  • Fixed native judgment requests (TypeSafe, OpenRouter Decisions, OpenAI Decisions, Workers AI) sending credentials in their state unredacted while credential redaction was on (#17443)
  • Fixed every new Codex session, including each subagent, losing a response and retrying when the native turn lane refuses live steering; once refused, later sessions on the same account, endpoint, and model queue follow-ups for four hours (#14158, #17438 by @wolfiesch)
  • Fixed Cursor models served through omp auth-gateway being told their file and shell tools were unavailable while the client ran the calls anyway, in Cursor's own argument shape (edits failed validation); each call now reaches the client as one of its own tools and the turn stops with toolUse until the result comes back (#17382 by @eggpeat)
  • Fixed Cursor models served through omp auth-gateway being told each tool call was handed off, which left Composer issuing calls blind and answering their results with empty stops; the gateway now keeps the Cursor run open while the client runs a step's calls and answers them in-band with the client's results on its next request (up to 30 minutes; otherwise the turn is rebuilt from history as before) (#17382 by @eggpeat)
  • Fixed Anthropic-compatible endpoints behind a relay opening a new connection for every turn: the response body is now drained for up to 2.5 s after message_stop instead of being cancelled, so the kept-alive connection is reused (#17432 by @flosrn)

@oh-my-pi/pi-catalog

Changed
  • Clamping a requested thinking effort now resolves through the model's effortMap alias first, so the request lands on the tier the model serves instead of the nearest lower one (#17395 by @Maziar123)
  • Long image-heavy conversations on the official Anthropic API now keep up to 120 MB of inline images before evicting older ones, following the Messages API request limit increase from 32 MB to 128 MB
  • The official Anthropic API now records its 128 MB request limit (request-body-byte-limit), so the newest message's images can use the 8 MB reserve and long text cannot push images past the limit (#17492 by @will-bogusz)
Fixed
  • Fixed Cursor's DeepSeek V4.1 Flash 1017 reporting zero cost; every effort level now bills at Cursor's API rate of $0.30/$1.20 per million tokens, with cache reads at $0.006 (#17390 by @eggpeat)

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

Added
  • Added the providers.openai-codex.daybreak setting (default on) to stop omp from automatically requesting the Daybreak Blue cyber access program on eligible ChatGPT accounts; each session follows its own value (#17508 by @H4vC)
  • Added queueable compaction: /compact sent with the follow-up key (Ctrl+Q) while the agent works now runs when it yields instead of interrupting it (#17397 by @H4vC)
  • Added omp session lease [--json] -- <session-id>... and the RPC command get_session_lease, which report which sessions a running omp owns ({"held": [...], "unknown": [...]}) without taking ownership, so another program can check a session without forking it (#17428 by @andrebrait)
  • Added opt-in title.refreshAfterPrompts: every N operator prompts, the judge model checks whether a generated session title still fits the conversation and regenerates it when it does not; user-set titles are never replaced (#17443 by @wolfiesch)
  • Gateway rows discovered from /v1/models now keep the reasoning_effort_map and reasoning_required facts they advertise: a route that serves only low/high/max routes medium to high instead of the nearest lower tier, and a thinking-off request still sends a tier the route accepts (#17395 by @Maziar123)
  • Computer-use scripts can wait for a window opened by an action and read it in the same call with a window filter's optional wait (#17391 by @will-bogusz)
Changed
  • read of a web page keeps the title, description, author and dates of its <meta> tags and lists the others by name only, so pages cost about 6% fewer tokens (#17393 by @will-bogusz)
  • On the Anthropic API, the newest message now keeps all its images up to the 128 MB request limit, past the 120 MB image budget (#17492 by @will-bogusz)
Fixed
  • Fixed account-policy recovery repeatedly rotating through denied credentials instead of surfacing the error or using the configured model fallback, including unnecessary sibling-unblock waits after the account allowance is spent (#17439 by @wolfiesch)
  • Startup prewalk now arms a later fallback candidate of the role named by prewalk.into when its first candidate is unavailable, matching /prewalk and /new (#17373).
  • Fixed omp install git:github.com/user/repo treating git as the host instead of installing the GitHub plugin (#17436).
  • Fixed read

…