Changelog
OMP
Zuletzt aus offizieller Quelle geprüft:
Offizielle Changelog-Quelle öffnenDie Erfassung aus offiziellen Quellen ist begrenzt. Ältere Releases können fehlen. Diese Seite beansprucht keine vollständige Versionshistorie.
Versionshinweise ohne deutsche Übersetzung stehen im englischen Original.
Diese Ansicht zeigt 107 von 186 erfassten Einträgen. Ältere Einträge sind hier nicht geladen.
Neueste Releases (107)
7. November 2026
- •Fixed Mistral discovery listing embedding, OCR, moderation, transcription, and speech models as chat models; only rows with
capabilities.completion_chatare offered, with context, image input, and reasoning read from the row (#18244 by @VeigaPunk) - •A failed refresh no longer replaces a cached catalog whose models carry request headers with an empty snapshot; the next launch refetches it instead (#18227)
- •Fixed transcript output freezing after provider restarts or switching sessions mid-stream (#18358 by @JustasMasiulis)
- •Bash tool cards for a command whose leading
cd <dir> &&/cd <dir>;was hoisted into the working directory show thatcdagain above the visualized command, with the separator the model wrote, instead of dropping where it ran - •Bash commands starting with
cd <dir>; ...now run in<dir>as their working directory when it exists, so its direnv environment loads and the directory shows on the tool card (#18329 by @harshaygadekar) - •Task-file approvals show and keep the checked file target through dispatch, so retargeted symlinks cannot silently substitute another assignment; replaced files require a retry (#18314 by @iliaal).
- •Subagents receive task instructions with their blank lines, Markdown hard breaks, and table spacing intact, whether given inline or via
taskFile. - •Hindsight
retainandlearnmemories are no longer lost when delivery fails or omp exits: they are kept on disk, retried, and delivered by the next session without duplicates (#18176 by @alphastorm)
Mehr anzeigen (7)Weniger anzeigen
- •Fixed the session crashing with
Native shell returned an invalid execution tracewhen a bash command assigned a long value containing multi-byte characters such as Chinese text (#18259) - •
grep -eandrg -ein the bash tool accept patterns that start with-(e.g.grep -e "--canary") instead of failing with an unknown-option error. - •The bash execution visualization keeps updating, and saved traces still restore, after a command handles bytes that aren't valid UTF-8 (e.g.
v=$(printf '\377')) - •On Windows,
grep,globand isolated subagents no longer flash a console window when they query or start the ovnfs daemon. - •A bash command containing a bare
[(e.g.a && [while still streaming) no longer crashes omp in the Pseudo shell visualization (#18320) - •Fixed a prompt that mentions an internal-scheme URL with
@(e.g.@local://x,@vault://x) aborting the run with "uses internal scheme ... not as a filesystem path"; such a mention is now left as plain text (#16071) - •Fixed MCP OAuth login and token refresh failing with
JSON Parse error: Unexpected identifier "access_token"against GitHub's token endpoint (#18292)
6. November 2026
- •Added
Agent.queuedMessageGateto filter queued messages before delivery and observe claimed messages returned undelivered. - •Added
wireToolsFingerprint(), returning a hash of the tool specs sent with a request. - •Added opt-in standard Responses WebSockets for catalog-supported models, with incremental turns and automatic HTTP/SSE fallback; enable through OMP settings (#17354 by @TatsukiMeng)
- •
AuthStoragecan now be constructed over anAuthStorageBackendinstead of a credential store, so another thread's instance can serve every call - •Anthropic official-API sessions use message threads, sending only new messages per turn for faster first tokens; toggle with
statefulResponses: falseorPI_ANTHROPIC_MESSAGE_THREADS=0/1 - •Added
devin-cli(Devin CLI seat key) anddevin-windsurf(Windsurf Enterprise sign-in) logins, both stored as adevinAPI key (#13637 by @pavel-kalmykov, #13288 by @pavel-kalmykov) - •Factory Droid Gemini 4 Argon requests now match Droid's request and conversation handling (#17861 by @will-bogusz)
- •Changing the Codex ultrafast service tier now opens a connection for the selected tier, so requests route correctly
Mehr anzeigen (7)Weniger anzeigen
- •Factory Droid requests and login now match the current Droid client
- •Codex HTTP requests (turns, compaction, image generation, web search, model discovery) no longer send
OpenAI-Beta: responses=experimental, matching the official Codex client - •Fixed account switching stopping at rate-limited accounts; other eligible stored accounts are now tried first
- •Fixed OpenRouter Decisions judges ignoring
compat.openRouterRoutingandcompat.extraBody, including@providerpins (#18140) - •OAuth broker now validates residency, inference-region, and selected-organization metadata in uploaded credentials and remote snapshots
- •Fixed Muse Code subscription sessions failing with
403 client_attestation_deniedwhen tools were available (#17435, #17515 by @harshav167, continued in #18053 by @abilliontokens) - •Fixed
xai-ttsfailing with422 missing field language;languagenow defaults toauto(#17992 by @Mirceone)
2. November 2026
- •Deprecated
createFileOps,computeFileLists,formatFileOperations,upsertFileOperations,isUrlSchemePathandFileOperationsin@oh-my-pi/pi-agent-core/compaction; they now re-export@oh-my-pi/snapcompact, which callers should import directly - •Context estimates for a model without a known tokenizer family (Gemini, Grok and the like), and token counts made without a model (compress metrics, the legacy
estimateTokensexport), count text in o200k_base instead of guessing 4 bytes per token, which undercounted what those providers bill by 11–48% on code-heavy sessions and let compaction fire late after a switch to them (#17607 by @will-bogusz) - •Context estimates no longer charge a reader another model's thinking signatures or redacted thinking, which the request strips: a Claude session switched to Grok or Gemini, including Gemini through Factory, counted them as text (#17607 by @will-bogusz)
- •Removed
PI_TOKENIZER_ACCURATE: every model is now counted with a native tokenizer (#17607 by @will-bogusz) - •
/login mistralsigns in through the browser like the Mistral Vibe CLI and stores the minted API key, whose usage counts against the plan's Vibe Code quota instead of pay-as-you-go API credits;MISTRAL_API_KEYstill works (#13875 by @Gauthier-Huguenin, continued in #17672 by @abilliontokens) - •Added
dropsForeignReasoningPayload(turn, model), which tells whethertransformMessagescertainly strips a turn's thinking signatures and redacted thinking on the way tomodel, and, for Factory Droid's Gemini wire,isFactoryDroidGeminiWire(model)andkeepsFactoryGeminiReasoning(turn)(#17607 by @will-bogusz) - •Factory Droid Beam 1.0 requests accept tool-call turns that arrive without reasoning (#17766 by @will-bogusz)
- •Deprecated
formatErroron the embeddings, images, rerank, speech, transcriptions, video, pi-native and SystemOne server modules (now aliases ofcodedErrorResponse/noStoreErrorResponseinauth-gateway/http) andasStrictinproviders/aws-sigv4(nowasStrictBytesfrom@oh-my-pi/pi-utils)
Mehr anzeigen (7)Weniger anzeigen
- •Fixed Factory Droid Fable requests offering Opus 5 as the refusal fallback when your organization's model policy excludes Opus 5; Claude requests now offer only fallback models your account can use, and a request served by another organization's login than the one your model list came from offers none (#17772 by @will-bogusz)
- •
/login mistralnow offers the Mistral Vibe browser sign-in besideMISTRAL_API_KEY(#13875 by @Gauthier-Huguenin, continued in #17672 by @abilliontokens) - •Added
revisionAtLeasttocompat/revisionand exportedwithOpenAICompatibleDiscoveryTimeoutfromdiscovery/openai-compatible - •Added the Factory Droid models droid 1.1.0 serves: GPT-6.1 Terra, GPT-6 Sol and Luna Fast Mode, GPT-6 Astra and GPT-6.1 Sol Ultra Fast (after the organization's high-cost opt-in), Nemotron 3.5 Super, Muse Spark Open, Muse Spark 1.2 and Beam 1.0, each listed once the account may use it (#17766 by @will-bogusz)
- •Added Factory Droid's dated credit rates: the credit rate follows Factory's promotions, discounted from a promotion's start and back to the base rate at its end, using the same dated rate cards as dollar prices (currently GPT-5.6 Sol and Gemini 3.7/3.8 Flash) (#16309 by @will-bogusz)
- •Factory Droid lists Opus 5.5 Fast, GPT-6.1 Sol and MiniMax M3 without the feature flags Factory retired, and no longer routes GPT-5.5 to Snowflake (#17766 by @will-bogusz)
- •Factory Droid Opus 5.5 now falls back to Opus 5 when Anthropic refuses a request, as droid does, while your account can use Opus 5 (#17772 by @will-bogusz)
1. November 2026
- •Fixed OpenAI remote compaction (
/responses/compact) replaying backend-onlyinternal_chat_message_metadata_passthroughmetadata that Codex rejects as an unknown parameter (#17590 by @briankeefe) - •Fixed Codex conversation replay failing with an unknown
internal_chat_message_metadata_passthrough.content_token_countparameter by omitting backend-internal response metadata from replayed input (#17590, #17597 by @briankeefe). - •Fixed
service_tier: "ultrafast"being dropped for OpenAI-family models on custom providers even when the model'sserviceTierslists it (#17577 by @jakehemmerle) - •Fixed Google Vertex requests with Workforce Identity Federation ADC failing token refresh against the wrong endpoint (#17447).
- •Fixed Anthropic (and other rotating-token) OAuth accounts being signed out automatically when a background usage poll's token refresh got
invalid_grant, including refreshes a client delegates to an auth broker; usage polling no longer disables credentials, so only a real request's refresh can do that (#17468) - •Added Modular Cloud (
modular) as a provider:/login modularwith an API key, models and prices from the models.devmodularentry, and per-model reasoning controls for MiniMax M3.1 Flash, MiniMax M3, and Gemma 4 31B (#17334 by @tommyjtl) - •SambaNova Cloud follow-up turns now reuse the provider's prefix cache, so multi-turn conversations stop re-processing earlier context (#17555 by @rjuez00)
- •Fixed newly discovered OpenAI-compatible models ignoring provider-reported context and output token limits (#17561 by @wolfiesch)
Mehr anzeigen (7)Weniger anzeigen
- •Long or multi-step background shell commands get a one-line caption saying what they do and when they end, written once per job by the
widgetmodel role when the job, after running 15 seconds, is shown in a live widget or listed by/jobs full; the jobs sheet and/jobs fullshow it under the job's purpose. It follows the Live Job Widgets setting (async.widgets), andCreateAgentSessionOptions.jobCaptionWriterreplaces the model call (#17649 by @wolfiesch) - •In a source checkout, the error for a missing HTML export viewer now names the script that builds it,
packages/collab-web/scripts/build-export-viewer.ts, besidebun gen:export-viewer(#17636 by @sjawhar) - •Fixed an eval cell running silently on a new kernel after the session's Python kernel or JS worker died between cells (a crash, a kill, an out-of-memory kill, or a cancelled JS cell): the first cell on the replacement now carries
Kernel restarted: … state is unavailable. Re-run needed setupahead of its own output, instead of failing with a bareNameErroron a variable an earlier cell set (#17595 by @sjawhar) - •Fixed a task worker messaged (
write agent://<id>) while still starting up running on the sharedcontextalone and never receiving itstasks[].taskassignment; the message now waits for the assignment's turn (#17587) - •
lsp reloadnow discovers Rust crates created after rust-analyzer started, so hover and other analysis work without restarting omp (#17658). - •A model without image input (GLM, DeepSeek, Grok Composer and the like) reads a snapcompact archive's full kept text instead of image-omitted placeholders for its frames, after a model switch, on resume and in side requests (#17510 by @will-bogusz)
- •Snapcompact no longer refuses a new archive as "would not reduce context" when it shrinks a session that already holds one (
/compact snapcompact, idle and pre-prompt compaction) (#17490 by @will-bogusz)
31. Oktober 2026
- •The soft steering signal a tool sees as
toolCall.steeringSignalnow aborts with the source of the queued message ("user","irc", …) as itsreason, so a tool can yield only to the sources it should (#17537) - •Reject incomplete local compaction, turn-prefix, handoff, and branch summaries ending with
stopReason: "length"instead of using truncated text as complete context. Omit incomplete display-only short summaries without discarding a completed full summary (#17499 by @Xytronix). - •Replaced
isLoopGuardedModelwithloopGuardLevel, which returns"off","exact", or"semantic"from the model'sthinking-loop-guardcatalog rule - •Added
disableServerSideFallbacktoFactoryDroidOptionsandSimpleStreamOptions: a Factory Droid request leaves out the server-side refusal fallback chain and fails, before any of its content is streamed, if another model answers it (#12229 by @Xytronix) - •DeepSeek and Grok models on Amazon Bedrock now get the same near-duplicate reasoning-loop checks as on other hosts
- •Fixed Claude turns failing with "Thinking loop detected" when summarized thinking repeated a progress line such as "Still writing the parser..."; Claude models no longer run the loop guard
- •Fixed the loop guard discarding turns from other models whose reasoning summary repeats one status line a few times; whole-line repetition now has to cover about 1 KB before it counts as a loop
- •Fixed per-request OpenAI-compatible headers being combined with differently cased model headers instead of overriding them (#17513 by @jchanghong023)
Mehr anzeigen (7)Weniger anzeigen
- •Fixed a stalled Anthropic stream that keeps sending empty content deltas never timing out, because those deltas were treated as stream progress (#17484 by @jchanghong023)
- •Fixed Anthropic-compatible endpoints that put a thinking signature on the streamed content block losing it, so replayed reasoning keeps its signed block (#17483 by @jchanghong023)
- •Fixed
AuthStorage.close()andreplaceStore()losing a rotated OAuth refresh token when a refresh was still in flight, with or without durable refresh leases; the store now stays open until that token is saved, and new refreshes are refused (#17518) - •Fixed
/usageshowing Cursor's "Other Models" meter as an inflated dollar amount; it now shows the percentage Cursor reports, like Cursor Models (#17462 by @eggpeat) - •Fixed the
omp auth-gatewayResponses endpoint rejecting documented null values for temperature,top_p, output limits, reasoning, and reasoning summaries (#17466 by @Xytronix). - •Fixed provider HTTP errors printing the response body twice when the thrown error already carried it, including responses with a retry header (#17503 by @metaphoric-dev)
- •Fixed Gemini tool calls through the
omp auth-gatewaychat-completions endpoint failing on the next turn: the gateway now returns each call's thought signature inextra_contentand replays the one a client sends back (#17509 by @justdoGIT)
31. Oktober 2026
- •
SentToolDefinitions.inactiveFor(messages, tools)is replaced bywithInactiveTools(context), which also clears a staleinactiveTools;transformProviderContextnow receives the request'sinactiveTools(#17492) - •Long tool-call intents no longer block tool execution when intent tracing is enabled (#13140).
- •Added the
codexAccessProgramsstream option andconfigureCodexAccessPrograms()process default to turn off the automatic Daybreak Blueaccess_programsrequest on Codex (#17508 by @H4vC) - •Added
waitForSiblingtoRotateCredentialOptions; set it tofalseto skip the short sibling-unblock wait inlimits.rotate()while still blocking the failed credential (#17439 by @wolfiesch) - •Cursor runs served through
omp auth-gatewayare 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 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-gatewaybeing 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 withtoolUseuntil the result comes back (#17382 by @eggpeat)
Mehr anzeigen (7)Weniger anzeigen
- •Fixed Cursor models served through
omp auth-gatewaybeing 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_stopinstead of being cancelled, so the kept-alive connection is reused (#17432 by @flosrn) - •Clamping a requested thinking effort now resolves through the model's
effortMapalias 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 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)
- •Added the
providers.openai-codex.daybreaksetting (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)
29. Oktober 2026
- •Removed the Bun event-loop workaround utilities from
@oh-my-pi/pi-agent-core/utils/yield; agent loops no longer insert cooperative sleeps while streaming or between tool calls. - •Added
AgentTool.approvalRestrictionPathsso tools can report the paths they read, allowing restricted-folder approvals to cover those paths without remembering approval separately for each path. - •Added
Agent.logContext, which adds custom context fields to every log record written during an agent run. - •Moved Anthropic header and endpoint helpers, along with Codex session/transport inspection and OpenAI Responses replay/storage helpers, to dedicated provider modules. Update imports from the previous locations.
- •Updated auth-gateway model resolvers to receive
ModelResolveOptions, including the route's native API wire and the scoped client's accepted grants. Scoped client IDs no longer fall back to scanning all models; resolvers now select the best permitted candidate. - •Added mTLS support for Anthropic connections through the
CLAUDE_CODE_CLIENT_CERTandCLAUDE_CODE_CLIENT_KEYenvironment variables. - •Provider implementations are now loaded on demand, reducing startup and memory overhead while preserving existing stream timeouts, cancellation, and host overrides.
- •Account policy
prioritynow takes precedence when usage information is temporarily unavailable, keeping new sessions on the preferred account.
Mehr anzeigen (7)Weniger anzeigen
- •Improved provider-specific credential usage lookups so they no longer wait for unrelated providers, while preserving cache freshness, cancellation isolation, and complete aggregate reports. The corresponding server-side latency improvement requires an updated auth broker.
- •Credential usage is now prefetched during session setup without selecting, pinning, or advancing the OAuth account rotation.
- •Fixed Mistral thinking-message replay requests that could be rejected by LiteLLM with a
422 extra_forbiddenerror. - •Fixed native Judge API requests missing the
omp/<version>User-Agent, so omp usage is correctly identified in upstream statistics. - •Fixed Codex capacity-error retries over WebSocket and SSE ignoring provider-supplied
Retry-Afterdelays and retrying too early. - •Fixed cancelled OAuth refresh requests aborting the entire session, and ensured requests joining an existing refresh can still use the refreshed credential when the original request is cancelled.
- •Fixed Cursor models losing omp system-prompt context, including context files, skills, and rules, on subsequent turns or when earlier messages precede the active turn.
28. Oktober 2026
- •Updated Bun engine requirement to ≥1.4.4
- •Fixed chat-completions context estimates counting past thinking that the request drops (no reasoning replay), which triggered compaction far below the threshold (#15797, #17231 by @ghisguth)
- •Updated Bun engine requirement to ≥1.4.4
- •Updated Bun engine requirement to ≥1.4.4
- •Added DeepSeek V4.1 Flash 1017 to the Factory Droid provider for accounts with Factory's 1017 flag; turning thinking off on its Baseten route disables reasoning instead of falling back to low effort (#17234 by @skipper019)
- •Made Kimi Code model discovery authoritative and cached per credential, added K3.1 Pro and K3.1 Pro Highspeed to the bundled Kimi Code catalog, and preserved live thinking metadata there (#17224 by @trukhinyuri)
- •Updated Bun engine requirement to ≥1.4.4
- •Codex model refresh now lists models available to an entitled account even when other saved accounts return HTTP 402 (#17198).
Mehr anzeigen (7)Weniger anzeigen
- •LiteLLM discovery now reads every
/v2/model/infopage before selecting the proxy's model roster, rather than caching only the first 50 entries; malformed or incomplete pagination falls back without caching a partial page (#17237 by @maykonmichel). - •Fixed hosted web search on OpenAI Responses and Codex Responses selecting GPT-5.6 Luna instead of GPT-6 Luna (#17202 by @mateo-bolanos).
- •Manual compactions (RPC
compact,/compact, extensionctx.compact()) emitmanual_compaction_startandmanual_compaction_endsession events, so RPC hosts can show compaction progress;docs/rpc.mddocuments these with the other progress events (retry_fallback_applied,ttsr_triggered,goal_updated) (#17247 by @Quelaan1) - •Added
retry.rateLimitWalksChain(defaultfalse): with it on, a 429 rate limit after a turn with signed Claude thinking moves to the next model inretry.fallbackChainsat once instead of retrying the throttled model untilretry.maxRetriesis spent (#17232 by @sjawhar) - •Sessions can be renamed from the resume picker: the new title persists as a user title without loading the session, and renames of live sessions are refused instead of forking the transcript (#17262 by @Twilight0)
- •Added
display.advisorCollapsedLines(Settings → Appearance → Display) to cap how many note lines a collapsed advisor card shows; the default keeps the full preview (#17228 by @bluecapone) - •
omp config list --scope global|projectlists only the keys that layer sets, with the values as written: path-scopedenabledModels,enabledProvidersanddisabledProvidersentries ({ path, … }) stay unresolved, so a host can edit the global value without dropping them (#17246 by @Quelaan1)
27. Oktober 2026
- •
AgentToolgained the optionalhandlesToolInterruptflag: an interruptible tool that sets it (such aswait) still runs, without blocking, when a loop-owned interrupt is already queued, so it can drain the queued wake event instead of being skipped; user cancellation still skips it (#17174 by @alphastorm) - •Fixed OAuth logins shared by several processes being disabled with
invalid_grantwhen they refreshed at the same time or one of them quit mid-refresh (#17128 by @sjawhar) - •Fixed transient Google 429 rate-limit and capacity responses retrying in place without blocking or rotating credentials, while daily caps and zero-entitlement limits still rotate (#17127 by @GTanger)
- •Fixed Aliyun DashScope's multimodal gateway failing a turn on its intermittent
InvalidParameter400s for valid inline images ("provided URL does not appear to be valid", "Download multimodal file timed out"); they are now retried (#17101 by @shuairongzeng) - •Fixed a revoked or rejected GitHub Copilot credential continuing to show its last cached usage quota instead of being dropped (#17081)
- •Fixed Devin requests compressing the request body on the UI thread, which briefly froze the TUI on long conversations; requests under 1 KiB are now sent uncompressed
- •Added LM Studio decision models to discovery: models LM Studio reports as
type: "decision"are listed asjudgemodels served over its/v1/decisionsendpoint, alongside its chat models (#17169 by @richiestanaway) - •Extensions in the interactive TUI can read and directly switch plan, vibe, goal, and loop modes with
ctx.sessionModesand observe changes with themode_changedevent, without submitting slash commands;extensionHandlers.modeControl: falseturns off extension-driven mode changes (#15753 by @Shadorain)
Mehr anzeigen (7)Weniger anzeigen
- •RPC hosts can capture draft-only speech-to-text with live previews when speech input is enabled, without submitting an agent turn; slow flushes have adjustable deadlines, and failed transcription does not block a session change after capture closes (#17158 by @felipe-santos-aya).
- •Added
discovery.advertisedReasoningto let a custom provider opt out of the reasoning ladder its/v1/modelsrows advertise (defaulttrue);discovery: proxynow reads that ladder, itsnoneoff-switch, and an explicitreasoning: falseinstead of building every model's thinking surface from the bundled catalog reference alone (#15255, #17077 by @Youwenqwq) - •
WATCHDOG.ymladvisor entries now acceptscope(main,subagent, orall, defaultall) to attach an advisor only to the top-level session or only to advised subagents, andincludeReasoning: falseto omit primary assistant_thinking:_blocks from advisor review deltas (#17058 by @trukhinyuri) - •Added
session.worktreeScopeto keep the resume picker scoped to one directory (#17061 by @Dante-dan). - •LM Studio decision models can now serve the
judgerole (modelRoles.judge: lm-studio/<model>); they answer over LM Studio's/v1/decisionsendpoint instead of being offered as chat models (#17169 by @richiestanaway) - •Extensions'
getAllTools()now reportsmcpServerName,mcpToolNameandmcpReadOnlyHintfor MCP-backed tools, so an extension can tell read-only connector tools from ones that change things (#17120 by @cfpperche) - •RPC:
navigate_tree(move the leaf in the same session file, optionally summarizing the abandoned branch),abort_branch_summaryandset_label, with matchingRpcClientmethods (#17138 by @andrebrait)
27. Oktober 2026
- •Hosts can distinguish safely paused agents from turns still draining with
Agent.isPaused(#17073 by @anatoli-tsinovoy). - •Codex accounts whose spend cap is used up are no longer picked through credit overage or from usage cached before the upgrade (#16973 by @DusKing1)
- •Fixed Codex capacity 429s (
turn_rate_limit_exceeded, "Codex is at capacity") reporting "Try again in ~N min" from the plan's usage-window reset, which made retries wait hours instead of the response's Retry-After (#17087 by @H4vC) - •Added GPT-6.1 Terra:
openai/gpt-6.1-terraships bundled ($1/$5, $0.05 cached, >272K long-context tier, 1.05M window), and Codex-discoveredgpt-6.1-terra/-wmget API-equivalent pricing, the 922K extended-context maximum, and routing to Plus-or-higher accounts. - •Added Kimi K3.1 Pro and K3.1 Pro Highspeed support on Kimi Code (
k3.1-pro,k3.1-pro-highspeed) and the Moonshot API (kimi-k3.1-pro,kimi-k3.1-pro-highspeed): official pricing ($2/$10 and $4/$20 per MTok), a 131K output cap, and K3's reasoning and wire contract (#16901 by @eggpeat) - •Added
tools.restrictedFolders: every action on a listed folder (the folder and everything below it) asks for an explicit Approve/Deny in every approval mode,yoloincluded, and no remembered grant, session approval, or ACP "Always allow" covers it; recursive searches rooted above a restricted folder ask too, commands are matched by the directory they run in, and adenypolicy still denies (#16049 by @Peribunt) - •
/pauseshows draining turns and running jobs across the main agent's subagent tree, without waiting on finished turns, safely parked agents, or suspended advisor reviews (#17073 by @anatoli-tsinovoy). - •Reduced redraws during background subagent progress while keeping elapsed previews and native checklists current (#17131 by @iliaal, based on #16647 by @Komzpa).
Mehr anzeigen (7)Weniger anzeigen
- •Restoring a session with many subagents refreshes the running-subagent badge and lists once per burst instead of once per agent (#16642 by @Komzpa)
- •
askanswers now name the option a note is on (m: [X, Y] (note on Y: …),User added note on Y: …) (#17126 by @H4vC) - •Fixed advisors dropping their review and showing a rate-limit error when the provider returns a timed 429 such as Codex's
turn_rate_limit_exceeded; the advisor now waits out the Retry-After (withinretry.maxDelayMs) and retries like the main agent (#17087 by @H4vC) - •Fixed a hashline
PUTbeing refused with "would hold one more copy of line N … than the range did" when its body restates the line next to the range, fills the range, and adds a new line equal to that neighbour (a second@propertyor#[test], or abreak;above a newcase); it applies again, dropping only the restated line (#17028) - •Fixed task subagents receiving
AGENTS.mdfiles, including the user-level~/.omp/agent/AGENTS.md, when the session has additional workspace roots (--add-dir,/add-dir,workspace.additionalDirectories) - •Fixed an
asknote added right after picking an answer landing on the next question's answer, in Tern and the TUI; Note now goes to the answer just picked until the next question gets other input (#17126 by @H4vC) - •ANSI and TSP
/pausescreens show unsettled turns and jobs, hide settled counters, and preserve counts and resume controls on short terminals (#17073 by @anatoli-tsinovoy).
26. Oktober 2026
- •Added
SummaryOptions.remotePromptCacheKeyandremoteCompactionPolicyModel()so remote compaction can carry a cache key gated against the request it actually sends (#16988 by @rafalopilowski1) - •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
--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)
Mehr anzeigen (7)Weniger anzeigen
- •
OpenAIRequestSetupModelnow requires the catalog-policy fields (api,reasoning), so callers building a reduced model forresolveOpenAIRequestSetupmust pass them (#16988 by @rafalopilowski1) - •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) - •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)
21. Oktober 2026
- •Added the
prompt-cache-persistentcatalog axis (isPromptCachePersistent) for providers whose own endpoint never expires prompt caches; logged-in OpenAI Codex declares it - •Updated the bundled Yolo-Auto catalog to its current models,
qwen3.8-27b(now the default),yolo,yolo-small, andyolo-128k, and removed the retireddeepseek-flash-v4andqwen3.8-flash - •Added the
_session/steeringACP extension (advertised as_meta.steering.supported), so clients such as agent-shell can steer a running turn; a steer sent while a permission dialog is open cancels that dialog, and_meta.steering.queue: "followUp"queues a follow-up instead (#15885 by @marcintustin) - •
/mcp reauth <name>now works over ACP, RPC, and print mode (omp -p '/mcp reauth <name>'): it opens the browser, prints the authorization URL, reconnects the server in the running session, and print mode exits 1 when reauthorization fails (#16046 by @marcintustin) - •ACP
session/cancelnow also cancels prompts that are queued or still dispatching, and stops autonomous runs, instead of being ignored when no client turn is streaming (#15885 by @marcintustin) - •Idle compaction no longer runs on logged-in OpenAI Codex accounts, whose prompt cache never expires; compacting while idle only threw away a warm cache
- •ACP sessions no longer fail to start when a client-declared MCP server cannot connect; the failure is reported in the session, and an HTTP/SSE server can be repaired with
/mcp reauth(#16046 by @marcintustin) - •
/mcp reauth,/mcp test, and/mcp unauthnow pick the project entry when a server is defined in both project and user config, and skip project config whenmcp.enableProjectConfigis off (#16046 by @marcintustin)
Mehr anzeigen (7)Weniger anzeigen
- •
/mcp reauthremoves the server's staleAuthorizationheader from its config when it writes the new OAuth binding (#16046 by @marcintustin) - •
omp -p '/compact',/handoff, and/retrygiven as CLI arguments now run the command instead of sending the text to the model, and exit 1 when the command fails; slash text arriving on stdin or from@fileis still sent to the model (#16387 by @marcintustin) - •Interactive startup no longer waits for extensions that register only tools, commands, flags, renderers, or event hooks (for example MCP bridge plugins): they load once the composer accepts input, and your first message waits for them instead. An extension is deferred only after one launch has confirmed it registers no providers, shortcuts, composer shapes, or file fallbacks. Launches that resume a session, pass
--tools, or pass flags omp does not recognize still load every extension first (#16684 by @H4vC) - •Fixed subagents whose role has an explicitly empty fallback chain falling back through the
defaultchain when the default role uses the same model, including after a retry fallback, prewalk or context promotion briefly switched models or the subagent was revived (#16548 by @eggpeat) - •Fixed
/usageandomp usage --jsonlisting identity-less OAuth accounts such as Devin as missing usage beside their working reports (#16549 by @eggpeat) - •Fixed releasing or reaping a browser tab returning while Chromium still listed the page; the close now waits until Chromium reports the tab destroyed (#16680 by @H4vC)
- •Fixed the advisor prompt forbidding all repeated advice, including real escalations: advisors may now re-raise a prior nit or concern as a blocker once new evidence makes it one (#13887, #16484 by @pjh890321)
21. Oktober 2026
- •Added OpenAI 12-hour prompt caching for GPT-5.6+ on the Responses API:
cacheRetention: "long"now requestsprompt_cache_options.ttl: "12h"(instead of the ignored legacyprompt_cache_retention: "24h"), andpromptCache.ttlaccepts"12h" - •Fixed every OpenAI Codex request failing with HTTP 404
{"detail":"Not Found"}on personal ChatGPT accounts whose token is not region-pinned (#16493) - •Fixed Moonshot
kimi-k3pricing cache writes at $0; usage cost now includes cache writes at Moonshot's $3/M 5-minute rate (#16508) - •
providers.cacheRetention: longnow keeps OpenAI GPT-5.6+ prompt caches for 12 hours (Responses API; cache writes cost 2.5× input instead of 1.25×) - •Fixed subagents spawning at a caller-supplied
effort(e.g.hi→max) whiletask.enableEffortis off; the field is now ignored and the agent's configured thinking level (including:auto) applies (#16402) - •Fixed
omp update --checkfailing against JFrog Artifactory registries that add emptydist-tagsto a tagged manifest; the update check now uses the registry's curated latest version (#16375) - •Fixed
<path>:conflictson a file past the 10 MiB scan cap reporting no conflicts with no hint: it now names the line the scan stopped at and the rangedreadthat registers the blocks after it (#16269) - •Fixed the
ts-set-maprule stalling tool-call streaming for seconds on a long single-lineMapliteral, and missingMapentries written["key", value] as const(#16242)
Mehr anzeigen (6)Weniger anzeigen
- •Fixed the
ts-import-typerule missing inline type imports whose member name is non-ASCII, such asimport("./units").温度(#16242) - •Fixed a macOS background action leaving its target in front of your app after you clicked another of your windows, when placing the click took longer than the click itself (#16217)
- •fix(update): handled empty Artifactory dist-tags on tagged manifests (#16379)
- •fix(task): ignored caller effort while task.enableEffort is off (#16406)
- •fix(catalog): stopped declaring no_constraint codex residency (#16501)
- •fix(catalog): priced moonshot kimi-k3 cache writes at the 5min rate (#16529)
20. Oktober 2026
- •Enabled native compaction for supported Bedrock Claude models (#16343 by @anatoli-tsinovoy)
- •Added opt-in
reclaimAbovePcttoauth.accountPolicies: sessions automatically moved to a lower-priority account return to the preferred one once it has that much quota left (#14237 by @will-bogusz) - •Added
reachesBudgetedHost(): whether the catalog's host request budgets (inline image bytes, official image count) apply to a request, true on a model's official endpoint and on Factory Droid's own hosts (#16288 by @will-bogusz) - •Added Inception API-key login (
/login inception) andINCEPTION_API_KEYenvironment authentication (#16439 by @eggpeat) - •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).
- •
isSurvivingAssistantinproviders/transform-messages: whether an assistant turn reaches a replay, malformed tool calls dropped first, so callers outsidetransformMessagespick the same latest turn (#15791 by @will-bogusz) - •Broker account-pool files (
OMP_AUTH_BROKER_ACCOUNT_POOL_FILE) can hide whole providers and API keys:"*": falsemakes the file an allow-list, and an entry can betrue,false, or{ "accounts": [...], "apiKeys": false }(#14235 by @will-bogusz) - •
cursorRawReadPath()writes a bare start line asraw:N-(file:10→file:raw:10-), so Cursor exec reads of such a path still read from lineNonward now thatreadtakesN:rawas one line (#16438 by @will-bogusz)
Mehr anzeigen (7)Weniger anzeigen
- •Fixed Anthropic and Bedrock logging one warning per dropped thinking block (hundreds for one request) after a conversation change; the drop now logs one warning with the count (#16392 by @will-bogusz)
- •Fixed Factory Droid Core models (Kimi, GLM, DeepSeek and others) dropping calls to tools with names over 64 characters and their results from later requests; such names now shorten to 64 characters, and shorter names are sent unchanged (#16384 by @will-bogusz)
- •Fixed Devin
/usageshowing no data for accounts signed in with/login devin, and Devin chat sending a failing extra auth request for legacy Windsurf Enterprise keys (#13677 by @will-bogusz) - •Turns stopped for a thinking loop now keep the tokens and cost the provider had reported, the response id, the request's start time, and its time to first token and duration, instead of recording zero usage and no timing (#16437 by @will-bogusz)
- •Fixed Claude requests answering a turn whose attachment is a video, PDF, HEIC or other format sent outside a JPEG/PNG/GIF/WebP image as if nothing were attached; the turn now fails with an error naming the format (#16407 by @will-bogusz)
- •Fixed the repeated-tool-call guard missing a loop the model interleaves with a
waitthat elapses with nothing new; a wait that returns finished work still ends the repetition (#11874 by @dickyudhandika) - •Fixed Google Antigravity chat and image requests failing with false 429 quota-exhausted errors (#11849 by @jotafurtado)
19. Oktober 2026
- •
AgentToolgained the optionalapprovalCacheTargetshook, which thealways-ask-cachedapproval mode uses to check and record per-file grants (#16049 by @Peribunt) - •Tools with
lenientArgValidationnow receive unknown root arguments that their closed schema would otherwise drop, so they can reject them (#16317) - •Added
validateToolArguments(tool, call, { keepUnknownRootKeys: true })to keep unknown root keys that a closed schema would otherwise drop during argument repair (#16317) - •Fixed Claude streams that a gateway cut off before
message_deltafailing the turn instead of being retried (#16341 by @lz-lunzi) - •Fixed Gemini pairing parallel same-name tool results with the wrong call when history stores them out of call order (sessions from before 18.4.2, SDK-built contexts) (#16259 by @will-bogusz)
- •Fixed Factory Droid Gemini dropping calls to tools with names over 64 characters (most MCP tools) and their results from later requests, so the model called the tool again; such names now shorten to 64 characters (#16283 by @will-bogusz)
- •Fixed Factory Droid Gemini requests failing with 400 "For schema with items, schema type should be ARRAY" when a tool parameter accepts a string or a list, as the default
tasktool'smodelfield does (#16249 by @will-bogusz) - •Fixed
PI_REQ_DEBUG=1request dumps writing your API key, bearer token and response cookies to disk in plain text: credential headers now read[redacted], as in rejected-request dumps (#16293 by @will-bogusz)
Mehr anzeigen (7)Weniger anzeigen
- •Fixed finalized signed reasoning disappearing from displayed thinking when no deltas streamed (#16227)
- •MiniMax
MiniMax-M3.1-Flash(the launch id) now gets the always-onlow–maxthinking the bundledMiniMax-M3.1-Flash-Previewrows have, and omits sampling params (temperature,top_p,top_k) it rejects (#16315 by @SaladDay) - •Gemma 4 models on Google AI Studio (
google/gemma-4-31b-it,google/gemma-4-26b-a4b-it, …) no longer fail every request withThinking budget is not supported for this model; thinking is now toggled withthinkingLevel(on =high, off =minimal) (#16350) - •Added the Ask and remember approval mode (
tools.approvalMode: always-ask-cached,--approval-mode always-ask-cached): it also asks before file reads, and file prompts can remember the folder or the file, for this session or across sessions, throughapproval-cache.db(#16049 by @Peribunt) - •Added
/forget-approvalsto forget every file and folder approval Ask and remember has recorded (#16049 by @Peribunt) - •Extension
ui.approve()hosts can render the newprompt.grantschoices and answer{ grant, always }; hosts that ignore them keep answeringonce/session/deny(#16049 by @Peribunt) - •Extension and custom tools can declare
approvalCacheTargetsto take part in Ask and remember grants (#16049 by @Peribunt)
18. Oktober 2026
- •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 Ollama chat history estimates counting stripped native thinking and missing foreign thinking replayed as text, which skewed compaction after model switches (#16164)
- •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 byimageindex, and comes back as that image's edges as 0–1 fractions; text, OpenAI Decisions, and Workers AI judges reject them - •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) - •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)
Mehr anzeigen (7)Weniger anzeigen
- •Fixed the relay resolving an old tab id to a different tab after a browser restart; the extension now reports each browser run (#16119)
- •Seeded TypeSafe
jev-1.14.0and OpenRoutertypesafe/jev-1.14, and made them thejudgerole defaults and TypeSafe's default model; TypeSafe discovery keeps seeded ids its alias-only/v1/modelslisting omits - •Added
computer.backgroundFallback(takeoverby default, orrefuse): when acomputerwindow 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;refusefails the call instead and also refuses the agent's own foreground requests (takeover: true,raise(), an activatingapps.open, desktop input, and on macOS menus andAXOpen) (#15191 by @will-bogusz) - •Added DeepSeek as a web search engine (
web/deepseek), using DeepSeek's new Search API with your existingDEEPSEEK_API_KEYor storeddeepseekcredential - •Added
el.selectText(text, { prefix?, suffix?, select? })to the macOScomputertool: 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-usewin.move, so a hover that a window refuses in the background can be retried in the foreground (#15173 by @will-bogusz) - •Added a
menuoption to thecomputertool'swin.click,el.click,el.pressandel.perform, so on macOS the call that opens a menu also chooses its item, e.g.menu: ["Add to", "Fonts"](#15185 by @will-bogusz)
18. Oktober 2026
- •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) - •Anthropic's
request-encoding-rejectionnow also matches the API's "request body is not valid JSON" 400, which a gzip body gets when a proxy drops itsContent-Encodingheader (#16108 by @alphastorm) - •Removed
display()from eval in both Python and JavaScript;print(andconsole.login JavaScript) covers it - •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
- •An advisor
concernraised after the agent's final answer now continues the run by default instead of waiting at the end of the transcript; setadvisor.continueSeveritytoblockerfor the previous behavior - •Fixed context-file
@imports failing to load paths containing backslash-escaped spaces (#16090)
Mehr anzeigen (7)Weniger anzeigen
- •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)
- •
numberedCode,readContentCodeandnativeDifftake the file's path (path) instead of a language, anddescribeGroupedOutputdrops itslangoption: Tern picks the grammar of file contents from their path - •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 images rendering blank inside tmux on Kitty-capable terminals when tmux's
allow-passthroughis 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 (.cuas C++); omp now sends the file's path and Tern picks the grammar - •fix(ai): resend uncompressed when a proxy rejects a compressed request body (#16108)
- •fix(tui): answered allow-passthrough in fake tmux client fixture (#16112)
17. Oktober 2026
- •Fixed Cursor turns failing with
PROVIDER_ERRORwhen a follow-up (a finished background job, a late diagnostic, a reminder) arrived while the previous turn was still streaming (#15821 by @robfeldmann) - •
PI_CODEX_ZSTDis replaced byPI_REQUEST_COMPRESSION; setPI_REQUEST_COMPRESSION=0to send Codex (and every other) request body uncompressed (#16086 by @H4vC) - •Added
ThinkingContent.narration, set on Anthropic and Bedrock thinking blocks whose signature marks them as between-tool narration, andpresentNarrationAsAnswer(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) - •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=0to 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=0to 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)
Mehr anzeigen (7)Weniger anzeigen
- •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 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:
toolStartnow 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).
16. Oktober 2026
- •
prepareQueuedMessagesreceives which queue (steeringorfollowUp) a batch came from (#16026) - •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/completionsstreams 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: keepalivecomment every 15 s (#15940 by @radkawar) - •Fixed Anthropic models with mid-conversation system messages (e.g. Claude Opus 5.5) receiving
@filemention contents and hidden extension messages as a trailingsystemmessage instead of ending the request on the user's turn (#15881) - •Renamed the built-in
google-antigravitylogin 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 Command Code's
z-ai/glm-5.3-flashfailing 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
/handofffailing with400 Provider returned erroron OpenRouter's hosted Muse Spark 1.x and Muse Wonder models: requests no longer send atool_choicethe upstream Meta backend rejects (#15910)
Mehr anzeigen (7)Weniger anzeigen
- •Fixed OpenCode Zen bringing back retired bundled models from an authoritative model cache, and dropping drop-listed models such as
gemini-3.7-flashwhen a refresh fails after an upgrade (#15770 by @adi-IL) - •Extension
ui.approve()hosts receive an optionalsessionchoice label and answer"once","session", or"deny"instead of a boolean - •Added
imageCountBudgetto custom models andmodelOverridesin 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, oron): the native judge decides per task whether to arm a prewalk handoff toprewalk.autoTarget, and the next task starts back on the planning model (#16026 by @taibenvenuti) - •Added
/seanceand the taskseanceagent: 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) - •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
16. Oktober 2026
- •
agent_startcarriesresumedToolCallIdswhen a continued run first executes the calls of an unpaired assistant tail - •Cancelling an
askafter a background job finishes now reports the user cancellation instead of telling the model to retry a skipped tool (#15985) - •
resolveGatewayApiKeyandbuildGatewayApiKeyResolver(@oh-my-pi/pi-ai/auth-gateway) take the request's route options ({ storage, client? }) instead of anAuthStorage, their resolver callback receives the resolved credential, andresolveGatewayAccounttakes that credential (#15900 by @alphastorm) - •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, andjev-1.14.0, plus OpenRouter'stypesafe/jev-1.13,typesafe/jev-1.14, and~typesafe/jev-latestmodels; images outside Jev's documented size bounds fall through to a vision chat judge instead of failing (#15887 by @anatoli-tsinovoy) - •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/speechanswering 502 for requests the speech adapter rejects (unsupported format, over-long input); they now get 400invalid_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)
Mehr anzeigen (7)Weniger anzeigen
- •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_formatis 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"orstop_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) - •Added
keep-bundled-namescatalog attribute to preserve static model display names during discovery - •Updated
openai-codexprovider configuration to prevent model name regressions during live discovery
15. Oktober 2026
- •
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 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
keepRecentTokenswhen the latest Claude turn on the Anthropic Messages API ended its tool calls onstoporlength: the replay keeps that turn's signed reasoning, but the cut point counted only its visible blocks (#15791 by @will-bogusz) - •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).
- •
isSurvivingAssistantinproviders/transform-messages: whether an assistant turn reaches a replay, malformed tool calls dropped first, so callers outsidetransformMessagespick the same latest turn (#15791 by @will-bogusz) - •Fixed Codex-hosted image generation ignoring the requested
aspect_ratio/image_size, and3:2/2:3requests sending no size to OpenAI image models (#15601 by @chulmin-dev) - •Fixed Claude subagents failing to return structured results when
yieldarguments arrived as invalid JSON (#15605 by @farnoy)
Mehr anzeigen (7)Weniger anzeigen
- •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 theextended-cache-ttlbeta (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_ERRORafter 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_ERRORuntil 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).
15. Oktober 2026
- •Removed
ApprovalDetailsOptions;formatApprovalDetailstakes onlyargsagain, since the compact approval prompt no longer shows tool details (#15642 by @H4vC) - •
AgentTool.delegationGuidance: instructions a same-name extension replacement inherits in its description when it delegates to the native tool (#15477 by @iliaal) - •
CompactionPreparation.lastSummarizedEntryIdandCompactionResult.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 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)
- •Fixed parallel tool calls failing with "Tool call arguments are not valid JSON" on some OpenAI-compatible gateways, such as Gemini (#15682 by @Zzz141592653)
Mehr anzeigen (7)Weniger anzeigen
- •Fixed Anthropic fallback-credit redemption losing its credit on errors that only mention
400in their text, such as an overload message (#15702 by @H4vC) - •Fixed Anthropic fallback-credit redemption sending an extra
fallback-credit-2026-06-01beta 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 connectiontransport 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, ornonewhere the model accepts it (#15514) - •Fixed a Codex account whose token OpenAI rejects (401/403) continuing to show its last quota as healthy;
omp usagenow drops the stale report andomp auth-gateway checkreports the credential as failing (#15439)
13. Oktober 2026
- •
AgentTool.formatApprovalDetailsreceivesApprovalDetailsOptions;compact: trueasks for untruncated bodies so a compact approval prompt can count their lines (#15550 by @H4vC) - •Before-model-call hooks now receive the loop context as a second argument, and
buildProviderContextreceives the summarizer model (#15436 by @will-bogusz) - •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) - •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 the
toolNamespacesInfostream option; Codex requests no longer sendtool_namespaces_infoturn metadata, andcode_mode_tool_names/tool_namespaces_infoare no longer reserved client metadata keys. - •Added Muse Code's subscription-only Muse Wonder Full and Wonder contributor tiers with the
maxeffort, 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-extractionrule 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)
Mehr anzeigen (7)Weniger anzeigen
- •Added scheduled list-price changes to
cost-patch, ascost-fallbackalready allowed: a datedeffective-ratescard 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.getEffectiveTokenCostreturns that card for price displays, andhasRecurringTarifftells these dated-only schedules apart from peak/off-peak tariffs, which alone show a status-line arrow (#15620 by @eggpeat) - •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 onto 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 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).
12. Oktober 2026
- •Removed
estimateImageContentTokens()from@oh-my-pi/pi-agent-core/image-tokens; useTokenizer.imageTokens(size, detail), which prices with the reading model's catalog image rule (#15446 by @will-bogusz) - •
applyShakeRegion()andapplyShakeRegions()take the replacement's token count (replacementTokens); a block rewrite of an assistant turn adds the tokens it removes toelidedOutputTokens, so a replayed Claude turn's count stays lowered after a reload (#15446 by @will-bogusz) - •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)
- •
isOfficialCodexApiUrlmoved from@oh-my-pi/pi-aito@oh-my-pi/pi-catalog/wire/codex, next toCODEX_BASE_URL, so the catalog's compat resolver classifies Codex endpoints with the same check (#15434 by @will-bogusz) - •Added
withoutUnverifiedThinkingutility 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, followingANTHROPIC_BASE_URLand Foundry'sFOUNDRY_BASE_URLreroutes of first-party Anthropic models (#15434 by @will-bogusz)
Mehr anzeigen (7)Weniger anzeigen
- •Added
AssistantMessage.elidedOutputTokens, the visible output tokens a history rewrite (shake) has removed from the turn, whichusage.outputstill counts (#15446 by @will-bogusz) - •Exported
shouldDropTruncatedThinkingOnlyAssistantfromproviders/transform-messages,isColdReplayableResponsesTurnfromproviders/openai-sharedand the newopenAIResponsesReplaysNativeHistoryfromproviders/openai-responses, so local token estimates can follow which turns replay drops and whether a session replays native history (#15447 by @will-bogusz) - •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)
- •
resolveInlineImageByteBudget(model, officialEndpoint)andresolveImageCountBudget(model, officialEndpoint)take whether the request reaches the official endpoint instead of readingcompat.officialEndpoint, which misses request-time reroutes such asANTHROPIC_BASE_URL; pass pi-ai'sreachesOfficialEndpoint(model)(#15434 by @will-bogusz) - •Added Muse Wonder (
muse-wonder-1.0) to Meta and Muse Code with itsminimal–maxeffort ladder and pricing - •Added the
thinking-unverifiedrule 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-unverifiedaxis for offering reasoning ladders on unclassified model IDs
12. Oktober 2026
- •Added
AgentLoopConfig.onDetachedToolUpdate: a tool'sonUpdateframes that arrive after its run's event stream ended (a returned call whose background job keeps reporting) reach it instead of being dropped;Agentforwards them to its subscribers astool_execution_updateevents - •Added support for
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETASon theanthropicprovider: when set, requests omit pre-release fields (context_management, beta tool fields such asstrictanddefer_loading, task budgets, structured-output format,thinking.block_binding, and Anthropic server compaction) along with their beta headers, soANTHROPIC_BASE_URLgateways that reject them keep working (#15458 by @H4vC) - •Added the
honors-claude-code-beta-kill-switchaxis (compat.honorsClaudeCodeBetaKillSwitch), on for theanthropicprovider, so a rule ormodels.ymloverride decides which providers honorCLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS(#15458 by @H4vC) - •Added
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETASsupport: set it to stop Anthropic requests sending experimental beta fields that a companyANTHROPIC_BASE_URLgateway rejects, such as the Sonnet 5.5thinking.adaptive.block_binding400 (#15458 by @H4vC) - •Added the
task.structuredsetting (default off) for structured task results: when on, the task tool acceptsoutputSchema/schemaModeand subagents return results throughyieldas before - •Subagents spawned by the task tool now return their final message as plain text, with no
yieldtool, output schemas, or "Submit Result" fields; evalagent()/workpool spawns still return structured results - •In Tern, a backgrounded
bashcommand orevalcell 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;waitlists 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
Mehr anzeigen (7)Weniger anzeigen
- •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
- •Added in-process
env,du,chmod,fold,rmdir,od,df,uptime,id, andddshell builtins matching GNU coreutils 9.x options, output, and exit codes (chmodandidon Unix only;ddis disabled with the destructive set byPI_DISABLE_UUTILS_DESTRUCTIVE). - •Added an in-process
nlshell builtin (ported from uutils coreutils 0.8.0, matching GNUnl), with header/body/footer numbering styles includingpBREregex styles, logical-page section delimiters,-lblank-line grouping, andln/rn/rznumber formats. - •Added opt-in
/treebranch navigation across visible branches and nested fork depths; bindapp.tree.previousBranch/app.tree.nextBranch(e.g. toShift+Left/Shift+Right) inkeybindings.yml(#12623 by @azain47). - •The
waittool's native job rows (omp.wait.job) are a singlerow: badge, id and label, progress and clock, without the output preview or capture notice beneath
12. Oktober 2026
- •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 - •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 pinand/usage resetopen 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
grepon a single file showing in Tern as separate boxed snippets with no file row or syntax colors; it now looks the same as agrepover a directory - •
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 - •
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 withmeter) 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'stitle) and the snapcompact estimate as labelled rows (omp.context.snap); the blocks meter and legendkvare gone, andcontextUsageHeadno longer repeats the window size
Mehr anzeigen (7)Weniger anzeigen
- •
AskDialogComponent's native root isomp.editor.ask(collapsed:omp.editor.ask.hidden, the countdown, the question asomp.ask.summary, Skip and Show): a chosen answer is theaccent-toned row (a check also carries the check icon) instead of the highlighted one; multi-select Other… isomp.ask.other.check; the question tabs check answered questions and say their keys in the strip'stitle; the countdown moves from the head to the action bar beside Hide; the preview isomp.ask.preview; the Review tab leads withomp.ask.noticeand 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 asem; 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.progressofomp.mcpAdd.phase, toned done/current/upcoming andneutralwhen no auth was needed), the question and its lead (omp.mcpAdd.title,omp.mcpAdd.tagfor 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 roleomp.report.body - •
HookInputComponentdescribes a dock sheet (omp.overlay.hook-inputcol) likeHookEditorComponent's: the title's first line (omp.hook-input.title, the countdown asomp.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.grouplabels), 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 anagentnode here - •
BtwHistoryPanel's native sheet is centered and reads like a mail reader: the questions as two-line rows (omp.btw.history, listomp.btw.list/omp.btw.list.idlewhile 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 anmdsheet (omp.btw.empty) - •
CountdownTimer's nativeelapsedno longer sendsstopped: 0, which froze every native countdown (extension input, selector and editor prompts) at zero from the start
12. Oktober 2026
- •Raised the default context window for
openai-codex/gpt-6.1-solandgpt-6.1-sol-wmfrom 272K to 500K, matching OpenAI's new Codex default; extended context still opens 922K (#15421) - •Added
/forksupport for creating a new Tern pane while a turn is streaming, preserving the original session - •Added
omp session pack,omp session unpackandomp session movedto 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 exportandomp auth importto carry model sign-ins to another machine - •Added hiding a pending
askquestion 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) - •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
askdialog, command report or todo list now reaches terminal scrollback once it closes, rather than while it is still open (#15405 by @H4vC) - •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)
Mehr anzeigen (7)Weniger anzeigen
- •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
askdialog, 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)
- •Added
IpcServer,IpcConnection, andipcEndpoint: a local IPC transport over Unix sockets and Windows named pipes with owner-only access, single-instance binding, stale-endpoint takeover, and newline framing. - •Optimized transport performance with task-local write coalescing and batch-based newline processing
- •Removed
RuntimeChildrenOptions.transientandComponent.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)
11. Oktober 2026
- •Improved context caching for repeat turns, reducing redundant prompt processing and making subsequent turns faster when the system prompt is unchanged.
- •Renamed
TypeSafeJudgetoNativeJudgeandTypeSafeApiErrortoJudgmentApiError, including their associated option types.JUDGMENT_ROUTEShas been removed; useisJudgmentApior create a judge for catalog models withcreateNativeJudge(model, { apiKey }). - •Added native judge support for OpenAI’s Decisions API and Cloudflare Workers AI decision models, including the
openai-decisionsandworkers-ai-systemoneAPIs. 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
NativeJudgefor 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. - •Improved Anthropic prompt caching for long conversations, reducing memory usage while selecting cache breakpoints.
- •Fixed Devin-routed OpenAI models returning
invalid_argumenton every turn after an existing session was switched fromopenai-codex.
Mehr anzeigen (7)Weniger anzeigen
- •Removed
parseCloudflareAiGatewayCredential,serializeCloudflareAiGatewayCredential, andCloudflareAiGatewayCredentialfrom@oh-my-pi/pi-catalog/wire/cloudflare-ai-gateway. Use the equivalents from@oh-my-pi/pi-catalog/wire/cloudflareinstead. - •Improved responsiveness when adding assistant text after tool calls in long transcripts.
- •Fixed
apply_patchhandling of context-free hunks when the target text appears multiple times. - •Fixed
findfilename ranking and sketch scoring with judge endpoints that limit the number of questions per request. - •Fixed
omp gc --applyleaving temporary session files after an interrupted save. - •Fixed
omp auth-gateway servehandling of OpenRouter routing variants such as:floorand:nitro. - •Improved validation errors for
computerhelpers with missing or non-string text arguments by identifying the helper and argument involved.
11. Oktober 2026
- •Added
compat.supportsThinkingBindingControlsfor Bedrock Converse: setting it tofalsestops prefix-bound Claude requests from sendingthinking.block_binding, thethinking-binding-controls-2026-08-01beta and the/input_transformationsresponse path, for gateways or regions that reject them (#15316 by @harshaygadekar) - •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) - •Added the
supports-thinking-binding-controlsaxis to Bedrock Converse models (on by default) so a rule ormodels.ymloverride can turn off Claude thinking-binding controls on hosts that reject them (#15316 by @harshaygadekar) - •Added
supportsThinkingBindingControlsto Bedrockcompatinmodels.yml, so a Bedrock gateway or region that rejects Claude thinking-binding controls can turn them off (#15316 by @harshaygadekar) - •Fixed executable scripts without a
#!line failing with "Exec format error" in the embedded shell (#15271 by @iliaal). - •Fixed inline charts and images leaving overlapping copies over text when moved, resized, replaced, or hidden, while preserving images in scrollback.
- •fix(bedrock): add supportsThinkingBindingControls catalog opt-out (#15316)
- •fix(shell): preserve executable text fallback with posix_spawn (#15271)
11. Oktober 2026
- •Fixed stale queue updates when queued steering is adopted, withdrawn, or added to the transcript, ensuring queue listeners consistently receive the latest state.
- •Removed the
retainTextSignatureoption fromconsumeGoogleStreamandstreamGoogleGenAI; Google routes now consistently preserve text reply signatures. - •Custom
SessionsApiimplementations must implementpermits(provider, sessionId, credentialId). - •Exported
matchesReplacementCredentialandisSameOAuthAccountto 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, plusrenderQuestion()for templated instructions. - •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
parentSessionIdandminimizeEffortstream 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.
Mehr anzeigen (7)Weniger anzeigen
- •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 Anthropic subscription quota not appearing in
/usagewhen an OAuth token is supplied throughANTHROPIC_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.