登录缓存用 cli_auth_credentials_store,不要和 exec --ephemeral 抄混

file 写 auth.json;keyring 走系统钥匙串;auto 失败才回文件;ephemeral 只在当前进程内存。这不是会话 rollout 开关。

把登录缓存放哪,写在用户 config 顶层,任何 [table] 之前:

cli_auth_credentials_store = "keyring"

官方四种值:

  • file:写 CODEX_HOME/auth.json(默认家目录是 ~/.codex)。这是常见默认。
  • keyring:只走操作系统凭据库,不可用就失败。
  • auto:钥匙串可用就用,否则回退到 auth.json
  • ephemeral:只留在当前进程内存,不落盘。

不是 codex exec --ephemeral。后者管会话 rollout 写不写盘;登录态仍按上面的存储走。不要把两条都叫 ephemeral 就当成一件事。

CLI 和 IDE 扩展共用同一份登录缓存。一边 codex logout,另一边下次也要重新登录。ChatGPT 会话在使用中会自动刷新,所以活跃会话通常不必每天再走浏览器。

无头机拷 auth.json 只适用于 file,或 auto 已经回退到文件。keyring / ephemeral 没有这份可拷文件。要拷贝就先在有浏览器的机器上改成 filecodex login,或改用 --device-auth / 按次 CODEX_API_KEY

管理员可用本机 requirements.toml 或 macOS MDM 强制这个键;一旦钉死,用户 config.toml-c 都改不了。云端托管的 requirements 会忽略这项。chatgpt_base_url 同理。

部分 Learn 页还只写三种值,没写 ephemeral。以本机 codex --help 和 developers 配置参考为准。改完重新 codex login

来源