github lidge-jun/opencodex v2.28.0-preview.20260820

pre-release3 hours ago

Published to npm as @bitkyc08/opencodex@2.28.0-preview.20260820 with dist-tag preview.

New Features

  • Report and reclaim abandoned response-state temps (#2089)
  • B2 — Fast on OpenAI-backed slugs, no route pinning (#1886) (#2080)
  • Show and filter intercepted helper requests in Logs (#2179)

Bug Fixes

  • Reclaim abandoned state temps on a timer, not only at load (#2084)
  • Resolve the per-model window the way the catalog does (#2085)
  • Report model capabilities the way the runtime resolves them (#2086)
  • Collapse Google reasoning tiers in model discovery (#2035)
  • Route Pro images through vision sidecar (#2031)
  • Preserve Claude tools with root $schema (#2103)
  • Keep catalog discovery off request event loop (#1876)
  • Allow per-provider/model opt-out of code_mode_only tool mode (#2106) (#2112)
  • Support namespaced custom tool aliases (#1934)
  • Validate codexToolMode; test(types): pin barrel re-export identity (#2119)
  • Bake outbound proxy env into installed service definitions (#2116)
  • Decode reg.exe output as console text, not UTF-8 (#2117)
  • Do not re-label a completed turn as failed when the stream is aborted (#2118)
  • Name the native-main gate reason when the fence returns 503 (#2121)
  • Write service definitions owner-only, they can carry a proxy credential (#2126)
  • Stop fencing native-main on a probe that could not answer (#2130)
  • Accept the OS's own canonical spelling on Windows (#2143)
  • Keep a saved roster slot listed when its model is disabled (#2134)
  • Identify opencode-free with the client User-Agent it claims (#2160)
  • Frame the opening turn so AgentRouter stops blocking non-English (#2162)
  • Identify OpenCode Go by where it routes, not what it is named (#2164)
  • Treat a non-string repeat as padding once that field is known (#2165)
  • Sanitize the shadow helper marker at the logging layer (#2166)
  • Stop requiring a ChatGPT credential for routed providers (#2137)
  • Gate account-native models by entitlement (#2146)
  • Drop the retired prompt_cache_retention for gpt-5.6 (#2138)
  • Resolve model-keyed lookups the way the runtime resolves them (#2140)
  • Retain the K12 short-window quota end to end (#2141)
  • Backfill missing ids on output items for strict decoders (#2142)
  • Gate the shell hook on an installed Claude Code CLI (#2144)
  • Bridge routed tool_search through the Responses passthrough (#2145)
  • Stream OAuth Grok through Responses (#2147)
  • Allow a baseUrl override for Anthropic and Antigravity (#2148)
  • Reject superseded login credential commits (#2149)
  • Preserve and replay thought signatures across stream chunks (#2150)
  • Apply the Fast capability gate to the native passthrough (#2151)
  • Key admission-bearer substitution on transport, not provider name (#2169)
  • Stop the background main refresh from retracting a reauth quarantine (#327) (#2167)
  • Close the core/Lab directory bypass and the release dry-run dead end (#2171)
  • Unbreak privacy:scan on dev (#2175)
  • Record the configured shadow prefix, not the caller's model string (#2170)
  • Give tool_search_call and custom_tool_call their own id prefixes (#2173)
  • Stop the audit record from breaking its own privacy gate (#2177)
  • Give the Windows leg the budgets and the crash retry it never had (#2178)
  • Heartbeat while buffering tool-call deltas (#2180)
  • Stop the Windows leg from truncating and mismeasuring its own shards (#2182)

Documentation

  • Move @Wibias to former maintainers (#2098)
  • Explain deferred tool search troubleshooting (#1878)
  • Close the 260819 merge loop with its outcome record (#2120)
  • Close the 260819 unclaimed-bug unit (#2128)
  • Record release readiness for 2.27.0 and the Windows gate decision (#2153)
  • Record the local Windows verification behind the 2.27.0 promotion (#2158)
  • Record the main..dev release-safety audit (#2172)
  • Record the release-safety audit of the main..dev range (#2174)
  • Close the release audit with the merged fixes and the verified dev state (#2176)

Chores

  • Extract value clusters into types/tools and types/wire leaves (#2019)
  • Move type clusters to leaves; types.ts becomes a pure barrel (#2023)
  • Extract provider-name leaf; break config<->profile cycle (#2036)
  • Move dev version line past the published channel (#2136)
  • Pin the file mode on POSIX only, not on Windows (#2139)
  • Hold the eager-relay marker to the win32 rule, not to a constant (#2129)

Other Changes

  • [WRONG BRANCH] release: sync dev into preview for 2.27.0 (#2161)
  • [WRONG BRANCH] release: sync dev into preview for 2.28.0 (#2187)
  • [WRONG BRANCH] release: v2.28.0-preview.20260820 (#2191)

Changelog

Full Changelog: v2.27.0...v2.28.0-preview.20260820

  • #1876 fix(windows): keep catalog discovery off request event loop @Ingwannu
  • #1878 docs(codex): explain deferred tool search troubleshooting @Ingwannu
  • #1934 fix(tools): support namespaced custom tool aliases @jenfonro
  • #2019 refactor(types): extract value clusters into types/tools and types/wire leaves @lidge-jun
  • #2023 refactor(types): move type clusters to leaves; types.ts becomes a pure barrel @lidge-jun
  • #2031 fix(mimo): route Pro images through vision sidecar @Ingwannu
  • #2035 fix: collapse Google reasoning tiers in model discovery @iF2007
  • #2036 refactor(config): extract provider-name leaf; break config<->profile cycle @lidge-jun
  • #2080 feat(openrouter): B2 — Fast on OpenAI-backed slugs, no route pinning (#1886) @olddonkey
  • #2084 fix(responses): reclaim abandoned state temps on a timer, not only at load @lidge-jun
  • #2085 fix(admission): resolve the per-model window the way the catalog does @ntdatt812
  • #2086 fix(cli): report model capabilities the way the runtime resolves them @ntdatt812
  • #2089 feat(doctor): report and reclaim abandoned response-state temps @lidge-jun
  • #2098 docs(governance): move @Wibias to former maintainers @lidge-jun
  • #2103 fix(xai): preserve Claude tools with root $schema @hyohyeon08
  • #2112 fix(catalog): allow per-provider/model opt-out of code_mode_only tool mode (#2106) @Yuxin-Qiao
  • #2116 fix(service): bake outbound proxy env into installed service definitions @lidge-jun
  • #2117 fix(tray): decode reg.exe output as console text, not UTF-8 @lidge-jun
  • #2118 fix(cursor): do not re-label a completed turn as failed when the stream is aborted @lidge-jun
  • #2119 fix(config): validate codexToolMode; test(types): pin barrel re-export identity @lidge-jun
  • #2120 docs(devlog): close the 260819 merge loop with its outcome record @lidge-jun
  • #2121 fix(codex): name the native-main gate reason when the fence returns 503 @lidge-jun
  • #2126 fix(service): write service definitions owner-only, they can carry a proxy credential @lidge-jun
  • #2128 docs(devlog): close the 260819 unclaimed-bug unit @lidge-jun
  • #2129 test(ws-upstream): hold the eager-relay marker to the win32 rule, not to a constant @ntdatt812
  • #2130 fix(probe,codex): stop fencing native-main on a probe that could not answer @lidge-jun
  • #2134 fix(subagents): keep a saved roster slot listed when its model is disabled @lidge-jun
  • #2136 chore(release): move dev version line past the published channel @lidge-jun
  • #2137 fix(responses): stop requiring a ChatGPT credential for routed providers @lidge-jun
  • #2138 fix(responses): drop the retired prompt_cache_retention for gpt-5.6 @lidge-jun
  • #2139 test(service): pin the file mode on POSIX only, not on Windows @lidge-jun
  • #2140 fix(routing): resolve model-keyed lookups the way the runtime resolves them @lidge-jun
  • #2141 fix(codex): retain the K12 short-window quota end to end @lidge-jun
  • #2142 fix(responses): backfill missing ids on output items for strict decoders @lidge-jun
  • #2143 fix(log-guard): accept the OS's own canonical spelling on Windows @lidge-jun
  • #2144 fix(claude): gate the shell hook on an installed Claude Code CLI @lidge-jun
  • #2145 fix(responses): bridge routed tool_search through the Responses passthrough @lidge-jun
  • #2146 fix(codex): gate account-native models by entitlement @lidge-jun
  • #2147 fix(xai): stream OAuth Grok through Responses @lidge-jun
  • #2148 fix(providers): allow a baseUrl override for Anthropic and Antigravity @lidge-jun
  • #2149 fix(oauth): reject superseded login credential commits @lidge-jun
  • #2150 fix(google): preserve and replay thought signatures across stream chunks @lidge-jun
  • #2151 fix(chat): apply the Fast capability gate to the native passthrough @lidge-jun
  • #2153 docs(devlog): record release readiness for 2.27.0 and the Windows gate decision @lidge-jun
  • #2158 docs(devlog): record the local Windows verification behind the 2.27.0 promotion @lidge-jun
  • #2160 fix(providers): identify opencode-free with the client User-Agent it claims @lidge-jun
  • #2161 [WRONG BRANCH] release: sync dev into preview for 2.27.0 @lidge-jun
  • #2162 fix(anthropic): frame the opening turn so AgentRouter stops blocking non-English @lidge-jun
  • #2164 fix(quota): identify OpenCode Go by where it routes, not what it is named @lidge-jun
  • #2165 fix(openai-chat): treat a non-string repeat as padding once that field is known @lidge-jun
  • #2166 fix(logs): sanitize the shadow helper marker at the logging layer @lidge-jun
  • #2167 fix(codex): stop the background main refresh from retracting a reauth quarantine (#327) @ntdatt812
  • #2169 fix(auth): key admission-bearer substitution on transport, not provider name @lidge-jun
  • #2170 fix(logs): record the configured shadow prefix, not the caller's model string @lidge-jun
  • #2171 fix(guards): close the core/Lab directory bypass and the release dry-run dead end @lidge-jun
  • #2172 docs(devlog): record the main..dev release-safety audit @lidge-jun
  • #2173 fix(responses): give tool_search_call and custom_tool_call their own id prefixes @lidge-jun
  • #2174 docs(devlog): record the release-safety audit of the main..dev range @lidge-jun
  • #2175 fix(devlog): unbreak privacy:scan on dev @lidge-jun
  • #2176 docs(devlog): close the release audit with the merged fixes and the verified dev state @lidge-jun
  • #2177 fix(devlog): stop the audit record from breaking its own privacy gate @lidge-jun
  • #2178 fix(ci): give the Windows leg the budgets and the crash retry it never had @lidge-jun
  • #2179 feat(gui): show and filter intercepted helper requests in Logs @lidge-jun
  • #2180 fix(openai-chat): heartbeat while buffering tool-call deltas @lidge-jun
  • #2182 fix(ci): stop the Windows leg from truncating and mismeasuring its own shards @lidge-jun
  • #2187 [WRONG BRANCH] release: sync dev into preview for 2.28.0 @lidge-jun
  • #2191 [WRONG BRANCH] release: v2.28.0-preview.20260820 @lidge-jun

Don't miss a new opencodex release

NewReleases is sending notifications on new releases.