Multi-account profiles for the Codex CLI. Official Codex stays untouched; each profile gets separate auth/state/cache/logs, and only sessions are shared.
git clone https://github.com/muzahidulislamhadi/codex-multi-account.git
cd codex-multi-account
./start-multi-codex.sh
source ~/.bashrcDo not use sudo.
# create/open accounts
codex as account1
codex as account1 login
codex as account2 login
# use existing accounts
codex account1
codex account2 login
codex account2 resume
codex account2 exec "summarize this repo"
# default account
codex default
codex default account2
codex
codex login
codex resume
# list / inspect / remove
codex accounts
codex account-home account1
codex shared-sessions
codex remove-account account2
codex remove-account account1 --force
# locks
codex locks
codex clear-stale-locks
# wrapper info
codex help
codex realThe first profile you create becomes the default automatically.
Use as to create a profile:
codex as account1 loginAfter it exists, call it directly:
codex account1
codex account1 logincodex as account1 without login still creates and saves the profile. You can log in later:
codex account1 loginDefault profile:
codex login
codex logout
codex resume
codex exec "..."
codex review
codex mcp
codex plugin
codex update
codex --versionNamed profile:
codex account1 login
codex account1 logout
codex account1 resume
codex account1 exec "..."
codex account1 review
codex account1 mcp
codex account1 plugin
codex account1 --version- Profiles live in
~/.codex-accounts/<profile>. - Shared sessions live in
~/.codex-shared/sessions. remove-accountdeletes only that profile directory; it never deletes shared sessions.- Removing the default profile requires
--forceor setting another default first. - Explicit
resume <session-id>is locked so two accounts cannot open the same session ID at once. - Explicit
resume <session-id>also syncs matching per-thread state, including goal metadata, from the freshest profile DB before Codex starts. Target DB backups are kept in~/.codex-shared/state-sync-backups. resume --lastand picker mode are not pre-locked because the selected session is unknown before Codex starts.- Cursor/VS Code terminals run Codex with
CODEX_TUI_DISABLE_KEYBOARD_ENHANCEMENT=1to avoid leaked CSI-u key-release sequences after quitting. - Profile names may contain letters, numbers, dot, underscore, and dash.
./clean-multi-codex.shKeep the rollback backup:
CODEX_MULTI_KEEP_BACKUP=1 ./clean-multi-codex.sh./scripts/verify.sh