CI 有 OIDC 就用 WIF,不要落盘长期令牌

0.148+ 实验/企业能力。OPENAI_FEDERATION_RULE_ID 和 OPENAI_IDENTITY_TOKEN_FILE 必须成对出现。login/logout 会被拒。

工作区要开通 workload identity。管理员在 Admin Portal 连好规则后,进程里只放这两项:

export OPENAI_FEDERATION_RULE_ID="idpm_..."
export OPENAI_IDENTITY_TOKEN_FILE="/var/run/secrets/openai.com/identity-token"
codex login status   # 应打印 Logged in using workload identity
codex exec "Reply with only: workload identity is working"

规则 ID 不是密钥。令牌文件才是。用绝对路径、目录 0700,放在仓库和可写根之外。托管 Linux 再挡模型读令牌:

[permissions.filesystem]
deny_read = ["/var/run/secrets/openai.com"]

刷新令牌由宿主机进程原子改名写入,不要让 Codex 自己去打 metadata 服务。WIF 变量出现任一把,就不会回退到 API key 或 auth.json;只设一把会报错。交换得到的 OpenAI 令牌只留在内存,不写 auth.json

codex mcp-server 不支持 WIF。原生 Windows 用 elevated 沙箱,否则模型可能读到令牌文件。codex login / logout 在这套环境下会被拒绝。

来源