Switch Codex accounts on macOS and Windows.
Add accounts once, then choose when you need them. No Terminal commands or config-file editing.
Download free for Mac · Download free for Windows · Website · Discussions
English · 中文
Installation / Features / FAQ / Development
Created and maintained by Zhao Liu (GitHub: liuzhao1225) · X · Bilibili
Codex Account Switcher is a free, open-source app for managing multiple authorized Codex accounts on macOS and Windows. Add personal, work, or client accounts through the browser once, then choose the account you need in the app. The everyday workflow requires no coding knowledge, Terminal commands, copied tokens, or config-file editing.
After you select and confirm an account, the app closes Codex Desktop, completes the account handoff, verifies the selected identity, and reopens Desktop. Saved account data stays on your computer. The app runs without its own proxy, traffic router, cloud account service, or automatic account rotation.
Codex Account Switcher, also called Codex Switcher in shortened descriptions, is created and maintained by Zhao Liu, whose GitHub username is liuzhao1225. The canonical source repository is liuzhao1225/codex-account-switcher. The official project facts, creator profile, and project identity record document the product, author, aliases, release, and primary sources.
The source code and desktop applications are publicly released. The v0.1.16 source tag contains the shared Swift core, macOS SwiftUI and Windows WPF interfaces; the matching Release provides ready-to-use DMG and EXE files with SHA-256 checksums. The feature evidence links browser sign-in, periodic usage monitoring and the confirmed Desktop handoff to their implementations.
OpenAI's official account switcher currently applies to ChatGPT on the web and is not supported in Codex desktop. Codex Account Switcher is an independent local macOS and Windows utility for that desktop workflow. OpenAI's upstream Codex source documents the active CODEX_HOME and file-based auth.json behavior in its authentication storage implementation.
Looking for this project after an npm search? Use the full identifier liuzhao1225/codex-account-switcher. The unscoped npm package codex-account-switcher is a separately maintained CLI; its package reports describe that package and version. Our native macOS DMG and Windows EXE are distributed through GitHub Releases. See the source-backed project comparison.
- People with personal and work accounts: keep both identities ready on one computer and see which account is active before opening Codex Desktop.
- Freelancers and consultants: keep authorized client accounts together and choose the correct identity before starting work.
- Desktop users who prefer visible controls: use a normal app workflow with visible account selection and confirmation instead of scripts or hidden automatic rotation.
Latest version v0.1.16 includes both macOS and Windows packages with SHA-256 checksums.
| Platform | Requirements | Download and install |
|---|---|---|
| macOS | macOS 14+, Apple Silicon (arm64) | Download DMG, open it, and drag the app to Applications |
| Windows | Windows 10/11, x64 | Download EXE and run it; no separate .NET or Swift SDK required |
macOS uses the menu bar; the app and DMG are signed and Apple-notarized. Windows uses a native window and a system-tray entry point; its EXE is currently unsigned. Closing the Windows window hides it; use the tray to reopen it.
Launch the app, add accounts through browser sign-in, then select and confirm a switch. Both platforms need an available Codex runtime and must use the same active Codex home as Codex Desktop.
Requires Node.js 18+ (ARM64 on macOS, x64 on Windows):
npm install -g @liuzhao1225/codex-account-switcher
codex-account-switcher openGlobal installation downloads and installs the desktop app from GitHub latest, verifies SHA-256, and configures the application launcher. npm must allow lifecycle scripts; add --foreground-scripts to see installation progress. macOS installs to ~/Applications; Windows installs to %LOCALAPPDATA%\Programs\Codex Account Switcher and adds a Start menu shortcut.
For a one-command installation or update without a global npm package:
npx @liuzhao1225/codex-account-switcher@latestRun codex-account-switcher update to update, open to launch, or uninstall to remove the app while keeping account data. Quit the app before updating. Local npm i installs only the CLI; run its install command to install the desktop app. --dir <parent-directory> selects a custom location.
Every install/update reads GitHub latest. Future native releases do not require a new npm package. The npm installer version is independent of the app version. The original codex-account-switcher-download entry remains available for links. See the installer guide for installation-script settings, custom directories and uninstall behavior.
| Feature | What it gives you |
|---|---|
| No-code setup | Add accounts through the normal browser sign-in flow, with no Terminal commands or config files. |
| Native account controls | Use the macOS menu bar or a Windows window with a system-tray entry point. |
| Completed Desktop handoff | Select and confirm an account, then let the app close, switch, verify, and reopen Codex Desktop. |
| Local account storage | Keep saved account data on your computer without an app-owned proxy or cloud account service. |
| Usage at a glance | Check weekly allowance in account rows by default, or enable the exact 300-minute (5-hour) service window and reset time in Settings. The optional row is off by default. Choose whether the menu bar or Windows tray shows the 5-hour or weekly remaining percentage; it defaults to 5-hour usage. |
| Reset count and plan date | See the saved subscription date on the left and available rate-limit reset count on the right of one compact row. Dates use YYYY-MM-DD; hover over a date for its login-snapshot source and check time. Missing values remain unknown. |
| Extra-reset forecast (macOS) | A single menu bar row shows a reset icon, the Tibo reset forecast label, two compact 24/48-hour probability boxes and an external-link arrow using the independent site’s experimental forecast. Click the entry to open codex-reset.com for announcements, history and details. These estimates are not an OpenAI reset schedule or proof that a reset reached your account. |
| Native apps on both platforms | SwiftUI on macOS and WPF on Windows, with English and Simplified Chinese interfaces. |
- Download for your platform: install the macOS DMG or run the portable Windows EXE.
- Add each account once: complete the familiar browser sign-in; the app derives the account name from the login identity.
- Choose and continue: select an account in the app, confirm, and let the app reopen Codex Desktop.
Existing terminal processes keep their current runtime state. Start a new Codex CLI process to use the newly selected account.
The product is being shaped for ordinary desktop users. Join the public discussion, “What still feels too technical in a Codex account switcher for Mac?”, and tell us whether the friction is downloading the app, adding an account, seeing the active account, or understanding the switch confirmation.
Comparisons with other account switchers are welcome. Please describe the workflow you actually use and the step that creates friction; never share credentials, account files, email addresses, or private screenshots.
- Saved account data stays in user-only local directories on your computer.
- The macOS Tibo outlook makes periodic public GET requests to codex-reset.com while the app runs. It sends no saved account details or credentials. If the public data is missing, stale, or inconsistent, the forecast appears unavailable.
- Each saved profile contains a complete, reusable
auth.jsoncredential snapshot. macOS uses mode0700for profile directories and0600for credentials; Windows uses current-user ACLs. Both platforms replace credential files atomically. - Local file permissions define the current security boundary. User backups, filesystem snapshots, cloud backup tools, endpoint software, and other processes with access to the user's files may copy the saved credential snapshots.
- Removing an account performs ordinary filesystem deletion. The app makes no secure-erasure guarantee for SSD storage, APFS snapshots, or backups.
- Both platforms use file-backed credential storage; macOS does not store profile credentials in Keychain.
- The product runs without its own account proxy, traffic router, or cloud account service.
- Every account is selected and confirmed by the user; the app does not rotate accounts automatically.
- The project is independent open-source software and is not affiliated with or endorsed by OpenAI.
- The current account appears through a row highlight inside the popover.
- Persisted 5-hour and weekly usage remains visible while fresh data loads; the 5-hour row appears only when enabled and the service provides an exact 300-minute window.
- Reset counts come from the usage response. Subscription dates come from saved login credentials and are not live billing or renewal confirmations; the row tooltip gives the snapshot check time.
- Every switch stops immediately on the first reported error.
- If target verification or the registry commit fails after credential activation, the app restores the just-saved original profile credential while preserving the original error. A restoration error is reported alongside it.
- General rollback state machines, retries, credential backup files, recovery journals, startup recovery, and policy-based routing stay outside the product scope.
macOS and Windows share one version and v<version> tag. Every release rebuilds, tests, and packages both platforms from the same commit, then publishes once both pass. The current MVP reuses neither older packages nor build caches across runs.
| Platform | Package | Updates |
|---|---|---|
| macOS | Signed, notarized DMG and SHA-256 checksum | Sparkle checks, downloads, and installs updates |
| Windows | Portable EXE and SHA-256 checksum; EXE currently unsigned | Checks for a new version and opens its download page for manual replacement |
Every Release includes both platform downloads, uses the version as its title, and lists only changes in its notes. See release management and Windows development.
Both apps share a Swift 6.2 account core, with native SwiftUI on macOS and WPF on Windows. The commands below build macOS; see Windows development for Windows.
git clone https://github.com/liuzhao1225/codex-account-switcher.git
cd codex-account-switcher
swift build
swift test
./scripts/run-core-checks.shCreate a local macOS app bundle:
./scripts/package-local-app.shThe bundle is written to .build/release/Codex Account Switcher.app.
Push a matching v* tag from a tested main commit to publish. The version in CITATION.cff, the Mac packaging default, the Codex client, and windows/Directory.Build.props must agree. Ordinary main pushes run CI only.
GitHub Actions tests and packages both platforms from the same tag. The publish job waits for both, verifies checksums and the signed Mac feed, uploads the DMG and EXE to a draft, then publishes one Latest release. macOS retains Developer ID signing, Apple notarization and Sparkle updates. Release notes list only changes. See release management.
Sources/CodexAccountSwitcher/ Native macOS SwiftUI app and system adapters
Sources/SwitcherCore/ Shared account state, switching, usage, RPC and localization
Sources/SwitcherHost/ Private stdio host for the Windows native client
Sources/SwitcherPlatform/ Windows filesystem permissions and atomic replacement
windows/ Native Windows tray UI, adapters, checks and packaging
Tests/ Swift tests for storage, client, switching, and login items
Checks/ Standalone core behavior checks
scripts/ Local packaging and verification commands
docs/ Product, system, implementation, and testing documentation
prototype/ Early browser-based visual prototype
Use GitHub Discussions for workflow questions, product ideas, and comparisons. Use GitHub Issues for bug reports and focused feature proposals. Run the following checks before opening a pull request:
The website records the project's privacy model, official contact channels, and responsible-use terms. Do not post secrets or private account data in public support channels.
swift test
./scripts/run-core-checks.shKeep real auth.json files, account names, email addresses, API credentials, and private screenshots out of issues, commits, test fixtures, and documentation.
- Documentation index
- Official project identity and primary sources
- Product positioning and messaging
- Product decisions
- Product requirements
- System design
- Implementation plan
- Testing
- LLM-readable project index
No. Install the app, add each account through a normal browser sign-in, then choose in the app. There are no Terminal commands or config files to edit.
Add each authorized account once. Finish or stop active Desktop tasks, then select the account in the app and confirm. If Desktop displays its quit dialog, complete it. The app waits up to 30 seconds for normal exit, completes the handoff, verifies the selected account, and reopens Desktop. If Desktop cannot exit, switching stops before the account changes.
You choose and confirm every account. The app then completes the Codex Desktop handoff automatically. It does not rotate accounts in the background or switch based on usage thresholds.
Saved account data stays in user-only local folders: ~/Library/Application Support/Codex Account Switcher/ on macOS and %LOCALAPPDATA%\Codex Account Switcher\ on Windows. The app has no account proxy, traffic router, or cloud profile service.
The app supports Apple Silicon Macs running macOS 14+ and Windows 10/11 x64. Both downloads are available in the same latest Release.
No. It is an independent MIT-licensed open-source project for macOS and Windows.
Codex Account Switcher is released under the MIT License.
macOS checks hourly through Sparkle. A blue menu-bar dot and an update row above the popover footer indicate a new version; clicking Update starts the framework’s download, installation, and Switcher relaunch flow. Settings provides a manual check and automatic-check toggle. Account operations defer the final relaunch.
Publishing requires the SPARKLE_PRIVATE_KEY repository secret and a signed appcast.xml release asset. The installed 0.1.6 has no updater and needs one manual upgrade. The release workflow publishes the signed update feed alongside the notarized DMG.
See the whole-project ablation report for retained mechanisms, repairs, and open design gaps.
Windows checks the unified Release for a new version and opens its download page; download and replace the EXE manually. Windows 0.1.11 preview users need one manual upgrade to 0.1.12.
