Claude Code 后台任务报错把对话撑爆怎么办
2.1.252 修复:后台任务失败时若输出极大(例如磁盘满时的 git 错误),通知会把对话撑过 API 请求体积上限。请升级,旧会话仍可能要新建。

claude code 后台任务报错撑爆对话:2.1.252 修了后台任务通知带着「非常大的失败输出」时,整段对话超过 API 请求体积上限。官方例子是磁盘满时的 git 错误。旧行为会把整坨 stderr 塞进通知,下一回合请求直接被拒,会话看起来像突然死了。
和另外两类卡死分开
只产出 thinking、没有正文,卡在 text content blocks must be non-empty,是 2.1.251 的补丁,见 空 text block。hook 或后台代理打印上兆错误、Prompt is too long,是 2.1.247 修过的。252 针对的是 background task notifications 这条通知通道,例子点名 git errors on a full disk。
本机 df 已经 100%、git 写 pack 失败时,先腾磁盘,再谈客户端。补丁截的是通知体积,不是让 git 在满盘上成功。
升级后旧会话怎么办
已经撑爆的 transcript 里可能写进了那坨错误。升到 2.1.252 再 --resume,下一回合仍可能超限。从卡死回合之前新开,或 /compact 丢掉通知正文,比在坏记录上重试省事。
后台任务用 attach / logs 看输出,见 attach 怎么接。logs 读的是任务自己的输出文件,不一定再走「通知进对话」那条路。
怎么少触发
后台跑 git、npm、测试时,把详细日志重定向到文件,让任务只回退出码和最后几十行。磁盘预警比等 API 拒请求便宜。沙箱里的 Bash 输出文件在 2.1.251 改过创建方式,防止命令重定向替换这些文件;那是沙箱完整性,不是通知截断。
升完仍超限
确认是不是同一条旧会话。新对话里故意造一个短失败,不应再把整份 git 报错贴进下一轮请求。网关或代理若自己把工具结果拼进 context,客户端截断救不了被改过的 payload。先看 ANTHROPIC_BASE_URL 一侧。本机 claude logs 若还在,先从日志里确认失败任务的真实体积,再决定要不要把同一条 git 命令再丢进后台。