Releases: ndycode/codex-multi-auth
v2.0.1
Release v2.0.1
Release line: stable
This patch turns the 2.x runtime rotation architecture on by default for installed wrapper users and adds best-effort package auto-update support.
Scope
- Package version prepared for publish:
2.0.1 - Previous stable release:
v2.0.0 - Semver rationale: patch follow-up to make the v2 runtime rotation path the default installed behavior and keep explicit opt-outs for controlled environments.
What Changed
Default Runtime Rotation
- changed
pluginConfig.codexRuntimeRotationProxyfromfalsetotrue - forwarded request-bearing Codex CLI/app sessions use the localhost runtime rotation proxy by default
codex auth rotation disable,codexRuntimeRotationProxy=false, andCODEX_MULTI_AUTH_RUNTIME_ROTATION_PROXY=0remain supported opt-outs
Install and Update Self-Heal
- package install/update self-heals the reversible packaged Codex app bind when runtime rotation is enabled and a desktop app is detected
- global package install/update also routes supported user-level app launchers through the wrapper by default
CODEX_MULTI_AUTH_APP_BIND_INSTALL=0andCODEX_MULTI_AUTH_APP_LAUNCHER_INSTALL=0skip those install/update actions
Auto Update
- installed packages run a best-effort daily update check outside CI/test/local worktree contexts
- when npm has a newer release, the wrapper runs
npm update -g codex-multi-auth CODEX_MULTI_AUTH_AUTO_UPDATE=0disables automatic package updates
Current OpenAI Model Defaults
- live quota probes and auth repair/report defaults now start with
gpt-5.3-codex - general GPT-5 fallback defaults now resolve to
gpt-5.5 - legacy
gpt-5-codexrequests remain accepted, but route/retry to the current documented Codex model instead of failing on ChatGPT Codex OAuth surfaces that no longer accept the older ID - shipped config templates now expose only current documented OpenAI/Codex selectors; deprecated
gpt-5.1-codex*names remain compatibility inputs, not advertised defaults
Validation
npm.cmd test -- test/plugin-config.test.ts test/install-codex-auth.test.ts test/auto-update-checker.test.tsnpm.cmd run typechecknpm.cmd run lintnpm.cmd run buildnpm.cmd test -- test/documentation.test.tsnpm.cmd testnpm.cmd pack --dry-run
v2.0.0
After months of trying to make automatic account rotation reliable for real Codex sessions, v2.0.0 now ships the first major runtime-rotation release.
This is the release the project has been building toward: official Codex CLI and app sessions can now opt in to a local Responses proxy, letting managed accounts rotate between backend requests without constantly restarting the session.
Highlights
- Added opt-in runtime Responses rotation with
codex auth rotation enable - Added
codex auth rotation disable,status,bind-app, andunbind-app - Added the local provider path:
codex-multi-auth-runtime-proxy - Added rotation for forwarded official Codex Responses requests
- Added rotation on quota, auth refresh, network, and upstream server failures
- Added shadow
CODEX_HOMEhandling for wrapper-launched Codex sessions - Added sync-back for refreshed official Codex state
- Added reversible packaged Codex app binding through a localhost router
- Added runtime app helper support for wrapper-launched
codex appsessions - Preserved normal Codex forwarding when runtime rotation is disabled
Hardening
- Fixed proxy response forwarding so decoded upstream responses do not carry stale
content-encoding - Hardened shadow-home sync locking so transient owner-write failures do not leave orphaned locks
- Kept runtime rotation localhost-only and authenticated with a local client key
- Kept app binding reversible without patching official Codex app binaries
Documentation
- Updated the full documentation set for the 2.0 architecture
- Clarified wrapper-first routing, runtime rotation, app bind, storage paths, and troubleshooting
- Added audit archive guidance so old audit evidence is not confused with current architecture
Upgrade Notes
Runtime rotation is opt-in. Existing installs keep normal Codex forwarding unless you enable rotation.
Enable runtime rotation:
codex auth rotation enable
codex auth rotation statusTurn it off and restore app binding state:
codex auth rotation disableInstall or update from npm:
npm i -g codex-multi-auth@2.0.0Validation
Verified for this release:
npm test -- test/documentation.test.tsnpm run typechecknpm publish --dry-run- clean install smoke from npm
- published
latestdist-tag points to2.0.0 - npm
gitHeadmatches the pushedmaincommit
Package
- npm:
codex-multi-auth@2.0.0 - tag target:
0aee06360653e713a4d16e767032525412de9800
v1.3.2
Release v1.3.2
Release line: stable
This patch release fixes interactive forwarded Codex runs after the v1.3.1 GPT-5.5 rollout by preserving terminal stdio for TTY-attached sessions.
Scope
- Published package version:
1.3.2 - Previous stable release:
v1.3.1 - Semver rationale: patch bump. No intentional breaking public API changes.
What Changed
TTY-Safe Codex Forwarding
- terminal-attached forwarded
codexruns now inherit stdio instead of piping stdout and stderr - non-TTY forwarded runs still capture output so unsupported-model fallback handling can inspect downstream errors
- wrapper launch failures now use the existing clean failure path even when
spawn()throws synchronously on Windows
Regression Coverage
- added coverage for explicit no-capture forwarding so terminal-sensitive Codex runs do not retry through a piped child process
- added coverage for explicit capture forwarding so unsupported-model retries remain available for non-interactive and forced-capture runs
- pinned test
CODEX_HOMEto fixture storage to avoid host~/.codexleakage in wrapper tests
Validation
node --check scripts/codex.jsnpm install --ignore-scriptsgit diff --checknpx vitest run test/codex-bin-wrapper.test.tsblocked locally by Windows sandboxspawn EPERMwhile starting esbuild
Related
- Fixed issue:
#436 - Merged PR:
#437 - Previous release notes:
docs/releases/v1.3.1.md
v1.3.1
Release v1.3.1
Release line: stable
This patch release finalizes the GPT-5.5 runtime rollout work for codex-multi-auth.
Scope
- Published package version:
1.3.1 - Previous stable release:
v1.3.0 - Semver rationale: patch bump. No intentional breaking public API changes.
What Changed
GPT-5.5 Runtime Handling
gpt-5.5andgpt-5.5-proremain first-attempt models instead of being silently down-mapped ahead of time- the plugin and wrapper now fall back to
gpt-5.4only after real upstream unsupported-model responses on ChatGPT-backed Codex surfaces - the wrapper retry path now handles both ChatGPT unsupported-model errors and the upstream no-access variant (
does not exist or you do not have access)
Runtime Compatibility
- verified native
gpt-5.5behavior on official Codex0.124.0 - preserved deterministic fallback behavior for older official Codex runtimes and non-entitled or quota-limited accounts
Validation
npm run buildnpm test -- test/model-map.test.ts test/request-transformer.test.ts test/codex-bin-wrapper.test.ts test/config.test.ts test/capability-policy.test.ts test/fetch-helpers.test.ts test/index.test.ts
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