Claude Code v2.1.160 发布 —— 写个 shell 脚本,差点让 agent 改了你 .zshrc
v2.1.160 修的刚好就是这一条。

Shell 启动文件保护 + Build 工具配置守卫
这次最核心的安全改动其实只有两条:
- agent 往
.zshenv、.zlogin、.bash_login、~/.config/git/写东西之前,必须先问你是否同意 acceptEdits模式下,agent 写.npmrc、.yarnrc*、bunfig.toml、.bazelrc、.pre-commit-config.yaml、.devcontainer/等能授予代码执行权的配置文件时,也会弹确认框
不是多此一举。agent 在帮你配 CI 或者装依赖的时候,顺手往 shell 启动文件里写一行 export PATH=... 或者 git 配置,这在自动化场景下可能完全是无意的。但后果是:下次你开终端,那行代码执行的路径跟你预期的不一样了。
这两个改动本质上是「agent 可以做,但不能不被看见地做」。不是什么复杂的防御,但缺了就是安全缺口。
Session 稳定性:挂后台的 agent 不会再丢对话
另一个大批量修复的方向是 session 状态管理。claude-code 的 background sessions 和 agent 视图有几个长期的 bug:
- 从
claude agents恢复已完成的 session → 对话历史丢失,从头又跑了一遍原始 prompt - 过夜回收的 background session 重新 attach → 同样丢对话
- 恢复近期不活跃的 background session → 打开卡顿好几秒(这次也优化了启动性能)
claude --bg在冷启动时偶发报「socket missing」
前两个问题尤其致命——agent 跑了一夜的背景任务,第二天早上来检查,发现它其实把刚做完的阶段忘了,又跑了一遍。这批修复意味着后台 session 现在能保留对话状态,不会被错误回收。
Vim 模式、IME 输入、鼠标滚动:一堆日常烦人 bug
几个小修但频率很高的:
- Vim 模式
p粘贴位置修正:v$复制后p粘贴到了下一行而不是光标位置。修了之后终于跟 Vim 原生行为一致了 - CJK IME 输入位置:中文/日文输入法的候选窗口之前显示在屏幕左下角,不是光标位置。修完之后 IME 候选框跟着输入走了
- 鼠标滚动历史:打开 session 之后第一次滚动,滚的不是 transcript 而是 prompt history。修了
/effort ultracode:在不支持 xhigh 的模型上不再推荐 ultracode,报错信息更明确,不再怪动态 worklow 设置
另外,auto mode 的 classifier 延迟也优化了——routine action 的推理量减少了,「could not evaluate this action」的报错概率降低。
其他清理
CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE 这个环境变量被移除了,现在是个 no-op。JetBrains 插件安装提示也从启动时消失了——如果你用 JB 系列 IDE,自己装插件就好,启动时不用再看那行提示了。
动态 worklow 的触发关键词从 workflow 改成了 ultracode——你不会因为说"这个 workflow 流程不对"就意外触发它。
升级:
curl -fsSL https://claude.ai/install.sh | bash
brew install --cask claude-code
完整更新日志:GitHub Release
以前 agent 改你 shell 配置是不打招呼的。v2.1.160 说:改之前告诉你一声。
📢 关注我,获取最新开源更新日志和开发者工具动态。
#ClaudeCode #AI编程 #安全 #Session管理 #版本更新