v2.36.0-preview.20260830
Pre-release
Pre-release
Immutable
release. Only release title and notes can be modified.
Published to npm as @bitkyc08/opencodex@2.36.0-preview.20260830 with dist-tag preview.
New Features
- Add test:changed and make it the local check during implementation (#2429)
- Per-account quota display and quota-aware account pool (#2875)
- Opt-in blocked model redirection at shared routing layer (#2854)
- Add provider, model, and day cache metrics with price coverage (#2365)
- Inject per-model reasoning effort into Grok Build config (#1756)
- Add random, least-used, and reset-window routing strategies (#2050)
- Add model-specific provider routing for Vercel AI Gateway (#2364)
- Opt-in x_search alongside hosted web search on the Responses lane (#2712)
- Return trusted Responses request ids (#2827)
- Choose the account with known headroom before dispatch (#2878)
- Keep per-account quota across restarts (#2880)
- Native Ollama /api/chat transport with /api/show metadata for ollama-cloud (#2863)
- Migrate managed block to model_providers inheritance (#2890)
- Skip the ACL mutation when the DACL is proven compliant (#2963)
- Expose grok-4.20-multi-agent on the Responses lane (carry of #2498) (#2985)
- Add least-privilege GET /v1/catalog for remote Codex clients (#2979)
- Add opt-in transient-5xx retry with a shared total-send budget (#2981)
- Add quota-window account pool routing (carry of #2560) (#2982)
Bug Fixes
- Render one answer when prose and the completion tool share an inference (#2835)
- Move dev's version line past the published preview (#2836)
- Fold only message-shaped system items (#2822)
- Scope model removal selectors to provider (#2821)
- Raise Muse Spark context window to 1M on OpenCode Go (#2785)
- Land approved verbosity and NAT64 fixes (#2799, #2798) (#2839)
- Restrict closed-PR cleanup to disposable namespaces (#2840)
- Close drain routing follow-ups (#2845)
- Send the Codex client identity on the openai-chat path (#2717) (#2843)
- Reach the fake-IP opt-in for explicit-zero mapped answers (#2810) (#2842)
- Reject self-intercept targets (#2849)
- Recover encrypted combo agent tasks safely (#2850)
- Admit keyring-managed native credentials (#2718) (#2847)
- Preserve retired orphan tables and clear stale references (#2846)
- Diagnose the broken Codex env_key launch path (#2844)
- Bind a rotated OAuth bearer to its own Copilot origin (#2841)
- Follow up on #2849 self-target gaps (#2852)
- Security follow-up to #2850 recovery (#2851)
- Refresh expired native main auth.json tokens (#2221) (#2848)
- Scope scheduler ownership by OpenCodex home (#2857)
- Keep installed tray alive after launch (#2856)
- Retry compact on routed handoff target (#2858)
- Harden dashboard asset serving and log retries (#2859)
- Report an unclean prior proxy exit instead of a silent outage (#2861)
- Keep native eligibility metadata off routed catalog rows (#2862)
- Bound the assembled external replay envelope (#2865)
- Support CentOS 7 service management (#2869)
- Authenticate call-id provenance (#2876)
- Unblock the isolated fabric producer and unpin CI-scaled waits (#2873)
- Contain the fabric producer and remove timeout-only stabilizers (#2879)
- Complete prompt probe coalescing (#2872)
- Match the shim's launcher backups in --restart-codex (#2888)
- Refresh and replay an ordinary pool 401 instead of quarantining (#2889)
- Ask upstream for the entitlement roster under a real client version (#2891)
- Bound the stored Pool 401 recovery budget by account (#2897)
- Name the invocation inside a replayed tool result (#2900)
- Bound the replayed invocation and compare full tool identity (#2903)
- Refresh Codex 0.151 shell contract (#2907)
- Honor provider HTTP version pins (#2908)
- Reserve the sidecar hint in lines so the pair stays aligned (#2905)
- Launch the systemd unit through the stable ocx executable (#2909)
- Cap the log table against the dynamic viewport (#2906)
- Index replayed tool calls from full history on the checkpoint path (#2910)
- Harden stable systemd launcher contracts (#2916)
- Give the live GLM-5.3-Flash route its own effort ladder (#2917)
- Decode CJK schtasks output and let the task listing finish (#2918)
- Correct the record and lock the test constants (#2915)
- Scope refresh-flight cancellation to the caller that owns it (#2920)
- Detect Windows Desktop policy conflicts (#2924)
- Share one identity-lookup budget between desktops and CI (#2926)
- Reuse unchanged startup task listing (#2928)
- Preserve all five combo strategies in dashboard and docs (#2929)
- Group and translate the newer combo strategies in the workspace (#2931)
- Apply fresh-connection recovery on the sidecar and loop retry legs (#2932)
- Require a replayed call to precede the result it names (#2936)
- Send the cleanup percent in the policy target the server reads (#2937)
- Reconcile the refreshed plan on the shared flight, not the owner's wait (#2933)
- Heal a dormant same-grant record and drop stale 401 evidence (#2934)
- Read Copilot nested vision capability (#2943)
- Classify failed exec wrappers by forward scan, not backtracking (#2945)
- Root the test-run lock in a machine-local user runtime dir (#2962)
- Give the provider toggle a real flex basis so the header can wrap (#2958)
- Drop the paragraph Antigravity Gemini 3.7 Flash rejects (#2961)
- Stop a namespaced MCP exec from authorizing bare shell aliases (#2966)
- Start when proxy settings hold values the schema never constrained (#2967)
- Keep checkpoint-suffix history intact through pruning and the envelope (#2940)
- Install gui dependencies the local runner needs (#2964)
- Keep the empty-completion notice to one log record (#2955)
- Repair the two dispatch-only Windows test failures (#2968)
- Keep the capacity panel when a credit expiry cannot be formatted (#2965)
- Correct GLM Coding Plan auth and exclude MCP allowance from model quota (#2976)
- Resolve self-namespaced native ids before the provider-qualified reading (#2987)
- Bound the provenance ledger by bytes, not only by transaction count (#2954)
- Scope the default Bun test-run lock to a private per-user runtime (#2984)
- Annotate empty tool outputs, keeping an explicit provider false (#2978)
- Keep the terminal-guard continuation on the shared transient budget (#2998)
Documentation
- Add minimal container / agent sandbox instructions to AGENTS.md (#2832)
- Close the Kiro duplicate-answer unit (#2838)
- Bug-PR zero-remaining campaign roadmap + executable review gate (#2837)
- Close bug-PR zero-remaining campaign (#2855)
- Verify the Kiro quota and pool phases compose on dev (#2882)
- Back 020's withdrawal with the horizontal measurement (#2911)
- Close the dashboard slop unit with its outcome (#2912)
- Enumerate every invocation-line site to bound the cursor fix (#2913)
- Correct the red-test arithmetic and name two enumeration gaps (#2919)
- Record the lane N units and their outcomes (#2930)
- Close the cursor tool-continuation unit into _fin (#2970)
- Record the terminal outcome the unit close claimed (#2971)
- Record the release-readiness train and its outcome (#2974)
- Record the final gate for the cursor tool-continuation unit (#2977)
- Correct Kiro pooling, combo strategies, and undocumented config in every locale (#2980)
Chores
- Prove reserved call-id codec closure (#2868)
- Prove replay 402 closes compact recovery (#2922)
- Pin Copilot vision precedence and nested/flat denial equivalence (#2944)
- Isolate the tombstone guard with a credential-carrying tombstone (#2946)
- Let the README asset check tell files from directories (#2952)
- Create the external prompt fixture parent directory (#2972)
- Close the four residual shard-2 Windows failures (#2975)
- Widen the launcher health budget for loaded runners (#2983)
Other Changes
- [WRONG BRANCH] promote dev onto preview for v2.36.0-preview.20260830 (#3001)
Changelog
Full Changelog: v2.36.0-preview.20260829...v2.36.0-preview.20260830
- #1756 feat(grok): inject per-model reasoning effort into Grok Build config @takltc
- #2050 feat(combos): add random, least-used, and reset-window routing strategies @x3M3x
- #2364 feat(providers): add model-specific provider routing for Vercel AI Gateway @chilung-cgu
- #2365 feat(usage): add provider, model, and day cache metrics with price coverage @chilung-cgu
- #2429 feat(test): add test:changed and make it the local check during implementation @olddonkey
- #2712 feat(xai): opt-in x_search alongside hosted web search on the Responses lane @olddonkey
- #2785 fix(catalog): raise Muse Spark context window to 1M on OpenCode Go @DevonGithub
- #2821 fix(cli): scope model removal selectors to provider @luvs01
- #2822 fix(responses): fold only message-shaped system items @luvs01
- #2827 feat(server): return trusted Responses request ids @yamashirotakashi
- #2832 docs: add minimal container / agent sandbox instructions to AGENTS.md @lidge-jun
- #2835 fix(kiro): render one answer when prose and the completion tool share an inference @lidge-jun
- #2836 fix(release): move dev's version line past the published preview @lidge-jun
- #2837 docs(devlog): bug-PR zero-remaining campaign roadmap + executable review gate @lidge-jun
- #2838 docs(devlog): close the Kiro duplicate-answer unit @lidge-jun
- #2839 fix(catalog,security): land approved verbosity and NAT64 fixes (#2799, #2798) @lidge-jun
- #2840 fix(ci): restrict closed-PR cleanup to disposable namespaces @luvs01
- #2841 fix(responses): bind a rotated OAuth bearer to its own Copilot origin @lidge-jun
- #2842 fix(security): reach the fake-IP opt-in for explicit-zero mapped answers (#2810) @lidge-jun
- #2843 fix(agentrouter): send the Codex client identity on the openai-chat path (#2717) @lidge-jun
- #2844 fix(doctor): diagnose the broken Codex env_key launch path @lidge-jun
- #2845 fix(codex): close drain routing follow-ups @lidge-jun
- #2846 fix(grok): preserve retired orphan tables and clear stale references @lidge-jun
- #2847 fix(codex): admit keyring-managed native credentials (#2718) @lidge-jun
- #2848 fix(codex): refresh expired native main auth.json tokens (#2221) @lidge-jun
- #2849 fix(shadow-call): reject self-intercept targets @lidge-jun
- #2850 fix(responses): recover encrypted combo agent tasks safely @lidge-jun
- #2851 fix(responses): security follow-up to #2850 recovery @lidge-jun
- #2852 fix(shadow-call): follow up on #2849 self-target gaps @lidge-jun
- #2854 feat(router): opt-in blocked model redirection at shared routing layer @terrytan95
- #2855 docs(devlog): close bug-PR zero-remaining campaign @lidge-jun
- #2856 fix(windows): keep installed tray alive after launch @lidge-jun
- #2857 fix(windows): scope scheduler ownership by OpenCodex home @lidge-jun
- #2858 fix(responses): retry compact on routed handoff target @lidge-jun
- #2859 fix(gui): harden dashboard asset serving and log retries @lidge-jun
- #2861 fix(cli): report an unclean prior proxy exit instead of a silent outage @lidge-jun
- #2862 fix(codex): keep native eligibility metadata off routed catalog rows @lidge-jun
- #2863 feat(providers): native Ollama /api/chat transport with /api/show metadata for ollama-cloud @adtumk
- #2865 fix(cursor): bound the assembled external replay envelope @lidge-jun
- #2868 test(cursor): prove reserved call-id codec closure @lidge-jun
- #2869 fix(systemd): support CentOS 7 service management @lidge-jun
- #2872 fix(codex): complete prompt probe coalescing @lidge-jun
- #2873 fix(windows): unblock the isolated fabric producer and unpin CI-scaled waits @lidge-jun
- #2875 feat(kiro): per-account quota display and quota-aware account pool @lidge-jun
- #2876 fix(cursor): authenticate call-id provenance @lidge-jun
- #2878 feat(oauth): choose the account with known headroom before dispatch @lidge-jun
- #2879 fix(windows): contain the fabric producer and remove timeout-only stabilizers @lidge-jun
- #2880 feat(quota): keep per-account quota across restarts @lidge-jun
- #2882 docs(devlog): verify the Kiro quota and pool phases compose on dev @lidge-jun
- #2888 fix(codex): match the shim's launcher backups in --restart-codex @lidge-jun
- #2889 fix(codex): refresh and replay an ordinary pool 401 instead of quarantining @lidge-jun
- #2890 feat(grok): migrate managed block to model_providers inheritance @bet4it
- #2891 fix(codex): ask upstream for the entitlement roster under a real client version @lidge-jun
- #2897 fix(codex): bound the stored Pool 401 recovery budget by account @lidge-jun
- #2900 fix(cursor): name the invocation inside a replayed tool result @lidge-jun
- #2903 fix(cursor): bound the replayed invocation and compare full tool identity @lidge-jun
- #2905 fix(gui): reserve the sidecar hint in lines so the pair stays aligned @lidge-jun
- #2906 fix(gui): cap the log table against the dynamic viewport @lidge-jun
- #2907 fix(catalog): refresh Codex 0.151 shell contract @lidge-jun
- #2908 fix(web-search): honor provider HTTP version pins @lidge-jun
- #2909 fix(service): launch the systemd unit through the stable ocx executable @lidge-jun
- #2910 fix(cursor): index replayed tool calls from full history on the checkpoint path @lidge-jun
- #2911 docs(devlog): back 020's withdrawal with the horizontal measurement @lidge-jun
- #2912 docs(devlog): close the dashboard slop unit with its outcome @lidge-jun
- #2913 docs(devlog): enumerate every invocation-line site to bound the cursor fix @lidge-jun
- #2915 fix(gui): correct the record and lock the test constants @lidge-jun
- #2916 fix(service): harden stable systemd launcher contracts @Ingwannu
- #2917 fix(providers): give the live GLM-5.3-Flash route its own effort ladder @lidge-jun
- #2918 fix(service): decode CJK schtasks output and let the task listing finish @lidge-jun
- #2919 docs(devlog): correct the red-test arithmetic and name two enumeration gaps @lidge-jun
- #2920 fix(codex): scope refresh-flight cancellation to the caller that owns it @lidge-jun
- #2922 test(codex): prove replay 402 closes compact recovery @lidge-jun
- #2924 fix(claude): detect Windows Desktop policy conflicts @lidge-jun
- #2926 fix(codex): share one identity-lookup budget between desktops and CI @lidge-jun
- #2928 fix(windows): reuse unchanged startup task listing @Ingwannu
- #2929 fix(combos): preserve all five combo strategies in dashboard and docs @x3M3x
- #2930 docs(devlog): record the lane N units and their outcomes @lidge-jun
- #2931 fix(gui): group and translate the newer combo strategies in the workspace @x3M3x
- #2932 fix(upstream): apply fresh-connection recovery on the sidecar and loop retry legs @lidge-jun
- #2933 fix(codex): reconcile the refreshed plan on the shared flight, not the owner's wait @luvs01
- #2934 fix(codex): heal a dormant same-grant record and drop stale 401 evidence @lidge-jun
- #2936 fix(cursor): require a replayed call to precede the result it names @lidge-jun
- #2937 fix(cli): send the cleanup percent in the policy target the server reads @luvs01
- #2940 fix(cursor): keep checkpoint-suffix history intact through pruning and the envelope @lidge-jun
- #2943 fix(catalog): read Copilot nested vision capability @Ingwannu
- #2944 test(catalog): pin Copilot vision precedence and nested/flat denial equivalence @lidge-jun
- #2945 fix(adapters): classify failed exec wrappers by forward scan, not backtracking @lidge-jun
- #2946 test(codex): isolate the tombstone guard with a credential-carrying tombstone @lidge-jun
- #2952 test: let the README asset check tell files from directories @luvs01
- #2954 fix(codex): bound the provenance ledger by bytes, not only by transaction count @luvs01
- #2955 fix(responses): keep the empty-completion notice to one log record @luvs01
- #2958 fix(gui): give the provider toggle a real flex basis so the header can wrap @lidge-jun
- #2961 fix(google): drop the paragraph Antigravity Gemini 3.7 Flash rejects @lidge-jun
- #2962 fix(test): root the test-run lock in a machine-local user runtime dir @lidge-jun
- #2963 perf(windows): skip the ACL mutation when the DACL is proven compliant @lidge-jun
- #2964 fix(test): install gui dependencies the local runner needs @lidge-jun
- #2965 fix(quota): keep the capacity panel when a credit expiry cannot be formatted @lidge-jun
- #2966 fix(responses): stop a namespaced MCP exec from authorizing bare shell aliases @lidge-jun
- #2967 fix(config): start when proxy settings hold values the schema never constrained @lidge-jun
- #2968 fix(windows): repair the two dispatch-only Windows test failures @lidge-jun
- #2970 docs(devlog): close the cursor tool-continuation unit into _fin @lidge-jun
- #2971 docs(devlog): record the terminal outcome the unit close claimed @lidge-jun
- #2972 test(windows): create the external prompt fixture parent directory @lidge-jun
- #2974 docs(devlog): record the release-readiness train and its outcome @lidge-jun
- #2975 test(windows): close the four residual shard-2 Windows failures @lidge-jun
- #2976 fix(quota): correct GLM Coding Plan auth and exclude MCP allowance from model quota @lidge-jun
- #2977 docs(devlog): record the final gate for the cursor tool-continuation unit @lidge-jun
- #2978 fix(adapters): annotate empty tool outputs, keeping an explicit provider false @lidge-jun
- #2979 feat(server): add least-privilege GET /v1/catalog for remote Codex clients @lidge-jun
- #2980 docs: correct Kiro pooling, combo strategies, and undocumented config in every locale @lidge-jun
- #2981 feat(providers): add opt-in transient-5xx retry with a shared total-send budget @lidge-jun
- #2982 feat(anthropic): add quota-window account pool routing (carry of #2560) @lidge-jun
- #2983 test(windows): widen the launcher health budget for loaded runners @lidge-jun
- #2984 fix(test): scope the default Bun test-run lock to a private per-user runtime @luvs01
- #2985 feat(xai): expose grok-4.20-multi-agent on the Responses lane (carry of #2498) @lidge-jun
- #2987 fix(slug): resolve self-namespaced native ids before the provider-qualified reading @luvs01
- #2998 fix(responses): keep the terminal-guard continuation on the shared transient budget @lidge-jun
- #3001 [WRONG BRANCH] promote dev onto preview for v2.36.0-preview.20260830 @lidge-jun