帖子说了什么
@RealAlexandreAI 提醒:Claude Code 2.1.309 把 sed -i 改成了普通 Bash 命令——按你写的原样跑,不再当成「文件编辑预览」。结果是:以前习惯按 Esc Esc 或 /rewind 撤掉的 sed 改动,现在撤不回来。若 Agent 还在用 sed 改生产目录,撤销手段只剩 Git,不是会话回退。@Aongkou、@sisiliu517 也强调同一边界:大改前先提交;能用内置编辑工具就别走 sed -i;回退后立刻 git diff 核对。
对照官方说明
我们核对了 Claude Code CHANGELOG v2.1.309 原文:
- Changed
sed -ito get the standard Bash prompt and run as written, not a simulated file-edit preview; like other Bash edits, it is no longer restored by/rewind.
也就是说:这不是社区传闻,而是官方明确的行为变更。/rewind 主要追踪本会话里文件编辑类工具动过的文件;纯 Bash(含现在的 sed -i)改动,本来就不该当成时光机。以前 sed -i 被「模拟成编辑」时还能蹭到回退,2.1.309 起这条捷径没了。
另有一篇讲 /rewind 撤不回 rm 等 Bash 操作的文章,侧重无人值守清理;本文只钉住 sed -i 这一条从「可 rewind」变成「不可 rewind」 的变更。
你可以立刻做的几件事
- 确认版本:
claude --version,若仍低于 2.1.309,先搞清楚升级后 sed 行为会变。 - 大改、批量替换前先
git commit(或开分支 / worktree),提交信息写清意图;不要指望 Esc Esc 救命。 - 能用 Write / Edit 就别让 Agent 用
sed -i;在项目说明里写一条硬规则,减少「静默改文件却进不了 rewind」。 - 每次
/rewind或误操作后立刻git status+git diff,确认哪些路径其实从没被会话快照罩住。 - 生产目录、含密钥的配置:禁止无人值守 sed;必要时用 deny / hook 拦高风险 shell 模式。
小结
/rewind 从来不是完整备份。2.1.309 之后,连曾经「看起来像文件编辑」的 sed -i 也退出了回退范围。把 Git 检查点 当成默认撤销键,比依赖 Esc Esc 更稳。
来源
- @RealAlexandreAI:2.1.309 起 sed -i 走 Bash,/rewind 不再撤销
- 同话题亦可参考 @Aongkou、@sisiliu517
- 官方对照:Claude Code CHANGELOG v2.1.309(sed -i /
/rewind)
