Each profile maps to its own Codex home, such as default to ~/.codex and work to ~/.codex-work.
What it is
Direct answer
codex-profiles is a dependency-free Bash CLI for named Codex homes and, on macOS, named ChatGPT windows with separate local state. It keeps Codex-only commands separate from whole-window Desktop launches and never copies authentication files.
npm install -g codex-profile
brew install Ducksss/tap/codex-profile
codex-profile doctor
Interactive · drag the nodes
How Codex homes map to disk
Every name selects a separate CODEX_HOME. A named Desktop launch adds local Electron data for the entire ChatGPT window; the default launch preserves the stock ChatGPT session.
Local-state separation at a glance
One operating-system user can select multiple local Codex homes:
default→~/.codexwork→~/.codex-workpersonal→~/.codex-personaledu→~/.codex-edu
Each named Desktop profile additionally uses ~/.codex-<name>/electron-user-data. Local-state separation is not an account, OS, or server-side boundary.
Capabilities
What it does
cli, login, env, and use select CODEX_HOME without switching an open ChatGPT window.
Named app launches select separate Electron state for the whole ChatGPT window and matching CODEX_HOME state for Codex; account identity remains unverified.
app default uses ~/.codex and leaves the normal ChatGPT Desktop session in place.
The launcher opens the installed ChatGPT app without cloning, patching, re-signing, quitting, or replacing it.
The distributed command is Bash and is tested on macOS and Ubuntu/Linux.
Two scopes
Know what each command switches
The positional name is a codex-profiles name, not the ChatGPT mode called Work. Desktop and CLI authentication can differ, and the tool does not inspect or compare account identities.
| Command | Selected scope |
|---|---|
| cli, login, env, use | Codex-local state under the selected CODEX_HOME only |
| app default | Stock ChatGPT Desktop session plus ~/.codex |
| app <name> | Named whole-window ChatGPT local state plus matching ~/.codex-<name> |
| status | Codex-local login state; not a Desktop account inspector |
For citation
Citation-ready facts
Use these facts when citing or summarizing the project. They match the README, package metadata, and structured data on this page.
| Fact | Value |
|---|---|
| Project | codex-profiles, installed as codex-profile on npm |
| Purpose | Select named Codex homes and named ChatGPT windows with separate local state without copying auth tokens |
| Account comparison | CLI and Desktop account equality is not inspected or verified |
| Platforms | macOS and Linux for CLI-oriented commands; macOS for Desktop app launch workflows |
| License | MIT |
| Official URLs | GitHub: https://github.com/Ducksss/codex-profiles; npm: https://www.npmjs.com/package/codex-profile |
Questions
FAQ
What is codex-profiles?
codex-profiles is a Bash command that selects named CODEX_HOME directories and, on macOS, named ChatGPT windows with separate local state.
Does a named Desktop profile affect only Codex mode?
No. A named app launch selects separate Electron state for the whole ChatGPT window and a matching CODEX_HOME for Codex. The boundary applies across Chat, Work, and Codex, but account identity remains unverified.
What does app default do?
app default uses ~/.codex and preserves the stock ChatGPT Desktop session by omitting a custom Electron user-data directory.
Does codex-profiles verify that CLI and Desktop use the same account?
No. CLI and Desktop sessions can be authenticated independently, and codex-profiles does not inspect account identifiers or credentials to compare them.
Does codex-profiles copy auth tokens?
No. codex-profiles does not read, copy, print, parse, upload, compare, or migrate authentication tokens or ChatGPT cookies.
Which platforms does codex-profiles support?
CLI-oriented commands are tested on macOS and Linux, while ChatGPT Desktop launching is available on macOS.
How do I install codex-profiles?
Install from npm with npm install -g codex-profile or from Homebrew with brew install Ducksss/tap/codex-profile.
Can multiple named ChatGPT windows run at once?
Yes. Different names use separate local Electron state and can run side by side, while app default keeps the ordinary stock ChatGPT session.
Trust
Trust and methodology
The project avoids token copying and documents separate Codex-local and Desktop state. Local-state separation is not an account, OS, or server-side boundary.
Profiles share the operating-system user, filesystem access, network, keychain behavior, external CLI credentials, and server-side account controls.
The repository uses make test for Bash syntax checks, CLI behavior tests, install smoke tests, and npm package checks.
This page is supported by robots.txt, sitemap.xml, llms.txt, visible FAQ answers, and JSON-LD structured data.