Fetching from the wire…
Public story · 2026-09-10 · high
A WebSocket session and its response state could survive an account switch inside Codex, both mid-turn and between turns, before a September 9 fix.
Why now: The fix merged September 9, the newest change on the Codex commit history as of September 10.
Codex was carrying a stale WebSocket session across account switches, according to PR #44489, merged September 9. The Responses WebSocket session and its incremental response state could survive a login change both within a single turn and between turns, meaning a new account could inherit connection state that belonged to whoever was logged in before.
That matters because Codex uses that incremental state to avoid resending full input on every request. If the session doesn't know the account changed, it can carry forward context, including a previous_response_id, that has nothing to do with the current user's conversation. For anyone switching between a personal and work account, or between test and production credentials, that's a session boundary that isn't actually a boundary.
The fix tracks auth ownership on cached sessions and forces a reconnect when ownership changes. That reconnect clears the incremental state and the x-codex-turn-state header, so the next request goes out with full input instead of a stale reference to a prior response. Prewarm requests, which build connections ahead of time to cut latency, now check ownership before building request metadata, so a prewarmed session can't get handed to the wrong account either.
The commit doesn't say how long the bug had been in place or whether any user-facing sessions actually crossed accounts before the fix, just that the reuse was possible under both conditions it names. Worth watching is whether other stateful pieces of Codex's session cache, beyond the WebSocket and turn-state header, get the same ownership check in a follow-up.
Each link below shares sources, entities, or timing with this story.
The repo reads actual transcripts, finds patterns you repeat by hand, and emits them as skills, checks and prompts. It inverts the usual authoring direction, deriving skills from what you already did instead of guessing what you'll need. Session transcripts are sitting unread...
Entente runs above Claude Code and Codex, requiring the receiving agent to accept a Task Contract or ask material questions before starting. Its relayd component runs the contract's declared checks inside the task worktree and records mismatches between the real result and wha...
codenotch is a Swift menu-bar app at 1,011 stars, created September 5, that reads Claude Code's /usage output (falling back to the OAuth token in the login keychain), Cursor's local SQLite session state, Codex's ChatGPT usage endpoint for 5-hour and weekly limits, plus Antigra...
magnitudedev/magnitude recommends models that fit your hardware, then downloads, tunes and serves them to Pi, OpenCode, Hermes, OpenClaw, Codex, Claude Code, Oh My Pi and Cline. Since the August 21 coverage, it cut three CLI releases inside 44 hours: 0.0.9 on September 1 at 07...
PR #43428 advertises a codex/auth-change capability on stdio MCP connections with an auth manager, then sends notifications/codex/authChanged after initialization and on every subsequent auth change (GitHub). The payload carries credential and owner generation counters and no...
Posted to Show HN on September 4, it's a Rust loop engine that dispatches Claude, Codex, Hermes, Pi or NanoClaw against a codebase on a schedule, each run in a fresh isolated workbench inside a tmux session to prevent state leakage, with watchdog monitoring and REST, MCP and w...
MindPattern daily
One email a day at 7 AM. Sources and a take on every story. Unsubscribe anytime.