Function call is missing a thought_signature:Claude Code
Quick fix
先升级到 CC Switch 4.0 最新版本重试;若仍报错,请携带版本、系统、完整复现步骤和日志重新提交。
Symptom
Section titled “Symptom”API Error: 400 Function call is missing a thought_signature in functionCall parts.Claude Code 或 Claude Desktop 经 CC Switch 的 Gemini Native 代理执行多轮工具调用时,Gemini 要求回放的 functionCall 携带 thought_signature。问题报告中的源码检查认为,Claude 客户端的 session id 可能不稳定,导致 CC Switch 无法从按 provider_id 和 session_id 保存的 shadow store 中取回签名,最终向 Gemini 发送缺少签名的 functionCall;该根因分析及其修复伪代码尚未经过 Rust 测试或构建验证。
同一讨论还记录了另一种同源变体:写回字段使用 thoughtSignature 时,Gemini 可能返回 Unknown name "thoughtSignature"。维护者没有确认这些源码修改,而是说明 4.0 已对相关功能进行较大重构,建议升级后重试。因此,现有材料不能确认 4.0 已修复此问题。
将 CC Switch 更新到最新的 4.0 版本后,重新执行会触发 Bash、Glob、Read 或 MCP 工具调用的任务。
如果升级后仍出现同一错误,请记录 CC Switch 版本、操作系统、完整复现步骤以及相关日志或截图,并重新打开或提交 issue。
若参与源码修复,可验证讨论中提出的方向:session 查询失败时按 provider 和 tool_call.id 恢复 thought_signature,并将写回字段统一为 thought_signature;该方案目前仅为未经测试的源码分析,不能视为已确认修复。
Affected Versions
Section titled “Affected Versions”Source Issues
Section titled “Source Issues”本页汇总自 2 个真实 issue
- 这个问题在 v3.16.3 中仍能复现吗?
- 能。issue #4245 在 macOS 26.4 上使用 v3.16.3 复现,且升级前的 v3.16.2 也出现过同类错误。
- 应在 Gemini transform/shadow 路径的哪里修补?
- 讨论中的未验证分析建议:当 session 级 shadow 查询失败时,按 provider 和精确 tool_call.id 兜底恢复签名,并把写回字段统一为 thought_signature;该方案尚未运行 Rust 测试或构建。
- 升级到 4.0 就一定能解决吗?
- 不能确认。维护者只说明 4.0 对相关功能做了较大重构并要求升级重试,没有提供已修复或用户验证成功的结论。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。