Release · Oh My Pi · can1357

Oh My Pi v18.13.0

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

Release notes

Oh My Pi v18.13.0

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

Added
  • Added SummaryOptions.remotePromptCacheKey and remoteCompactionPolicyModel() so remote compaction can carry a cache key gated against the request it actually sends (#16988 by @rafalopilowski1)
Changed
  • Remote compaction now sends cache and session headers for the endpoint and model the request actually uses, so a configured compaction override no longer inherits the live turn's routing (#16988 by @rafalopilowski1)
  • Aside providers (AgentLoopConfig.getAsideMessages, Agent.setAsideMessageProvider) now receive which boundary is polled, "work" after tool calls or "stop" at the end of a turn, so they can keep a message out of a finished turn (#16583 by @will-bogusz)
Fixed
  • Fixed --max-time values above about 596 hours (such as 600h) aborting the first turn with "Deadline exceeded" right away (#17054 by @trukhinyuri)
  • Fixed repeated compaction on small or provider-capped context windows: compaction keeps only as much recent history as fits under the configured trigger, and no longer counts stale pre-compaction usage (#16904 by @eggpeat)
  • Fixed native compaction token estimates counting opaque encrypted-state bytes as conversation text (#16904 by @eggpeat)
  • Fixed split-turn compaction leaving session.compacting context out of the turn-prefix summary (#16707 by @integrITsolutions)
  • Fixed compaction failing as a whole, and discarding the completed summary, when the optional short summary fails or returns no answer; the compaction now completes without a short summary, and cancellation still cancels it (#16942 by @Mouriya-Emma)

@oh-my-pi/pi-ai

Breaking Changes
  • OpenAIRequestSetupModel now requires the catalog-policy fields (api, reasoning), so callers building a reduced model for resolveOpenAIRequestSetup must pass them (#16988 by @rafalopilowski1)
Added
  • Added PI_ANTHROPIC_API_VERSION=2026-10-21 to send Anthropic API version 2026-10-21 to the official Anthropic API; sampling parameters are omitted under that version, which rejects them (#16706 by @H4vC)
  • OpenCode Go requests on lanes that opt into shared prompt caching send an explicit prompt-cache key as x-opencode-session, so Task siblings, forks and their parent reuse one gateway cache; custom providers declaring providerType: "opencode-go" get the same OpenCode headers (#16988 by @rafalopilowski1)
Changed
  • Reduced the CPU spent preparing tool schemas on every model call, so requests with many tools start faster (#16780 by @yuzu-octopus)
  • Fixed tool schema normalization modifying the caller's schema in place, which added the folded const value to a tool's own enum array (#16780 by @yuzu-octopus)
  • Google Antigravity requests now carry the same request labels as the official 2.26.0 client (cascade_id, root_cascade_id, request_id, used_non_gemini_model), and image model lookup sends the account's project (#17012 by @apoc)
  • Google Antigravity requests now send each model tier's own model_enum label, output cap and thinking setting from the serving account's model list, as the official client does: Claude 5.5 and Gemini 4 Argon tiers send a thinking level, Gemini 3.8 Flash tiers the tier's thinking budget (#17012 by @apoc)
  • Google Antigravity requests now number conversation steps like the official client (the first request is step 1, and each model turn and tool result adds one), send Accept-Encoding: gzip without an explicit Accept, and no longer send the Claude thinking beta header to Claude 5.5 (#17012 by @apoc)
Fixed
  • Anthropic-compatible endpoints that require a thinking block on every turn of the current turn no longer replay a 400 when the history holds a turn an upstream answered without reasoning; the serializer pads those turns (#16739 by @lz37)
  • Fixed an Anthropic stream that a gateway or proxy cuts after message_start, substituting an in-band error frame, being reported as a completed-turn provider failure instead of a retryable stream truncation (#16990 by @Maziar123)
  • Fixed Kimi Code, Z.AI, and ClinePass usage polls logging a warning every poll for accounts without a metered plan (#17057 by @trukhinyuri)
  • Fixed Codex usage showing no limits for credit-billed ChatGPT Business/Enterprise seats: /wham/usage returns rate_limit: null for them, and their per-user credit cap (spend_control.individual_limit) is now reported as a Spend cap (credits) limit that also gates chat requests when no plan windows exist (#16973 by @DusKing1)
  • Fixed overlapping OpenAI Codex requests in the same session (e.g. concurrent auth-gateway requests) closing the WebSocket another request was still streaming on; the later request now goes over SSE (#16812 by @Abelo9996)
  • Fixed Codex WebSocket turns dying with unsupported_native_inflight_message when the native turn lane was still busy; the turn is now retried as an independent full-context request instead of surfacing the error (#17065 by @AgileInnov8tor)
  • Fixed OpenRouter native failures appearing as successful empty stops and malformed Responses being replayed before corrective recovery; metadata permission/rate-limit failures no longer trigger malformed-response recovery (#17063 by @martijnberger)
  • Fixed Xiaomi MiMo API-key login failing with Unsupported model mimo-v2.5 after the V2.5 retirement (#16727 by @LiPu-jpg)
  • Fixed Xiaomi MiMo login rejecting ttp- Token Plan keys with 401 Invalid API Key; they now validate against the regional Token Plan hosts like tp- keys (#17045)
  • Fixed Xiaomi MiMo Token Plan login reporting 401 Invalid API Key

…