question: Codex 未登录时 Cindy 自定义供应商报错反馈
- Dominant language
- TypeScript
- Stars
- 2.7k
- Forks
- 401
- Avg merge
- 21h 48m
- Merged PRs (30d)
- 776
Description
## 问题描述
同事反馈:在 Codex App 未登录的情况下,使用 Cindy 的自定义 HAOPLAY 供应商创建任务时报错;重新登录 Codex 后,Cindy 恢复正常。
这次使用的是自定义供应商配置,不是明确选择 Cindy 的 OpenAI 订阅连接。
## 实际表现
任务创建后很快失败,失败发生在模型供应商实际请求之前。日志中的关键错误是:
```text
thread/start -32600 failed to load configuration: Your access token could not be refreshed because your refresh token was revoked. Please log out and sign in again.
```
同一时间日志还出现了 `token_revoked`,范围标记为 `system-shared`。重新登录 Codex 后再次重试,任务可以继续运行。
## 用户现场操作与触发条件
1. 在 macOS 上准备 Cindy 0.1.73。
2. 用户描述 Codex App 当时未登录;日志同时表明本机存在共享的、刷新令牌已被撤销的 OAuth 状态。
3. 通过 `haoplay-provisioner-1.4.23.cindy` 插件写入自定义 HAOPLAY 供应商配置,并在 Cindy 中选择该供应商。
4. 使用该供应商创建任务,模型为 `gpt-5.6-terra`。
5. 观察任务启动阶段的 `thread/start` 错误。
6. 用户重新登录 Codex App 后,重试任务恢复正常。
注意:“完全没有 OAuth 凭证”和“残留失效 OAuth 凭证”不是同一条件。不能仅按“退出 Codex App”认定一定复现,也没有证据表明用户曾切换 Cindy 的 OpenAI 订阅开关。
## 隔离复现条件
使用 Codex 0.145.0 的独立 app-server 进行历史版本对照,全部使用临时目录、合成凭证及本地服务:
1. 在临时 `CODEX_HOME` 中放入合成 business 账号的 OAuth 状态,云配置缓存为空。
2. 配置自定义 Responses provider,使用 `env_key`,不要求 `requires_openai_auth`;API Key 和模型地址均指向本地测试服务。
3. 本地云配置接口返回 401,刷新接口返回 `refresh_token_invalidated`,模拟已撤销的刷新令牌。
4. 初始化 app-server 后发送 `thread/start`,观察到同类 `-32600` 错误;此时自定义模型服务尚未收到请求。
5. 对照使用另一个没有 OAuth 凭证的临时目录,自定义 API Key 任务可正常启动。
该对照说明残留失效登录状态与完全未登录的行为不同;并不意味着所有账号、所有配置都必现。0.145.0 仅是此次隔离实验的版本,不能据此认定用户安装包或当前 Desktop 实际使用该版本。
## 时间线(脱敏日志)
- 14:58:18:Cindy 启动,启动日志记录将 `auth.json` 链接到系统 Codex 登录状态(shared、symlink)。
- 15:00:22:创建使用 `cprov-haoplay` 的任务。
- 15:00:24:报告 `token_revoked`、`system-shared`,随后出现 `LAZY_CREATE_FAILED` 和上述 `thread/start -32600` 错误。
- 15:02:28:同一任务重试成功,随后出现共享凭证恢复记录。这与用户描述的重新登录后恢复吻合,但日志本身没有记录用户完整的登录操作。
## 环境
- Cindy:0.1.73
- 平台:macOS
- 供应商:自定义 HAOPLAY
- 模型:`gpt-5.6-terra`
- 原始反馈日志日期:2026-09-09
## 期望行为
自定义供应商应使用其自身配置的 API Key 完成任务。Codex App 的登录状态失效或未登录时,不应导致自定义供应商在启动阶段失败;如果确实需要登录,应明确提示实际需要登录的功能。
## 日志与隐私
正文仅摘录错误与诊断时间线,未在此 issue 上传原始日志、真实 token、账号或授权文件。
Contributor guide
Research direction
Trace the app-server `thread/start` entry point and the shared `auth.json` and token-refresh handling described in the logs. Reproduce the isolated `CODEX_HOME` setup with a revoked refresh token, a custom `env_key` provider, and the local test service; done means the custom provider starts without valid Codex OAuth and login is required only for features that need it.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- electron, typescript
- Domain
- authentication, backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100