疑难问题
本页面收录不容易从报错信息直接判断原因的问题,以及对应的处理方法。
1. 长上下文没有自动压缩,导致请求变慢和费用增加
问题表现
当 Codex 会话持续时间很长,聊天记录、工具输出和文件内容会不断累积。如果没有及时压缩上下文,后续请求可能携带大量历史内容发送到模型服务,常见表现包括:
- 新消息发送后等待时间明显变长。
- 相同任务消耗的输入 token 持续增加。
- 长上下文进入更高的计费区间,产生明显高于普通会话的费用。
- 上下文接近上限后,请求失败或会话无法继续。
解决方法
打开 Codex 配置文件 config.toml,加入以下两行:
model_auto_compact_token_limit = 180000
model_context_window = 272000这两行应该放在哪里
Windows 和 macOS 的放置规则一样:这两行都要放在 config.toml 的顶层配置区,也就是文件开头的全局配置部分。
建议放在 model、model_provider 等模型基础配置后面,并且必须放在任何方括号分组之前,例如 [model_providers.xxx]、[projects...]、[profiles...] 之前。
推荐放置方式:
model = "gpt-6-astra"
model_provider = "sequenceq"
model_auto_compact_token_limit = 180000
model_context_window = 272000
[model_providers.sequenceq]
base_url = "https://api.sequenceq.com/v1"
name = "SeqeuenceQ API"
wire_api = "responses"
requires_openai_auth = true如果你的 config.toml 里已经有这两行,就直接把值改成上面的值,不需要重复添加。如果你的 model、model_provider 或服务商配置与示例不同,保留原有值,只新增或修改这两个上下文配置即可。
Windows 如何添加
- 打开 Codex 配置文件:
%USERPROFILE%\.codex\config.toml也可以在资源管理器地址栏输入:
%USERPROFILE%\.codex然后打开里面的 config.toml。
- 在文件开头找到 model、model_provider 等配置。
- 把下面两行放在 model、model_provider 后面,并且放在任何 [model_providers.xxx]、[projects...]、[profiles...] 分组之前:
model_auto_compact_token_limit = 180000
model_context_window = 272000- 保存文件,完全退出 Codex CLI 或 Codex 桌面版,然后重新启动。
macOS 如何添加
- 打开 Codex 配置文件:
~/.codex/config.toml可以在终端中执行:
open -e ~/.codex/config.toml如果文件不存在,可以先创建:
mkdir -p ~/.codex
touch ~/.codex/config.toml
open -e ~/.codex/config.toml- 在文件开头找到 model、model_provider 等配置。
- 把下面两行放在 model、model_provider 后面,并且放在任何 [model_providers.xxx]、[projects...]、[profiles...] 分组之前:
model_auto_compact_token_limit = 180000
model_context_window = 272000- 保存文件,完全退出 Codex CLI 或 Codex 桌面版,然后重新启动。
IMPORTANT
不要把这两行写到 [model_providers.xxx] 下面。写在分组下面时,它们会被当成该分组的配置项,可能不会作为 Codex 的全局上下文设置生效。
错误放置示例:
[model_providers.sequenceq]
base_url = "https://api.sequenceq.com/v1"
name = "SeqeuenceQ API"
wire_api = "responses"
model_auto_compact_token_limit = 180000
model_context_window = 272000为什么设置成这两个值
- model_auto_compact_token_limit = 180000:当会话上下文接近 18 万 token 时,让 Codex 提前压缩较早的对话和工具结果,避免每次请求都继续携带完整的长历史。
- model_context_window = 272000:把 Codex 可使用的上下文窗口设置为 27.2 万 token,防止客户端按过大的窗口持续堆积内容。
- 两个值之间保留约 9.2 万 token 的余量,可供新输入、工具结果、模型输出和压缩过程使用,降低到达窗口上限后才开始处理的风险。
这组设置的目的不是让模型使用更长的上下文,而是让压缩更早发生,在保留足够工作空间的同时减少超长请求,从而改善响应速度并控制输入 token 成本。
修改后如何确认
- 保存 config.toml。
- 完全退出正在运行的 Codex CLI 和 Codex 桌面版。
- 重新启动 Codex。
- 建议新建一个会话继续工作,避免旧会话已经累积的大量历史继续影响请求。
- 长时间使用后观察响应速度和 token 消耗是否恢复正常。
如果修改后仍然没有自动压缩,请检查配置项是否拼写正确,以及它们是否误放在某个 [分组] 下。
2. 新版 Codex 报 unexpected status 401 Unauthorized: Invalid token
问题表现
新版 Codex 使用自定义接口时,如果认证配置不完整,可能会出现类似下面的报错:
unexpected status 401 Unauthorized: Invalid token (request id:a2e65fc4fd12774b-AMS
202608210258065367612608268d9d62YiBhBxi), url: https://api.sequenceq.com/v1/responses, cf-ray上面是完整报错示例。实际报错里的 request id、url、cf-ray 等内容每次请求可能不同,url 也可能是本地代理地址或其他第三方接口地址,不需要用某个固定 url 判断。
升级新版 Codex 后出现类似 401 Unauthorized: Invalid token 时,优先检查当前系统的配置是否缺少 requires_openai_auth = true。
原因说明
新版 Codex 对认证方式的声明要求更明确。使用 OpenAI 兼容接口,或通过本地代理转发到 OpenAI 兼容接口时,需要配置 requires_openai_auth = true,告诉 Codex 按 OpenAI 兼容方式读取并发送认证信息。
Windows 和 macOS 都需要这个配置,但放置位置不同:
| 系统 | requires_openai_auth 的位置 |
|---|---|
| Windows | 当前 [model_providers.xxx] provider 分组内 |
| macOS | config.toml 顶层,与 model_provider、openai_base_url 同级 |
Windows 如何添加
- 打开配置文件:
%USERPROFILE%\.codex\config.toml- 查看文件顶部的 model_provider。例如:
model_provider = "sequenceq"这表示当前 provider 分组是 [model_providers.sequenceq]。
- 在对应的 provider 分组内加入 requires_openai_auth = true:
model = "gpt-6-astra"
model_provider = "sequenceq"
[model_providers.sequenceq]
base_url = "https://api.sequenceq.com/v1"
name = "SeqeuenceQ API"
wire_api = "responses"
requires_openai_auth = true如果 provider 名称或请求地址不同,保留自己的名称和地址,只把 requires_openai_auth = true 加到当前 model_provider 对应的分组内。
macOS 如何添加
- 打开配置文件:
~/.codex/config.toml可以在终端中执行:
open -e ~/.codex/config.toml- 在 config.toml 顶层加入 requires_openai_auth = true。SeqeuenceQ 的新版 macOS 配置示例如下:
model_provider = "openai"
openai_base_url = "https://api.sequenceq.com/v1"
model = "gpt-6-astra"
requires_openai_auth = true
generate_memories = false
background_agents = falsemacOS 的 requires_openai_auth = true 与 model_provider、openai_base_url 同级。不要放进 [model_providers.sequenceq];这份 macOS 配置不使用 Windows 的 provider 分组结构。
如果请求经过本地代理,只需要保留实际使用的 openai_base_url,requires_openai_auth = true 的顶层位置不变。
IMPORTANT
requires_openai_auth 与长上下文配置的放置规则如下:
- Windows:model_auto_compact_token_limit、model_context_window 在顶层;requires_openai_auth 在当前 provider 分组内。
- macOS:三个配置都在 config.toml 顶层。
修改后如何确认
- 保存 config.toml。
- 完全退出正在运行的 Codex CLI 和 Codex 桌面版。
- 重新启动 Codex。
- 新建会话并再次发送请求,确认不再出现 401 Unauthorized: Invalid token。
如果仍然报 401,请继续检查 API Key 是否复制完整、是否已失效、当前系统的认证文件是否正确,以及请求实际使用的配置是否就是刚刚修改的 config.toml。
