在使用 Claude Code 或 Anthropic API 工作时,有时会突然被这样的错误卡住:

API Error: 400 Output blocked by content filtering policy

# 原始响应长这样:
{"type":"error","error":{"type":"invalid_request_error",
 "message":"Output blocked by content filtering policy"}}

"输出被内容过滤策略拦截了"——也就是说 不是你的输入,而是 Claude 打算返回的输出,被 Anthropic 侧的安全过滤器中途拦下的状态。HTTP 状态码是 400,类型是 invalid_request_error。既不是用量限制,也不是上下文超限,而是 "打算输出什么内容" 被卡住了。

先说三个要点。① 原因几乎都是被判定为"试图原样复现已有的版权作品"。Claude 的设计用途是生成新内容,因此有一套阻止照抄已有文本的安全机制。② 但误判(false positive)很多——生成 MIT/Apache 等标准许可证全文,或做"与已有页面保持一致"的工作时,即便毫无恶意也会触发。③ 应对的核心是"不让模型逐字复制"——许可证等用工具获取,把提示词往"转换、摘要、全新生成"上靠,一旦陷入重试循环就先停下来换个说法。本文将基于官方信息和实际的故障报告,梳理原因、误判模式、修复方法,以及与相似错误的区别。

CLAUDE CODE · CONTENT FILTER

卡在了哪一步

— 被过滤器拦下的不是输入,而是"输出"

① 你的输入
提示词・文件・指令
✅ 通过
② Claude 生成
组装输出 token
…与已有作品高度相似?
③ 输出过滤器
检测到版权作品的复现
⛔ 以 400 拦截

被卡住的是 ③ 的输出阶段既不是输入太长(Prompt is too long),也不是用量限制
"全新创作"的输出能通过,"照抄已有作品"的输出容易被拦。

1. 这个错误到底在说什么

Anthropic 的 API 有一套同时检查 输入(你发送的内容)输出(Claude 返回的内容)的安全系统。Output blocked by content filtering policy 顾名思义,就是 "输出"侧的过滤器拦下了 Claude 打算返回的内容。API 的响应会以 HTTP 400invalid_request_error 返回,在 Claude Code 中会话会显示 API Error: 400 Output blocked by content filtering policy 并停止。

要点:这与"模型在对话中礼貌地拒绝(refusal)"是两回事。refusal 会作为文本返回,而这个 400API 调用本身报错。所以 Claude Code 收不到响应,处理会中断。

重要的是,这不是"bug",而是"安全机制在起作用"。因此它不属于"重启就能好"的那类问题,正确做法是 重新审视自己想让它输出什么。不过正如后文所述,由于 误判相当多,在正当工作中遇到时,大多可以通过换个说法或改变手段来规避。

2. 为什么会出现——阻止"复现"版权作品的机制

根据 Anthropic 的官方说明,这个过滤器的主要目的是 "不让它原样复制、再现(regurgitate)已有的素材"。官方将 Claude 的角色定位为"生成新的内容与创意,而非再生产已有内容",此外还列出了禁止 侵犯知识产权的使用方式的政策。

也就是说,当过滤器判定输出 "与世上已存在文本的逐字复制高度相似"时就容易触发。具体来说有以下几种情形。

📄 逐字生成固定文本

当你请求"原样写出" MIT / Apache-2.0 / BSL / MPL 等 许可证全文、标准行为准则或模板时,容易被判定为照抄已有作品。

🔁 向已有来源"看齐"的工作

"把文件改成与这份在线资料完全一致""按原文一模一样地复现"这类照搬外部已有作品的指令。

📚 复制长篇文档

对已有 API 文档、书籍或文章的大量引用/全文转载。摘要或重构容易通过,但逐字复制会被拦。

注意:官方也明确指出"如果确实是在试图套取版权作品而出现此警告,反复这样做可能会收到警告,甚至导致账户被暂停或终止"。不要为了蓄意照抄而绕过它。这里讨论的仅限正当工作中的误判

3. 常见的误判(false positive)模式

官方也承认存在误判——"有用户在并无复制意图的情况下遭遇这种拒绝/错误"。事实上,Claude Code 的 Issue 里有大量在如下"毫无恶意"的工作中触发的报告。

OSS 仓库的初始搭建

在创建 LICENSE 文件、CI 配置、社区健康文件(CODE_OF_CONDUCT 等)这类标准初始化时停止。

列表之间的比对

在"与在线清单比对并修正差异"这类比较任务的中途,输出逐渐接近已有清单而触发。

长时间智能体运行的末尾

运行 1〜2 小时后以 400 停止,还被误诊为"token 上限"的情况也有。实际上原因是输出过滤器。

Claude Code 侧的已知毛病:收到这个错误后,可能会进入 反复重试同一输出的重试循环,从而卡住无法前进。会在零文件的状态下长时间循环,容易搞错原因。一旦发现在循环,就先手动停下(见下一章)。

4. 立即解决的方法

"安全机制正确起作用"和"误判"两种情况的应对不同,但如果是正当工作,按下面的顺序处理大概率能规避。

① 不让模型"照抄"

许可证等固定全文不要让模型来写,改用工具获取。例如:npx license mit、从 choosealicense.com 粘贴、用 gh repo create 指定模板。

② 把提示词改得更偏"生成"

把"原样复现"改成 "摘要""重构""用自己的话改写""只给出差异"。仅仅是不要求逐字一致,往往就能通过。

③ 停止重试循环

如果 Claude Code 一直重试同一输出,就按 Esc 中断。不要把相同指令再扔一遍,换个说法后再继续。

④ 拆分任务,逐个更改

为了定位是哪个输出触发的,把大规模的一次性生成拆小。用能跑通的配置逐个变量对比,更容易锁定原因。

⑤ 误判就向官方报告

如果是正当工作却反复出现,就联系 Anthropic 支持。官方也欢迎改进过滤器的反馈。

改写示例(目的相同却更容易通过)

❌ "把 MIT 许可证的全文原样写进 LICENSE"
✅ "我想创建 LICENSE。请执行 npx license mit 来生成"

❌ "把这份官方文档一字不差地原样粘贴进来"
✅ "读一读这份官方文档,用自己的话把要点
     列成条目摘要。不需要原文的逐字复制"

5. 如何与容易混淆的错误区分

同样是"停住了",原因可以通过消息判别。用状态码或关键词来区分吧。

消息 / 类型 真正的原因 应对
Output blocked by content filtering policy(400) 输出被判定为已有版权作品的复现 避免逐字复制,改写/用工具获取
Prompt is too long(400) 输入超过了上下文窗口 /compact/clear解说
usage limit reached 已耗尽套餐的使用额度 等待重置/升级套餐(解说
529 Overloaded / 500 服务器侧的临时过载或故障 过一会儿再重试(解说
输出中途被截断 达到 max_tokens 的输出上限 调高输出上限/分段生成

拿不准时,用 消息字符串本身来判断最可靠。写着 content filtering policy 就是本文说的情况,too long 就是输入超限,usage limit 就是额度用尽。Claude Code 的错误总览也整理在 Claude Code 常见错误与对策中。

6. 防止再发生的检查清单

  • 许可证、固定格式文档 不要让模型来写,用工具或模板获取
  • 对已有作品,请求"摘要・重构・用自己的话"而非"复现"
  • 把"一字不差""原样""完全一致"这类措辞从提示词里去掉
  • 把大规模的一次性生成 拆小,以便切分出触发的输出
  • 遇到 400 停止时 先读消息字符串——避免搞错原因(误诊为 token 上限)
  • 发现在重试循环就用 Esc 停下,换个说法后再继续
  • 正当工作中的误判要 向支持报告,为改进过滤器出一份力

总结

API Error: 400 Output blocked by content filtering policy 的意思是,既不是用量限制也不是上下文超限,而是 Claude 打算返回的"输出"被安全过滤器拦下了。其核心目的在于 防止逐字复现已有版权作品,在生成标准许可证、或做"与已有作品保持一致"的工作时,常会毫无恶意地误判。应对的要点很简单,就是 不让模型照抄,改成生成、摘要或用工具获取。并且一旦遇到 400 停止,先读消息字符串、别搞错原因——仅此一点就能让大多数情况继续推进。

FAQ

Q. 这是不是意味着我的账户被警告了?

A. 如果只是单次误判,那不是。不过官方明确指出,反复试图套取版权作品可能会收到警告或导致账户被暂停。正当工作中出现一次,不必惊慌。

Q. 连 MIT 许可证都写不了,不是很不方便吗?

A. 许可证全文属于"已有的固定文本",与其让模型照抄,不如用 npx license mit 或从 choosealicense.com 获取,更快更可靠,也能规避误判。

Q. 和 token 上限(Prompt is too long)有什么不同?

A. 完全是两回事。too long输入的大小超过了窗口,用 /compact 等来处理。这次的 content filtering policy 说的是输出的内容,减小尺寸也修不好。详见 这里

Q. 怎么弄正当工作都会停。该怎么办?

A. 如果把提示词改得更偏生成、摘要,并拆分任务后仍反复出现,就带上 request idAnthropic 支持报告。过滤器一直在改进,分享误判是通往解决的最短路径。