Feature Description
ACP Codex 目前使用 browser OAuth 进行 ChatGPT 登录。这个流程依赖 Codex 的 local loopback callback,默认回调地址是:
http://localhost:1455/auth/callback
这个流程要求用户打开 OpenAI 授权链接的浏览器,能够访问到运行 Memoh / ACP Codex 环境里的 localhost:1455。在本机运行、本机 Docker 正确映射端口,或配置 SSH port forwarding 的情况下,这个流程可以工作。
但在 remote、headless、hosted,或未正确暴露 loopback callback 的 container/devcontainer 等环境下,浏览器往往无法访问运行 Memoh / ACP Codex 环境里的 localhost:1455。此时 localhost:1455 指向的是浏览器所在环境,而不是 Memoh / ACP Codex 所在环境,导致 OAuth callback 无法到达,登录无法完成。
Codex 官方针对 remote/headless 场景提供了 device code authentication。ACP Codex 支持该流程后,用户无需暴露或转发 localhost:1455 也能完成登录。
Motivation
当前 browser OAuth flow 的核心限制是 local loopback callback。问题不在于 Memoh 和 Codex 是否运行在同一个容器或同一台机器上,而在于用户浏览器是否能够访问到 ACP Codex 等待 OAuth callback 的 localhost:1455。
Device code authentication 可以避开这个限制:后端请求一次性 code,用户在浏览器中输入 code,后端再轮询授权结果。整个过程不依赖 local callback server,也不需要公网 redirect URI。
Proposed Solution
- 增加 ACP Codex device code 登录入口;
- 后端返回 verification URL、user code、过期时间和轮询间隔;
- 前端展示 verification URL 和 user code,并轮询登录状态;
- 后端轮询 Codex/OpenAI device auth 授权结果;
- 成功后复用现有逻辑写入
.codex/config.toml 和 .codex/auth.json;
- 保留现有 browser OAuth flow,继续支持 local callback 可用的环境。
Feature Description
ACP Codex 目前使用 browser OAuth 进行 ChatGPT 登录。这个流程依赖 Codex 的 local loopback callback,默认回调地址是:
http://localhost:1455/auth/callback这个流程要求用户打开 OpenAI 授权链接的浏览器,能够访问到运行 Memoh / ACP Codex 环境里的
localhost:1455。在本机运行、本机 Docker 正确映射端口,或配置 SSH port forwarding 的情况下,这个流程可以工作。但在 remote、headless、hosted,或未正确暴露 loopback callback 的 container/devcontainer 等环境下,浏览器往往无法访问运行 Memoh / ACP Codex 环境里的
localhost:1455。此时localhost:1455指向的是浏览器所在环境,而不是 Memoh / ACP Codex 所在环境,导致 OAuth callback 无法到达,登录无法完成。Codex 官方针对 remote/headless 场景提供了 device code authentication。ACP Codex 支持该流程后,用户无需暴露或转发
localhost:1455也能完成登录。Motivation
当前 browser OAuth flow 的核心限制是 local loopback callback。问题不在于 Memoh 和 Codex 是否运行在同一个容器或同一台机器上,而在于用户浏览器是否能够访问到 ACP Codex 等待 OAuth callback 的
localhost:1455。Device code authentication 可以避开这个限制:后端请求一次性 code,用户在浏览器中输入 code,后端再轮询授权结果。整个过程不依赖 local callback server,也不需要公网 redirect URI。
Proposed Solution
.codex/config.toml和.codex/auth.json;