Skip to content

Releases: ndycode/codex-multi-auth

v2.0.1

25 Apr 20:37

Choose a tag to compare

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.codexRuntimeRotationProxy from false to true
  • forwarded request-bearing Codex CLI/app sessions use the localhost runtime rotation proxy by default
  • codex auth rotation disable, codexRuntimeRotationProxy=false, and CODEX_MULTI_AUTH_RUNTIME_ROTATION_PROXY=0 remain 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=0 and CODEX_MULTI_AUTH_APP_LAUNCHER_INSTALL=0 skip 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=0 disables 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-codex requests 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.ts
  • npm.cmd run typecheck
  • npm.cmd run lint
  • npm.cmd run build
  • npm.cmd test -- test/documentation.test.ts
  • npm.cmd test
  • npm.cmd pack --dry-run

v2.0.0

25 Apr 14:27

Choose a tag to compare

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, and unbind-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_HOME handling 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 app sessions
  • 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 status

Turn it off and restore app binding state:

codex auth rotation disable

Install or update from npm:

npm i -g codex-multi-auth@2.0.0

Validation

Verified for this release:

  • npm test -- test/documentation.test.ts
  • npm run typecheck
  • npm publish --dry-run
  • clean install smoke from npm
  • published latest dist-tag points to 2.0.0
  • npm gitHead matches the pushed main commit

Package

  • npm: codex-multi-auth@2.0.0
  • tag target: 0aee06360653e713a4d16e767032525412de9800

v1.3.2

24 Apr 06:05

Choose a tag to compare

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 codex runs 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_HOME to fixture storage to avoid host ~/.codex leakage in wrapper tests

Validation

  • node --check scripts/codex.js
  • npm install --ignore-scripts
  • git diff --check
  • npx vitest run test/codex-bin-wrapper.test.ts blocked locally by Windows sandbox spawn EPERM while starting esbuild

Related

  • Fixed issue: #436
  • Merged PR: #437
  • Previous release notes: docs/releases/v1.3.1.md

v1.3.1

24 Apr 02:58

Choose a tag to compare

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.5 and gpt-5.5-pro remain first-attempt models instead of being silently down-mapped ahead of time
  • the plugin and wrapper now fall back to gpt-5.4 only 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.5 behavior on official Codex 0.124.0
  • preserved deterministic fallback behavior for older official Codex runtimes and non-entitled or quota-limited accounts

Validation

  • npm run build
  • npm 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

17 Apr 10:50

Choose a tag to compare

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 routingMutex flag (default legacy), SSOT for AUTH_REDIRECT, OAuth URL redaction in user-facing output
  • New diagnostic commands: codex auth why-selected [--now|--last|--json] and codex auth verify [--paths|--flagged|--all|--json]
  • lib/codex-manager/settings-hub.ts split into 5 sub-concern files under lib/codex-manager/settings-hub/, each under 500 LOC; stable public exports preserved

Commit Summary

  • 3f1c1fe fix(cli): correct verify --paths sandbox probe semantics
  • 8b6b27a chore(release): prepare v1.3.0
  • f4d9bd3 staging: integrate PR #413 fix/remove-account-pointer-dangle
  • a22da1e staging: fix selectHybridAccountTraced test to AUDIT-H2 null contract
  • 77a56e6 staging: integrate PR #412 refactor/routing-mutex
  • 351547b staging: integrate PR #411 refactor/settings-hub-split
  • da3d38f staging: integrate PR #410 feat/cli-why-selected-and-verify-paths
  • 7706cb9 staging: integrate PR #409 refactor/zod-storage-boundaries
  • e647545 staging: integrate PR #408 refactor/health-unify
  • 84ff458 staging: integrate PR #407 test/audit-regression-suite
  • 54e7530 staging: integrate PR #406 chore/config-hygiene
  • e1ea349 staging: integrate PR #405 docs/truthup
  • d5245e9 staging: integrate PR #404 fix/request-observability
  • 33a2d48 staging: integrate PR #403 fix/project-scope-no-silent-bypass
  • 6759325 staging: integrate PR #402 fix/storage-clear-ordering
  • 853fc2f staging: integrate PR #401 fix/recovery-atomic-writes
  • 66f022b staging: integrate PR #400 fix/release-hygiene
  • 368a492 staging: integrate PR #399 fix/active-pointer-normalization
  • 96123db staging: integrate PR #398 fix/short-429-race
  • bb97f7e staging: integrate PR #397 fix/hybrid-selector-null-contract
  • 25c1a21 staging: integrate PR #396 refactor/redirect-uri-ssot
  • abe782e staging: integrate PR #395 fix/oauth-url-redaction
  • 3d9febd staging: integrate PR #394 fix/phase1-tests-green-and-resolvepath
  • f4d8120 staging: integrate PR #393 docs/master-repository-audit-2026-04-17
  • 421bb89 fix(accounts): harden removeAccount pointer normalization
  • 475ea37 fix(test): add AUTH_REDIRECT to codex-manager-cli mock
  • d7af34d fix(accounts): harden pointer normalization for all-disabled + cursorByFamily
  • d9f7253 docs(config): correct dual-linter scope to match actual wiring
  • b3c2945 fix(cli): harden verify --paths sandbox probe + document commands
  • f18d721 fix(ui): route copy.ts through AUTH_REDIRECT SSOT
  • f877c85 fix(recovery): complete atomic write migration + rename retry
  • 21c466a test(routing-mutex): strengthen property tests with external concurrency observer
  • e50d283 refactor(routing): routing mutex + SelectionRecord (R4, PR-N)
  • 5a52a31 docs(lib): retire stale settings-hub LOC claim
  • c7d66be refactor(settings-hub): compose via index.ts
  • a28aa51 refactor(settings-hub): extract experimental panel
  • 5d11f29 refactor(settings-hub): extract backend panel
  • f38cb6e refactor(settings-hub): extract dashboard panels
  • 66eb64c refactor(settings-hub): extract shared helpers
  • c9437cb refactor(types): add Zod safeParseJson at storage JSON boundaries
  • 0e914c2 feat(cli): add codex auth why-selected and verify --paths commands
  • b47789a docs(health): document field-name drift vs ManagedAccount (AUDIT-M08 / D-04)
  • 394896a test(audit): add Phase 1 regression suite locking in audit invariants
  • 801ee58 chore(config): document dual-linter scope + husky prepare-hook side effect
  • d6809ce docs: truthup AGENTS.md staleness + deriveProjectKey typo
  • 936d1a4 fix(request): surface malformed SSE JSON chunks as structured warnings
  • e6e1702 fix(routing): surface the per-project vs CLI-sync config conflict
  • d1c312a fix(storage): write reset marker before deletions + retry EPERM on read
  • 408bf8a fix(recovery): atomic writes + retry-safe deletes for recovery storage (R6)
  • 250edfd fix(release): pack:check builds first + tests use os.tmpdir
  • 306c87a fix(accounts): normalize active pointer when the active account is disabled
  • 36a99c0 fix(routing): mark account unavailable before short-429 retry sleep
  • 5c953e8 fix(routing): hybrid selector returns null when no accounts are available
  • 58437e3 refactor(auth): introduce AUTH_REDIRECT single source of truth
  • d94a4c8 fix(auth): redact OAuth URL in user-facing login output
  • f59fa75 fix(codex-manager): show intentional-reset message when loadAccounts returns null
  • 58c8751 fix(paths): reject lookalike-prefix paths in resolvePath
  • 0eb1144 docs(audit): add master repository audit report and evidence

v1.2.7

16 Apr 09:54

Choose a tag to compare

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 PATH now work alongside the existing @openai/codex npm 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

06 Apr 11:35

Choose a tag to compare

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 auth observability behavior while making real codex exec smoke runs visible in codex auth status and codex auth report --json
  • added regression coverage for both missing-child-update and already-updated snapshot cases in the wrapper test suite

Commit Summary

  • a76b67c docs: clarify v1.2.5 observability wording
  • e99d641 release: ship v1.2.6 forwarded observability fix

v1.2.5

06 Apr 10:41

Choose a tag to compare

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 status and codex 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-only so 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

05 Apr 13:30

Choose a tag to compare

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 EBUSY locks stay covered
  • pinned the persistRecoveredBackup -> false path so failed backup persistence does not report a false successful recovery
  • tightened test cleanup so fs.readFile spies are restored from finally and cannot leak across later Vitest cases
  • removed the dead inline return from 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

01 Apr 13:29
b9c9273

Choose a tag to compare

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