InputValidationError: Write failed - Claude Code
Quick fix
在 cc-switch 中关闭 Tool Search、最大强度思考及 1M 上下文声明以降低长文本截断概率,或回退至 3.13.0 版本。
Symptom
Section titled “Symptom”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 原样下发,导致客户端收到缺失必填参数的空对象并报错。
回退 cc-switch 版本至 3.13.0,该版本未包含导致此问题的流式解析优化,可彻底解决该问题。
若需保留当前版本,请在 cc-switch UI 中取消勾选“启用 Tool Search”、“最大强度思考”以及模型映射中的“声明支持 1M”。
环境变量等效配置 ENABLE_TOOL_SEARCH=0CLAUDE_CODE_EFFORT_LEVEL=default彻底退出并重启 cc-switch 与 Claude Code。若中长文本仍偶发失败,请手动重试该命令。
Affected Versions
Section titled “Affected Versions”ToolClaude Code
Version3.14.1 - 3.16.1
PlatformsWindowsmacOS
Source Issues
Section titled “Source Issues”本页汇总自 3 个真实 issue
- 为什么 Read 等工具正常,只有 Write 和 Edit 间歇性失败?
- Write 和 Edit 的参数通常较长,更容易触发 TCP 分片导致 SSE 帧 JSON 解析失败并被静默截断。
- 为什么同一条命令重试有时就能成功?
- 这是时序依赖问题,重试会产生新的 TCP 时序和帧边界,可能恰好避开 JSON 截断。
- 在 settings.json 中配置 defaultMode: acceptEdits 可以解决吗?
- 不能,该问题源于 cc-switch 底层的代理转换逻辑,与 Claude Code 的权限设置无关。
temporarily unavailable, so auto mode cannot升级 cc-switch 至 v3.15.0+ 以修复模型映射与 thinking 转换,或在通用配置中手动覆盖默认模型环境变量以匹配第三方后端。settings.json被全量重写导致插件失效多数相关 issue 仍未解决;升级至v3.20.1+,该版本已修复切换配置时清空enabledPlugins等字段的Bug。正文内容频繁出现在 thinking(思考)块内,visible text 块几乎为空升级 cc-switch 至包含 PR #4210 的版本,将预注入 thinking 占位符改为反应式处理即可解决长上下文会话冻结与正文折叠问题。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。