Skip to content
github-actions[bot] edited this page Sep 30, 2026 · 12 revisions

FAQ

Does codex-switch support keyring-backed Codex credentials?

No, and this is permanent by design. OS keyrings provide no locking or atomic-replace semantics, and Codex's keyring entry format is an undocumented internal layout that has already changed between versions and platforms. Codex must use cli_auth_credentials_store = "file"; if it previously used a keyring store, switch the setting and log in again. See why only the file store is supported.

Does switching affect an already-running Codex session?

Partly. Codex 0.157 and newer runs interactive sessions through a shared app-server daemon that loads authentication once; codex-switch restarts that daemon after a switch or login, so sessions attached to it reconnect on the new account (a turn that was in progress is interrupted). codex exec and codex --no-daemon sessions read authentication at startup and keep their account: restart those, or use codex-switch launch for a new process.

Where is account data stored?

Saved profiles and application state default to ~/.codex-switch; the live Codex file defaults to ~/.codex/auth.json. Custom API providers live under ~/.codex-switch/providers/<alias>/ (provider.toml, generated models.json). Provider launch selects a native cs-*.config.toml profile in the shared $CODEX_HOME, retaining live MCP servers, skills, plugins, hooks and sessions. The default ChatGPT configuration and authentication stay intact. CODEX_SWITCH_HOME and CODEX_HOME relocate application state and Codex state independently.

Can I point Codex at DeepSeek (or another Chat Completions API) directly?

No. Current Codex only accepts wire_api = "responses". DeepSeek's official API is Chat Completions. Save an OpenRouter (or other Responses-capable gateway) provider and set --model to that gateway's slug. See Custom API providers.

Does codex-switch use switch a custom API provider?

No. use only stages a ChatGPT auth.json for the next Codex process. A provider is applied only by codex-switch launch <alias>, for that one Codex invocation. A later bare codex run is unchanged.

Is a custom provider's API key put on the command line?

No. provider add reads it from a hidden prompt or --api-key-stdin. Launch injects it into the Codex child environment under a codex-switch-owned variable. list, show, JSON, and the TUI print a redacted form only.

Is profile deletion permanent?

No. Inactive profiles are archived under deleted-profiles/. The active profile cannot be deleted.

Does codex-switch run a background daemon?

No. The binary performs one operation and exits. list --force, warmup, use, and launch are available as one-time CLI operations; the TUI t key only enables automatic refresh for the current session. If you want periodic work, install and own a user-level OS task yourself; see Optional OS scheduling. Upgrading does not remove tasks or services created by an older release.

What do the version numbers mean?

Releases use calendar versions in the form YYYYMMDD.N.0. Rolling dev builds end in -dev. Calendar versions are a normal upgrade from the earlier 0.0.x series; see Updating.

How do I test the next release?

Use the rolling dev channel only when you are prepared to test prerelease behavior. Follow Testing development releases for installation, verification, rollback, and issue-reporting steps.

Are release binaries independently signed?

Not currently. Archives are checked against SHA256 files from the same GitHub Release, which detects corruption but shares the Release trust domain.

Where should documentation fixes go?

These Wiki pages are generated from docs/wiki/ on the dev branch. Open a pull request against those sources; do not edit the published Wiki directly.

Next steps

Clone this wiki locally