Masaka · Codex Multiple Environments 是一个独立的开源命令行账户管理工具,用于在官方 Codex CLI 中切换多个隔离的 ChatGPT 账户与 ChatGPT 工作区,而无需反复退出登录与重新登录。它不替代 Codex UI,也不是另一个智能体 CLI;用户通过 masaka 命令添加、检查、续期、删除或选择 Profile,然后照常运行原生 codex 命令。
主要用途:
- 同时保持 Personal、Business 和 Enterprise 工作区处于登录状态。
- 即使多个 ChatGPT 账户共享同一工作区名称,也能彼此隔离。
- 检查每个 Profile 的认证状态、令牌活动、5 小时/周配额窗口、重置时间以及可用的速率限制重置卡。
- 通过 /use 选择下一个原生 Codex 进程使用的身份。
- 续期某个 Profile,而不注销或使其他 Profile 失效。
- 当某 Profile 正在使用时,阻止并发重新认证。
主要能力:
- 每个 Profile 恰好代表一个(ChatGPT 账户,ChatGPT 工作区)组合,拥有独立的 CODEX_HOME。Codex 继续负责官方浏览器登录、令牌刷新和凭据文件。
- 提供 shell 集成,使普通 codex 命令也能使用 Profile 选择。
- 提供可选的热切换本地 Proxy:在 Apple Silicon macOS 上通过一次性引导流程安装与版本及 SHA-256 绑定的代理运行时、按用户 launchd 守护进程,并启用 Proxy 模式。
- /auto true 为默认路由策略:粘性路由以保持提示缓存局部性,仅当活动账户的 5 小时窗口剩余 5% 或更少、不可用或处于冷却时切换;自动优先级为 Pro → Business/Team → 其他计划,同计划组内剩余容量多者优先。可用 /order 指定显式顺序。
- 提供 /usage 报告服务器权威的 availableCount;卡片详情行可能被截断或缺失,因此计数可能大于显示行数。
使用方式:
- 要求:macOS 或 Linux、Node.js 22+、Python 3 以及官方 Codex CLI。
- 打开 masaka 来添加、检查、续期、删除或选择 Profile,然后正常运行原生 codex 命令。
- shell 集成:在 ~/.zshrc(Bash 使用 ~/.bashrc)中加入集成行以启用普通 codex 命令的 Profile 选择。Masaka 只打印集成内容,绝不自动编辑 shell 文件。
- 如果之前用 codex 别名设置默认参数,先把这些参数移入数组,再放置集成行,然后照常启动 Codex。
- 每个斜杠命令都有终端形式,例如 masaka status 或 masaka use 2。
- 可选 Proxy 引导:在 Apple Silicon macOS 上运行一次性引导流程,下载并安装按用户守护进程,启用 Proxy 模式;初次设置后重启现有 Codex 客户端一次。此后 /use 会改变其下一个请求的账户/工作区路由,而不中断已在进行的响应。
适用场景:
- 需要在个人、团队或企业工作区之间频繁切换的开发者。
- 希望在多个 ChatGPT 账户之间保持隔离,同时继续使用官方 Codex CLI 的用户。
- 需要查看各账户配额窗口、重置时间与重置卡的使用者。
- 需要在 macOS 或 Linux 上以命令行方式管理 Codex 身份的开发者。
限制与安全说明:
- 仅支持 macOS 或 Linux,要求 Node.js 22+、Python 3 和官方 Codex CLI。
- 直接模式下,/use 只影响未来的 Codex 进程;Proxy 模式下可路由已运行客户端的下一个请求,但进行中的响应仍留在原账户。
- 全局 ~/.codex/auth.json 永不被复制、链接或替换。
- Profile 凭据必须是常规文件,不能是符号链接或硬链接。
- Proxy 模式支持多个原生 Codex 会话,因为只有守护进程负责 OAuth 刷新;直接模式每个 Profile 允许一个受管会话,续期和删除也需要该 Profile 的独占锁。
- Profile 目录权限为 0700;元数据和凭据文件在支持 POSIX 权限的平台上为 0600。
- Masaka 仅在 ~/.config/cx/cx-state.json 存储显示元数据;机密保留在 Codex 拥有的 ~/.codex-workspaces/profiles/ 下。
- 可选运行时为 CodexMulti 的 MIT 许可代理,固定为 v0.2.15 并在解压前进行 SHA-256 校验。
- 设计上不添加额外的加密层;当 cli_auth_credentials_store="file" 时,Codex 将凭据存于 Profile 的 CODEX_HOME 下的 auth.json,应视为密码对待。
- 若通过 Proxy 连接,使用 /proxy off 会等待进行中的响应,停止守护进程并把令牌刷新所有权交回直接模式;需重启曾通过 Proxy 连接的客户端,以防止两个进程刷新同一令牌。
- 该工具由 MASAKA AI 独立开发,非 OpenAI 官方产品,也未获 OpenAI 认可。
- 使用 Apache-2.0 许可;安全报告见 SECURITY.md。