• 佩克兰德

    由于自己有一个别人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。

    主楼
  • Kisaragi_Mio

    之前用的cockpit切换codex账号的,感觉还是很方便的

    #1
  • 佩克兰德

    嗯,我想着应该有现成开源的,后面我再试试,主要用codex app,其他的基本是辅助,codex cli真垃圾。。

    #2
  • 柯欧蕾帕露可

    分享下自己的同思路方案。

    Windows 环境,同样是配置 CODEX_HOME 和 alias。

    选择一种中意的方式打开 pwsh 的 PROFILE 文件

    notepad $PROFILE

    code $PROFILE

    尾部追加```
    function claude {
    & mise.exe exec node@24 -- npx.cmd --yes --prefer-online '@anthropic-ai/claude-code@latest' @args
    }

    function codex {
    & mise.exe exec node@20 -- npx.cmd --yes --prefer-online '@openai/codex@latest' @args
    }

    function codex-work {
    $previousCodexHome = $env:CODEX_HOME
    try {
    $env:CODEX_HOME = Join-Path $env:USERPROFILE '.codex-work'
    [System.IO.Directory]::CreateDirectory($env:CODEX_HOME) | Out-Null
    & mise.exe exec node@20 -- npx.cmd --yes --prefer-online '@openai/codex@latest' @args
    } finally {
    $env:CODEX_HOME = $previousCodexHome
    }
    }
    ```非 mise 环境同理,才不是偷懒不想写了

    #3

发表回复

登录后回复