由于自己有一个别人5xpro的账号,不过看到gpt学生优惠还是忍不住动手买了(别问我多少钱,我买贵了,而且plus5小时限额路边一条。。。),然后就想着怎么用呢?来回切换简直折磨,而且最怕的是出现短信啥的验证风控,于是让codex帮我解决。我想着是app使用5xpro,然后我codex cli就用另外的账号登录,我感觉这么用起来挺好的,插件配置啥的都是通用的,下面是让ai生成的。
Codex App 与 CLI 双账号隔离
需求
同一台 macOS 上,ChatGPT / Codex App 使用账号 A,Codex CLI 通过 codexb 使用账号 B。
目的
独立保存 B 的配置和登录状态,避免覆盖 A 的配置或让 A 退出登录。
原理
两个入口使用同一个 CLI,通过 CODEX_HOME 选择不同的本地状态目录:
codex → ~/.codex → 账号 A 的默认状态
codexb → ~/.codex-account-b → 账号 B 的独立状态
函数中的环境变量只对本次命令生效。cli_auth_credentials_store = "file" 让 B 的凭据存入独立目录中的 auth.json;配置、会话等本地状态也随目录分开。这是状态目录隔离,不是操作系统用户隔离。
方法
创建 B 的独立目录(若路径已存在,先确认它是普通目录,不是软链接):
mkdir -p "$HOME/.codex-account-b"
chmod 700 "$HOME/.codex-account-b"
在 ~/.codex-account-b/config.toml 中加入以下配置;已有文件只更新这一项:
cli_auth_credentials_store = "file"
在 ~/.zshrc 中添加一次:
codexb() {
CODEX_HOME="$HOME/.codex-account-b" command codex "$@"
}
加载配置并登录,在浏览器中选择账号 B:
source ~/.zshrc
codexb login
chmod 600 "$HOME/.codex-account-b/auth.json"
codexb login status
日常运行 codexb 即使用 B;一次性任务使用 codexb exec "任务描述"。
坑点
不要全局设置 CODEX_HOME:只在函数内设置,避免影响其他入口。
登录入口别用错:B 使用 codexb login,直接执行 codex login/logout 会操作默认目录。
浏览器可能默认选中 A:login status 只显示已登录时,不能证明是 B,需核对授权账号。
不要复制凭据:不复制或软链接 A 的 auth.json,不展示 Token 或认证文件内容。
资源不全隔离:用户级、项目级 skills 可能共享;B 的 MCP、插件配置及外部服务授权需单独核对。
命令或版本不对:找不到 codexb 时执行 source ~/.zshrc;版本异常时检查 command -v codex 和 codexb --version。切换工具若修改 PATH,也会影响它使用的 CLI。