v2.1.7.md
May 10, 2026 ยท View on GitHub
Install / Uninstall
Improvements
- Added
codex-multi-auth uninstall [--dry-run] [--json] [--clear-accounts]that reverses postinstall: unbinds Codex app rotation, removes OS launchers, strips the plugin entry fromCodex.json, clears thenode_modulescache, and conservatively deletes sharedbun.lockonly when no other Codex plugins remain.
Bugfixes
- Removed the dead
preuninstallentry frompackage.jsonbecausenpm@7+no longer runs it; to uninstall fully, runcodex-multi-auth uninstallthennpm uninstall -g codex-multi-auth.scripts/preuninstall.jsis preserved and still callable vianode scripts/preuninstall.js. - Dry-run
uninstallnow computes thebun.lockdecision from the actualCodex.jsonplugin list. --clear-accountswarns and exits non-zero when no handler is wired.- Dry-run uninstall preview no longer requires
scripts/codex-app-launcher.json disk. removePluginFromListpre-filters falsy entries withlist.filter(Boolean).
Core
Bugfixes
hydrateRuntimeEmailsno longer collapses accounts sharingaccountId === undefinedinto the sameMapentry.restoreTopLevelModelProvider/restoreTopLevelResponseStoragenow splice missing keys ahead of the first section header instead of producing invalid TOML.runFix,runHealthCheck, and forecastsaveQuotaCachepaths now downgrade transientEBUSY/EPERMto a partial-success warning viaquotaCacheSaveError.withStorageLocknow initializesreleaseLockas a typed no-op.
Runtime Rotation Proxy
Bugfixes
- App-bind now requires
router.state === "running"and a live PID before reusingexistingState, so a dead router cannot trigger aconfig.tomlrewrite. - Stream-failover read promise is now hoisted before the soft/hard timeout split.