Claude Code 2.1.235 release notes¶
固定上游来源:
- Commit:
16440d0f6ee8c47f34169687044b89eafa8b0f8d - URL:
https://raw.githubusercontent.com/anthropics/claude-code/16440d0f6ee8c47f34169687044b89eafa8b0f8d/CHANGELOG.md - 抓取日期:
2026-08-22 - 完整响应:
36,864bytes,SHA-256ca5698c578b3e3a97b8ff8388a08f4095a64c69696709dd07337605fe5f30fe3 ## 2.1.235至下一版本标题前的原始段落:2,707bytes,SHA-25604943db50acf834556450fc580d0e3617ae0de7a7b62a5aed9444013420c5d17
下面 19 条逐字复制自这个固定 commit;大小写、标点、反引号、括号和措辞均不做润色。逐项机制解释另放在后表,避免再把解释性改写冒充上游原文。
版本归属边界:以下 19 条是上游明确归入
2.1.235的原文。Release只证明版本声明;Static表示本分支 bundle 中存在对应 consumer、状态或失败分支;Probe表示固定 SHA-256 的精确二进制真实走过该路径;Boundary表示还需要真实终端、编辑器、云任务或平台环境。不要把 release note 本身当成运行测试。
上游原文(19/19)¶
- Added an optional
spellchecksetting that underlines misspelled words in the prompt input as you type, using your installedaspell,hunspell, orispell - Fixed whole-prompt-cache invalidation when a language server disconnected or reconnected mid-session
- Fixed nested markdown list items misaligning at depth 3+ and added a hanging indent to wrapped list items in the terminal UI
- Fixed prompt input highlights (slash commands, keywords, mentions) appearing shifted by one or more characters in some multi-line prompts
- Fixed Shift+Tab inside the permission prompt's comment field approving the edit and granting session-wide edit permission instead of closing the field
- Fixed the Agent tool advertising a general-purpose default in sessions where that agent is unavailable: an omitted
subagent_typethere now gets a clear error listing the available agents - Fixed notebook cell delete/replace approval dialogs silently omitting the existing cell content when the notebook or cell could not be read; the dialog now says why
- Fixed slash commands run while Claude is responding showing HTML entities instead of the actual characters
- Fixed the prompt footer not showing the "Update installed" restart notice after a background auto-update
- Fixed the expanded task list (
ctrl+t) always starting collapsed when resuming or relaunching into a session that still has open tasks - Improved memory and CPU usage while cloud sessions such as
/ultrareviewor/autofix-prrun in the background — their event streams are no longer re-scanned and re-rendered on every update - Improved permission dialogs: display text and "don't ask again" options now always match what a grant would cover, and "don't ask again" is withheld when contents cannot be fully displayed
- Improved the embedded
grepin native macOS/Linux builds: pathological patterns now fail fast instead of exhausting memory, and-m Nwith-A/-Cprints correct context - Improved the context-limit error to say when auto-compact is off and point to
/configto re-enable it - Vim mode: NORMAL mode and cursor position are now preserved when toggling the detailed transcript (ctrl+o) or closing a panel
- Dialogs: arrow keys and Enter pressed in quick succession now select the option you navigated to instead of the previously highlighted one
SendMessagenow refuses messages too large for cross-session delivery up front instead of silently dropping them- Remote Control:
claude rcnow applies the same enterprise-gateway availability check as interactive startup - [VSCode] Fixed focus jumping between open Claude tabs on its own when a window with several Claude panels is restored or reloaded
逐项机制回填¶
| # | 原来的失败状态 | 2.1.235 的状态变化 |
用户实际得到什么 | 证据与边界 |
|---|---|---|---|---|
| 1 | prompt 输入没有本地拼写反馈 | 新增 user/flag/managed-only 的 spellcheck block;按 aspell -> hunspell -> ispell 选择长驻子进程,带 batch、cache、timeout、一次重启和 session-disable |
默认仍关闭;开启后只改变本地输入高亮,不修改发送给模型的文本或 token | Release + Static:完整生命周期。未证明目标机装有 dictionary |
| 2 | LSP 断线/重连把动态连接状态混入稳定 cache identity,导致整段 prompt cache 失效 | 连接状态变化与稳定 prompt prefix 分离;普通 reconnect 不再等同 plugin full reload | 减少无意义 cache rewrite、首 token 延迟与 cache write 成本 | Release + Static mechanism:LSP 边界。没有真实账单/命中率 Probe |
| 3 | 深度 3+ 列表 marker 与正文缩进 owner 分叉,wrapped line 回到错误列 | marker display width 决定首行和 hanging indent,嵌套 block 单独缩进 | 长回答的层级和换行更容易扫描 | Release + Static:452860-452935。终端字体宽度仍是环境边界 |
| 4 | 多行输入的 raw offset 被直接套到 rendered line,第二行后 highlight 漂移 | 先把 raw/rendered offset 映射成逐行 segment,再渲染 spellcheck/mention/slash 等 decoration | 屏幕标记与真正提交的字符重新一致 | Release + Static:428992-429151。未自动化遍历所有 Unicode/terminal 组合 |
| 5 | permission comment 中 Shift+Tab 会落入批准路径并扩大成 session-wide edit grant |
comment input mode 先消费按键并退出输入,之后才允许处理 grant shortcut | 消除“想关备注框却批准并持久授权”的权限错误 | Release + Static + exact-binary PTY Probe:531443-531454、531724-531759、tui-regressions.json。Shift+Tab 前后均为 2 次主请求、两个文件零变化;显式 Enter 后第二个 Edit 仍需审批,排除了 session grant |
| 6 | Agent tool 在 general-purpose 不可用时仍把它广告成省略 subagent_type 的默认值 |
schema/validation 使用当前可用 Agent 集合;没有可用默认时返回列表化错误 | 失败更早、更可诊断,不会静默路由到不存在的 Agent | Release + Static:Agent 工具合同。不证明任意第三方 Agent 定义可运行 |
| 7 | Notebook delete/replace 无法读旧 cell 时,审批 UI像是“旧内容为空” | dialog 保留读取失败原因并收缩可展示/可持久授权范围 | 审批者能区分空 cell 与读取失败 | Release + Static UI/permission path:工具与权限专题。未做真实 notebook Probe |
| 8 | Claude 正在响应时执行 slash command,文本经过错误的 HTML entity 展示路径 | command result 在进入 TUI 时恢复真实字符 | <、& 等不再冒充命令真实输出 |
Release + Static UI path:输入界面专题。不改变 shell/tool output bytes |
| 9 | background updater 已安装新版本,但 footer 重渲染后丢失 restart notice | Update installed 成为可持续读取的更新 UI 状态 |
用户知道当前进程仍跑旧 bytes,需要重启 | Release + Static lifecycle/UI:更新生命周期。不代表自动重启或安装一定成功 |
| 10 | resume/relaunch 后有 open tasks,expanded task list 却总回到 collapsed | 展开状态与任务/session 恢复状态重新绑定 | 长任务回来后保留操作现场 | Release + Static session/UI:TUI 状态专题。不恢复未持久化进程内组件状态 |
| 11 | /ultrareview、/autofix-pr 每次 cloud event 更新都全量重扫并重渲染历史 |
consumer 改为增量处理新增 event | 长时间后台任务的 CPU、内存和 render 压力不再随历史线性重复放大 | Release + Static architecture:后台与 Cloud 专题。没有长时性能基准,不能给出节省百分比 |
| 12 | permission 文案、实际 grant scope 与 don't ask again 选项可能不一致;内容显示不全仍可持久批准 |
display model 与 grant model 对齐;不能完整展示时隐藏 persistent option | “看到什么、批准什么、记住什么”重新一致 | Release + Static:permission input。不代表所有 tool 自定义 dialog 已 Probe |
| 13 | embedded grep 遇病态 pattern 消耗过高;-m N 与 -A/-C 的停止边界会截错 context |
native binary 以 argv0=rg 进入内嵌 ripgrep 14.1.1 (rev fdb5e06cce);a{1,1000000000} 在 3 秒 deadline 内 fast-fail,以 exit 2 和固定 compiled regex exceeds size limit of 104857600 失败,-m 1 -A 2 / -m 1 -C 2 则在达到 match cap 后逐字保留 2 行 after-context |
病态搜索成为模型可观察的 is_error tool result,而不是拖死 Agent Loop;有限匹配的周边行可按原行号消费 |
Release + Static + exact-binary Probe:Grep 机制、embedded-grep.json。本次 macOS arm64 峰值 RSS 为报告中的约 229 MiB、低于 512 MiB 验收界线;RSS 包含 313 MB native 可执行文件的映射/运行时页,不等于 regex heap。Grep 模型 schema 不暴露 -m,所以 -m 回归通过同一精确二进制的 embedded argv0=rg 入口验证,不能写成模型已发送 -m |
| 14 | 关闭 auto-compact 后触顶只给失败,缺少直接恢复入口 | context-limit error 明确指出 auto-compact 状态并链接 /config |
用户可直接恢复配置,而不是误判模型窗口变小 | Release + Static diagnostic:上下文专题。不改变窗口、阈值或自动重试语义 |
| 15 | 打开详细 transcript 或关闭 panel 会让 composer 重挂载,Vim 回 INSERT、cursor 跳位 | 外部 store 保存 vimMode 与 cursor offset,重挂载时恢复 NORMAL 语义 |
编辑现场连续,减少误操作 | Release + Static:269426-269454、519247-519263。新进程不恢复未提交 prompt |
| 16 | 快速 Arrow + Enter 时 Enter handler 读到旧 highlight | 提交时读取最新 getFocusedValue(),而非上一 render 的 selection |
屏幕新高亮项与实际动作一致 | Release + Static + exact-binary PTY Probe:429483-429620、tui-regressions.json。同批 Down+Enter 选中 session acceptEdits,两个 Edit 都执行且第二次不再弹框;只覆盖使用该 dialog primitive 的界面 |
| 17 | 超过 cross-session delivery limit 的 SendMessage 被静默丢弃 |
发送前显式拒绝并把失败交回 tool result | 模型可以缩短、拆分或改用文件,不再把未送达误当成功 | Release + Static:多 Agent 消息专题。拒绝不保证之后重试送达,也不回滚此前副作用 |
| 18 | claude rc alias 与 interactive Remote Control 的 enterprise-gateway availability gate 不一致 |
两个入口复用同一前置检查 | 企业网关环境得到一致的可用/不可用诊断 | Release + Static + negative Probe:Remote Control、lifecycle-doctor.json。未证明真实账号连接成功 |
| 19 | VS Code 恢复多个 Claude panel 时 focus ownership 在 tab 间跳动 | 上游 extension/CLI integration 修复 panel restore/reload 的 focus 协调 | 多会话编辑时输入焦点更稳定 | Release + CLI Static surface + Boundary:IDE ownership。extension 内部算法和真实多 panel 结果未在 bundle 内恢复 |
这 19 条合起来说明了什么¶
它们不是一次 Agent Loop 重写。2.1.235 的主循环、人工维护的 29 项核心终端 built-in reference、103 个 slash command、31 个 Hook event 和 provider 顶层集合没有因这些 release note 整体换代。变化集中在四类边界:
- 输入与授权状态一致性:第 3、4、5、7、8、12、15、16、19 条都在修复“屏幕状态”和“实际提交/授权状态”分叉,其中第 5、12 条直接属于风控正确性。
- 长会话的增量与持久状态:第 2、9、10、11 条避免动态状态污染稳定 cache,或避免重渲染/重启后丢失现场。
- 失败必须可见、可恢复:第 6、13、14、17、18 条把不存在的 Agent、病态搜索、context limit、超限消息和不可用 Remote Control 从静默/晚失败变成明确终态。
- 本地辅助能力:第 1 条加入 spellcheck,但 gate、subprocess 和失败降级都留在客户端,不把用户文本交给模型外的拼写服务。
因此版本验收不能只做 claude --version 和一次普通问答。最低回归合同应覆盖:多行 composer 与 Vim panel 重挂载、permission comment shortcut、快速 dialog selection、LSP reconnect 前后 request cache identity、后台 update notice、resume 后 task panel、SendMessage 超限、embedded grep pathological/context cases、custom endpoint 下 claude rc gate,以及 VS Code 多 panel restore。当前仓库只把已经真实跑过的项目标为 Probe,其余保留 Static 或 Boundary,没有用 19/19 文档覆盖率冒充 19/19 运行测试。