Self Checks / 自检
Related App / 涉及应用
Codex
Problem or Motivation / 问题或动机
我的使用场景
我有:
- 两个官方 Codex / ChatGPT Plus 账号
- 一个 OpenAI-compatible 中转站
- 日常主要使用 Codex CLI 写代码
我希望可以在这些账号/供应商之间快速切换,而不需要反复退出/登录 Codex,也不希望每次切换账号后,Codex 的本地工作区状态都像被重置一样。
理想状态是:cc-switch 可以支持类似 Codex 多账号 profile group / 账号池 的能力。多个 Codex 账号各自保存认证信息,但共享同一套工作区配置。
当前遇到的问题
现在切换 Codex 账号/provider 之后,之前的一些 Codex 本地状态似乎会丢失或变成另一套,例如:
- 对话/历史记录
- workspace 状态
- 插件或 MCP 配置
- 其他 Codex 设置
我的理解是,Codex 会把认证信息和本地状态都放在 ~/.codex 下面,例如 auth.json、config.toml、history/cache/plugin 相关文件等。
目前 cc-switch 切换 Codex provider 时,似乎不只是切换账号认证,而是会影响整套 Codex 本地状态。因此每个 Codex 账号看起来都像是一个独立的新工作区,而不是只切换当前使用的账号。
期望行为
希望可以把 Codex 账号认证状态 和 Codex 工作区/配置状态 分离。
例如:
也就是说,切换 Codex 账号时,不应该让 Codex 变成一个全新的环境。
可能的功能设计
可以考虑几种方式:
-
Codex 共享配置模式
允许多个 Codex provider 共享同一套非认证配置,只切换认证数据。
-
只切换 auth 的选项
增加类似这样的选项:
Only switch Codex auth, keep config/history/plugins unchanged
-
Codex profile group / 账号组
允许多个 Codex 账号属于同一个组。每个账号有自己的 auth,但共享 workspace/config/plugin 状态。
-
可选的账号组轮询或 failover
这个优先级低于“共享状态”,但如果以后能支持多个 Codex 账号组成账号池也会很有用。
例如:
session 1 -> Codex 账号 A
session 2 -> Codex 账号 B
这里最好是按 session 级别路由,而不是每个 request 都轮询,因为 Codex 工作流可能依赖 session/cache 连续性。
为什么这个需求重要
对于有多个 Codex 账号的用户来说,切换账号最好只是切换“身份/凭据”,而不是切换整套 Codex 本地环境。
现在的行为会让多账号 Codex 使用比较麻烦,因为每次切换账号后,都像进入了另一个全新的 Codex 配置环境。
想请问这个使用方式现在是否已经有推荐做法?如果没有,希望未来可以考虑支持这个功能。目前我只看到在 Oauth 中心有针对 Claude Code的功能。
Proposed Solution / 建议方案
以下是 Codex 生成:## 建议方案
我觉得这个问题可以通过把 Codex provider 的数据拆成两层来解决:
-
认证层
- OAuth token
auth.json
- 账号相关凭据
- 必要时包括 provider 专属的 base URL / model 设置
-
共享工作区层
config.toml
- 历史记录
- workspace 状态
- 插件 / MCP 配置
- 其他 Codex 偏好设置
然后 cc-switch 可以允许多个 Codex provider 加入同一个 共享 profile group / 账号组。
例如:
Codex Group: Personal Codex Pool
共享工作区/配置状态:
~/.codex-shared/personal/
账号:
- Codex 账号 A -> 独立 auth 数据
- Codex 账号 B -> 独立 auth 数据
- 中转站 -> 独立 API key / base_url
当在这个组内切换账号时,cc-switch 只切换认证信息和 provider 专属信息,不改变共享的工作区、历史、插件和 MCP 配置。
一个可能的实现结构是:
~/.cc-switch/codex-profiles/
personal-group/
shared/
config.toml
history.jsonl
plugins/
mcp/
workspace/
accounts/
account-a/
auth.json
provider.toml
account-b/
auth.json
provider.toml
relay/
auth.json or api-key config
provider.toml
激活某个账号时,cc-switch 可以把当前 Codex 环境组装成:
~/.codex/auth.json -> 来自当前选择的账号
~/.codex/config.toml -> 来自共享组
~/.codex/history.jsonl -> 来自共享组
~/.codex/plugins/ -> 来自共享组
~/.codex/mcp/ -> 来自共享组
具体实现可以用复制文件,也可以用 symlink,取决于哪种方式对 Codex 更安全。
也可以先做一个更简单的选项:
[ ] 只切换 auth,保持 Codex 本地状态不变
这个应该是最小可行版本。开启这个模式后,cc-switch 只更新当前账号凭据和 provider endpoint,不触碰用户已有的 Codex 工作区、配置、历史记录、插件和 MCP 状态。
更高级的版本可以再考虑支持 Codex 账号组内的路由策略:
路由模式:
- 手动切换
- Failover
- 按 session 轮询
我认为按 session 轮询会比按 request 轮询更安全,因为 Codex 可能依赖缓存、会话状态或上下文连续性。
Additional Context / 补充信息
No response
Contribution / 参与贡献
Self Checks / 自检
I have read the FAQ section in README.
我已阅读 README 中的常见问题。
I have searched for existing issues, including closed ones.
我已搜索过已有的 Issue,包括已关闭的。
Related App / 涉及应用
Codex
Problem or Motivation / 问题或动机
我的使用场景
我有:
我希望可以在这些账号/供应商之间快速切换,而不需要反复退出/登录 Codex,也不希望每次切换账号后,Codex 的本地工作区状态都像被重置一样。
理想状态是:cc-switch 可以支持类似 Codex 多账号 profile group / 账号池 的能力。多个 Codex 账号各自保存认证信息,但共享同一套工作区配置。
当前遇到的问题
现在切换 Codex 账号/provider 之后,之前的一些 Codex 本地状态似乎会丢失或变成另一套,例如:
我的理解是,Codex 会把认证信息和本地状态都放在
~/.codex下面,例如auth.json、config.toml、history/cache/plugin 相关文件等。目前 cc-switch 切换 Codex provider 时,似乎不只是切换账号认证,而是会影响整套 Codex 本地状态。因此每个 Codex 账号看起来都像是一个独立的新工作区,而不是只切换当前使用的账号。
期望行为
希望可以把 Codex 账号认证状态 和 Codex 工作区/配置状态 分离。
例如:
账号 A 和账号 B 各自有独立的 OAuth/auth 数据
但它们可以共享同一套:
config.toml也就是说,切换 Codex 账号时,不应该让 Codex 变成一个全新的环境。
可能的功能设计
可以考虑几种方式:
Codex 共享配置模式
允许多个 Codex provider 共享同一套非认证配置,只切换认证数据。
只切换 auth 的选项
增加类似这样的选项:
Codex profile group / 账号组
允许多个 Codex 账号属于同一个组。每个账号有自己的 auth,但共享 workspace/config/plugin 状态。
可选的账号组轮询或 failover
这个优先级低于“共享状态”,但如果以后能支持多个 Codex 账号组成账号池也会很有用。
例如:
这里最好是按 session 级别路由,而不是每个 request 都轮询,因为 Codex 工作流可能依赖 session/cache 连续性。
为什么这个需求重要
对于有多个 Codex 账号的用户来说,切换账号最好只是切换“身份/凭据”,而不是切换整套 Codex 本地环境。
现在的行为会让多账号 Codex 使用比较麻烦,因为每次切换账号后,都像进入了另一个全新的 Codex 配置环境。
想请问这个使用方式现在是否已经有推荐做法?如果没有,希望未来可以考虑支持这个功能。目前我只看到在 Oauth 中心有针对 Claude Code的功能。
Proposed Solution / 建议方案
以下是 Codex 生成:## 建议方案
我觉得这个问题可以通过把 Codex provider 的数据拆成两层来解决:
认证层
auth.json共享工作区层
config.toml然后 cc-switch 可以允许多个 Codex provider 加入同一个 共享 profile group / 账号组。
例如:
当在这个组内切换账号时,cc-switch 只切换认证信息和 provider 专属信息,不改变共享的工作区、历史、插件和 MCP 配置。
一个可能的实现结构是:
激活某个账号时,cc-switch 可以把当前 Codex 环境组装成:
具体实现可以用复制文件,也可以用 symlink,取决于哪种方式对 Codex 更安全。
也可以先做一个更简单的选项:
这个应该是最小可行版本。开启这个模式后,cc-switch 只更新当前账号凭据和 provider endpoint,不触碰用户已有的 Codex 工作区、配置、历史记录、插件和 MCP 状态。
更高级的版本可以再考虑支持 Codex 账号组内的路由策略:
我认为按 session 轮询会比按 request 轮询更安全,因为 Codex 可能依赖缓存、会话状态或上下文连续性。
Additional Context / 补充信息
No response
Contribution / 参与贡献
我有兴趣参与开发此功能。