ApiKey在OpenAi 上面是否可以支持 启用模型限制

Author: mymorningCreated Aug 25, 2026Updated Aug 25, 2026

发现目前 ApiKey 中的模型限制,在OpenAi 上面是不生效的...

Image

也让分析下了下:

核心结论:openaiRoutes.js(处理 /openai/* 路由)中完全没有任何 enableModelRestriction 或 restrictedModels 的引用。客户端通过此路由调用 OpenAI 模型时,模型限制功能不会被执行,请求会被原样转发到上游 OpenAI / ChatGPT Codex API。

证据

grep 结果显示(openaiRoutes.js 共 1415 行):

$ grep -c "enableModelRestriction|restrictedModels" openaiRoutes.js 0

而 handleResponses(src/routes/openaiRoutes.js:293)的完整链路里没有模型限制检查:

  • src/routes/openaiRoutes.js:304 读取 apiKeyData
  • src/routes/openaiRoutes.js:306 只校验了 OpenAI 权限(checkOpenAIPermissions)
  • src/routes/openaiRoutes.js:388 调用 getOpenAIAuthToken → 调度器选账户
  • src/routes/openaiRoutes.js:397 对 openai-responses 账户直接转 openaiResponsesRelayService.handleRequest
  • 该中继服务 (src/services/relay/openaiResponsesRelayService.js:68) 同样没有模型限制检查

对比其他路由 — 模型限制只在跨协议路由中实现

┌──────────────────────────────────────────────────────┬──────────────┬──────────────────────────────────────────┐ │ 路由文件 │ 模型限制检查 │ 位置 │ ├──────────────────────────────────────────────────────┼──────────────┼──────────────────────────────────────────┤ │ src/routes/api.js (Claude 原生) │ ✅ 有 │ src/routes/api.js:184-199 │ ├──────────────────────────────────────────────────────┼──────────────┼──────────────────────────────────────────┤ │ src/routes/openaiClaudeRoutes.js (OpenAI→Claude) │ ✅ 有 │ src/routes/openaiClaudeRoutes.js:213-225 │ ├──────────────────────────────────────────────────────┼──────────────┼──────────────────────────────────────────┤ │ src/routes/openaiGeminiRoutes.js (OpenAI→Gemini) │ ✅ 有 │ src/routes/openaiGeminiRoutes.js:263-274 │ ├──────────────────────────────────────────────────────┼──────────────┼──────────────────────────────────────────┤ │ src/routes/openaiRoutes.js (OpenAI 直通 / Responses) │ ❌ 无 │ — │ ├──────────────────────────────────────────────────────┼──────────────┼──────────────────────────────────────────┤ │ src/services/relay/openaiResponsesRelayService.js │ ❌ 无 │ — │ └──────────────────────────────────────────────────────┴──────────────┴──────────────────────────────────────────┘

控制条件都相同:仅当 apiKeyData.enableModelRestriction === true 且 restrictedModels 非空时生效,命中即返回 403 model_not_allowed。

你这个 Key 的实际行为

lingchen 启用了 enableModelRestriction:true,限制列表为 ["gpt-5.5", "gpt-5.6-sol"],并且绑定了 openaiAccountId。客户端只要打到 /openai/v1/responses 或 /openai/responses/compact,两个受限模型都能正常调用——配置不生效。

只有以下情况才会被限制:

  1. 客户端走 /v1/chat/completions → openaiClaudeRoutes.js 转换路径(如果账户映射到 Claude)
  2. 客户端走 Claude 原生 /api/v1/messages(api.js)

Source: Wei-Shaw/claude-relay-service