Skip to content

[WRONG BRANCH] release: promote dev de315e76ad to main as 2.87.0 - #7249

Merged
lidge-jun merged 73 commits into
mainfrom
release/promote-main-2.87.0
Oct 16, 2026
Merged

lidge-jun merged 73 commits into
mainfrom
release/promote-main-2.87.0

Conversation

@lidge-jun

Copy link
Copy Markdown
Owner

Summary

This promotes the frozen dev candidate de315e76ada18b69753ff79b77572093c7097456 to main as stable 2.87.0. The promotion head 447c58ab28 merges in main ancestry with the ours strategy, and its tree is exactly the candidate tree (ac68eedc51). The candidate already sets the version to 2.87.0 in package.json, desktop tauri.conf.json, and Cargo.toml. The dev pre-move is #7248 (dev → 2.88.0), merged before this promotion.

2.87.0 carries the PR-reduction round (15 integration merges, 4ae4936..4ed45e9) plus the regression fixes found by post-release-candidate verification of that round:

Round highlights (carried with contributor co-author credit): Zed/Qoder/OpenCode Gemini compatibility (#7216), catalog Ultra Fast discovery and vision sidecar (#7220), Advisor retention and adaptive consultation (#7219), opt-in API-key round-robin and per-key pacing (#7135), compaction capabilities and reasoning retention (#7217), Combo visibility, workspace panes, Windows picker and Gentle Shell (#7223), OAuth combo cooldown and rotation fixes (#7224), translated-lane Claude server tools (#7225), CLI usage comparison, log history and restart controls (#7222), and import-cycle reductions (#6454, #6594).

Verification

  • Candidate de315e76ad: manual Cross-platform CI lane=all run 38893394441 completed with success (32 success, 3 skipped). That includes windows 1–9/9, macos 1–3/3, macos control, Linux test 1–4/4, gates (GUI) and desktop shell. Service lifecycle run 38893397839 succeeded on the same SHA.
  • Each fix PR passed hosted PR CI on its head. An independent static audit of the nine fix commits and their union at the candidate returned no H/M/L findings.
  • GUI visual QA covered 40 screenshots of the changed pages in en/ko at 1024/1440, with 0 console errors. The only regression found was the keep-native-v1 row, which fix(gui): restore keep-native-v1 qualifier placement #7237 fixes. UI screenshots are on the individual PRs.
  • Required after merge: push-event Cross-platform CI, Service lifecycle, and catalog contracts on the merge SHA. After those, release.yml runs as a dry run, then live with expected-sha set to that SHA.

Main-review disposition. Promotion from dev to main and npm releases are maintainer-controlled (MAINTAINERS.md). The project owner authorized this release as 2.87.0, so the promotion merges with owner authority (--admin). The PR targets main deliberately, so an enforce-target wrong_base failure is expected (as in #7094 and #7110).

Checklist

  • Scope stays focused and avoids unrelated cleanup.
  • Docs or release notes were updated when needed.
  • Security-sensitive changes were reviewed for secrets, auth, and unsafe defaults.

github-actions Bot and others added 30 commits October 14, 2026 13:11
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* fix(codex): expose last Windows desktop build assessment

* fix(codex): retain build observation across runtime restarts

---------

Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com>
Replay the reviewed patch on dev 7640a94.
Validated exact tree daa8631 with focused regressions, typecheck, structure and privacy checks.
No new production behavior is introduced by this refresh.
…paths (#7058)

* fix(protocols): enforce explicit empty tool catalogs across delivery paths

* fix(protocols): preserve native inline and hosted MCP tools

---------

Co-authored-by: Epinephrine <27862058+luvs01@users.noreply.github.com>
Co-authored-by: GOAT <goat@localhost>
Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com>
… colliding (#7089)

* fix(usage): keep usage-ledger file ids exact so Windows NTFS ids stop colliding

UsageLogRevision carried dev and ino as JS Numbers. NTFS file ids put a
sequence number in their high bits and routinely exceed 2^53, so two
different ledger files could round to the same Number and pass every
identity check: the history indexer, the ingest tail guard, the cooperative
ledger scanner and ledger retention would all treat a replaced ledger as the
recorded one. This is what made the stale-ledger build case fail on Windows
CI (#7070).

Read dev/ino through bigint fstat (exactFileIdentity) and carry them as
exact decimal strings end to end, including the schema_meta source identity,
following the Aside profile precedent in #3842. Indexes written by an older
build stored rounded values and rebuild once on mismatch.

The stale-ledger test goes back to perturbing ino, now exactly, and asserts
the revision matches bigint stats.

* docs(usage): describe exact ledger file identity and index rebuilds

* test(usage): cover colliding NTFS ids and legacy metadata reuse

---------

Co-authored-by: jun <jun@juns-Mac-Studio.local>
Co-authored-by: GOAT <goat@localhost>
…tion (ETXTBSY) (#7106)

* fix(desktop): close atomic writer before publishing CLI files

* test(desktop): exclude executable writers from concurrent forks

Share a Unix test read/write lock between executable fixture writes and every synchronous subprocess spawn. Close-on-exec does not prevent a forked child from temporarily retaining a writer, which made direct shim execution return ETXTBSY during the CLI record lock stress test. Keep non-executable record writes and all four stress spawners concurrent, and assert that executable writes wait until spawn protection ends.

* test(desktop): tolerate a poisoned executable-IO lock so one panic cannot cascade

* test(desktop): isolate command deadlines from fixture spawn contention

* fix(desktop): coordinate executable publication with production forks

---------

Co-authored-by: jun <jun@juns-Mac-Studio.local>
Co-authored-by: GOAT <goat@localhost>
…7084) (#7129)

* fix(claude): verify Desktop backup and optional metadata reads

* fix(claude): back up and roll back Desktop profiles from one verified read

The gateway writer read the profile for foreign-key preservation, reread it
for the backup, and reread the backup for rollback. A .bak swapped between
replacement and rollback made rollback refuse, leaving the new profile beside
the old metadata. One verified snapshot now feeds all three, rollback restores
those bytes, and a profile created by the failed apply is removed so retries
cannot accumulate unreferenced profiles.

Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com>

* fix(claude): refuse stale Desktop snapshots and retain rollback errors

Revalidate verified profile bytes before backup and in the no-follow publication hook, refusing drift without retries. Keep metadata publication errors primary when profile restoration or cleanup also fails, and report both failures. Cover concurrent edits and rollback failures with regression tests.

Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com>

* fix(claude): roll back a Desktop profile only while it still holds our bytes

When metadata publication fails, restore or cleanup now re-reads the profile through the verified reader and acts only if it still equals the bytes this apply published, using the same compare-and-swap helper that guards publication (also enforced before the restore rename). A profile another writer changed is preserved and the metadata error is reported with the rollback skipped.

Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com>

* docs(claude): describe ownership-aware Desktop profile rollback

Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com>

---------

Co-authored-by: Epinephrine <27862058+luvs01@users.noreply.github.com>
Co-authored-by: GOAT <goat@localhost>
#7142)

* fix(cli): refuse uncertain ownership before publishing sibling runtime

Carries #7119 (commit c5e17b5).

Co-authored-by: fwkyle <cv271010@gmail.com>

* fix(cli): isolate default-home owner discovery under test home guard

Co-authored-by: fwkyle <cv271010@gmail.com>

* fix(test): isolate owner registry under the armed home guard

Resolve the guarded registry beneath the selected config home when its override is absent. Pin the sandbox registry for inherited children and reject protected paths for reads and retirement as well as publication.

Co-authored-by: fwkyle <cv271010@gmail.com>

---------

Co-authored-by: fwkyle <cv271010@gmail.com>
Co-authored-by: GOAT <goat@localhost>
…allback model (carry #7123) (#7146)

* feat(codex): route hard-locked main-account traffic to a configured fallback model

The main-account hard lock (#5694) refuses requests once the 5h window reads
its 90% threshold or the weekly window reads 98%, and a monthly-only account
governs on monthly. On a single-account setup that refusal is the whole
session: Codex Desktop and CLI turns fail until the window resets even though
another provider in the same config could serve the turn.

Add extended settings to the same feature: codexMainAccountHardLockFallback
names a model and an optional reasoning effort, and while the lock blocks, a
qualifying request is rewritten to that selector instead of failing. The
rewrite is bounded on every side so it never widens what the lock protects:

- It fires only while the lock reads blocked; release stays the same fresh
  observation that admits, so the reroute ends with the lock, on its own.
- getEligiblePoolAccounts is the dispatch's own eligibility choke point, so a
  usable Pool account keeps the request on Codex; an empty eligible list is
  what makes the fallback the only way through.
- Only bare Codex-native selectors qualify. Provider-qualified rows, combos,
  account namespaces, policy routes and thread spawns name their own
  destination on purpose; Luna Reserve keeps its own admission.
- A Codex-native fallback target never applies -- rerouting gpt-* to gpt-*
  would re-enter the same refusal, so the honest behavior is the refusal.
- A malformed section disables the reroute entirely, the same
  disable-don't-widen reading the compaction override takes.

The management API projects the section in GET /api/settings, validates PUTs
against a strict schema before mutation, and null clears it. The dashboard's
main-account protection card grows the model and effort fields with the same
acknowledged-write contract as the toggle. The usage log keeps reporting the
selector the client asked for.

* fix(codex): harden main-account hard-lock fallback routing and credential boundaries

Pass the model's quota scope and respect Direct account mode when consulting getEligiblePoolAccounts so a pool account in a shared reset-derived cooldown or an unused pool under Direct mode cannot suppress the hard-lock fallback. Exclude nativeAlias combo selectors from source rewriting, reject canonical openai/<native> fallback targets alongside bare native ids, yield to non-combo shadow-call targets and compaction_trigger turns, mark credential-domain rewrites so caller ChatGPT headers and native reasoning ciphertext are stripped on fallback routes, preserve requestedModel and lane combo recall when routing to a fallback combo, include codexMainAccountHardLockFallback in Desktop compatibility routing preflight, and re-enable paused GUI fallback settings when picking a model.

Co-authored-by: Blazetes <Blazetes@users.noreply.github.com>

* fix(codex): register main-hard-lock-routing in core inventory and lazy-load fallback models

Register main-hard-lock-routing.ts in RESPONSES_CORE_MODULES so the Responses core owner boundary suite includes it, and lazy-load /api/models in MainAccountHardLockSetting on fallback-control interaction so mounting the protection setting does not issue an unrequested background catalog fetch.

Co-authored-by: Blazetes <Blazetes@users.noreply.github.com>

---------

Co-authored-by: Blazetes <Blazetes@users.noreply.github.com>
* feat(cli): configure human usage model row limits (carry #6436)

Port the usage --top idea from #6436 (bfcba56) onto the capability shards and model-search formatter. Preserve existing JSON, report totals and the default search view.

Co-authored-by: 정우철 <86232509+oocheol@users.noreply.github.com>

* fix(cli): report one bounded message for invalid usage --top

Every invalid --top value now reports '--top must be an integer between 1 and 1000' through the shared integer parser's optional max, instead of '>= 1' for low or non-numeric values and a separate range message for values above 1000.

Co-authored-by: 정우철 <86232509+oocheol@users.noreply.github.com>

---------

Co-authored-by: GOAT <goat@localhost>
Co-authored-by: 정우철 <86232509+oocheol@users.noreply.github.com>
…5932) (#7157)

Carry only the missing account-row badge and accessibility from #5932 at 9b6e14d; plan persistence and projection already landed in #6953.

Co-authored-by: GOAT <goat@localhost>
Co-authored-by: cubebox <58514883+juzijia@users.noreply.github.com>
* feat(codex): opt in to remaining included quota (carry #6629)

Port #6629 from 2a7add5 onto current dev, retaining account policy and native refresh changes. Add opt-in coverage for entitlement, round-robin, automatic pause, reauthentication, and paid-credit refusal.

Co-authored-by: Yuxin Qiao <104957188+Yuxin-Qiao@users.noreply.github.com>

* docs(structure): place use-remaining CLI note in the account-policy section

---------

Co-authored-by: GOAT <goat@localhost>
Co-authored-by: Yuxin Qiao <104957188+Yuxin-Qiao@users.noreply.github.com>
…) (#7159)

* feat(combos): require explicit consent for metered targets (carry #6839)

Port the metered target and subscription-chain regression work from #6839 at 5428b42 onto current dev. Require configured-key opt-in for all callers, retain metadata on dashboard saves, and preserve structured runTurn failures. Keep the newer fresh-read quota recovery; omit the timer cap and unrelated effort/tier changes.

Co-authored-by: 001005HS <99410048+001005HS@users.noreply.github.com>

* fix(combos): refuse metered picks on collapsed combo routes without consent

A subagent model fallback that names a combo alias is resolved by the router into one
combo pick and dispatched outside the combo loop, so its metered-target filter never ran:
a caller without allowMeteredComboTargets reached the metered target once the
subscription target was cooling. captureInboundRoutePolicy, which every route on the
Responses path passes through, now refuses a metered collapsed pick without consent.

Docs state that a loopback bind reads no key, so metered targets need a keyed listener.

Co-authored-by: 001005HS <99410048+001005HS@users.noreply.github.com>

* test(responses): pin structured combo-child preflight limits

The carry now forwards a runTurn adapter's structured status, type and code at the combo
preflight boundary, so a Devin pre-output limit inside a combo child reaches the combo
loop as a 429 rate_limit_exceeded instead of a generic 502. #5890 pinned the 502 only to
keep its own non-combo change out of combo children; the pin now states the new contract,
still without a Retry-After header, which the combo loop owns.

Co-authored-by: 001005HS <99410048+001005HS@users.noreply.github.com>

* feat(combos): add explicit loopback metered consent

* fix(combos): keep runTurn child verdicts through combo failover

A runTurn combo child already classifies its pre-output failure with
adapterFailureFromEvent, but formatErrorResponse re-derived the type and code
from the status. insufficient_quota became rate_limit_exceeded, losing its
provider-wide cooldown and the client's quota verdict, and a 400
unsupported_input_modality became invalid_request_error, which now stopped
the combo where dev's flat 502 had hopped to the next target.

formatErrorResponse gains a classified option that keeps the caller's type and
code while its spend-ledger, cyber-policy and replay-refusal overrides still
win. Only the two combo-child blocks use it; consumeComboFailure re-applies
the client allowlist before anything reaches a caller. Combo failover treats
unsupported_input_modality as a target-local hop that cools nothing.

Docs: an earlier 429/402 quota refusal outranks a later 400/401/403 when a
metered-consent combo exhausts, and the modality hop is listed in every
locale's combo guide.

Co-authored-by: 001005HS <99410048+001005HS@users.noreply.github.com>

* fix(bridge): keep message-read verdicts over a classified child code

formatErrorResponse's classified mode let a runTurn child's generic code
replace a cyber_policy verdict classifyError read from the full message.
consumeComboFailure sees only the first 500 characters, so a refusal phrase
past that point became a 502 that hopped to another provider. Cyber-policy,
context-length and client-closed verdicts read from the message now outrank
the caller's code.

Co-authored-by: 001005HS <99410048+001005HS@users.noreply.github.com>

* fix(bridge): let a classified child code fill in only what the message leaves open

The previous guard pinned only cyber-policy, context and client-closed
verdicts, so a coding-agent CLI's "Account quota exhausted" reported as a
generic 502 upstream_error still lost its insufficient_quota verdict and
cooled one target instead of the provider. The caller's code now applies only
when classifying the message adds nothing to the status and type, so every
message-read verdict (quota, cyber policy, context overflow, catalog size)
outranks a generic adapter code. Cyber-policy and client-closed stay pinned.

Co-authored-by: 001005HS <99410048+001005HS@users.noreply.github.com>

* docs(structure): describe when a classified combo-child code applies

Co-authored-by: 001005HS <99410048+001005HS@users.noreply.github.com>

* fix(bridge): compare a classified child code against the status alone

An untyped adapter event reaches the formatter with a type
adapterFailureFromEvent already inferred from its message, so comparing
against an empty message with that same type hid the message's verdict: a
502 upstream_error ending in "Authentication failed." lost invalid_api_key
and cooled one target instead of the provider. The baseline now uses a
neutral type, so a type or message verdict outranks a generic adapter code.

Co-authored-by: 001005HS <99410048+001005HS@users.noreply.github.com>

---------

Co-authored-by: GOAT <goat@localhost>
Co-authored-by: 001005HS <99410048+001005HS@users.noreply.github.com>
#7160)

* feat(pricing): support per-model prompt-length overrides (carry #6738)

Port f098a98 onto dev 7640a94, retaining current topology/API-key reconciliation and test inventory entries.

Co-authored-by: Valerio Coltre <2657230+colthreepv@users.noreply.github.com>

* test(gui): drop an unused import from the price-cost contract test

Co-authored-by: Valerio Coltre <2657230+colthreepv@users.noreply.github.com>

* fix(pricing): preserve legacy policies and contain modal comparisons

Reuse pure shared model-cost validators during OpenAI tier migration, preserve valid policies, and retain strict rejection of malformed rows. Keep the pricing comparison menu inside the native dialog and cover policy migration, CLI initialization, and modal selection regressions.

Co-authored-by: Valerio Coltre <2657230+colthreepv@users.noreply.github.com>

* docs(structure): keep the integration-tested merge wording

Align structure/config.md, structure/gui-and-management-api.md with the tree verified before merge.

---------

Co-authored-by: GOAT <goat@localhost>
Co-authored-by: Valerio Coltre <2657230+colthreepv@users.noreply.github.com>
#7162)

* feat(combos): enroll text-only members in vision sidecar (carry #4932)

Port c9cda1b onto current dev, preserving atomic enrollment, runtime consumer classification and rename rollback. Keep new regressions in a registered sibling file.

Co-authored-by: x3M3x <98298256+x3M3x@users.noreply.github.com>

* fix(combos): close enrollment gaps found in review (carry #4932)

- Send no visionSidecarTargets while a blocked member forces the image
  switch off, so a save never declares the remaining members text-only.
- Reject enrollment of a model whose provider modelInputModalities hint
  lacks text instead of overriding it with a text-only declaration.
- Update the MiniMax combo picker test to the sidecar-coverage contract.
- Align pt/vi unavailable hints with English, revert an unrelated fr
  apostrophe change, and style the disabled-sidecar warning with the
  amber warning token.

Co-authored-by: x3M3x <98298256+x3M3x@users.noreply.github.com>

* perf(models): share registry enrichment across sidecar-consumer rows

GET /api/models classified every row with isVisionSidecarConsumer, which
rebuilds the registry-enriched provider per call (~0.1 ms/row, ~170 ms for
a 2000-row listing). A per-listing classifier reuses the eligibility
module's existing enrichment cache, so verdicts are unchanged.

Co-authored-by: x3M3x <98298256+x3M3x@users.noreply.github.com>

* fix(gui): use hash navigation for the sidecar dashboard link and a single modality pass

Co-authored-by: x3M3x <x3M3x@users.noreply.github.com>

* test(gui): pin sidecar-eligible members keeping the combo Image switch on

Text-only and mixed image/text members are covered by the Vision Sidecar, so the switch stays enabled; unknown and audio-only members still force it off. The cached capability rows now carry visionSidecarConsumer.

Co-authored-by: x3M3x <x3M3x@users.noreply.github.com>

* fix(combos): validate the merged modelCapabilities map before enrolling sidecar members

A provider already at the modelCapabilities cap accepted a valid one-entry patch and persisted an oversized map that load-time sanitization then truncated, dropping the new text-only declaration. The route now validates the merged map (400, nothing written) and re-checks it under the config lock.

Co-authored-by: x3M3x <x3M3x@users.noreply.github.com>

---------

Co-authored-by: GOAT <goat@localhost>
Co-authored-by: x3M3x <98298256+x3M3x@users.noreply.github.com>
Co-authored-by: x3M3x <x3M3x@users.noreply.github.com>
… (#7167)

* feat(oauth): reset-first strategy for generic OAuth pools (carry #5408)

Generic OAuth pools (Antigravity, xAI, Cursor, Kiro and the rest) can store
and run reset-first under pool.kernel: the first attempt and a 429 rotation
prefer the non-exhausted account whose weekly (else 5-hour) quota resets
soonest, with headroom breaking ties. A passive provider with partial
evidence keeps headroom order. The Anthropic kind still refuses it.

The first-attempt pick uses the same eligible set as round-robin, so an
Antigravity account whose model roster omits the requested model is not
chosen. ocx account pool --strategy now accepts reset-first for generic
pools as the server already does for ocx account strategy.

Carried from #5408 (source head 2db9838).

Co-authored-by: agentHits <140916359+agentHits@users.noreply.github.com>

* fix(oauth): retain Kiro evidence in reset-first ranking

---------

Co-authored-by: GOAT <goat@localhost>
Co-authored-by: agentHits <140916359+agentHits@users.noreply.github.com>
…7171)

* fix(oauth): print fixed CLI login errors instead of provider bodies

* fix(oauth): keep standard error codes and namespace errors in CLI login failures

Print an allowlisted RFC 6749/8628 error code next to the HTTP status,
label unreachable or timed-out token endpoints, and report a Codex
account namespace collision before the login starts instead of as a
generic authentication failure.

* fix(oauth): report namespace collisions as configuration errors in login

The default ocx login path now prints only the public OAuth vocabulary,
so the plain Error thrown for a provider name that collides with a Codex
account namespace read as a generic authentication failure and broke
cli-provider's login collision test. Throw a typed fixed-text error that
the public message allowlist admits and label it configuration_error.

* fix(oauth): classify wrapped xAI connection failures as network errors

* fix(oauth): report Pool 2 preflight configuration failures safely

* fix(oauth): guard Pool 2 at the shared CLI entry point

---------

Co-authored-by: GOAT <goat@localhost>
Bun drops a TLS write callback still pending when the peer resets the socket.
The armed drop resets the uploading client, so a chunk in flight at that
moment left the pump unsettled and stop() hung until the 60s test timeout
(macos 1/3, run 38699018462). Settle the pump on close as well.

Co-authored-by: GOAT <goat@localhost>
…64 (#7181)

* fix(codex): protect the desktop authority key in-process on Windows x64

Every protect/unprotect spawned Windows PowerShell and loaded System.Security,
which cost seconds of cold start and exceeded the 20s bound on a loaded Windows
runner. Call CryptProtectData/CryptUnprotectData through bun:ffi instead, with
crypt32 loaded from the GetSystemDirectoryW path. Windows ARM64 keeps the
PowerShell helper. Blobs stay compatible in both directions.

* fix(codex): zero every unprotected DPAPI buffer and load kernel32 from System32

* fix(codex): free the DPAPI output buffer on every path after a successful call

* fix(codex): wipe unprotected DPAPI output natively before freeing it

---------

Co-authored-by: GOAT <goat@localhost>
…7188)

* test(google): cover Argon thought separation across client protocols

* docs: record completed Argon protocol investigation

* test(google): exercise client-only summary opt-outs
* fix(codex): honor canonical subagent limits across modes

Read and write the canonical Codex thread limit consistently with supported aliases. Keep the subagent selector available across modes, normalize child-count units, and reject stale settings responses. Cover canonical settings, mode behavior, and response ordering with focused regressions and update the capacity documentation.

* test(codex): require canonical limit after atomic feature toggle

Carry #7125 from 4bc4630. The write-lock regression must assert the canonical agents table after V2-to-V1 conversion, including absence of a legacy alias. Correct the API field name in the capacity contract.

Co-authored-by: Epinephrine <27862058+luvs01@users.noreply.github.com>

* docs(codex): name the thread-limit API field consistently

* fix(codex): identify both agents limit keys in conflict warnings

---------

Co-authored-by: Epinephrine <luvs01@hanmail.net>
Co-authored-by: GOAT <goat@localhost>
Co-authored-by: Epinephrine <27862058+luvs01@users.noreply.github.com>
* fix(catalog): preserve uncapped native maximum context windows

* fix(catalog): preserve native selector maximums during normalization

---------

Co-authored-by: GOAT <goat@localhost>
#7131)

* fix(responses): strip provider item metadata on native OpenAI outbounds

* fix(responses): scrub Google replay metadata from native compact

---------

Co-authored-by: GOAT <goat@localhost>
)

* fix(startup): launch Desktop by its registered app bundle path

Launch Desktop from the bundle path recorded in its login registration, with matching installation ownership and fail-closed manual-open guidance. Preserve the app-bundle suffix refusal and explicit ownership fixture types.

Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix(startup): bind registered bundle launch to its main executable

Reject relative launch registrations and non-file executable targets. Match
CFBundleExecutable to the canonical registered Desktop binary before opening
the recorded bundle. Exercise the actual macOS plist conversion without
launching an app, and document manual recovery for inconsistent evidence.

Co-authored-by: Epinephrine <27862058+luvs01@users.noreply.github.com>
Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* docs(ko): match the registered-bundle reopen condition in the Desktop guide

* docs(ko): keep the Start at Login menu label

* fix(startup): validate LaunchAgent paths with POSIX semantics

Keep the macOS registration contract independent of the test host. Place
fixtures on the caller's drive so Windows relative() cannot return an
absolute cross-drive target, and assert the rejected path is truly relative.
Exercise Windows drive paths and non-macOS command refusal explicitly.

Co-authored-by: Epinephrine <27862058+luvs01@users.noreply.github.com>
Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>

---------

Co-authored-by: Epinephrine <luvs01@hanmail.net>
Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: GOAT <goat@localhost>
Co-authored-by: Epinephrine <27862058+luvs01@users.noreply.github.com>
* fix(responses): frame retained compaction requests as history

Preserve canonical replay history and original request details while framing retained plaintext requests only in translated and routed provider prompts. Native OpenAI passthrough remains unchanged.

Co-authored-by: Robin Bially <7304732+robin-bially@users.noreply.github.com>

* fix(responses): exclude local compaction from history framing

---------

Co-authored-by: GOAT <goat@localhost>
Co-authored-by: Robin Bially <7304732+robin-bially@users.noreply.github.com>
lidge-jun and others added 14 commits October 15, 2026 23:30
#6759, #6930, #6603, #6758) (#7217)

Carried from #6759, #6930, #6603, #6758 (one commit per source PR, original authors preserved). Retention across account/model switches is opt-in and defaults off.

Remote validation (hosted GitHub Actions unreliable; local tests not run by maintainer rule): union candidate codex/prr-integ-8 = dev c03eafd + #7224 + #7223 + #7225 + #7217 + #6454 + #6594 plus a Gentle Shell import-cycle fix (integ-9 e1f289c: typecheck + full suite on mini (Windows) and lidge (Linux), compared with the same host's dev runs) and a test-only Windows path-escaping fix for the reasoning-retention routing test (integ-10 0d4cba7, tree a2b309a: that file re-run on both hosts).

Co-authored-by: fliaping <269832017@qq.com>
Co-authored-by: panyuanyuan <panyuanyuan@hetao101.com>
Co-authored-by: yuanyuanlove <yuanyuanlove@users.noreply.github.com>
…modules) (#6454)

Contributed by @lcxhh521; refreshed onto dev by the maintainer (dev merge, deferred quota account-row edge to keep the cycle baseline from growing).

Remote validation (hosted GitHub Actions unreliable; local tests not run by maintainer rule): union candidate codex/prr-integ-8 = dev c03eafd + #7224 + #7223 + #7225 + #7217 + #6454 + #6594 plus a Gentle Shell import-cycle fix (integ-9 e1f289c: typecheck + full suite on mini (Windows) and lidge (Linux), compared with the same host's dev runs) and a test-only Windows path-escaping fix for the reasoning-retention routing test (integ-10 0d4cba7, tree a2b309a: that file re-run on both hosts).

Co-authored-by: lcxhh <lcxhh521@gmail.com>
…59 -> 35) (#6594)

Contributed by @lcxhh521 (stacked on #6454); refreshed onto dev by the maintainer.

Remote validation (hosted GitHub Actions unreliable; local tests not run by maintainer rule): union candidate codex/prr-integ-8 = dev c03eafd + #7224 + #7223 + #7225 + #7217 + #6454 + #6594 plus a Gentle Shell import-cycle fix (integ-9 e1f289c: typecheck + full suite on mini (Windows) and lidge (Linux), compared with the same host's dev runs) and a test-only Windows path-escaping fix for the reasoning-retention routing test (integ-10 0d4cba7, tree a2b309a: that file re-run on both hosts).

Co-authored-by: lcxhh <lcxhh521@gmail.com>
…trols (#7211, #7212, #6381, #7172, #6152) (#7222)

Carried from #7211, #7212 (both opened against main; carried onto dev), #6381, #7172, #6152 (one commit per source PR, original authors preserved). Custom provider routing consent defaults to No and the CLI update plan is read-only.

Remote validation (hosted test shards passed on the head; local tests not run by maintainer rule): exact head b4d6376 (contains dev 7a42860) typecheck + full suite on lidge (Linux) and mini (Windows), compared with the same host's dev 7a42860 runs. Security review of the #7172/#6152 carries: PASS.

Co-authored-by: Matt Van Horn <mvanhorn@users.noreply.github.com>
Co-authored-by: lcxhh <lcxhh521@gmail.com>
Co-authored-by: xianlubird <xianlubird@gmail.com>
Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com>
Restore the keep-native row that #7220 removed, while keeping its uniform settings rows and the auto-review override. Standard rows span the grid. Only the v2 qualifier sits in the right column, with a single-column fallback below 1160px. The four keep-native-v1 GUI tests that fail on dev 4ed45e9 pass on this head.

Co-authored-by: sechmachine <97589681+sechmachine727@users.noreply.github.com>
Co-authored-by: Jonathan Li <47408717+jonathanli12@users.noreply.github.com>
API-key cooldown from a 401/429 is now charged only to the distributed key that was actually sent. Ownership is captured at the physical fetch on native Responses, compact, Chat and Messages. Requests whose credential was changed after selection no longer cool down a pooled key. Configured same-key 429 retries are unchanged.

Co-authored-by: GSL-R <174104911+GSL-R@users.noreply.github.com>
On Windows, homedir() follows USERPROFILE. The owner-registry and service-state isolation fixtures changed that variable to a worker home while still expecting the registry and mirror seeded in the startup home. The fixtures now keep the default home stable while switching OPENCODEX_HOME, and every existing assertion is retained. Product behavior is unchanged.
…ns (#7238)

#7216 added native wire pins for OpenCode Go Gemini and Qwen models. An existing config with a formerly valid override, such as modelAdapters["qwen3.7-plus"] = "openai-chat", then failed validation, and the whole saved config fell back to defaults. Both the runtime load path and diagnostics now normalize these overrides before validation, so the native pin wins and providers, accounts and routing survive. Strict validation still applies to new writes and malformed values.

Co-authored-by: Georgiy Bukharov <souljorje@gmail.com>
Co-authored-by: norths7ar <guicaitiandu@gmail.com>
The import-cycle scanner now canonicalizes its root before scanning. Bun resolves import targets to physical paths, so on macOS (/var -> /private/var) and under any symlinked root, cycle edges pointed at missing nodes and directory-index cycles went unreported. Adds symlinked-root coverage for ts, tsx and mts directory indexes.

Co-authored-by: lcxhh <lcxhh521@gmail.com>
#7239)

When a translated combo compaction fails over to a canonical native target, the readable reasoning withheld before compaction is now returned after the native compaction item, or as an archive notice whose file survives a successful replacement. Previously it was dropped and its archive deleted. Cleanup on failure and cancellation is unchanged.

Co-authored-by: panyuanyuan <panyuanyuan@hetao101.com>
Co-authored-by: yuanyuanlove <yuanyuanlove@users.noreply.github.com>
A Windows Claude Desktop picker that started with intent off previously returned 503 picker_proxy_unavailable on a later enable. The controller now stays dormant and binds the picker relay under its enable lock after the mode, integration and preference checks. Startup stays relay-, timer- and credential-free while intent is off. Concurrent enables share one relay, and shutdown closes it.

Co-authored-by: hyuntae park <bluestar218ht@gmail.com>
Rust 1.99 clippy (-D warnings) rejects the hand-written no-op waker in the desktop process_spawn test, which failed the desktop shell job on main and dev. The test now uses std::task::Waker::noop(), stable since Rust 1.85, under the crate's Rust 1.88 minimum.
Approved custom Codex provider injection now rechecks the persisted integration intent under the Codex/config locks, so it can no longer undo integration OFF. Approval-record inspection, stale native-journal cleanup and URL publication share one write section, which fixes an unlocked read that #7222 added. The shared Codex config write lock now records the destination inode after acquiring the lock. Before, a writer that replaced the file just ahead of acquisition left a stale witness, and concurrent syncs failed. ocx usage compare binds both windows to one connection, usage owner, destination and credential fingerprint, and aborts with a retry message when they differ.

Co-authored-by: Matt Van Horn <mvanhorn@users.noreply.github.com>
Co-authored-by: xianlubird <xianlubird@gmail.com>
@lidge-jun
lidge-jun requested a review from Ingwannu as a code owner October 16, 2026 12:01
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-16T12:35:03.895744Z 447c58a Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions github-actions Bot added the intake: hygiene-blocked Deterministic PR hygiene checks failed label Oct 16, 2026
@coderabbitai

coderabbitai Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 1000 files, which is 700 over the limit of 300.

To get a review, reduce the PR to 300 files or fewer by splitting it into smaller PRs or changing its base branch.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration
  • Configuration used: Repository: lidge-jun/opencodex/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: d7a0f04a-84a0-4fdd-a069-f18b47e3559e
📥 Commits

Reviewing files that changed from the base of the PR and between 409026b and 447c58a.

⛔ Files ignored due to path filters: 1
  • desktop/src-tauri/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing: 1000
  • app/Sources/MenuBarCore/ProxyModels.swift
  • app/Sources/MenuBarCoreTests/ModelDecodingSuite.swift
  • desktop/src-tauri/Cargo.toml
  • desktop/src-tauri/src/claim.rs
  • desktop/src-tauri/src/cli_command.rs
  • desktop/src-tauri/src/cli_command_posix.rs
  • desktop/src-tauri/src/cli_command_record.rs
  • desktop/src-tauri/src/exit.rs
  • desktop/src-tauri/src/lib.rs
  • desktop/src-tauri/src/login_registration.rs
  • desktop/src-tauri/src/process_spawn.rs
  • desktop/src-tauri/src/provider_icons.rs
  • desktop/src-tauri/src/resolve.rs
  • desktop/src-tauri/src/runtime_stop.rs
  • desktop/src-tauri/src/sidecar.rs
  • desktop/src-tauri/src/tray.rs
  • desktop/src-tauri/src/tray_login.rs
  • desktop/src-tauri/src/updater.rs
  • desktop/src-tauri/src/window.rs
  • desktop/src-tauri/tauri.conf.json
  • devlog/_fin/261015_argon_thought_boundary/000_plan.md
  • devlog/_fin/261015_argon_thought_boundary/010_verification.md
  • devlog/_plan/260928_remote_thread_provider_policy/000_plan.md
  • devlog/_plan/260928_remote_thread_provider_policy/010_design.md
  • devlog/_plan/260928_remote_thread_provider_policy/020_verification.md
  • devlog/_plan/260928_remote_thread_provider_policy/probes/native_policy.py
  • devlog/_plan/260928_remote_thread_provider_policy/probes/remote_list_probe.py
  • devlog/_plan/260928_remote_thread_provider_policy/probes/test_loopback_bridge.py
  • devlog/_plan/260928_remote_thread_provider_policy/probes/test_native_policy.py
  • devlog/_plan/260928_remote_thread_provider_policy/probes/test_probe.py
  • docs-site/src/content/docs/fr/getting-started/quickstart.md
  • docs-site/src/content/docs/fr/guides/claude-code.md
  • docs-site/src/content/docs/fr/guides/combos.md
  • docs-site/src/content/docs/fr/guides/providers.md
  • docs-site/src/content/docs/fr/guides/sidecars.md
  • docs-site/src/content/docs/fr/guides/subagent-v1-default.md
  • docs-site/src/content/docs/fr/reference/cli.md
  • docs-site/src/content/docs/fr/reference/cli/agents.md
  • docs-site/src/content/docs/fr/reference/cli/lifecycle.md
  • docs-site/src/content/docs/fr/reference/configuration/advisor.md
  • docs-site/src/content/docs/fr/reference/configuration/providers.md
  • docs-site/src/content/docs/fr/reference/management-api.md
  • docs-site/src/content/docs/fr/reference/proxy-formats.md
  • docs-site/src/content/docs/getting-started/quickstart.md
  • docs-site/src/content/docs/guides/claude-code.md
  • docs-site/src/content/docs/guides/codex-app-models.md
  • docs-site/src/content/docs/guides/codex-integration.md
  • docs-site/src/content/docs/guides/combos.md
  • docs-site/src/content/docs/guides/desktop-app.md
  • docs-site/src/content/docs/guides/integrations.md
  • docs-site/src/content/docs/guides/model-routing.md
  • docs-site/src/content/docs/guides/protocol-paths.md
  • docs-site/src/content/docs/guides/providers.md
  • docs-site/src/content/docs/guides/remote-workspace.md
  • docs-site/src/content/docs/guides/sidecars.md
  • docs-site/src/content/docs/guides/subagent-v1-default.md
  • docs-site/src/content/docs/guides/web-dashboard.md
  • docs-site/src/content/docs/ja/getting-started/quickstart.md
  • docs-site/src/content/docs/ja/guides/claude-code.md
  • docs-site/src/content/docs/ja/guides/combos.md
  • docs-site/src/content/docs/ja/guides/providers.md
  • docs-site/src/content/docs/ja/guides/sidecars.md
  • docs-site/src/content/docs/ja/guides/subagent-v1-default.md
  • docs-site/src/content/docs/ja/reference/cli.md
  • docs-site/src/content/docs/ja/reference/cli/agents.md
  • docs-site/src/content/docs/ja/reference/cli/lifecycle.md
  • docs-site/src/content/docs/ja/reference/configuration/advisor.md
  • docs-site/src/content/docs/ja/reference/configuration/providers.md
  • docs-site/src/content/docs/ja/reference/proxy-formats.md
  • docs-site/src/content/docs/ko/getting-started/quickstart.md
  • docs-site/src/content/docs/ko/guides/claude-code.md
  • docs-site/src/content/docs/ko/guides/codex-app-models.md
  • docs-site/src/content/docs/ko/guides/combos.md
  • docs-site/src/content/docs/ko/guides/desktop-app.md
  • docs-site/src/content/docs/ko/guides/providers.md
  • docs-site/src/content/docs/ko/guides/remote-workspace.md
  • docs-site/src/content/docs/ko/guides/sidecars.md
  • docs-site/src/content/docs/ko/guides/subagent-v1-default.md
  • docs-site/src/content/docs/ko/reference/architecture.md
  • docs-site/src/content/docs/ko/reference/cli.md
  • docs-site/src/content/docs/ko/reference/cli/agents.md
  • docs-site/src/content/docs/ko/reference/cli/lifecycle.md
  • docs-site/src/content/docs/ko/reference/configuration/advisor.md
  • docs-site/src/content/docs/ko/reference/configuration/providers.md
  • docs-site/src/content/docs/ko/reference/proxy-formats.md
  • docs-site/src/content/docs/reference/adapters.md
  • docs-site/src/content/docs/reference/architecture.md
  • docs-site/src/content/docs/reference/cli.md
  • docs-site/src/content/docs/reference/cli/agents.md
  • docs-site/src/content/docs/reference/cli/lifecycle.md
  • docs-site/src/content/docs/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/reference/configuration.md
  • docs-site/src/content/docs/reference/configuration/advisor.md
  • docs-site/src/content/docs/reference/configuration/providers.md
  • docs-site/src/content/docs/reference/configuration/routing.md
  • docs-site/src/content/docs/reference/configuration/server.md
  • docs-site/src/content/docs/reference/management-api.md
  • docs-site/src/content/docs/reference/platform-support.md
  • docs-site/src/content/docs/reference/proxy-formats.md
  • docs-site/src/content/docs/ru/getting-started/quickstart.md
  • docs-site/src/content/docs/ru/guides/claude-code.md
  • docs-site/src/content/docs/ru/guides/combos.md
  • docs-site/src/content/docs/ru/guides/providers.md
  • docs-site/src/content/docs/ru/guides/sidecars.md
  • docs-site/src/content/docs/ru/guides/subagent-v1-default.md
  • docs-site/src/content/docs/ru/reference/cli.md
  • docs-site/src/content/docs/ru/reference/cli/agents.md
  • docs-site/src/content/docs/ru/reference/cli/lifecycle.md
  • docs-site/src/content/docs/ru/reference/configuration/advisor.md
  • docs-site/src/content/docs/ru/reference/configuration/providers.md
  • docs-site/src/content/docs/ru/reference/proxy-formats.md
  • docs-site/src/content/docs/tr/getting-started/quickstart.md
  • docs-site/src/content/docs/tr/guides/claude-code.md
  • docs-site/src/content/docs/tr/guides/combos.md
  • docs-site/src/content/docs/tr/guides/providers.md
  • docs-site/src/content/docs/tr/guides/sidecars.md
  • docs-site/src/content/docs/tr/guides/subagent-v1-default.md
  • docs-site/src/content/docs/tr/reference/cli.md
  • docs-site/src/content/docs/tr/reference/cli/agents.md
  • docs-site/src/content/docs/tr/reference/cli/lifecycle.md
  • docs-site/src/content/docs/tr/reference/configuration/advisor.md
  • docs-site/src/content/docs/tr/reference/configuration/providers.md
  • docs-site/src/content/docs/tr/reference/proxy-formats.md
  • docs-site/src/content/docs/troubleshooting/codex-cannot-sign-in.md
  • docs-site/src/content/docs/zh-cn/getting-started/quickstart.md
  • docs-site/src/content/docs/zh-cn/guides/claude-code.md
  • docs-site/src/content/docs/zh-cn/guides/combos.md
  • docs-site/src/content/docs/zh-cn/guides/providers.md
  • docs-site/src/content/docs/zh-cn/guides/sidecars.md
  • docs-site/src/content/docs/zh-cn/guides/subagent-v1-default.md
  • docs-site/src/content/docs/zh-cn/guides/web-dashboard.md
  • docs-site/src/content/docs/zh-cn/reference/cli.md
  • docs-site/src/content/docs/zh-cn/reference/cli/agents.md
  • docs-site/src/content/docs/zh-cn/reference/cli/lifecycle.md
  • docs-site/src/content/docs/zh-cn/reference/cli/providers-accounts.md
  • docs-site/src/content/docs/zh-cn/reference/configuration.md
  • docs-site/src/content/docs/zh-cn/reference/configuration/advisor.md
  • docs-site/src/content/docs/zh-cn/reference/configuration/providers.md
  • docs-site/src/content/docs/zh-cn/reference/management-api.md
  • docs-site/src/content/docs/zh-cn/reference/proxy-formats.md
  • docs-site/src/content/docs/zh-tw/getting-started/quickstart.md
  • docs-site/src/content/docs/zh-tw/guides/claude-code.md
  • docs-site/src/content/docs/zh-tw/guides/combos.md
  • docs-site/src/content/docs/zh-tw/guides/providers.md
  • docs-site/src/content/docs/zh-tw/guides/sidecars.md
  • docs-site/src/content/docs/zh-tw/guides/subagent-v1-default.md
  • docs-site/src/content/docs/zh-tw/reference/cli.md
  • docs-site/src/content/docs/zh-tw/reference/cli/agents.md
  • docs-site/src/content/docs/zh-tw/reference/cli/lifecycle.md
  • docs-site/src/content/docs/zh-tw/reference/configuration/advisor.md
  • docs-site/src/content/docs/zh-tw/reference/configuration/providers.md
  • docs-site/src/content/docs/zh-tw/reference/proxy-formats.md
  • gui/src/advisor-models.ts
  • gui/src/app-routing.ts
  • gui/src/codex-quota-utils.ts
  • gui/src/combo-capabilities.ts
  • gui/src/combo-workspace-data.ts
  • gui/src/components/AdvisorModelSelect.tsx
  • gui/src/components/ComboWorkspace.tsx
  • gui/src/components/MainAccountHardLockSetting.tsx
  • gui/src/components/ModelPriceDialog.tsx
  • gui/src/components/NativeReasoningRetentionPanel.tsx
  • gui/src/components/QuotaBars.tsx
  • gui/src/components/ReasoningRetentionPanel.tsx
  • gui/src/components/apikeys-workspace/client-config-clients.ts
  • gui/src/components/combo-workspace-controls.tsx
  • gui/src/components/combo-workspace-detail-panel.tsx
  • gui/src/components/combo-workspace-types.ts
  • gui/src/components/integration-marks.ts
  • gui/src/components/model-price-cost.ts
  • gui/src/components/model-price-dialog.css
  • gui/src/components/provider-workspace/ProviderAuthPanel.tsx
  • gui/src/components/provider-workspace/ProviderKeyPacing.tsx
  • gui/src/components/provider-workspace/ProviderSettings.tsx
  • gui/src/components/provider-workspace/types.ts
  • gui/src/components/remote-workspace/RemoteWorkspaceChats.tsx
  • gui/src/components/remote-workspace/split-layout.ts
  • gui/src/components/remote-workspace/types.ts
  • gui/src/components/remote-workspace/use-session-actions.ts
  • gui/src/desktop-compatibility-api.ts
  • gui/src/hooks/useProviderAccountPools.ts
  • gui/src/i18n/de.ts
  • gui/src/i18n/desktop-compatibility-copy.ts
  • gui/src/i18n/en.ts
  • gui/src/i18n/fr.ts
  • gui/src/i18n/ja.ts
  • gui/src/i18n/ko.ts
  • gui/src/i18n/pt.ts
  • gui/src/i18n/ru.ts
  • gui/src/i18n/tr.ts
  • gui/src/i18n/vi.ts
  • gui/src/i18n/zh-TW.ts
  • gui/src/i18n/zh.ts
  • gui/src/nav-groups.ts
  • gui/src/pages/Advisor.tsx
  • gui/src/pages/Combos.tsx
  • gui/src/pages/Integrations.tsx
  • gui/src/pages/Models.tsx
  • gui/src/pages/RemoteWorkspace.tsx
  • gui/src/pages/advisor/AdvisorActivity.tsx
  • gui/src/pages/advisor/advisor.css
  • gui/src/pages/codex-desktop-compatibility.tsx
  • gui/src/pages/dashboard-overview-panels.tsx
  • gui/src/pages/integrations/FileIntegrationPage.tsx
  • gui/src/pages/integrations/integration-api.ts
  • gui/src/pages/integrations/integration-tabs.ts
  • gui/src/pages/integrations/overview-clients.ts
  • gui/src/pages/models-settings-panel.tsx
  • gui/src/pages/models-settings-summary.ts
  • gui/src/pages/models-shared.ts
  • gui/src/pages/providers-shared.ts
  • gui/src/pages/tray-data.ts
  • gui/src/pages/use-auto-review-settings.ts
  • gui/src/provider-icons.ts
  • gui/src/provider-workspace/catalog.ts
  • gui/src/provider-workspace/report.ts
  • gui/src/quota-summary.ts
  • gui/src/styles-combos-workspace.css
  • gui/src/styles-models-workspace.css
  • gui/src/styles-remote-workspace.css
  • gui/src/styles/provider-workspace-settings.css
  • gui/tests/advisor-save-feedback.test.tsx
  • gui/tests/claude-desktop-picker.test.tsx
  • gui/tests/client-config-panel.test.tsx
  • gui/tests/client-marks-assets.test.ts
  • gui/tests/combo-capability-hidden-targets.test.tsx
  • gui/tests/desktop-compatibility-api.test.ts
  • gui/tests/desktop-compatibility-panel.test.tsx
  • gui/tests/fr-localization.test.ts
  • gui/tests/integration-marks.test.ts
  • gui/tests/integrations-api.test.ts
  • gui/tests/integrations-surfaces.test.tsx
  • gui/tests/integrations-tab-coverage.test.ts
  • gui/tests/locale-parity.test.ts
  • gui/tests/main-account-hard-lock-setting.test.tsx
  • gui/tests/model-price-cost.test.ts
  • gui/tests/models-auto-review-override.test.tsx
  • gui/tests/models-auto-review-settings.test.tsx
  • gui/tests/models-price-editor.test.tsx
  • gui/tests/models-settings-panel.test.tsx
  • gui/tests/models-subagent-limit.test.tsx
  • gui/tests/native-reasoning-retention-panel.test.tsx
  • gui/tests/page-loading-contract.test.tsx
  • gui/tests/provider-quota-model-id.test.ts
  • gui/tests/provider-quota-refresh-controls.test.tsx
  • gui/tests/provider-settings-request-pacing.test.tsx
  • gui/tests/reasoning-retention-panel.test.tsx
  • gui/tests/remote-workspace-split-layout.test.ts
  • gui/tests/remote-workspace-split.test.tsx
  • gui/tests/remote-workspace.test.tsx
  • gui/tests/sidebar-rows.test.ts
  • package.json
  • scripts/generate-ocx-skill-surface.ts
  • scripts/import-cycles.ts
  • scripts/test-layout/layout-clients.json
  • scripts/test-layout/layout.json
  • scripts/test-layout/seeds.json
  • scripts/test.ts
  • skills/ocx/references/01_management_surface.md
  • skills/ocx/references/01_surface_access-remote.md
  • skills/ocx/references/01_surface_accounts.md
  • skills/ocx/references/01_surface_agents-routing.md
  • skills/ocx/references/01_surface_integrations.md
  • skills/ocx/references/01_surface_lab.md
  • skills/ocx/references/01_surface_lifecycle.md
  • skills/ocx/references/01_surface_observe-system.md
  • skills/ocx/references/01_surface_providers-models.md
  • skills/ocx/references/02_json_shapes.md
  • skills/ocx/references/03_recipes.md
  • src/adapters/anthropic-progress.ts
  • src/adapters/anthropic.ts
  • src/adapters/anthropic/beta-allowlist.ts
  • src/adapters/anthropic/beta-body-pairs.ts
  • src/adapters/anthropic/passthrough.ts
  • src/adapters/base.ts
  • src/adapters/claude-cli/adapter.ts
  • src/adapters/claude-cli/profiles.ts
  • src/adapters/claude-cli/stable-replay.ts
  • src/adapters/claude-cli/usage-admission.ts
  • src/adapters/coding-agent/protocol.ts
  • src/adapters/coding-agent/turn.ts
  • src/adapters/dsh-account.ts
  • src/adapters/google.ts
  • src/adapters/openai-chat/messages.ts
  • src/adapters/openai-chat/passthrough.ts
  • src/adapters/openai-chat/reasoning-replay.ts
  • src/adapters/openai-responses/compaction-search-history.ts
  • src/adapters/openai-responses/passthrough.ts
  • src/adapters/openai-responses/request-strips.ts
  • src/adapters/openai-responses/transport.ts
  • src/adapters/qoder/adapter.ts
  • src/adapters/registry.ts
  • src/adapters/zed.ts
  • src/advisor/activity.ts
  • src/advisor/budget.ts
  • src/advisor/consult.ts
  • src/advisor/context.ts
  • src/advisor/evidence-tool.ts
  • src/advisor/evidence.ts
  • src/advisor/runtime.ts
  • src/advisor/settings.ts
  • src/bridge/errors.ts
  • src/bridge/internal.ts
  • src/bridge/response-json.ts
  • src/bridge/sse.ts
  • src/bridge/terminal-refusal.ts
  • src/claude/desktop-3p-library.ts
  • src/claude/desktop-3p.ts
  • src/claude/desktop-first-party.ts
  • src/claude/desktop-picker-platform.ts
  • src/claude/desktop-picker.ts
  • src/claude/desktop-system-proxy.ts
  • src/claude/inbound-content-options.ts
  • src/claude/inbound.ts
  • src/claude/intercept/picker-ca-startup.ts
  • src/claude/intercept/picker-runtime.ts
  • src/claude/intercept/picker-trust-windows.ts
  • src/claude/intercept/picker-trust.ts
  • src/claude/intercept/port-policy.ts
  • src/claude/intercept/runtime.ts
  • src/claude/outbound.ts
  • src/cli/account-api.ts
  • src/cli/account-policy-dto.ts
  • src/cli/account-policy.ts
  • src/cli/account-preservation.ts
  • src/cli/account.ts
  • src/cli/advisor.ts
  • src/cli/capabilities-accounts.ts
  • src/cli/capabilities-agents-routing.ts
  • src/cli/capabilities-base.ts
  • src/cli/capabilities-observe-system.ts
  • src/cli/capabilities-provider-models.ts
  • src/cli/codex-cli-update.ts
  • src/cli/codex-provider.ts
  • src/cli/combo-input.ts
  • src/cli/combo-result.ts
  • src/cli/combo.ts
  • src/cli/cross-home-owner.ts
  • src/cli/dispatch.ts
  • src/cli/doctor.ts
  • src/cli/ensure-desktop-cold-start.ts
  • src/cli/help.ts
  • src/cli/index.ts
  • src/cli/integration-plan-dto.ts
  • src/cli/log-history.ts
  • src/cli/models-runtime-subcommands.ts
  • src/cli/models-runtime.ts
  • src/cli/observe-stream.ts
  • src/cli/observe.ts
  • src/cli/provider.ts
  • src/cli/registry.ts
  • src/cli/runtime-api.ts
  • src/cli/system-command.ts
  • src/cli/uninstall-client-state.ts
  • src/cli/usage-compare.ts
  • src/cli/usage-model-search.ts
  • src/cli/usage-report.ts
  • src/cli/v2.ts
  • src/client/machine-listener.ts
  • src/client/runtime.ts
  • src/clients/client-path.ts
  • src/clients/config-export.ts
  • src/clients/config-export/contracts.ts
  • src/clients/gentle-shell-path.ts
  • src/codex/account-auto-switch.ts
  • src/codex/account-identity.ts
  • src/codex/account-label.ts
  • src/codex/account-lifecycle.ts
  • src/codex/account-preservation.ts
  • src/codex/account-use-remaining.ts
  • src/codex/app-server-processes.ts
  • src/codex/app-server-restart-service.ts
  • src/codex/auth-api.ts
  • src/codex/auth-api/account-list.ts
  • src/codex/auth-api/account-pause-group.ts
  • src/codex/auth-api/account-preservation.ts
  • src/codex/auth-api/routes.ts
  • src/codex/auth-api/use-remaining-route.ts
  • src/codex/auth-context.ts
  • src/codex/catalog/auto-review.ts
  • src/codex/catalog/build-entries.ts
  • src/codex/catalog/combo-member.ts
  • src/codex/catalog/configured-tiers.ts
  • src/codex/catalog/gather-capture.ts
  • src/codex/catalog/metadata.ts
  • src/codex/catalog/model-hints.ts
  • src/codex/catalog/model-visibility.ts
  • src/codex/catalog/parsing.ts
  • src/codex/catalog/provider-models.ts
  • src/codex/catalog/routed-gather.ts
  • src/codex/cli-install-provenance.ts
  • src/codex/cli-update-plan.ts
  • src/codex/config-write-lock.ts
  • src/codex/desktop-app-restart.ts
  • src/codex/desktop-app/picker-freshness.ts
  • src/codex/desktop-compatibility/installed-build.ts
  • src/codex/desktop-compatibility/routing-preflight.ts
  • src/codex/desktop-compatibility/runtime.ts
  • src/codex/desktop-compatibility/windows-key-protection.ts
  • src/codex/features.ts
  • src/codex/inject.ts
  • src/codex/inject/history-failure.ts
  • src/codex/inject/restore.ts
  • src/codex/inject/routing-classify.ts
  • src/codex/main-account-hard-lock.ts
  • src/codex/native-profile-startup.ts
  • src/codex/ocx-compaction-history.ts
  • src/codex/paths.ts
  • src/codex/provider-routing.ts
  • src/codex/refresh.ts
  • src/codex/routing/health-store.ts
  • src/codex/routing/selection.ts
  • src/codex/routing/thread-affinity.ts
  • src/codex/signed-in-identity.ts
  • src/codex/subagent-model-fallback.ts
  • src/codex/sync.ts
  • src/codex/user-identity.ts
  • src/codex/windows-local-appdata.ts
  • src/combos/failover.ts
  • src/combos/index.ts
  • src/combos/resolve.ts
  • src/combos/types.ts
  • src/config.ts
  • src/config/diagnostics.ts
  • src/config/live-reconcile.ts
  • src/config/load-degrade.ts
  • src/config/opencode-wire-upgrade.ts
  • src/config/opencode-zen-upgrade.ts
  • src/config/owner-registry.ts
  • src/config/provider-validation.ts
  • src/config/schema/config-schema.ts
  • src/config/schema/leaf-validators.ts
  • src/config/schema/main-account-hard-lock-fallback.ts
  • src/config/schema/native-reasoning-retention.ts
  • src/grok/sync.ts
  • src/images/loop.ts
  • src/integrations/catalog-refresh.ts
  • src/integrations/mutation-plan.ts
  • src/integrations/registry.ts
  • src/lib/codex-restart-contract.ts
  • src/lib/desktop-upstream-tunnel.ts
  • src/lib/empty-tool-catalog.ts
  • src/lib/errors.ts
  • src/lib/gcp-adc.ts
  • src/lib/gcp-credential-input.ts
  • src/lib/lab-live-route-production.ts
  • src/lib/opaque-proxy-tunnel.ts
  • src/lib/redact.ts
  • src/oauth/account-quota-rank.ts
  • src/oauth/anthropic-account-refusal.ts
  • src/oauth/anthropic-oauth-definitions.ts
  • src/oauth/anthropic-routing.ts
  • src/oauth/anthropic.ts
  • src/oauth/callback-server.ts
  • src/oauth/chatgpt-device.ts
  • src/oauth/chatgpt-shared.ts
  • src/oauth/chatgpt.ts
  • src/oauth/dsh.ts
  • src/oauth/generic-account-failover.ts
  • src/oauth/generic-session-affinity.ts
  • src/oauth/index.ts
  • src/oauth/local-token-detect.ts
  • src/oauth/login-cli-errors.ts
  • src/oauth/login-cli.ts
  • src/oauth/login-flow-state.ts
  • src/oauth/meta-muse-errors.ts
  • src/oauth/meta-muse-keychain.ts
  • src/oauth/meta-muse.ts
  • src/oauth/model-discovery-auth.ts
  • src/oauth/pool-settings-capability.ts
  • src/oauth/refresh-flight-retirement.ts
  • src/oauth/session-affinity-key.ts
  • src/oauth/store-anthropic-instance.ts
  • src/oauth/store.ts
  • src/protocols/encoders/adapter-events.ts
  • src/protocols/encoders/messages.ts
  • src/protocols/provider-summary.ts
  • src/providers/api-key-cooldowns.ts
  • src/providers/api-key-resolve.ts
  • src/providers/api-key-response-ownership.ts
  • src/providers/api-key-selection.ts
  • src/providers/api-keys.ts
  • src/providers/claude-cli-usage.ts
  • src/providers/dsh-account-destination.ts
  • src/providers/dsh-account-models.ts
  • src/providers/gcp-credential-cleanup.ts
  • src/providers/key-failover.ts
  • src/providers/key-store.ts
  • src/providers/model-rename-fields.ts
  • src/providers/model-rename-migration.ts
  • src/providers/openai-tiers-destination.ts
  • src/providers/openai-tiers.ts
  • src/providers/opencode-go-transport.ts
  • src/providers/quota-types.ts
  • src/providers/quota.ts
  • src/providers/quota/account-cache.ts
  • src/providers/quota/account-row.ts
  • src/providers/quota/antigravity.ts
  • src/providers/quota/dsh-account.ts
  • src/providers/quota/vendor-probes-oauth.ts
  • src/providers/registry/entries-core.ts
  • src/providers/registry/types.ts
  • src/providers/request-pacing.ts
  • src/providers/routed-config.ts
  • src/providers/service-tier.ts
  • src/quota/window-mapping.ts
  • src/responses/anthropic-progress.ts
  • src/responses/assistant-replay.ts
  • src/responses/compaction-history-framing.ts
  • src/responses/compaction.ts
  • src/responses/incomplete-reason.ts
  • src/responses/parser.ts
  • src/responses/reasoning-envelope.ts
  • src/responses/reasoning-replay-cache.ts
  • src/responses/reasoning-retention.ts
  • src/responses/retained-compaction.ts
  • src/responses/schema.ts
  • src/router.ts
  • src/routing/health.ts
  • src/routing/history/indexer.ts
  • src/routing/history/ingest.ts
  • src/routing/profile.ts
  • src/server/admission-model-scope.ts
  • src/server/auth-cors.ts
  • src/server/chat-completions.ts
  • src/server/chat-native-reasoning.ts
  • src/server/chat-native-sse.ts
  • src/server/chat-native.ts
  • src/server/claude-messages.ts
  • src/server/effort-policy.ts
  • src/server/images.ts
  • src/server/index.ts
  • src/server/index/model-alias-id.ts
  • src/server/index/optional-listeners.ts
  • src/server/index/serve-options.ts
  • src/server/index/startup-warnings.ts
  • src/server/inference/advisor-diagnostics.ts
  • src/server/management-api.ts
  • src/server/management/advisor-routes.ts
  • src/server/management/claude-desktop-picker-routes.ts
  • src/server/management/combo-routes.ts
  • src/server/management/companion-routes.ts
  • src/server/management/config-routes.ts
  • src/server/management/cursor-integration-routes.ts
  • src/server/management/model-routes.ts
  • src/server/management/model-rows.ts
  • src/server/management/native-integration-routes.ts
  • src/server/management/native-reasoning-retention-routes.ts
  • src/server/management/oauth-account-routes.ts
  • src/server/management/provider-gcp-credential-routes.ts
  • src/server/management/provider-key-pacing-routes.ts
  • src/server/management/provider-overwrite-carry.ts
  • src/server/management/provider-routes.ts
  • src/server/management/route-registry.ts
  • src/server/messages-native-tool-guard.ts
  • src/server/messages-native.ts
  • src/server/messages-shared.ts
  • src/server/relay.ts
  • src/server/request-log-terminal-status.ts
  • src/server/request-log.ts
  • src/server/responses/account-change-state.ts
  • src/server/responses/adapter-continuation.ts
  • src/server/responses/adapter-delivery.ts
  • src/server/responses/adapter-dispatch.ts
  • src/server/responses/advisor-retention.ts
  • src/server/responses/advisor-slot.ts
  • src/server/responses/codex-ws-wire.ts
  • src/server/responses/compact.ts
  • src/server/responses/compaction-recovery.ts
  • src/server/responses/compaction-retention.ts
  • src/server/responses/context-overflow.ts
  • src/server/responses/core-auth.ts
  • src/server/responses/core-codex-account.ts
  • src/server/responses/core-combo-failure.ts
  • src/server/responses/core-combo.ts
  • src/server/responses/core-errors.ts
  • src/server/responses/core-lifetime.ts
  • src/server/responses/core-opaque-recovery.ts
  • src/server/responses/core-options.ts
  • src/server/responses/core-pipeline.ts
  • src/server/responses/core-replay.ts
  • src/server/responses/core.ts
  • src/server/responses/fetch-helpers.ts
  • src/server/responses/main-hard-lock-routing.ts
  • src/server/responses/native-response-control.ts
  • src/server/responses/passthrough-delivery.ts
  • src/server/responses/passthrough-dispatch.ts
  • src/server/responses/request-prepare.ts
  • src/server/responses/request-sidecar-auth.ts
  • src/server/responses/request-transport.ts
  • src/server/responses/response-effects.ts
  • src/server/responses/run-turn-execution.ts
  • src/server/responses/sidecar-execution.ts
  • src/server/responses/terminal-guard.ts
  • src/service.ts
  • src/service/auth-preflight.ts
  • src/service/cli.ts
  • src/service/definition.ts
  • src/service/guards.ts
  • src/service/health-sentinel-linux.ts
  • src/service/health-sentinel-main.ts
  • src/service/health.ts
  • src/service/launchd.ts
  • src/service/logging.ts
  • src/service/repair.ts
  • src/service/state.ts
  • src/service/systemd.ts
  • src/service/windows-guarded-manager.ts
  • src/service/windows-ops.ts
  • src/service/windows-scheduler.ts
  • src/service/windows-taskxml.ts
  • src/service/windows-wscript.ts
  • src/sidecar/auth.ts
  • src/types.ts
  • src/types/config.ts
  • src/types/opencode-go.ts
  • src/types/opencode-zen.ts
  • src/types/provider.ts
  • src/types/request.ts
  • src/types/wire.ts
  • src/update/npm-invocation.mjs
  • src/usage/cost.ts
  • src/usage/expected-prices.ts
  • src/usage/ledger-retention.ts
  • src/usage/ledger-scanner.ts
  • src/usage/log.ts
  • src/usage/summary.ts
  • src/usage/user-cost-overlays.ts
  • src/usage/user-cost-validation.ts
  • src/vision/eligibility.ts
  • src/web-search/loop.ts
  • src/web-search/progress-stream.ts
  • src/web-search/run-turn-loop.ts
  • structure/INDEX.md
  • structure/adapters/registry.md
  • structure/advisor.md
  • structure/catalog-vendor-context.md
  • structure/catalog.md
  • structure/cli-management.md
  • structure/clients/claude-desktop-config-reads.md
  • structure/clients/claude-desktop.md
  • structure/clients/codex-desktop.md
  • structure/clients/integrations.md
  • structure/codex-account-controls.md
  • structure/codex-cli-update.md
  • structure/codex-home.md
  • structure/codex-provider-routing.md
  • structure/config.md
  • structure/dashboard-and-usage.md
  • structure/data-planes/images.md
  • structure/data-planes/inbound-compat.md
  • structure/data-planes/protocol-paths.md
  • structure/data-planes/search.md
  • structure/decisions/ADR-6930-hosted-search-continuation-binding.md
  • structure/decisions/ADR-6931-lite-hosted-search-opt-in.md
  • structure/desktop-shell.md
  • structure/desktop-terminal-command.md
  • structure/gui-and-management-api.md
  • structure/manifest.json
  • structure/ops/docs-and-release.md
  • structure/ops/service-and-sidecars.md
  • structure/ops/service-health-recovery.md
  • structure/ops/service-logging.md
  • structure/ops/test-sandbox-cleanup.md
  • structure/overview.md
  • structure/pricing.md
  • structure/providers-and-adapters.md
  • structure/providers/anthropic-account-pool.md
  • structure/providers/anthropic-progress.md
  • structure/providers/chat-compat.md
  • structure/providers/claude-cli-replay.md
  • structure/providers/dsh-account.md
  • structure/providers/generic-account-pool.md
  • structure/providers/google.md
  • structure/providers/meta-muse.md
  • structure/providers/oauth-code-display-login.md
  • structure/providers/oauth-reconciliation.md
  • structure/providers/openai-accounts.md
  • structure/providers/openai-signed-in-preservation.md
  • structure/remote-workspace.md
  • structure/runtime.md
  • structure/subagent-capacity.md
  • structure/subagents.md
  • structure/transports/byte-accounting.md
  • structure/transports/inventory.md
  • structure/transports/native-reasoning-retention.md
  • structure/transports/responses-failover.md
  • structure/transports/responses-wire-shapes.md
  • structure/transports/responses.md
  • structure/transports/streaming-health.md
  • tests/adapters/adapter-registry-authority.test.ts
  • tests/adapters/adapter-tool-conformance.test.ts
  • tests/adapters/anthropic/anthropic-beta-body-pairs.test.ts
  • tests/adapters/anthropic/anthropic-combo-account-cooldown.test.ts
  • tests/adapters/anthropic/anthropic-progress-updates.test.ts
  • tests/adapters/anthropic/anthropic-quota-dispatch.test.ts
  • tests/adapters/anthropic/anthropic-subscription-chain.test.ts
  • tests/adapters/bridge-nonstreaming-terminal.test.ts
  • tests/adapters/bridge-terminal-refusal.test.ts
  • tests/adapters/dsh-account-adapter.test.ts
  • tests/adapters/google/gcp-credential-boundary.test.ts
  • tests/adapters/google/gcp-sa-adapter.test.ts
  • tests/adapters/google/gcp-sa-marker.test.ts
  • tests/adapters/key-failover.test.ts
  • tests/adapters/openai/openai-native-hosted-search-history.test.ts
  • tests/adapters/openai/openai-provider-option-migration.test.ts
  • tests/adapters/qoder-spawn-readmission.test.ts
  • tests/adapters/reasoning-replay-identity.test.ts
  • tests/adapters/terminal-continuation-owner-rotation.test.ts
  • tests/adapters/translator-budget-lifetime.test.ts
  • tests/advisor/advisor-adaptive.test.ts
  • tests/advisor/advisor-budget.test.ts
  • tests/advisor/advisor-evidence.test.ts
  • tests/advisor/advisor-guard.test.ts
  • tests/advisor/advisor-responses-wiring.test.ts
  • tests/advisor/advisor-retention.test.ts
  • tests/advisor/advisor-settings.test.ts
  • tests/ci-workflows/exhaustive-deps-suppression.test.ts
  • tests/ci-workflows/import-cycle-ratchet.test.ts
  • tests/ci-workflows/skill-ocx-generated.test.ts
  • tests/ci-workflows/test-runner.test.ts
  • tests/claude-integration/claude-client-refusal-status.test.ts
  • tests/claude-integration/claude-desktop-picker-routes.test.ts
  • tests/claude-integration/claude-desktop-system-proxy.test.ts
  • tests/claude-integration/claude-gateway-output-cap.test.ts
  • tests/claude-integration/claude-intercept-on-demand.test.ts
  • tests/claude-integration/claude-picker-linger.test.ts
  • tests/claude-integration/claude-picker-relay-intent.test.ts
  • tests/claude-integration/claude-picker-runtime.test.ts
  • tests/claude-integration/claude-picker-startup.test.ts
  • tests/claude-integration/claude-picker-trust-windows.test.ts
  • tests/claude-integration/claude-picker-windows.test.ts
  • tests/claude-integration/claude-translated-cache-ttl.test.ts
  • tests/claude-integration/claude-translated-server-tools.test.ts
  • tests/claude-integration/messages-native-empty-inline.test.ts
  • tests/claude-integration/messages-native-key-selection.test.ts
  • tests/claude-integration/messages-native.test.ts
  • tests/cli/cli-access-audio-live.test.ts
  • tests/cli/cli-account-policy.test.ts
  • tests/cli/cli-account-preservation.test.ts
  • tests/cli/cli-capabilities.test.ts
  • tests/cli/cli-capability-operation-workflows.test.ts
  • tests/cli/cli-codex-cli-update-boundary.test.ts
  • tests/cli/cli-codex-cli-update.test.ts
  • tests/cli/cli-combo-partial-update.test.ts
  • tests/cli/cli-dispatch.test.ts
  • tests/cli/cli-ensure-desktop-cold-start.test.ts
  • tests/cli/cli-headless-parity.test.ts
  • tests/cli/cli-log-history.test.ts
  • tests/cli/cli-models-price.test.ts
  • tests/cli/cli-models-prompt-length-pricing.test.ts
  • tests/cli/cli-models-set.test.ts
  • tests/cli/cli-provider.test.ts
  • tests/cli/cli-registry.test.ts
  • tests/cli/cli-usage-compare.test.ts
  • tests/cli/cli-usage-top.test.ts
  • tests/cli/cli-v2-runtime.test.ts
  • tests/cli/sibling-home-client-sync.test.ts
  • tests/cli/uninstall.test.ts
  • tests/clients/client-link-runtime.test.ts
  • tests/clients/client-machine-listener.test.ts
  • tests/clients/desktop-3p-write-files.test.ts
  • tests/clients/desktop-3p.test.ts
  • tests/clients/desktop-app-restart.test.ts
  • tests/clients/desktop-cli-contracts.test.ts
  • tests/clients/desktop-compatibility-authority.test.ts
  • tests/clients/desktop-compatibility-build-probe.test.ts
  • tests/clients/desktop-compatibility-routing.test.ts
  • tests/clients/desktop-compatibility-runtime.test.ts
  • tests/clients/desktop-startup-surface.test.ts
  • tests/clients/gentle-shell-client.test.ts
  • tests/clients/gentle-shell-path.test.ts
  • tests/clients/integrations-state.test.ts
  • tests/clients/sync-client-integrations-unattended.test.ts
  • tests/codex-integration/active-registry-admission.test.ts
  • tests/codex-integration/catalog-auto-review-override.test.ts
  • tests/codex-integration/catalog-native-max-context.test.ts
  • tests/codex-integration/catalog-opencode-go-static.test.ts
  • tests/codex-integration/catalog-vision-sidecar-disabled.test.ts
  • tests/codex-integration/codex-account-delete-atomicity.test.ts
  • tests/codex-integration/codex-account-threshold-api.test.ts
  • tests/codex-integration/codex-account-threshold-auth.test.ts
  • tests/codex-integration/codex-account-threshold-routing.test.ts
  • tests/codex-integration/codex-agent-thread-limit.test.ts
  • tests/codex-integration/codex-app-server-processes.test.ts
  • tests/codex-integration/codex-app-server-restart-service.test.ts
  • tests/codex-integration/codex-auth-api.test.ts
  • tests/codex-integration/codex-auth-context.test.ts
  • tests/codex-integration/codex-auth-release.test.ts
  • tests/codex-integration/codex-catalog-restore.test.ts
  • tests/codex-integration/codex-catalog-sync-hardening.test.ts
  • tests/codex-integration/codex-catalog.test.ts
  • tests/codex-integration/codex-cli-install-provenance.test.ts
  • tests/codex-integration/codex-cli-update-integrity.test.ts
  • tests/codex-integration/codex-cli-update-plan.test.ts
  • tests/codex-integration/codex-cli-update-zero-effect.test.ts
  • tests/codex-integration/codex-config-generation.test.ts
  • tests/codex-integration/codex-config-write-lock.test.ts
  • tests/codex-integration/codex-convergence-account-selectors.test.ts
  • tests/codex-integration/codex-credits-after-limit.test.ts
  • tests/codex-integration/codex-inject-integration.test.ts
  • tests/codex-integration/codex-inject-missing-config.test.ts
  • tests/codex-integration/codex-inject-v1-reconcile.test.ts
  • tests/codex-integration/codex-linked-account-pause.test.ts
  • tests/codex-integration/codex-main-token-invalidated.test.ts
  • tests/codex-integration/codex-pin-drain-projection.test.ts
  • tests/codex-integration/codex-preserve-signed-in.test.ts
  • tests/codex-integration/codex-priority-failback.test.ts
  • tests/codex-integration/codex-proc-scan-errors.test.ts
  • tests/codex-integration/codex-provider-routing.test.ts
  • tests/codex-integration/codex-routing.test.ts
  • tests/codex-integration/codex-service-manager-probe-hardening.test.ts
  • tests/codex-integration/codex-service-manager-probe.test.ts
  • tests/codex-integration/codex-sync-api.test.ts
  • tests/codex-integration/codex-use-remaining-quota.test.ts
  • tests/codex-integration/codex-user-identity.test.ts
  • tests/codex-integration/codex-v2-gate.test.ts
  • tests/codex-integration/combos.test.ts
  • tests/codex-integration/discovered-native-models.test.ts
  • tests/codex-integration/gpt6-native-rows.test.ts
  • tests/codex-integration/gpt61-sol-rows.test.ts
  • tests/codex-integration/history-ocx-compaction-recovery.test.ts
  • tests/codex-integration/main-account-hard-lock-auth.test.ts
  • tests/codex-integration/main-account-hard-lock-fallback-routing.test.ts
  • tests/codex-integration/native-model-toggle.test.ts
  • tests/codex-integration/ultrafast-live-catalog.test.ts
  • tests/config/client-config-export-new-clients.test.ts
  • tests/config/client-config-export.test.ts
  • tests/config/config-hosted-search-projection.test.ts
  • tests/config/config-load-degrade.test.ts
  • tests/config/config-native-reasoning-retention.test.ts
  • tests/config/config-opencode-go-upgrade.test.ts
  • tests/config/config-opencode-zen-upgrade.test.ts
  • tests/config/owner-registry-isolation.test.ts
  • tests/config/settings-main-account-hard-lock.test.ts
  • tests/config/settings-reasoning-retention.test.ts
  • tests/fixtures/claude-efficiency-cli.ts
  • tests/fixtures/import-cycle-baseline.json
  • tests/fixtures/test-layout-expected.json
  • tests/gui/combo-workspace-data.test.ts
  • tests/gui/integrations-invariants.test.ts
  • tests/gui/quota-bars-rows.test.ts
  • tests/helpers/desktop-egress-fixture.ts
  • tests/helpers/ensure-without-desktop-preload.ts
  • tests/helpers/opaque-proxy-tunnel-protocol.ts
  • tests/helpers/opaque-proxy-tunnel.ts
  • tests/helpers/pool-reauth-cause.ts
  • tests/helpers/reset-credit-consume-validation.ts
  • tests/helpers/responses-core-source.ts
  • tests/images/loop-reasoning-replay.test.ts
  • tests/images/loop-terminal-refusal.test.ts
  • tests/images/loop.test.ts
  • tests/lib/opaque-proxy-tunnel-protocol.test.ts
  • tests/lib/opaque-proxy-tunnel.test.ts
  • tests/lib/optional-desktop-upstream.test.ts
  • tests/oauth/chatgpt-oauth.test.ts
  • tests/oauth/dsh-login.test.ts
  • tests/oauth/generic-oauth-combo-account-cooldown.test.ts
  • tests/oauth/generic-oauth-failover.test.ts
  • tests/oauth/generic-session-affinity.test.ts
  • tests/oauth/oauth-account-quota-rank.test.ts
  • tests/oauth/oauth-code-login.test.ts
  • tests/oauth/oauth-login-cli-browser-launch.test.ts
  • tests/oauth/oauth-login-cli-errors.test.ts
  • tests/oauth/oauth-meta-muse-login-diagnostics.test.ts
  • tests/oauth/oauth-provider-reconcile.test.ts
  • tests/oauth/oauth-public-surface.test.ts
  • tests/oauth/oauth-reauth-bind.test.ts
  • tests/oauth/oauth-reconcile-operator-maps.test.ts
  • tests/oauth/oauth-refresh-generic-lock.test.ts
  • tests/oauth/oauth-refresh-stale-capacity.test.ts
  • tests/oauth/oauth-upsert-preserves-api-key.test.ts
  • tests/providers/api-key-selection-capture.test.ts
  • tests/providers/api-key-selection-cooldown.test.ts
  • tests/providers/claude-cli-adapter.test.ts
  • tests/providers/claude-cli-client-http.test.ts
  • tests/providers/claude-cli-efficiency.test.ts
  • tests/providers/claude-cli-tool-capture.test.ts
  • tests/providers/claude-cli-usage-admission.test.ts
  • tests/providers/dsh-account.test.ts
  • tests/providers/kiro/kiro-leased-responses.test.ts
  • tests/providers/kiro/kiro-pool-rank.test.ts
  • tests/providers/meta-muse-keychain.test.ts
  • tests/providers/meta-muse-login-order.test.ts
  • tests/providers/meta-muse-oauth.test.ts
  • tests/providers/minimax-combo-image-input.test.ts
  • tests/providers/model-rename-migration.test.ts
  • tests/providers/opencode-go-gemini-wire.test.ts
  • tests/providers/opencode-go-model-protocols.test.ts
  • tests/providers/opencode-zen-gemini-wire.test.ts
  • tests/providers/provider-account-quota.test.ts
  • tests/providers/provider-antigravity-model-quota.test.ts
  • tests/providers/provider-antigravity-quota-retry.test.ts
  • tests/providers/provider-quota.test.ts
  • tests/providers/qoder-adapter.test.ts
  • tests/providers/registry-transport-alias.test.ts
  • tests/providers/zed-hosted-provider.test.ts
  • tests/responses/chat-native-combo.test.ts
  • tests/responses/chat-native-reasoning-replay.test.ts
  • tests/responses/chat-native-reasoning-scope.test.ts
  • tests/responses/compact-key-selection.test.ts
  • tests/responses/compaction-continuation-note.test.ts
  • tests/responses/compaction-history-framing.test.ts
  • tests/responses/explicit-empty-tool-catalog-history.test.ts
  • tests/responses/explicit-empty-tool-catalog.test.ts
  • tests/responses/incomplete-reason-normalization.test.ts
  • tests/responses/jev-initial-effort-wire.test.ts
  • tests/responses/native-compaction-gateway-credentials.test.ts
  • tests/responses/native-compaction-gateway-policy.test.ts
  • tests/responses/native-compaction-gateway.test.ts
  • tests/responses/native-compaction-oauth.test.ts
  • tests/responses/native-compaction-provenance.test.ts
  • tests/responses/openai-responses-passthrough.test.ts
  • tests/responses/protocol-antigravity-direct-chat.test.ts
  • tests/responses/protocol-antigravity-direct-messages.test.ts
  • tests/responses/protocol-argon-thought-boundary.test.ts
  • tests/responses/protocol-direct-encoders-chat.test.ts
  • tests/responses/protocol-direct-encoders-messages.test.ts
  • tests/responses/reasoning-retention-routing.test.ts
  • tests/responses/reasoning-retention-v2.test.ts
  • tests/responses/reasoning-retention.test.ts
  • tests/responses/responses-account-change-scrub.test.ts
  • tests/responses/responses-account-label.test.ts
  • tests/responses/responses-call-id-linkage.test.ts
  • tests/responses/responses-claude-preflight-lease.test.ts
  • tests/responses/responses-combo-exhausted-error.test.ts
  • tests/responses/responses-combo-run-turn-classified-failure.test.ts
  • tests/responses/responses-compaction-recovery.test.ts
  • tests/responses/responses-context-overflow.test.ts
  • tests/responses/responses-core-modules.test.ts
  • tests/responses/responses-fetch-helpers-boundary.test.ts
  • tests/responses/responses-grok-devin-preflight.test.ts
  • tests/responses/responses-mimo-envelope.test.ts
  • tests/responses/responses-native-compact-search-history.test.ts
  • tests/responses/responses-native-item-extensions-compact.test.ts
  • tests/responses/responses-native-item-extensions.test.ts
  • tests/responses/responses-native-key-cooldown.test.ts
  • tests/responses/responses-oauth-refresh-capacity.test.ts
  • tests/responses/responses-opaque-blob-recovery.test.ts
  • tests/responses/responses-retained-reasoning-stream-recovery.test.ts
  • tests/responses/responses-run-turn-key-pacing.test.ts
  • tests/responses/responses-run-turn-key-readmission.test.ts
  • tests/routing/combo-terminal-refusal.test.ts
  • tests/routing/combo-vision-enrollment.test.ts
  • tests/routing/router-combo-failover-classification.test.ts
  • tests/routing/routing-policy-dispatch-scope.test.ts
  • tests/server/account-pool-management-api.test.ts
  • tests/server/advisor-routes.test.ts
  • tests/server/claude-intercept-integration.test.ts
  • tests/server/combo-loopback-metered-consent.test.ts
  • tests/server/combo-metered-consent.test.ts
  • tests/server/distributed-key-401.test.ts
  • tests/server/fetch-header-timeout.test.ts
  • tests/server/health-scoring.test.ts
  • tests/server/management-auto-review-auth.test.ts
  • tests/server/management-auto-review-settings.test.ts
  • tests/server/management-gcp-credential-input.test.ts
  • tests/server/management-provider-context-inference.test.ts
  • tests/server/management-provider-request-pacing.test.ts
  • tests/server/management-provider-validation.test.ts
  • tests/server/model-costs-pricing-cache.test.ts
  • tests/server/model-costs-prompt-length-pricing.test.ts
  • tests/server/prefer-model-alias-ids.test.ts
  • tests/server/provider-account-quota-routes.test.ts
  • tests/server/server-anthropic-billing.test.ts
  • tests/server/server-chat-native-key-selection.test.ts
  • tests/server/server-combo-reasoning-replay-eligibility.test.ts
  • tests/server/server-generic-oauth-affinity.test.ts
  • tests/server/server-key-failover-e2e.test.ts
  • tests/server/server-kiro-refusal-e2e.test.ts
  • tests/server/server-native-reasoning-retention-merge.test.ts
  • tests/server/server-native-reasoning-retention.test.ts
  • tests/server/server-terminal-refusal-wiring.test.ts
  • tests/server/terminal-guard.test.ts
  • tests/service/launchd-port-fallback.test.ts
  • tests/service/launchd-repair.test.ts
  • tests/service/service-health-sentinel-linux.test.ts
  • tests/service/service-health-sentinel-process.test.ts
  • tests/service/service-health-sentinel-runner.test.ts
  • tests/service/service-log.test.ts
  • tests/service/service-state-isolation.test.ts
  • tests/service/service.test.ts
  • tests/service/shutdown-launcher.test.ts
  • tests/service/standalone-service.test.ts
  • tests/update/update-npm-invocation.test.ts
  • tests/usage/key-attribution.test.ts
  • tests/usage/request-history-index.test.ts
  • tests/usage/request-history-rebuild-worker.test.ts
  • tests/usage/request-pacing-provenance.test.ts
  • tests/usage/request-pacing.test.ts
  • tests/usage/usage-cost.test.ts
  • tests/usage/usage-partly-measured-cost.test.ts
  • tests/usage/usage-prompt-length-pricing.test.ts
  • tests/usage/usage-summary.test.ts
  • tests/vision/sidecar-settings-vision-catalog.test.ts
  • tests/web-search/web-search-loop-error-usage.test.ts
  • tests/web-search/web-search-loop-iteration-usage.test.ts
  • tests/web-search/web-search-rotation-usage-attribution.test.ts
  • tests/web-search/web-search-run-turn-loop.test.ts
  • tests/web-search/web-search-terminal-refusal.test.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Deterministic hygiene checks failed.

  • missing_coauthor_credit — This pull request says it reimplements, supersedes, carries, or rebases another author's pull request, but no Co-authored-by trailer names that author. Prose in a commit body is not read by anything; the trailer is what GitHub counts. Add it to the description or a commit, or obtain attribution-approved. Paths: #676.

@github-actions github-actions Bot changed the title release: promote dev de315e76ad to main as 2.87.0 [WRONG BRANCH] release: promote dev de315e76ad to main as 2.87.0 Oct 16, 2026
@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

⏳ DRAFT

  • wrong target branch (main); retarget to dev. UI screenshot required.

What to do

  • Retarget this PR to dev — all contributions go to dev.
  • Add a screenshot of the UI change to the PR description.

Its title has been prefixed with [WRONG BRANCH].
Automatic draft conversion failed (token cannot change draft status). Please convert this pull request to a draft manually. The required enforce-target check will keep failing until every issue above is resolved.

@github-actions
github-actions Bot marked this pull request as draft October 16, 2026 12:02
if (provider.authMode === "oauth" || provider.authMode === "forward" || !provider.apiKey) return;
if (!provider.requestPacing?.enabled || (!provider.requestPacing.keys && provider.requestPacing.keySelection !== "round-robin")) return;
// Internal only: duplicate references share one bucket; never serialize a key or digest.
return createHash("sha256").update(provider._apiKeyAttempt?.reference ?? provider.apiKey).digest("hex");
const MAX_ENTRIES = 2_000;
const bindings = new Map<string, { accountId: string; lastUsedAt: number; selection: OAuthAccountSelection }>();
const prefix = (provider: string) => `${JSON.stringify([getConfigDir(), provider])}\u0000`;
const key = (provider: string, session: string) => prefix(provider) + "session:" + createHash("sha256").update(session).digest("hex");
headers: { Location: "https://evil.example.com/steal" },
});
}
if (url.includes("evil.example.com")) {
headers: { Location: "https://evil.example.com/steal" },
});
}
if (url.includes("evil.example.com")) {
const priorWarnings = process.env.NODE_REDIRECT_WARNINGS;
process.env.NODE_OPTIONS = "--require=evil";
process.env.NODE_PATH = "C:\\evil-modules";
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
let url: string;
if (provider.authMode === "forward") {
const mayForwardCallerCredentials = isCanonicalOpenAiForwardProvider(provider);
const baseUrl = mayForwardCallerCredentials ? CODEX_FORWARD_BASE_URL : provider.baseUrl.replace(/\/+$/, "");
} catch { /* Token fingerprint is the fallback when CLI has no account metadata. */ }
const seed = nonEmpty(account) ? account : nonEmpty(credential.refresh) ? credential.refresh : undefined;
if (!seed) return null;
return { key: createHash("sha256").update(seed).digest("hex"), access: credential.access };
@lidge-jun

Copy link
Copy Markdown
Owner Author

Maintainer disposition before the owner-authorized promotion merge:

@lidge-jun lidge-jun added the attribution-approved Maintainer approved a carry whose original author is not named in a trailer label Oct 16, 2026
@lidge-jun
lidge-jun marked this pull request as ready for review October 16, 2026 12:33
@lidge-jun
lidge-jun merged commit 04d4ad8 into main Oct 16, 2026
39 of 42 checks passed
@github-actions github-actions Bot removed the intake: hygiene-blocked Deterministic PR hygiene checks failed label Oct 16, 2026
@lidge-jun
lidge-jun deleted the release/promote-main-2.87.0 branch October 16, 2026 12:33
lidge-jun added a commit that referenced this pull request Oct 16, 2026
…7252)

The carry-attribution window is capped at 80 characters and could cut a reference in half. The #7223 subject "carry ... (#7195, #6767" was read as #676, an unrelated PR, so the hygiene gate demanded a co-author trailer for the wrong person (seen on the 2.87.0 promotion #7249). When no sentence boundary falls inside the window, the window now finishes a number that started before the cap. Sentence and newline bounds, qualified-reference handling, and the exclusion of references that start after the cap are unchanged.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

attribution-approved Maintainer approved a carry whose original author is not named in a trailer

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants