[BUG] crewai eval sends saved organization ID to untrusted AMP origins

这个报错通常出现在项目 .env 把 CREWAI_PLUS_URL 指向非受信 AMP 来源、同时本机已登录并保存了 CrewAI 组织信息时; crewai eval 虽然没有发送 bearer token,却仍把 X-Crewai-Organization-Id 发给了对方。优先排查并升级到已

快速结论:这个报错通常出现在项目 .env 把 CREWAI_PLUS_URL 指向非受信 AMP 来源、同时本机已登录并保存了 CrewAI 组织信息时;crewai eval 虽然没有发送 bearer token,却仍把 X-Crewai-Organization-Id 发给了对方。优先排查并升级到已包含修复的 CrewAI 版本,或临时确认匿名客户端不再携带组织头。

适用环境:Issue 中确认的环境为 CrewAI CLI 的 crewai eval 子命令,验证分支为 current main 8078f913;修复由 #7765 引入,提交为 4dcd19aa。Issue 未提供操作系统、Python 版本、依赖版本等额外环境信息。

最快修复方案:升级到已包含 #7765(commit 4dcd19aa)的 CrewAI 版本;该提交让 _amp_client 将未认证和不受信任的客户端统一走 _anonymous,从而移除 X-Crewai-Organization-Id。

注意事项:该修复针对的是“来源不受信任或未加密时不应发送任何已保存机器身份”的行为;受信任且加密的 AMP 请求仍会保留组织头,这是预期行为。Issue 中未给出具体发布版本号,升级时应确认目标版本包含上述提交。

问题场景

用户在已配置 CrewAI 组织、本机存在 Settings().org_uuid 的情况下,进入一个项目并把该项目的 .env 中 CREWAI_PLUS_URL 设置为其他 AMP 地址(例如 https://example.invalid),然后运行 crewai eval(带已记录的 run 或 --run)。此时匿名 PlusAPI() 客户端仍把本机保存的组织 UUID 作为请求头发送出去。

报错原文

[BUG] crewai eval sends saved organization ID to untrusted AMP origins

There is no `Authorization` header, but `X-Crewai-Organization-Id` is sent.

Requests to an origin that is not both trusted and encrypted should be anonymous with respect to all saved machine identity: neither the bearer token nor `X-Crewai-Organization-Id` should be sent.

原因分析

可能原因是 crewai eval 在 CREWAI_PLUS_URL 指向不受信任来源时,虽然正确避免发送已保存的 bearer token,但替换使用的匿名 PlusAPI() 客户端仍读取 Settings().org_uuid 并把它添加为 X-Crewai-Organization-Id。此外,在没有已保存登录信息时,_amp_client() 会在检查连接是否受信任之前提前返回,而组织头仍可能存在,导致同样的身份泄露路径。

环境排查

  • 确认 CrewAI 版本 / 分支是否包含修复提交 4dcd19aa,或至少晚于 #7765 合入的 current main 8078f913 对应时间点。
  • 确认项目 .env 中 CREWAI_PLUS_URL 是否被设置为非受信任或非加密的 AMP 来源。
  • 确认本机是否已配置 CrewAI 组织,即 Settings().org_uuid 是否已填充。
  • 检查 crewai eval 发出的请求头,重点看是否仍出现 X-Crewai-Organization-Id。
  • Issue 中未提供操作系统、Python、CUDA、显卡或节点依赖信息,无需额外核对;如排查中发现问题与这些环境相关,应另行确认。

解决步骤

  1. 把 CrewAI 升级到包含 #7765 修复的版本(commit 4dcd19aa),该修复已合入 current main 8078f913。
  2. 升级后确认 _amp_client 对未认证和不受信任的客户端会统一走 _anonymous 路径。
  3. 确认该路径会移除 X-Crewai-Organization-Id,对未受信任来源不再发送任何已保存机器身份。
  4. 对受信任且加密的 AMP 请求,确认组织头仍按预期保留,不要误删合法请求所需的组织信息。
  5. 原有 PR #7706 已被取代并关闭,不需要再参考或合入该 PR。

验证方法

在项目 .env 中把 CREWAI_PLUS_URL 指向不受信任来源,运行 crewai eval,检查请求头:不应再出现 X-Crewai-Organization-Id,同时也不应出现 Authorization。可参考上游回归测试 test_a_request_without_the_login_names_no_organization,它使用真实 PlusAPI 客户端覆盖了“已保存登录”和“未登录”两种情况。Issue 评论中也指出,在未修改的 main 上完整 CLI evaluation 测试模块(145 个测试)通过。

参考来源

crewAIInc/crewAI #7705

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 26860

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注