Release notes
Oh My Pi v18.13.0
@oh-my-pi/pi-agent-core
Added
- Added
SummaryOptions.remotePromptCacheKeyandremoteCompactionPolicyModel()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-timevalues above about 596 hours (such as600h) 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.compactingcontext 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
OpenAIRequestSetupModelnow requires the catalog-policy fields (api,reasoning), so callers building a reduced model forresolveOpenAIRequestSetupmust pass them (#16988 by @rafalopilowski1)
Added
- Added
PI_ANTHROPIC_API_VERSION=2026-10-21to 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 declaringproviderType: "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
constvalue to a tool's ownenumarray (#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_enumlabel, 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: gzipwithout an explicitAccept, and no longer send the Claude thinking beta header to Claude 5.5 (#17012 by @apoc)
Fixed
- Anthropic-compatible endpoints that require a
thinkingblock 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-banderrorframe, 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/usagereturnsrate_limit: nullfor them, and their per-user credit cap (spend_control.individual_limit) is now reported as aSpend 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_messagewhen 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.5after the V2.5 retirement (#16727 by @LiPu-jpg) - Fixed Xiaomi MiMo login rejecting
ttp-Token Plan keys with401 Invalid API Key; they now validate against the regional Token Plan hosts liketp-keys (#17045) - Fixed Xiaomi MiMo Token Plan login reporting
401 Invalid API Key
…