跳转到内容

HTTP 401 超出256K上下文限制 - CC Switch & Codex

Quick fix

在 Codex 的 config.toml 中调低 AUTO COMPACT 触发阈值,避免请求体实际 Token 数超过上游 Kimi 的 256K 限制。

报错原文
unexpected status 401 Unauthorized: CC Switch local proxy failed while handling Codex endpoint /responses. Provider: Kimi; model: kimi-k2.7-code; upstream_status: HTTP 401; cause: k3-256k supports only 256K context., url: http://127.0.0.1:15721/v1/responses

当 Codex 检测到上下文长度接近窗口上限(通常为 90%-95%)时,会自动向 /responses/compact 接口发送压缩请求。但在 cc-switch 3.18.0 中,该请求被直接透传至上游 Kimi 的 /chat/completions 接口,而该接口并不支持上下文压缩功能。一旦请求体中的实际 Token 数量(包含 system prompt、工具定义、MCP schema 及历史重建内容等)超过 Kimi 套餐允许的 256K 限制,上游便会直接返回 HTTP 401 错误。此外,Codex UI 显示的已使用比例仅为当前会话可见上下文的估算值,实际网络请求体积往往更大,导致压缩机制未能及时生效。

  1. 打开 Codex 配置文件,定位到自动压缩相关设置并调低触发阈值。

    config.toml
    auto_compact_threshold = 200000
  2. 检查 cc-switch 路由配置,确认映射到 Kimi 的模型名是否为标准的 k3 或 k3-coding 256K 档位,避免误用触发 1M 限制的别名。

  3. 若启用了 MCP 工具或会话历史同步,建议临时关闭非必要工具或新建空会话测试,以排除额外字段导致的 Token 超限。

  4. 查看 cc-switch 代理日志,核对实际发送给上游的 model 字段与请求体大小,验证调整后的效果。

ToolCodex
Version3.18.0
PlatformsWindows
为什么 UI 显示只用了 23% 就会报 401 错误?
UI 仅统计当前对话窗口的文本 Token,但实际发往上游的请求还包含 system/developer prompt、工具定义、MCP schema、reasoning 字段及历史重建数据。这些隐藏开销会迅速消耗额度,导致实际请求体积远超 UI 显示值。
cc-switch 为什么不自己处理 compact 请求?
当前版本 cc-switch 尚未内置对 /responses/compact 的本地解析与压缩逻辑,默认将其作为标准聊天请求转发给上游 LLM。上游接口不支持该操作且受限于套餐上下文上限,因此直接拒绝并返回 401。
升级 Kimi 套餐到 1M 能解决吗?
可以绕过此报错,但并非根本解决方案。建议优先通过降低 Codex 的自动压缩阈值来适配当前 256K 套餐,既能节省费用,又能保持请求稳定。

这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。