github lidge-jun/opencodex v2.98.0-preview.20261107

pre-release55 minutes ago

Published to npm as @bitkyc08/opencodex@2.98.0-preview.20261107 with dist-tag preview.

New Features

  • Preserve structural tool turns (#7561)
  • Add Runcrate to the free directory (#7726)
  • Avoid rescanning fragmented SSE records (#7766)
  • Refresh connected Hermes configs after catalog changes (#7704) (#7719)
  • Add confirmed POSIX CLI updates and durable job status (#7586)
  • Label routed /v1/models rows from modelDisplayNames (#7817)
  • Add ocx codex launcher mirroring ocx claude (#7346)
  • Windows Remote Link Children and Child credential/connection attestation (#7832)
  • Restore LazyCodex role models from a change history (#7693)
  • Add proof-bound Windows CLI update planning (#7596)
  • Use Bun 1.4.4 native type checking (#7632)
  • Add T3 Code as an export and integration client (#7529)
  • Revocable server-side remembered device sessions (#7593)
  • Add protected Windows CLI update job storage (#7626)
  • Apply Windows CLI updates with owned transactions (#7648)
  • Add opt-in alias naming for Hermes and Command Code exports (#7867)
  • Add per-source interception toggles (#7760)
  • Show distinct first-response states on the provider overview (#7939)
  • Skip Unicode folding for plain ASCII metadata (#7886)
  • Per-client model visibility for the Desktop list (#7769)
  • Add IAM Identity Center login to dashboard (#7690)
  • Opt in to omitting disabled native models (#7889)
  • Link completion probe failures to recovery, re-verification, and disconnect scope (#7947)
  • Scan SSE inspection fragments incrementally (#7913)
  • Test all models of a provider and disable the failures (#7742)
  • Complete gracefully on max_output_tokens (#7770)
  • Let the omo integration write the Responses dialect (#7890)
  • Add keyless CC-Switch provider import with preview, apply and restore (#7935)
  • Count snapshot text bytes incrementally (#7957)
  • Move integrity scans off the serving thread (#7972)
  • Tier role auto-assign candidates by measured capability in the role's task domain (#7624)
  • Add opt-in MCP tools for stored Codex queues (#7999)
  • Count fragmented NDJSON bytes incrementally (#8015)
  • Home ocx sync fans out to linked Children (sync.home-fanout/1) (#8100)
  • Orchestrated ocx update plan/apply contract (update.orchestrated/1) (#8103)
  • Batch consumed stream chunk removal (#8049)
  • List Perch as a reference-only directory entry (#7311)
  • Design system v2 — redesigned dashboard, navigation and desktop app (#8105)

Bug Fixes

  • Report a timed-out first-party rollback as incomplete (#7781)
  • Publish the subscription lane's widest context rung for Grok 4.5-4.7 (#7701)
  • Expire idle picker uploads while preserving backpressure (#7784)
  • Preserve native Mistral thinking on replay (#7814)
  • Preserve bounded ACL failure diagnostics (#7773)
  • Preserve append-only client tool discovery on opted-in Responses routes (#7453)
  • Frame retained requests before portable compaction checkpoints (#7822)
  • Scope cooldown reprobes to reserving request (#7764)
  • Honor Retry-After floor and recognize the Cloud Code Assist ToS account ban (#7819)
  • Guard the MiniMax stale-roster refresh to official destinations (#7829)
  • Forward Qoder CN images through shared coding-agent projection (#7536)
  • Verify live Desktop recovery before CLI cold start (#7797)
  • Harden long compaction recovery paths with the extended spelling (#7823)
  • Expose native Fast selectors with 1M context (#7748)
  • Align Claude Code 2.1.280 OAuth profile and isolate session/device IDs (#7838)
  • Isolate pooled installation IDs, scrub turn-state on account switch, and align JSON token refresh (#7840)
  • Isolate Antigravity session/replay and Cursor H2 pool/JWT sub scope (#7842)
  • Harden multi-account pool cooldowns, affinity eviction, and deactivated exclusion (#7844)
  • Relay OpenAI tool calls instead of ending on the first sentence (#7599)
  • Explain elevated scheduler uninstall failures on Windows (#7825)
  • Preserve replay refusal attribution on WebSocket ingress (#7830)
  • Deliver upstream raw reasoning to Chat clients without a generation opt-in (#7833)
  • Request quota summary with the CLI fingerprint so Argon usage shows (#7804)
  • Consolidate multi-account discovery and model-denial routing (#7835)
  • Enforce required tools in native combo streams (#7831)
  • Reclaim inbound body capacity with a configurable budget (#7428)
  • Attest connected-stop preflight reads (#7762)
  • Keep pool session affinity across restarts and transient detours (#7828)
  • Preserve native source priority behind featured subagent models (#7839)
  • Keep native main available after keyring migration (#7774)
  • Gate config and Desktop writer phases on config-root ACL settlement (#7826)
  • Provide paired authority for compatibility controls (#7775)
  • Land ten small jsonc, search, retry, plain-data and stream fixes (#7821)
  • Recognize exact case-insensitive media types (#7768)
  • Export a known output limit as maxTokens (#7763)
  • Preserve captured caller admission scope (#7718)
  • Keep captured usage on an invalid negotiated completion (#7849)
  • Validate macOS app trust at execution boundaries (#7758)
  • Keep replay-refusal attribution through combo failures (#7864)
  • Stream completion-stable canonical apply_patch input (#7506)
  • Compute pooled windows from held account rows (#7862)
  • Restore local routing when a Link Child stops (#7736)
  • Hop and cool provider on upstream account quota exhaustion (#7625)
  • Avoid quota refresh failures from paused accounts (#7628)
  • Reject drive-less rooted Windows path overrides (#7824)
  • Recheck live ownership before journal recovery (#7851)
  • Disable header-arrival deadline for local upstreams by default (#7472)
  • Keep a protected recovery copy before persisting the opencode-free retirement (#7836)
  • Preserve service-home authority during recovery (#7154)
  • Admit local config writer phases after config-root ACL settlement (#7869)
  • Recover interrupted Bun postinstalls on retry (#7898)
  • Keep the bun install retry working on macOS bash 3.2 (#7900)
  • Avoid repeat ACL propagation for lifecycle roots (#7903)
  • Recover interrupted Codex CLI child publication (#7909)
  • Retire drained parent ownership and preserve bind scope (#7874)
  • Address Windows updater release and observation reviews (#7875)
  • Show provider connection and model tests on the served dashboard (#7922)
  • Fail native Messages streams that end before message_stop (#7928)
  • Parse model variants in linear time (#7938)
  • Honor explicit Opus 5.5 reasoning summaries (#7881)
  • Report main-pool affinity decisions in request logs (#7883)
  • Keep local account cooldowns from quarantining combo targets (#7887)
  • Reserve SSH forward ports until handoff and recover lost candidates (#7893)
  • Re-arm the atomic writer's ACL timeout memo per destination (#7891)
  • Preserve tool safety on translated Messages fallbacks (#7919)
  • Drop the include entry xAI rejects (#7911)
  • Preserve Muse reset countdown after quota exhaustion (#7730)
  • Explain why Antigravity project discovery failed (#7888)
  • Keep layout.json under the file-size threshold (#7943)
  • Default Moonshot API to K3.1 Pro and retire K2.5 (#7880)
  • Send LM Studio one leading system message (#7882)
  • Treat headless GUI-domain launchctl 125 as an unreachable domain (#7697) (#7745)
  • Fail over when a target rejects a request for context length (#7892)
  • Support manual consultations during web search (#7858)
  • Keep final Responses events without a newline (#7873)
  • Resolve the atomic-write fixture root before matching cleanup paths (#7945)
  • Budget hosted fixture phases without weakening contracts (#7946)
  • Feed the abort fixture's stdout once (#7948)
  • Use a never-allocated PID for the pending-child recovery fixture (#7949)
  • Give native passthrough success paths the internal header deadline (#7951)
  • Publish the overlap fixture after the recheck budget is spent (#7950)
  • Judge protected-tree containment per path component (#7884)
  • Apply the caller's paid-combo consent and device fallback policy (#7894)
  • Explain upstream request failures (#7936)
  • Distinguish install failures from owned deadlines (#7977)
  • Keep Kimi K3.1 Pro tool continuations valid (#7944)
  • Make per-task ceilings configurable from config and dashboard (#7960)
  • Keep Advisor requests cloneable for the retry snapshot (#7981)
  • Snapshot ACL failure diagnostics (#7970)
  • Explain tracked runtime stop refusals (#7973)
  • Decode routed slugs via modelDisplayNames ids (#7979)
  • Normalize Codex tool catalogs and include for Meta Muse (#7985)
  • Bigint probe identity in runtime preflight; release CC-Switch F3 WAL handles (#7986)
  • Skip Meta Muse targets for mandatory tool_choice (#7982)
  • Accept CR-delimited Responses events (#7989)
  • Omit unsupported Responses encrypted output include (#7988)
  • Validate CLI and desktop launcher execution boundaries (#7876)
  • Stop Windows ancestor-watch feedback loops (#7976)
  • Name the invalid model row and the static-list workaround (#7990)
  • Stop scoring an elapsed 5-hour window against a pool account (#7994)
  • Retire a pool account's carried 5-hour window when WHAM shows none (#7980)
  • Keep web_search native when no sidecar backend can run (#7991)
  • Keep the quota report cache when pool readings are only restamped (#7992)
  • Promote additional_tools to top-level tools for xAI and strict gateways (#7983)
  • Prune generated agents when the Claude integration is turned off (#7993)
  • Bound the integrity check wait (#7984) (#7997)
  • Await recovery ACL checks in async parent admission (#7931)
  • Refuse dashboard restart under a systemd unit OpenCodex does not own (#7996)
  • Admit config-root cache writes after the optional config-root ACL flight (#7998)
  • Compare file identity with bigint stat (#8019)
  • Compare Codex and remote workspace file identity with bigint stat (#8023)
  • Compare CLI install and update artifact identity with bigint stat (#8031)
  • Exclude Meta for direct hosted tool choices (#8010)
  • Honor disable and shutdown during startup sync (#8017)
  • Bound CN PNG raster dimensions (#8021)
  • Preserve server-issued batch for role suggestion --apply (#8022)
  • Strip rejected reasoning toggle from native passthrough (#8025)
  • Strip safety_identifier at the canonical ChatGPT forward destination (#8030)
  • Support Ultra quota windows and show subscription names (#8055)
  • Isolate Pool installation identity per account (#8065)
  • Show both 5-hour and weekly meters for Max and Team accounts (#8088)
  • Place round-robin conversations on accounts with quota headroom (#8092)
  • Honest affinity labels and opt-in request-owned conversation affinity (#8080) (#8096)
  • Bind header-less Messages bridge turns to one Codex pool account (carry #8028) (#8094)
  • Keep Codex pool session pins across proxy restarts (#8098)
  • Refuse links at SQLite store paths on Windows and rebalance CI shards for the new affinity tests (#8102)
  • Keep Windows containment refusal at 126; correct the #8100 fan-out test fixture (#8106)
  • Make the Windows batch shards green after #8103 (#8109)
  • Reject inherited writes at Windows creation parents (#8011)
  • Preserve quota-code provenance across wrappers and policy fallback (#8013)
  • Honor web-search tool choice scope (#8018)
  • Scope tool authority to current turn (#8027)
  • Bound canonical patch prefix scanning (#8012)
  • Serialize automatic v1 reconciliation with CLI updates (#8014)
  • Read Artificial Analysis free model list before sunset (#8112)
  • Count lowered hosted tool_search as declared (#8123)
  • Retire a pool account's carried monthly window when WHAM shows none (#8120)
  • Route local compaction checkpoints (#8119)
  • Drop the unsupported output.encrypted_content include on Kimi Code Responses (#8122)
  • Report prompt_eval_cached_count as cache-read input (#8124)
  • Account for normalized inbound JSON (#8026)
  • Require paired dashboard session for CLI updates (#8008)
  • Export declared effort ladder and default to Kimi Code (#8126)
  • Stop sibling discovery after revocation (#8024)
  • Answer uncoded context-window refusals as prompt too long (#8128)
  • Attest Codex listener before token injection (#8007)
  • Report monthly Coding Plan quota (#8077)
  • Keep profile keys OpenCodex does not manage (#8074)
  • Report content-filter stops as non-retryable refusals (#8072)
  • Avoid double charging live NDJSON buffers (#8047)
  • Restore owned integrations before native signal exit (#8036)
  • Hold selection ownership through dashboard feature toggles (#8009)
  • Keep untyped assistant messages inside their tool-call turn (#8064)
  • Unwrap one extra executable freeform body wrapper (#8048)
  • Resubmit a finished answer on the completion retry (#8070)
  • Fix non-ASCII Codex turn metadata headers (#8040)
  • Pin resolved homes in service definitions (#8111)
  • 30 s background discovery, still-discovering answer for slow dashboard tests (#8125)
  • Emulate structured output instead of refusing it (#8071)
  • Serialize uninstall manifest updates under one cross-process lock (#8121)
  • Tighten Kiro diagnostics and service log rotation (#8138)
  • Remove owned paths relative to the config root (#8141)
  • Validate legacy shim restore paths before restoring (#8143)
  • Normalize Messages error responses and Anthropic headers (#8153)
  • Normalize streamed Messages error events (#8164)
  • Normalize direct context overflow errors with parity coverage (#8148)
  • Lower ocx envelopes on native v1 compact (#8042) (#8151)
  • Preserve pre-output hold across safe WS heartbeats (#8188)
  • Pass completion summaries that follow tool results (#8154)
  • Keep replayed images within each model's per-request cap (#8174)
  • Flatten root tool schemas for Claude chat gateways (#8163)
  • Make service definition probes portable (#8201)
  • Join repeated tool outputs for one call (#8199)
  • Release disposed SOCKS5 readers and timeout closures (#8203)
  • Avoid retries for definite context overflow (#8211)
  • Include Argon level with thought summaries (#8208)
  • Preserve translated system cache boundary (#8212)
  • Strip Lite marker from classic search (#8202)
  • Report incomplete Anthropic search results (#8210)
  • Separate consumer and upstream inactivity (#8213)
  • Restore Windows fixture coverage (#8214)
  • Preserve adapter body stall status (#8200)
  • Isolate Codex profile cases on Windows (#8217)
  • Isolate Windows uninstall privilege scenarios (#8218)
  • Pair Windows job store route fixture (#8225)
  • Use native homes in systemd probe fixtures (#8226)
  • List router-known IDs with effective metadata (#8215)
  • Prioritize critical credits in quota summary (#8223)
  • Validate configuration before stopping services (#8227)
  • Rebalance Ubuntu tests across five shards (#8233)
  • Preserve default bind identity for guarded stops (#8221)
  • Keep Desktop CLI selected when its executable is missing (#8240)
  • Report skipped connected children as partial (#8248)
  • Defer supervised client restart after apply (#8250)
  • Report stale Child connection readiness (#8249)
  • Preserve orphan token files for confirmed recovery (#8253)
  • Address #8249/#8253 review follow-ups (#8256)
  • Use native homes in launchd fixture (#8245)
  • Pair Windows CLI update plan session (#8228)

Documentation

  • Clarify subagent spawn_agent fill behavior in order hint (#7537)
  • Keep the provider configuration reference under the file-size cap (#7856)
  • Register and document citation replay coverage (carry #7608) (#7865)
  • Generate a client support matrix from the client registries (#7924)
  • Lead with one local gateway for every coding tool (#7925)
  • Record runtime-verified client results on the support page (#7927)
  • Say when the workflow send ceiling is checked (#7987)
  • Record #8176 credit lost in #8214's squash (#8219)

Chores

  • Open dev at 2.94.0 before releasing 2.93.0 (#7795)
  • Take every Bun pin from package.json (#7818)
  • Fix ASL server fixture cleanup and budgets (#7778)
  • Reserve distinct remote fixture ports (#7820)
  • Stop rebinding released loopback ports (#7847)
  • Isolate Windows fixture children from the account-wide runtime namespace (#7852)
  • Assert the specific refusal gate in the fixture preload tests (#7861)
  • Stop restarting the proxy per row in the bearer admission matrix (#7866)
  • Isolate the Desktop lifecycle lock in first-party fixtures (#7868)
  • Bound frozen installs and retry only deadline stalls (#7870)
  • Isolate the remaining Desktop lifecycle-lock fixtures (#7877)
  • Tolerate delayed desktop compatibility fixture port release (#7897)
  • Copy macOS bundle binary in remote workspace fixture (#7901)
  • Expose Windows recovery proof state and drain failed fixtures (#7902)
  • Separate recovery PID evidence and budget cold Windows fetches (#7915)
  • Fix config-root seed and macOS history-probe fixtures after #7903/#7900 (#7914)
  • Partition Windows apply coverage and rebalance hosted shards (#7917)
  • Stop racing a 250ms deadline in the Windows Child HTTP success case (#7921)
  • Refresh shard weights and restore job-time headroom (#7923)
  • Make dead-upstream CONNECT fixture deterministic (#7929)
  • Stabilize native recovery fixture compilation (#7930)
  • Split suite across four weighted shards (#7926)
  • Warm the PowerShell ancestry probe before its timed run (#7885)
  • Add offline fixtures for claude-cli schema-constrained output (#7908)
  • Expose bounded Windows plan refusal diagnostics (#7937)
  • Bump rustls from 0.23.45 to 0.23.46 in /desktop/src-tauri (#7942)
  • Cover encrypted Responses tool continuation (#7975)
  • Corrupt the index the health query plan actually reads (#7995)
  • Corrupt the health index through a cold connection (#8000)
  • Assert the cold keyring refusal kind and report its cause (#8001)
  • Finalize the F1/F2 fixture statements before cleanup (#8002)
  • Name the pinned-port holder when a sibling misses its deadline (#8003)
  • Await the admitted provider quota cache write (#8004)
  • Report the hardened local-CA ACL in the first-party apply suite (#8016)
  • Select injected stat targets by canonical path (#8029)
  • Give the Windows apply x64 fixture compile the shared spawn budget (#8032)
  • Verify handle closure without racy fd probes (#8058)
  • Await sibling startup completion instead of a polling deadline (#8062)
  • Fix macOS catalog async fixtures (#8136)
  • Security(desktop): bump updater to 2.14.1 and align Rust 1.90 (#8039)
  • Honor ownership test platform exclusions on Bun (#8239)
  • Retry busy first ownership registrations (#8238)
  • Classify read-only config preflight (#8241)
  • Give the sync-stop fixture the native CODEX_HOME spelling on Windows (#8265)
  • Quarantine hosted Windows CI failures for 2.98.0 (#8264)

Other Changes

  • Treat lane=all as a batched dev check, not a per-PR gate (#7855)
  • Kiro: drop the private final answer when a real tool call shares the turn (#7434)
  • Open dev at 2.95.0 before releasing 2.94.0 (#7934)
  • Kiro: log the usage Kiro reports on every wire, and forward combo child usage after commit (#7433)
  • Open dev at 2.96.0 before releasing 2.95.0 (#8033)
  • Open dev at 2.97.0 before releasing 2.96.0 (#8068)
  • Serve an Ollama-compatible inbound API (#8099)
  • Normalize upstream error details in request logs and Retry-After advice (#8104)
  • Normalize Chat Completions client error bodies (#8108)
  • Open dev at 2.98.0 before releasing 2.97.0 (#8135)
  • Promote frozen tip 47f9e2d to preview as 2.98.0-preview.20261107 (#8268)

Changelog

Full Changelog: v2.97.0...v2.98.0-preview.20261107

  • #7154 fix(update): preserve service-home authority during recovery @luvs01
  • #7311 feat(providers): list Perch as a reference-only directory entry @scy7796
  • #7346 feat(cli): add ocx codex launcher mirroring ocx claude @garysassano
  • #7428 fix(server): reclaim inbound body capacity with a configurable budget @oocheol
  • #7433 Kiro: log the usage Kiro reports on every wire, and forward combo child usage after commit @hedging8563
  • #7434 Kiro: drop the private final answer when a real tool call shares the turn @hedging8563
  • #7453 fix(claude): preserve append-only client tool discovery on opted-in Responses routes @gitrvc-hub
  • #7472 fix: disable header-arrival deadline for local upstreams by default @eschcam
  • #7506 fix: Stream completion-stable canonical apply_patch input @Platinum-Scripts
  • #7529 feat(clients): add T3 Code as an export and integration client @stevyhacker
  • #7536 fix(qoder): forward Qoder CN images through shared coding-agent projection @chilung-cgu
  • #7537 docs(gui): clarify subagent spawn_agent fill behavior in order hint @chilung-cgu
  • #7561 feat(responses): preserve structural tool turns @Platinum-Scripts
  • #7586 feat(codex): add confirmed POSIX CLI updates and durable job status @luvs01
  • #7593 feat(dashboard): revocable server-side remembered device sessions @x3M3x
  • #7596 feat(codex): add proof-bound Windows CLI update planning @luvs01
  • #7599 fix(zed): relay OpenAI tool calls instead of ending on the first sentence @andrew05060414
  • #7624 feat(codex): tier role auto-assign candidates by measured capability in the role's task domain @LilMGenius
  • #7625 fix(router,combos): hop and cool provider on upstream account quota exhaustion @omar391
  • #7626 feat(codex): add protected Windows CLI update job storage @luvs01
  • #7628 fix(gui): avoid quota refresh failures from paused accounts @chilung-cgu
  • #7632 perf(tooling): use Bun 1.4.4 native type checking @luvs01
  • #7648 feat(codex): apply Windows CLI updates with owned transactions @luvs01
  • #7690 feat(kiro): add IAM Identity Center login to dashboard @martinbcg
  • #7693 feat(codex): restore LazyCodex role models from a change history @LilMGenius
  • #7701 fix(xai): publish the subscription lane's widest context rung for Grok 4.5-4.7 @andrew05060414
  • #7718 fix(advisor): preserve captured caller admission scope @luvs01
  • #7719 feat(integrations): refresh connected Hermes configs after catalog changes (#7704) @rrmlima
  • #7726 feat(providers): add Runcrate to the free directory @heydryft
  • #7730 fix(gui): preserve Muse reset countdown after quota exhaustion @stephen-drew
  • #7736 fix(link): restore local routing when a Link Child stops @luvs01
  • #7742 feat(providers): test all models of a provider and disable the failures @ljluestc
  • #7745 fix(service): treat headless GUI-domain launchctl 125 as an unreachable domain (#7697) @lidge-jun
  • #7748 fix(claude): expose native Fast selectors with 1M context @jbamlee
  • #7758 fix(codex): validate macOS app trust at execution boundaries @luvs01
  • #7760 feat(shadow-call): add per-source interception toggles @robin-bially
  • #7762 fix(cli): attest connected-stop preflight reads @luvs01
  • #7763 fix(dsh): export a known output limit as maxTokens @daisylovekris
  • #7764 fix(combos): scope cooldown reprobes to reserving request @luvs01
  • #7766 perf(google): avoid rescanning fragmented SSE records @luvs01
  • #7768 fix(responses): recognize exact case-insensitive media types @luvs01
  • #7769 feat(claude-desktop): per-client model visibility for the Desktop list @ljluestc
  • #7770 feat(responses): complete gracefully on max_output_tokens @omar391
  • #7773 fix(windows): preserve bounded ACL failure diagnostics @luvs01
  • #7774 fix(codex): keep native main available after keyring migration @luvs01
  • #7775 fix(desktop): provide paired authority for compatibility controls @luvs01
  • #7778 test(providers): fix ASL server fixture cleanup and budgets @luvs01
  • #7781 fix(claude): report a timed-out first-party rollback as incomplete @lidge-jun
  • #7784 fix(claude): expire idle picker uploads while preserving backpressure @luvs01
  • #7795 chore(release): open dev at 2.94.0 before releasing 2.93.0 @github-actions[bot]
  • #7797 fix(startup): verify live Desktop recovery before CLI cold start @luvs01
  • #7804 fix(antigravity): request quota summary with the CLI fingerprint so Argon usage shows @junhoi-pk
  • #7814 fix(openai-chat): preserve native Mistral thinking on replay @adaurban
  • #7817 feat(claude): label routed /v1/models rows from modelDisplayNames @david-wang-0
  • #7818 chore(ci): take every Bun pin from package.json @lidge-jun
  • #7819 fix(google): honor Retry-After floor and recognize the Cloud Code Assist ToS account ban @lidge-jun
  • #7820 test(messaging): reserve distinct remote fixture ports @lidge-jun
  • #7821 fix: land ten small jsonc, search, retry, plain-data and stream fixes @lidge-jun
  • #7822 fix(responses): frame retained requests before portable compaction checkpoints @lidge-jun
  • #7823 fix(windows): harden long compaction recovery paths with the extended spelling @lidge-jun
  • #7824 fix(clients): reject drive-less rooted Windows path overrides @lidge-jun
  • #7825 fix(service): explain elevated scheduler uninstall failures on Windows @lidge-jun
  • #7826 fix(windows): gate config and Desktop writer phases on config-root ACL settlement @lidge-jun
  • #7828 fix(anthropic): keep pool session affinity across restarts and transient detours @lidge-jun
  • #7829 fix(providers): guard the MiniMax stale-roster refresh to official destinations @lidge-jun
  • #7830 fix(logs): preserve replay refusal attribution on WebSocket ingress @lidge-jun
  • #7831 fix(responses): enforce required tools in native combo streams @lidge-jun
  • #7832 feat(link): Windows Remote Link Children and Child credential/connection attestation @lidge-jun
  • #7833 fix(chat): deliver upstream raw reasoning to Chat clients without a generation opt-in @lidge-jun
  • #7835 fix(antigravity): consolidate multi-account discovery and model-denial routing @lidge-jun
  • #7836 fix(config): keep a protected recovery copy before persisting the opencode-free retirement @lidge-jun
  • #7838 fix(anthropic): align Claude Code 2.1.280 OAuth profile and isolate session/device IDs @lidge-jun
  • #7839 fix(codex): preserve native source priority behind featured subagent models @lidge-jun
  • #7840 fix(codex): isolate pooled installation IDs, scrub turn-state on account switch, and align JSON token refresh @lidge-jun
  • #7842 fix(google,cursor): isolate Antigravity session/replay and Cursor H2 pool/JWT sub scope @lidge-jun
  • #7844 fix(oauth): harden multi-account pool cooldowns, affinity eviction, and deactivated exclusion @lidge-jun
  • #7847 test: stop rebinding released loopback ports @lidge-jun
  • #7849 fix(openai-chat): keep captured usage on an invalid negotiated completion @xubenqiang
  • #7851 fix(cli): recheck live ownership before journal recovery @lidge-jun
  • #7852 test: isolate Windows fixture children from the account-wide runtime namespace @lidge-jun
  • #7855 docs(agents): treat lane=all as a batched dev check, not a per-PR gate @lidge-jun
  • #7856 docs: keep the provider configuration reference under the file-size cap @lidge-jun
  • #7858 fix(advisor): support manual consultations during web search @auroraflux-jhkim
  • #7861 test: assert the specific refusal gate in the fixture preload tests @lidge-jun
  • #7862 fix(quota-pool): compute pooled windows from held account rows @lidge-jun
  • #7864 fix(responses): keep replay-refusal attribution through combo failures @lidge-jun
  • #7865 docs(responses): register and document citation replay coverage (carry #7608) @lidge-jun
  • #7866 test: stop restarting the proxy per row in the bearer admission matrix @lidge-jun
  • #7867 feat(integrations): add opt-in alias naming for Hermes and Command Code exports @lidge-jun
  • #7868 test(claude): isolate the Desktop lifecycle lock in first-party fixtures @lidge-jun
  • #7869 fix(windows): admit local config writer phases after config-root ACL settlement @lidge-jun
  • #7870 ci: bound frozen installs and retry only deadline stalls @lidge-jun
  • #7873 fix(sidecars): keep final Responses events without a newline @oocheol
  • #7874 fix(restart): retire drained parent ownership and preserve bind scope @luvs01
  • #7875 fix(codex): address Windows updater release and observation reviews @luvs01
  • #7876 fix(codex): validate CLI and desktop launcher execution boundaries @luvs01
  • #7877 test(claude): isolate the remaining Desktop lifecycle-lock fixtures @lidge-jun
  • #7880 fix(providers): default Moonshot API to K3.1 Pro and retire K2.5 @lidge-jun
  • #7881 fix(anthropic): honor explicit Opus 5.5 reasoning summaries @lidge-jun
  • #7882 fix(openai-chat): send LM Studio one leading system message @lidge-jun
  • #7883 fix(codex): report main-pool affinity decisions in request logs @lidge-jun
  • #7884 fix(test): judge protected-tree containment per path component @lidge-jun
  • #7885 test(windows): warm the PowerShell ancestry probe before its timed run @lidge-jun
  • #7886 perf(usage): skip Unicode folding for plain ASCII metadata @lidge-jun
  • #7887 fix(codex): keep local account cooldowns from quarantining combo targets @lidge-jun
  • #7888 fix(oauth): explain why Antigravity project discovery failed @lidge-jun
  • #7889 feat(catalog): opt in to omitting disabled native models @lidge-jun
  • #7890 feat(clients): let the omo integration write the Responses dialect @lidge-jun
  • #7891 fix(config): re-arm the atomic writer's ACL timeout memo per destination @lidge-jun
  • #7892 fix(combos): fail over when a target rejects a request for context length @lidge-jun
  • #7893 fix(messaging): reserve SSH forward ports until handoff and recover lost candidates @lidge-jun
  • #7894 fix(advisor): apply the caller's paid-combo consent and device fallback policy @lidge-jun
  • #7897 test: tolerate delayed desktop compatibility fixture port release @lidge-jun
  • #7898 fix(ci): recover interrupted Bun postinstalls on retry @lidge-jun
  • #7900 fix(ci): keep the bun install retry working on macOS bash 3.2 @lidge-jun
  • #7901 test: copy macOS bundle binary in remote workspace fixture @lidge-jun
  • #7902 test: expose Windows recovery proof state and drain failed fixtures @lidge-jun
  • #7903 fix(windows): avoid repeat ACL propagation for lifecycle roots @lidge-jun
  • #7908 test: add offline fixtures for claude-cli schema-constrained output @adirwt852-cloud
  • #7909 fix(windows): recover interrupted Codex CLI child publication @lidge-jun
  • #7911 fix(openai-responses): drop the include entry xAI rejects @xubenqiang
  • #7913 perf(anthropic): scan SSE inspection fragments incrementally @0disoft
  • #7914 test: fix config-root seed and macOS history-probe fixtures after #7903/#7900 @lidge-jun
  • #7915 test: separate recovery PID evidence and budget cold Windows fetches @lidge-jun
  • #7917 test: partition Windows apply coverage and rebalance hosted shards @lidge-jun
  • #7919 fix: preserve tool safety on translated Messages fallbacks @lidge-jun
  • #7921 test(link): stop racing a 250ms deadline in the Windows Child HTTP success case @lidge-jun
  • #7922 fix(gui): show provider connection and model tests on the served dashboard @lidge-jun
  • #7923 ci(windows): refresh shard weights and restore job-time headroom @lidge-jun
  • #7924 docs: generate a client support matrix from the client registries @lidge-jun
  • #7925 docs: lead with one local gateway for every coding tool @lidge-jun
  • #7926 ci(macos): split suite across four weighted shards @lidge-jun
  • #7927 docs: record runtime-verified client results on the support page @lidge-jun
  • #7928 fix(claude): fail native Messages streams that end before message_stop @lidge-jun
  • #7929 test(claude): make dead-upstream CONNECT fixture deterministic @lidge-jun
  • #7930 test(service): stabilize native recovery fixture compilation @lidge-jun
  • #7931 fix(codex): await recovery ACL checks in async parent admission @luvs01
  • #7934 chore(release): open dev at 2.95.0 before releasing 2.94.0 @github-actions[bot]
  • #7935 feat(provider): add keyless CC-Switch provider import with preview, apply and restore @lidge-jun
  • #7936 fix(gui): explain upstream request failures @lidge-jun
  • #7937 test(codex): expose bounded Windows plan refusal diagnostics @lidge-jun
  • #7938 fix(cursor): parse model variants in linear time @lidge-jun
  • #7939 feat(gui): show distinct first-response states on the provider overview @lidge-jun
  • #7942 build(deps): bump rustls from 0.23.45 to 0.23.46 in /desktop/src-tauri @dependabot[bot]
  • #7943 fix(test-layout): keep layout.json under the file-size threshold @lidge-jun
  • #7944 fix(volcengine): keep Kimi K3.1 Pro tool continuations valid @AaronZ345
  • #7945 test(windows): resolve the atomic-write fixture root before matching cleanup paths @lidge-jun
  • #7946 test(windows): budget hosted fixture phases without weakening contracts @lidge-jun
  • #7947 feat(gui): link completion probe failures to recovery, re-verification, and disconnect scope @lidge-jun
  • #7948 test(codebuddy): feed the abort fixture's stdout once @lidge-jun
  • #7949 test(windows): use a never-allocated PID for the pending-child recovery fixture @lidge-jun
  • #7950 test(config): publish the overlap fixture after the recheck budget is spent @lidge-jun
  • #7951 test(claude): give native passthrough success paths the internal header deadline @lidge-jun
  • #7957 perf(responses): count snapshot text bytes incrementally @0disoft
  • #7960 fix(workflow-budget): make per-task ceilings configurable from config and dashboard @robin-bially
  • #7970 fix(windows): snapshot ACL failure diagnostics @luvs01
  • #7972 perf(history): move integrity scans off the serving thread @luvs01
  • #7973 fix(cli): explain tracked runtime stop refusals @luvs01
  • #7975 test(xai): cover encrypted Responses tool continuation @Reedtrullz
  • #7976 fix(credentials): stop Windows ancestor-watch feedback loops @luvs01
  • #7977 fix(ci): distinguish install failures from owned deadlines @luvs01
  • #7979 fix(router): decode routed slugs via modelDisplayNames ids @lidge-jun
  • #7980 fix(codex): retire a pool account's carried 5-hour window when WHAM shows none @lidge-jun
  • #7981 fix(kiro): keep Advisor requests cloneable for the retry snapshot @lidge-jun
  • #7982 fix(combo): skip Meta Muse targets for mandatory tool_choice @lidge-jun
  • #7983 fix(responses): promote additional_tools to top-level tools for xAI and strict gateways @lidge-jun
  • #7985 fix(responses): normalize Codex tool catalogs and include for Meta Muse @lidge-jun
  • #7986 fix(windows): bigint probe identity in runtime preflight; release CC-Switch F3 WAL handles @lidge-jun
  • #7987 docs(config): say when the workflow send ceiling is checked @lidge-jun
  • #7988 fix(azure): omit unsupported Responses encrypted output include @lidge-jun
  • #7989 fix(sidecars): accept CR-delimited Responses events @lidge-jun
  • #7990 fix(discovery): name the invalid model row and the static-list workaround @lidge-jun
  • #7991 fix(claude): keep web_search native when no sidecar backend can run @lidge-jun
  • #7992 fix(providers): keep the quota report cache when pool readings are only restamped @lidge-jun
  • #7993 fix(claude): prune generated agents when the Claude integration is turned off @lidge-jun
  • #7994 fix(codex): stop scoring an elapsed 5-hour window against a pool account @lidge-jun
  • #7995 test(history): corrupt the index the health query plan actually reads @lidge-jun
  • #7996 fix(update): refuse dashboard restart under a systemd unit OpenCodex does not own @lidge-jun
  • #7997 fix(history): bound the integrity check wait (#7984) @lidge-jun
  • #7998 fix(windows): admit config-root cache writes after the optional config-root ACL flight @lidge-jun
  • #7999 feat(messaging): add opt-in MCP tools for stored Codex queues @HojooonKim
  • #8000 test(history): corrupt the health index through a cold connection @lidge-jun
  • #8001 test(codex): assert the cold keyring refusal kind and report its cause @lidge-jun
  • #8002 test(cc-switch): finalize the F1/F2 fixture statements before cleanup @lidge-jun
  • #8003 test(cli): name the pinned-port holder when a sibling misses its deadline @lidge-jun
  • #8004 test(anthropic): await the admitted provider quota cache write @lidge-jun
  • #8007 fix(cli): attest Codex listener before token injection @luvs01
  • #8008 fix(security): require paired dashboard session for CLI updates @luvs01
  • #8009 fix(codex): hold selection ownership through dashboard feature toggles @luvs01
  • #8010 fix(combo): exclude Meta for direct hosted tool choices @luvs01
  • #8011 fix(security): reject inherited writes at Windows creation parents @luvs01
  • #8012 fix: bound canonical patch prefix scanning @luvs01
  • #8013 fix(responses): preserve quota-code provenance across wrappers and policy fallback @luvs01
  • #8014 fix(codex): serialize automatic v1 reconciliation with CLI updates @luvs01
  • #8015 perf(ollama): count fragmented NDJSON bytes incrementally @0disoft
  • #8016 test(claude): report the hardened local-CA ACL in the first-party apply suite @lidge-jun
  • #8017 fix(grok): honor disable and shutdown during startup sync @luvs01
  • #8018 fix(advisor): honor web-search tool choice scope @luvs01
  • #8019 fix: compare file identity with bigint stat @lidge-jun
  • #8021 fix(qoder): bound CN PNG raster dimensions @luvs01
  • #8022 fix(cli): preserve server-issued batch for role suggestion --apply @luvs01
  • #8023 fix: compare Codex and remote workspace file identity with bigint stat @lidge-jun
  • #8024 fix(antigravity): stop sibling discovery after revocation @luvs01
  • #8025 fix(responses): strip rejected reasoning toggle from native passthrough @luvs01
  • #8026 fix(server): account for normalized inbound JSON @luvs01
  • #8027 fix(responses): scope tool authority to current turn @luvs01
  • #8029 test: select injected stat targets by canonical path @lidge-jun
  • #8030 fix(adapters): strip safety_identifier at the canonical ChatGPT forward destination @harshav167
  • #8031 fix: compare CLI install and update artifact identity with bigint stat @lidge-jun
  • #8032 test: give the Windows apply x64 fixture compile the shared spawn budget @lidge-jun
  • #8033 chore(release): open dev at 2.96.0 before releasing 2.95.0 @github-actions[bot]
  • #8036 fix(link): restore owned integrations before native signal exit @luvs01
  • #8039 security(desktop): bump updater to 2.14.1 and align Rust 1.90 @luvs01
  • #8040 Fix non-ASCII Codex turn metadata headers @visualbridge7188
  • #8047 fix(command-code): avoid double charging live NDJSON buffers @0disoft
  • #8048 fix(responses): unwrap one extra executable freeform body wrapper @nickdavis
  • #8049 perf(devin): batch consumed stream chunk removal @0disoft
  • #8055 fix(anthropic): support Ultra quota windows and show subscription names @lidge-jun
  • #8058 test(messaging): verify handle closure without racy fd probes @lidge-jun
  • #8062 test(cli): await sibling startup completion instead of a polling deadline @lidge-jun
  • #8064 fix(responses): keep untyped assistant messages inside their tool-call turn @fec123
  • #8065 fix(codex): isolate Pool installation identity per account @lidge-jun
  • #8068 chore(release): open dev at 2.97.0 before releasing 2.96.0 @github-actions[bot]
  • #8070 fix(kiro): resubmit a finished answer on the completion retry @mushikingh
  • #8071 fix(kiro): emulate structured output instead of refusing it @mushikingh
  • #8072 fix(kiro): report content-filter stops as non-retryable refusals @mushikingh
  • #8074 fix(codex): keep profile keys OpenCodex does not manage @codewith-aditya
  • #8077 fix(kimi): report monthly Coding Plan quota @zarv1k
  • #8088 fix(anthropic): show both 5-hour and weekly meters for Max and Team accounts @lidge-jun
  • #8092 fix(codex): place round-robin conversations on accounts with quota headroom @lidge-jun
  • #8094 fix(claude): bind header-less Messages bridge turns to one Codex pool account (carry #8028) @lidge-jun
  • #8096 fix(codex): honest affinity labels and opt-in request-owned conversation affinity (#8080) @lidge-jun
  • #8098 fix(codex): keep Codex pool session pins across proxy restarts @lidge-jun
  • #8099 Serve an Ollama-compatible inbound API @lidge-jun
  • #8100 feat(sync): Home ocx sync fans out to linked Children (sync.home-fanout/1) @lidge-jun
  • #8102 fix: refuse links at SQLite store paths on Windows and rebalance CI shards for the new affinity tests @lidge-jun
  • #8103 feat(update): orchestrated ocx update plan/apply contract (update.orchestrated/1) @lidge-jun
  • #8104 Normalize upstream error details in request logs and Retry-After advice @lidge-jun
  • #8105 feat(gui): design system v2 — redesigned dashboard, navigation and desktop app @Ingwannu
  • #8106 fix(link): keep Windows containment refusal at 126; correct the #8100 fan-out test fixture @lidge-jun
  • #8108 Normalize Chat Completions client error bodies @lidge-jun
  • #8109 fix(ci): make the Windows batch shards green after #8103 @lidge-jun
  • #8111 fix(service): pin resolved homes in service definitions @omar391
  • #8112 fix(codex): read Artificial Analysis free model list before sunset @LilMGenius
  • #8119 fix(responses): route local compaction checkpoints @lidge-jun
  • #8120 fix(codex): retire a pool account's carried monthly window when WHAM shows none @lidge-jun
  • #8121 Serialize uninstall manifest updates under one cross-process lock @lidge-jun
  • #8122 fix(kimi): drop the unsupported output.encrypted_content include on Kimi Code Responses @lidge-jun
  • #8123 fix(responses): count lowered hosted tool_search as declared @lidge-jun
  • #8124 fix(ollama): report prompt_eval_cached_count as cache-read input @lidge-jun
  • #8125 fix(qoder): 30 s background discovery, still-discovering answer for slow dashboard tests @lidge-jun
  • #8126 fix(kimi): export declared effort ladder and default to Kimi Code @lidge-jun
  • #8128 fix(claude): answer uncoded context-window refusals as prompt too long @lidge-jun
  • #8135 chore(release): open dev at 2.98.0 before releasing 2.97.0 @github-actions[bot]
  • #8136 test(diagnostics): fix macOS catalog async fixtures @lidge-jun
  • #8138 fix: tighten Kiro diagnostics and service log rotation @lidge-jun
  • #8141 fix(config): remove owned paths relative to the config root @lidge-jun
  • #8143 fix(codex): validate legacy shim restore paths before restoring @lidge-jun
  • #8148 fix(claude): normalize direct context overflow errors with parity coverage @luvs01
  • #8151 fix(responses): lower ocx envelopes on native v1 compact (#8042) @Ingwannu
  • #8153 fix(messages): normalize Messages error responses and Anthropic headers @lidge-jun
  • #8154 fix(terminal-guard): pass completion summaries that follow tool results @yazzang-homelab
  • #8163 fix(openai-chat): flatten root tool schemas for Claude chat gateways @lcxhh521
  • #8164 fix(messages): normalize streamed Messages error events @lidge-jun
  • #8174 fix(mistral): keep replayed images within each model's per-request cap @fontanierh
  • #8188 fix(codex): preserve pre-output hold across safe WS heartbeats @jaekwonhong
  • #8199 fix(responses): join repeated tool outputs for one call @lidge-jun
  • #8200 fix(responses): preserve adapter body stall status @lidge-jun
  • #8201 test(service): make service definition probes portable @lidge-jun
  • #8202 fix(web-search): strip Lite marker from classic search @lidge-jun
  • #8203 fix(transport): release disposed SOCKS5 readers and timeout closures @lidge-jun
  • #8208 fix(antigravity): include Argon level with thought summaries @lidge-jun
  • #8210 fix(web-search): report incomplete Anthropic search results @lidge-jun
  • #8211 fix(claude): avoid retries for definite context overflow @lidge-jun
  • #8212 fix(claude): preserve translated system cache boundary @lidge-jun
  • #8213 fix(web-search): separate consumer and upstream inactivity @lidge-jun
  • #8214 test(messages): restore Windows fixture coverage @lidge-jun
  • #8215 fix(models): list router-known IDs with effective metadata @lidge-jun
  • #8217 fix(tests): isolate Codex profile cases on Windows @lidge-jun
  • #8218 fix(tests): isolate Windows uninstall privilege scenarios @lidge-jun
  • #8219 docs(credits): record #8176 credit lost in #8214's squash @lidge-jun
  • #8221 fix(cli): preserve default bind identity for guarded stops @lidge-jun
  • #8223 fix(gui): prioritize critical credits in quota summary @lidge-jun
  • #8225 fix(tests): pair Windows job store route fixture @lidge-jun
  • #8226 fix(tests): use native homes in systemd probe fixtures @lidge-jun
  • #8227 fix(update): validate configuration before stopping services @lidge-jun
  • #8228 fix(tests): pair Windows CLI update plan session @lidge-jun
  • #8233 fix(ci): rebalance Ubuntu tests across five shards @lidge-jun
  • #8238 test(config): retry busy first ownership registrations @luvs01
  • #8239 test(config): honor ownership test platform exclusions on Bun @luvs01
  • #8240 fix(cli): keep Desktop CLI selected when its executable is missing @lidge-jun
  • #8241 test(update): classify read-only config preflight @lidge-jun
  • #8245 fix(tests): use native homes in launchd fixture @lidge-jun
  • #8248 fix(sync): report skipped connected children as partial @lidge-jun
  • #8249 fix(link): report stale Child connection readiness @lidge-jun
  • #8250 fix(sync): defer supervised client restart after apply @lidge-jun
  • #8253 fix(link): preserve orphan token files for confirmed recovery @lidge-jun
  • #8256 fix(link): address #8249/#8253 review follow-ups @lidge-jun
  • #8264 test: quarantine hosted Windows CI failures for 2.98.0 @lidge-jun
  • #8265 test(link): give the sync-stop fixture the native CODEX_HOME spelling on Windows @lidge-jun
  • #8268 release: promote frozen tip 47f9e2d to preview as 2.98.0-preview.20261107 @lidge-jun

Code signing

Windows binaries follow the code signing policy.
Free code signing provided by SignPath.io, certificate by SignPath Foundation.

Don't miss a new opencodex release

NewReleases is sending notifications on new releases.