Repository navigation
v6.18.1
Auto-released from merge of PR #1752 (trigger: push).
- A ChatGPT (codex) conversation now reaches its prompt cache: every request carries its
prompt_cache_keyas thesession-idheader. The backend's prompt cache lives on individual machines, and a request is routed to the machine that holds a conversation's prefix by that header; the Codex CLI sends its session id there on every turn, with the same value as itsprompt_cache_key, plusthread-idandx-codex-routing-hint: model=<model>. dario sent none of them, so a conversation's turns scattered across machines and read a cached prefix only when one happened to land where an earlier turn wrote it. Measured with the cache trace on a review loop (turns a few seconds apart, every input a strict extension of the last): 8 of 23 turns read anything, and what they read was a snapshot several turns old. Both wire shapes and the raw/v1/responsespath, so a Codex CLI session through dario gets its affinity back too (dario rebuilds the headers and had dropped it). A key that is not header-safe goes as a stable digest. - A pool-exhausted request the ChatGPT subscription served is now counted. The
--pool-fallbackroute to a codex seat (a drained or rate-limited Claude pool, both wire shapes) passed no reporter to the seat, so a request it served was in no/analyticsrow, no--log-fileline and no ledger entry: the proxy served GPT and counted only the drained pool. The row, the seat's served count and its decline reset are now one function shared with the codex route, filed under the substituted model and the request number the console line carried, cache trace included.
Built + tested + npm-published inline by cc-drift-auto-release.yml on this run — tokenless via OIDC trusted publishing, provenance-attested. See the workflow log for the publish output.