Releases: ndycode/codex-multi-auth
v1.3.0
Minor Compatibility and Stability Release
This release carries the Phase 1 post-audit hardening pass: 20 focused PRs + follow-up #413 + audit-fix commits addressing 49 findings from the 2026-04-17 master repository audit. No breaking public-API changes. One opt-in feature flag (routingMutex) added with legacy default. Staging-merge validated end-to-end with 3529 tests passing, real-install test caught and fixed a filesystem-root sandbox probe bug before publish. Read the summary below before upgrading or publishing.
- Zero CRITICAL audit findings; all 13 in-scope HIGH findings fixed + verified
- Storage + OAuth + routing hardening: Zod at JSON parse boundaries, atomic writes with retry, routing mutex behind
routingMutexflag (default legacy), SSOT forAUTH_REDIRECT, OAuth URL redaction in user-facing output - New diagnostic commands:
codex auth why-selected [--now|--last|--json]andcodex auth verify [--paths|--flagged|--all|--json] lib/codex-manager/settings-hub.tssplit into 5 sub-concern files underlib/codex-manager/settings-hub/, each under 500 LOC; stable public exports preserved
Commit Summary
3f1c1fefix(cli): correct verify --paths sandbox probe semantics8b6b27achore(release): prepare v1.3.0f4d9bd3staging: integrate PR #413 fix/remove-account-pointer-danglea22da1estaging: fix selectHybridAccountTraced test to AUDIT-H2 null contract77a56e6staging: integrate PR #412 refactor/routing-mutex351547bstaging: integrate PR #411 refactor/settings-hub-splitda3d38fstaging: integrate PR #410 feat/cli-why-selected-and-verify-paths7706cb9staging: integrate PR #409 refactor/zod-storage-boundariese647545staging: integrate PR #408 refactor/health-unify84ff458staging: integrate PR #407 test/audit-regression-suite54e7530staging: integrate PR #406 chore/config-hygienee1ea349staging: integrate PR #405 docs/truthupd5245e9staging: integrate PR #404 fix/request-observability33a2d48staging: integrate PR #403 fix/project-scope-no-silent-bypass6759325staging: integrate PR #402 fix/storage-clear-ordering853fc2fstaging: integrate PR #401 fix/recovery-atomic-writes66f022bstaging: integrate PR #400 fix/release-hygiene368a492staging: integrate PR #399 fix/active-pointer-normalization96123dbstaging: integrate PR #398 fix/short-429-racebb97f7estaging: integrate PR #397 fix/hybrid-selector-null-contract25c1a21staging: integrate PR #396 refactor/redirect-uri-ssotabe782estaging: integrate PR #395 fix/oauth-url-redaction3d9febdstaging: integrate PR #394 fix/phase1-tests-green-and-resolvepathf4d8120staging: integrate PR #393 docs/master-repository-audit-2026-04-17421bb89fix(accounts): harden removeAccount pointer normalization475ea37fix(test): add AUTH_REDIRECT to codex-manager-cli mockd7af34dfix(accounts): harden pointer normalization for all-disabled + cursorByFamilyd9f7253docs(config): correct dual-linter scope to match actual wiringb3c2945fix(cli): harden verify --paths sandbox probe + document commandsf18d721fix(ui): route copy.ts through AUTH_REDIRECT SSOTf877c85fix(recovery): complete atomic write migration + rename retry21c466atest(routing-mutex): strengthen property tests with external concurrency observere50d283refactor(routing): routing mutex + SelectionRecord (R4, PR-N)5a52a31docs(lib): retire stale settings-hub LOC claimc7d66berefactor(settings-hub): compose via index.tsa28aa51refactor(settings-hub): extract experimental panel5d11f29refactor(settings-hub): extract backend panelf38cb6erefactor(settings-hub): extract dashboard panels66eb64crefactor(settings-hub): extract shared helpersc9437cbrefactor(types): add Zod safeParseJson at storage JSON boundaries0e914c2feat(cli): add codex auth why-selected and verify --paths commandsb47789adocs(health): document field-name drift vs ManagedAccount (AUDIT-M08 / D-04)394896atest(audit): add Phase 1 regression suite locking in audit invariants801ee58chore(config): document dual-linter scope + husky prepare-hook side effectd6809cedocs: truthup AGENTS.md staleness + deriveProjectKey typo936d1a4fix(request): surface malformed SSE JSON chunks as structured warningse6e1702fix(routing): surface the per-project vs CLI-sync config conflictd1c312afix(storage): write reset marker before deletions + retry EPERM on read408bf8afix(recovery): atomic writes + retry-safe deletes for recovery storage (R6)250edfdfix(release): pack:check builds first + tests use os.tmpdir306c87afix(accounts): normalize active pointer when the active account is disabled36a99c0fix(routing): mark account unavailable before short-429 retry sleep5c953e8fix(routing): hybrid selector returns null when no accounts are available58437e3refactor(auth): introduce AUTH_REDIRECT single source of truthd94a4c8fix(auth): redact OAuth URL in user-facing login outputf59fa75fix(codex-manager): show intentional-reset message when loadAccounts returns null58c8751fix(paths): reject lookalike-prefix paths in resolvePath0eb1144docs(audit): add master repository audit report and evidence
v1.2.7
Minor Compatibility and Stability Release
This release adds native official Codex CLI compatibility to the wrapper while keeping the existing codex auth ... runtime behavior stable. Read the summary below before upgrading or publishing.
- native official Codex installs on
PATHnow work alongside the existing@openai/codexnpm launcher flow - wrapper launch behavior now correctly distinguishes JavaScript launchers from native executables
- POSIX self-wrapper loop handling and Windows native path precedence are covered by regression tests
- release notes and stable-history docs are updated for
v1.2.7
Commit Summary
- e275984 chore(release): bump version to 1.2.7 and publish notes
- f1f52aa Merge pull request #391 from ndycode/feat/native-codex-cli-support
- 776c594 cover windows codex precedence
- d2c3524 guard native path discovery test patch
- 10d03be inline wrapper test exit constant
- 6a63b9d fix resolver self-guard default
- 363305c tighten native codex path handling
- c6ef13f fix stale test expectations
- 0d9ae60 fix native CLI resolver edge cases
- 4264e0c broaden native CLI wrapper coverage
- baadcb3 support native Codex CLI installs
v1.2.6
Minor Compatibility and Stability Release
This release carries compatibility-facing behavior changes and operational hardening. Read the summary below before upgrading or publishing.
- fixed wrapped non-auth Codex commands so successful forwarded request traffic increments persisted runtime observability counters
- added a wrapper fallback path that records forwarded request metrics only when the child Codex process leaves the runtime snapshot unchanged, avoiding double-counting when plugin-side metrics are present
- preserved the existing
codex authobservability behavior while making realcodex execsmoke runs visible incodex auth statusandcodex auth report --json - added regression coverage for both missing-child-update and already-updated snapshot cases in the wrapper test suite
Commit Summary
v1.2.5
Minor Compatibility and Stability Release
This release carries compatibility-facing behavior changes and operational hardening. Read the summary below before upgrading or publishing.
- added runtime counters, cooldown state, selection reason, and storage-health observability to
codex auth statusandcodex auth report --json, with visible tracking for multi-auth probes and refresh activity - added safer live report controls with
--max-accounts,--max-probes, and--cached-onlyso operators can inspect state without probing the full pool - disabled default whole-pool replay when every account is rate-limited and capped outbound request attempts per prompt to prevent runaway cross-account retries
- tightened retry and failover behavior for 429s, upstream 5xx bursts, empty responses, and stream replay so partial output is not re-emitted and aggressive rotation cools down sooner
Commit Summary
- 353de84 refactor: remove dead runtime metrics helper module
- 6e42f28 refactor: share forecast and report command helpers
- a17a58c refactor: remove unsafe overload casts in parallel probe
- 7a713ad fix: make account clear reset atomic
- 2ab9dd9 fix: persist report refreshes before mutating state
- 89bafc4 fix: prevent stale prompt cache session overwrites
- 2a4324a fix: serialize concurrent runtime cache writes
- 37d260b fix: recreate live account sync on config changes
- f71fd30 fix: check remapped errorResponse status for 404->429 usage_limit rotation
- c1223f4 test: add 4 broader scenarios for 404->429 rotation path
- 7026dfe fix: narrow 404 usage-limit remapping
- dd05d20 fix: stop quota scheduler cooldown drift
v1.2.4
Minor Compatibility and Stability Release
This release carries compatibility-facing behavior changes and operational hardening. Read the summary below before upgrading or publishing.
- added deterministic regressions for flagged-account backup and legacy read retries so transient Windows
EBUSYlocks stay covered - pinned the
persistRecoveredBackup -> falsepath so failed backup persistence does not report a false successful recovery - tightened test cleanup so
fs.readFilespies are restored fromfinallyand cannot leak across later Vitest cases - removed the dead inline
returnfrom the Codex wrapper mutator script used by the delayed-write retry regression
Commit Summary
- 080d046 fix-report-live-token-freshness-handling
- bafd2c8 fix-runtime-recovery-token-restore-safety
- cef0db1 "fix-storage-path-context-for-deferred-saves"
- 7dbf9b0 fix(wrapper): make windows shell guards opt-in
- acb932b docs(releases): align stable docs with 1.2.2
- 5c9efed ci: mirror release harness checks on push
- 72a115e test(accounts): deflake tracker stability assertion
- 3f3c0c6 Scope pool lastUsed preservation
- b9d7c2f Fix storage path state save race
- 115d8e8 Fix Windows profile guard opt-in
- 60597f8 Add runtime persistence failure coverage
- d3178f2 Wire runtime verify-flagged atomic persistence
v1.2.2
Minor Compatibility and Stability Release
This release carries compatibility-facing behavior changes and operational hardening. Read the summary below before upgrading or publishing.
- Hardened fast-expiry refresh persistence so refreshed token and account state survive account-pool writes.
- Realigned account-pool health handling across success healing, guardian penalties, circuit-breaker penalties, and reason-scoped rate limiting.
- Tightened stable identity reconciliation for guardian refresh outcomes and runtime tracker state.
- Persisted refreshed auth from forecast and report live probes and improved expired CLI cache hydration.
Commit Summary
- 53488ef Add Codex plugin manifest and setup skill
- 9cbc72a fix: harden fast-expiry token refresh persistence
- adbf49a fix: heal stale pool penalties after success
- 27a0d1e fix: reconcile guardian refresh outcomes by stable identity
- 66d2d63 fix: prefer fresh access tokens during account selection
- 45a7ee6 fix: hydrate newer refresh tokens from expired cli cache
- bfb6a33 fix: graduate refresh guardian failure penalties
- 7f512c3 fix: heal stale cooldown metadata on success
- 9b6b824 test: cover fresh family selection happy path
- 7cb4d4f fix: guard cli refresh token hydration by freshness
- 6e6781a fix: clear guardian auth streaks on non-auth outcomes
- c97350c fix: harden guardian identity reconciliation
v1.2.1
Minor Compatibility and Stability Release
This release carries compatibility-facing behavior changes and operational hardening. Read the summary below before upgrading or publishing.
- Added
codex auth forecast --explainsupport and related regression coverage. - Aligned GPT-5 model routing with current OpenAI defaults.
- Added package subpath exports and tightened shipped config/public API coverage.
- Added maintainer runbooks and refreshed onboarding and command guidance.
Commit Summary
- 7065009 test: cover runtime benchmark script
- 26cdb9e Use retry-safe cleanup in wrapper smoke test
- 7d44c75 Use retry-safe benchmark cleanup
- 75a6a6b Exercise target loader retry wiring
- c328fc7 Exercise sync target retry wiring
- 3e44d11 Preserve experimental settings entry types
- 3be4df4 Tighten named backups entry coverage
- 6de0144 Fail fast on benchmark test hangs
- 9e13a24 align gpt-5 model routing with current OpenAI defaults
- 173d64f add responses continuation request contract support
- 9968ba8 enhance responses parser for semantic SSE events
- 71d44c7 add response compaction fallback for fast sessions
v1.2.0
Minor Compatibility and Stability Release
This release carries compatibility-facing behavior changes and operational hardening. Read the summary below before upgrading or publishing.
- Added headless-friendly auth login with manual callback support for environments where browser launch or the local callback listener is unavailable.
- Preserved selected workspace routing across retries and fallback paths instead of collapsing back to mutable token-derived identity.
- Added proxy-compatible upstream transport, workspace-disabled auto-rotation, onboarding restore from the latest saved backup, and restored experimental settings hotkeys.
Commit Summary
- 57fd770 feat(cli): add 'codex auth best' command for automatic best account switching
- f82a748 add-manual-login-mode-for-headless-auth-flows
- f539e9e fix(runtime):preserve-selected-workspace-in-request-routing
- 7b40b05 feat(runtime): add proxy-compatible upstream transport
- b526074 chore(lockfile): normalize undici dependency entry
- 3953d5d fix(auth): skip callback wait in manual login mode
- 8f91ee3 fix(auth): skip callback wait in manual login mode
- 5972554 fix(auth): honor explicit no-browser env toggles
- 91ec5a9 fix(runtime): preserve fallback account source on snapshot updates
- aa88882 fix(proxy): drain shared dispatchers on shutdown
- 73e0811 fix(auth): honor explicit no-browser env toggles
- bbbf67a fix(runtime): preserve fallback account source on snapshot updates
v1.1.11
Minor Compatibility and Stability Release
This release carries compatibility-facing behavior changes and operational hardening. Read the summary below before upgrading or publishing.
- Fixed quota-cache key collisions for multi-workspace accounts that share the same email.
- Rebuilt live quota fallback state after
auth checkandauth fixrefreshes change shared-workspace identity fields. - Hardened live quota cache persistence so failed saves do not mutate the loaded cache object during forecast, check, or fix flows.
Commit Summary
v1.1.10
Minor Compatibility and Stability Release
This release carries compatibility-facing behavior changes and operational hardening. Read the summary below before upgrading or publishing.
- Added
codex auth bestfor forecast-driven active-account switching from the CLI. - Hardened live probe refresh handling so rotated access, refresh, and ID tokens stay aligned through the already-best and switch paths.
- Tightened
auth bestCLI validation and JSON output coverage for help, malformed flags, null storage, concurrency, and sync-state edge cases.
Commit Summary
- a823684 fix installation step causing EEXIST
- f3c06f8 Merge pull request #97 from zamadye/fix/readme-install-collision
- b329cf4 Initial plan
- db5758e Preserve workspace bindings across refresh flows
- 223bdc1 Fix storage typecheck regressions
- 4973a20 Fix remaining workspace binding review issues
- 9ab3669 Fix account support for mutable workspace after login (#117)
- 04c0151 feat(cli): add codex auth best account switching (#120)
- 1d404f9 chore(release): bump version to 1.1.10 and publish notes