跳转到内容

InputValidationError: Write failed - Claude Code

Quick fix

在 cc-switch 中关闭 Tool Search、最大强度思考及 1M 上下文声明以降低长文本截断概率,或回退至 3.13.0 版本。

报错原文
InputValidationError: Write failed due to the following issues:
  The required parameter `file_path` is missing
  The required parameter `content` is missing

当通过 cc-switch 将 Claude Code 路由至 OpenAI Chat Completions 兼容接口(如 Copilot)时,长文本工具调用(如 Write、Edit)的参数会以多个 SSE 帧流式返回。在 `streaming_codex_chat.rs` 中,若某个 chunk 因 TCP 分片导致 JSON 暂时不合法,解析失败会触发 `continue` 从而静默丢弃该数据块。随后 `json_canonical.rs` 会将残缺的 JSON 原样下发,导致客户端收到缺失必填参数的空对象并报错。

  1. 回退 cc-switch 版本至 3.13.0,该版本未包含导致此问题的流式解析优化,可彻底解决该问题。

  2. 若需保留当前版本,请在 cc-switch UI 中取消勾选“启用 Tool Search”、“最大强度思考”以及模型映射中的“声明支持 1M”。

    环境变量等效配置
    ENABLE_TOOL_SEARCH=0
    CLAUDE_CODE_EFFORT_LEVEL=default
  3. 彻底退出并重启 cc-switch 与 Claude Code。若中长文本仍偶发失败,请手动重试该命令。

ToolClaude Code
Version3.14.1 - 3.16.1
PlatformsWindowsmacOS
为什么 Read 等工具正常,只有 Write 和 Edit 间歇性失败?
Write 和 Edit 的参数通常较长,更容易触发 TCP 分片导致 SSE 帧 JSON 解析失败并被静默截断。
为什么同一条命令重试有时就能成功?
这是时序依赖问题,重试会产生新的 TCP 时序和帧边界,可能恰好避开 JSON 截断。
在 settings.json 中配置 defaultMode: acceptEdits 可以解决吗?
不能,该问题源于 cc-switch 底层的代理转换逻辑,与 Claude Code 的权限设置无关。

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