Codex homes · ChatGPT desktop windows

codex‑profiles

Select named CODEX_HOME directories for Codex and named ChatGPT windows with separate local state — without copying authentication files.

MIT licensed macOS + Linux zero runtime deps v0.7.0

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.

one CODEX_HOME per profile
⚠ one shared ~/.codex — state bleeds between accounts

Local-state separation at a glance

One operating-system user can select multiple local Codex homes:

  • default~/.codex
  • work~/.codex-work
  • personal~/.codex-personal
  • edu~/.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

Local-state separation

Each profile maps to its own Codex home, such as default to ~/.codex and work to ~/.codex-work.

Codex-only commands

cli, login, env, and use select CODEX_HOME without switching an open ChatGPT window.

Whole-window Desktop contexts

Named app launches select separate Electron state for the whole ChatGPT window and matching CODEX_HOME state for Codex; account identity remains unverified.

Stock session preserved

app default uses ~/.codex and leaves the normal ChatGPT Desktop session in place.

Original signed app

The launcher opens the installed ChatGPT app without cloning, patching, re-signing, quitting, or replacing it.

No runtime dependencies

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.

CommandSelected scope
cli, login, env, useCodex-local state under the selected CODEX_HOME only
app defaultStock ChatGPT Desktop session plus ~/.codex
app <name>Named whole-window ChatGPT local state plus matching ~/.codex-<name>
statusCodex-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.

Security boundary

Profiles share the operating-system user, filesystem access, network, keychain behavior, external CLI credentials, and server-side account controls.

Validation

The repository uses make test for Bash syntax checks, CLI behavior tests, install smoke tests, and npm package checks.

Machine-readable docs

This page is supported by robots.txt, sitemap.xml, llms.txt, visible FAQ answers, and JSON-LD structured data.