Claude Code task output swap refused 怎么办
2.1.252 修复部分 Mac 上 Bash 报 task output swap refused,原因是 tasks 目录被移动或做成链接。请先升级,再检查该目录是不是软链。

claude code task output swap refused 怎么办:2.1.252 修了部分 Mac 上 Bash 失败,原文是 task output swap refused (tasks dir moved or linked)。也就是客户端要把命令输出写进 tasks 目录时,发现这个目录被挪走或换成了符号链接,交换文件被拒绝,命令整条失败。和「命令本身 exit 非零」不是同一类错。
谁会看到这句
Changelog 写 on some Macs,没点名 Intel 还是 Apple Silicon,也没说一定是 iCloud / Dropbox 把 ~/.claude 同步走了。能对上的常见环境:家目录开了桌面与文稿同步、用 nix/home-manager 把配置目录链到仓库外、或自己把 tasks 链到 /tmp 想省盘。Windows / Linux 发行说明没写同一句,别把这条当全平台补丁说明。
2.1.251 刚改过沙箱里 Bash 输出文件的创建和回读,避免沙箱命令重定向或替换这些文件。252 这条是「目录本身被移/被链」时的交换失败,两层叠在一起时,旧 Mac 客户端更容易炸。
升级前能做什么
claude --version 到 2.1.252+。升完还报同样一句,查 tasks 目录是不是符号链接或被同步软件改成「占位目录」。ls -ld 看 ~/.claude 和它下面的 tasks:箭头指向 iCloud、Dropbox、或另一块盘,就先把同步排除这个路径,或别用软链顶替 tasks。
不要把整个 ~/.claude 放进 git 工作区再链回去。2.1.247 修过沙箱清理误删 nix/stow 管理的 settings.json 软链;目录级链接仍然是自己的风险面。
和符号链接越权不是同一个洞
2.1.251 修的是 Read/Write/Edit 在权限检查之后跟着被换掉的工作区链接走到目录外。那是安全修复。swap refused 是输出落盘失败,命令没跑完。升到 252 不会「顺便」放宽符号链接检查。文件工具越权见 符号链接会读到目录外吗。
后台会话的 attach / logs 在 2.1.251 才写进 --help。tasks 目录异常时,后台任务的输出交换一样会失败,接回会话只能看到同一句,见 attach 怎么接后台会话。
升完仍失败
确认失败时间戳是否还在旧进程。长期挂着的 --bg 不会因为 brew/npm 升了包就重载。stop 再开。磁盘满时 git 会吐出另一类超长错误,那是 252 的第四条(通知把对话撑爆),文案里没有 swap refused。