Claude Code v2.1.319 发布:调整 auto mode 网关行为并新增 MCP 任务后台支持
v2.1.319
Claude Code v2.1.319 调整了 auto mode 在关闭遥测或功能开关时的行为:服务器无法检查的调用会被询问或拒绝,不再回退到内置分类器,可用 CLAUDE_CODE_AUTO_MODE_SERVER=0 保持原行为。新版本支持终端中的 MCP 任务,MCP 服务器以任务方式执行工具调用时 Claude Code 会立即转入后台并在完成后告知 Claude,同时新增 CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUND 环境变量控制该行为。此外新增 permissions.denyInsteadOfPrompting 设置和 /claude-api latency-optimize 命令,并修复了 MCP 旧版握手连接失败、/diff 空白等多项问题。
正文 · AI 翻译
## 变更内容
- 更改了在遥测或功能开关关闭时的 auto mode 行为,包括位于 LLM 网关之后的情况:服务器无法检查的调用会被询问或拒绝,不再回退到内置分类器;设置 `CLAUDE_CODE_AUTO_MODE_SERVER=0` 可继续使用内置分类器(Bedrock、Vertex 和 Foundry 保持不变) - 更改了位于 LLM 网关之后的 auto mode 行为:即使设置了 `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`,`CLAUDE_CODE_AUTO_MODE_SERVER=1` 也会开启服务器端检查;如果托管设置设置了前者,则也必须设置 `1` - 新增对终端中 MCP 任务的支持:当 MCP 服务器以任务方式运行工具调用时,Claude Code 会立即将其移至后台,并在完成时告知 Claude 结果 - 新增 `CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUND` 环境变量,使 Claude Code 在其工具调用中等待 MCP 任务完成,而不是立即将其移至后台 - 新增 `permissions.denyInsteadOfPrompting` 设置:在终端会话、子代理和队友中,原本会等待权限提示的工具调用将被拒绝,且该轮次继续执行 - 新增 `/claude-api latency-optimize`,用于找出你的 Claude API 代码中让人等待的地方,并针对你的评估尝试更快的设置 - 新增 `CLAUDE_CODE_DISABLE_FEATURE_FLAGS` 环境变量,可在不关闭遥测的情况下停止获取功能开关;此后每个开关都使用其内置默认值 - 为位于 Claude apps 网关之后、没有支出限额的开发者,在 `/usage` 中新增今日、本周和本月的支出,前提是该网关运行此版本或更高版本 - 在 Claude apps 网关中新增 `admin.pooled_conflict_rule` 和 `admin.pooled_priority_order`, 用于设置当开发者属于多个组时,哪个池化组预算优先支付 - 在 Claude apps 网关中新增可选的 `login_notice` 设置,可在网关的浏览器验证页面和 Claude Code 的登录界面上显示由运营者定义的消息 - 在 Claude apps 网关中新增 `CLAUDE_GATEWAY_LOG_FORMAT=json`:运维日志行将变为包含 `severity`、`time` 和 `message` 的 JSON,供从字段读取级别的日志收集器使用 - 在 Claude apps 网关中新增启动警告,用于另一种策略的 `availableModels` 也允许某个策略按名称列出的自定义模型 ID 的情况 - 在 Claude apps 网关中为没有 `desktopHome` 且依赖 `coworkTabEnabled: false` 或 `chatSessionRetentionDays` 的策略新增启动警告,以应对 Claude Desktop 11 月 10 日的变更 - 新增警告:当你的 claude.ai 登录结束,而 Claude Code 继续使用来自 `ant auth login` 的登录时,会将用量计费到你的 Claude Console 组织 - 新增启动时的一行提示,在 Claude Code 使用来自 `ant auth login` 的登录的情况下,指明计费所用的 Claude Console 组织 - 在 `/tasks` 中新增“本次会话较早时”一行,列出已完成的子代理,以便你可以重新打开其中一个并向其发送消息,即使它已离开列表或你已重启 - 在云会话的 `/loop` 确认信息中新增说明:计时器会随其容器停止,并提供一种可存活的循环选项 - 修复了使用较旧握手的 MCP 服务器无法连接或返回空结果的问题, 原因是 Claude Code 声明了一个仅在与较新服务器配合时才使用的扩展 - 修复了 claude.ai 连接器上长时间运行的 MCP 工具调用在 `--resume` 后有时从不报告结果的问题 - 修复了当 Claude Code 运行的文件夹中存在名为 `HEAD` 的文件或文件夹时,会话的差异在 claude.ai 和移动应用上无法加载的问题 - 修复了当 git 仓库顶层存在名为 `HEAD` 的文件或文件夹时,`/diff` 显示“Diff unavailable”的问题 - 修复了在 64 个或更多轮次编辑过文件的会话中,`/diff` 窗格打开为空白的问题 - 修复了在前导空格、制表符或换行符之后输入的斜杠命令被作为纯文本发送给 Claude 而不是执行的问题 - 修复了某个请求在每次重试时都因刷新登录而持续失败并返回 401,并在你的其他会话中导致 401 的问题 - 修复了 `/context` 在之后的每一轮都将其完整可视化网格发送给 Claude 的问题;Claude 现在只读取表格 - 修复了 `claude -p` 在 auto mode 下因其操作因没有可用的安全检查而被拒绝时仍以 0 退出的问题:文本和 JSON 输出现在以 1 退出 - 修复了在 Linux 上,对于位于网络文件系统(NFS、SMB、Lustre 等)上的项目,Claude Code 在启动时列出每个项目文件的问题 - 修复了当客户端连续发送模型变更和 auto mode 请求时,auto mode 被错误拒绝的问题 - 修复了当服务器端审查未到达会话(例如位于会丢弃它的 LLM 网关之后)时,`/status` 显示“Auto mode server: Enabled”的问题 - 修复了在服务器拒绝为你的组织提供反馈后,Claude 起草的反馈、调查和 `/feedback` 仍继续出现的问题 - 修复了 Claude 在无法发送的第三方网关上起草反馈的问题 - 修复了当权限规则或 `autoMode` 设置非常大时,auto mode 拒绝操作却不说明原因的问题:现在它会解释并且, 除非设置了 `autoMode` 拒绝规则,否则会在终端中询问你 - 修复了 Bash 拒绝和询问规则遗漏使用引号书写的命令的问题 - 修复了子代理交回报告在详细模式之外展开时显示内部标记和来源说明的问题 - 修复了 `claude -p --resume` 带提示词时,在其 MCP 服务器缺失的情况下丢失延迟工具调用的问题:现在运行会以 1 退出,保留该调用并拒绝后续输入 - 修复了发送给 SDK 客户端的提示性消息中文本被丢弃的问题 - 修复了磁盘已满时,Agent SDK 宿主收到通用退出码错误而非失败运行自身错误消息的问题 - 修复了 `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` 在会话以另一种权限模式恢复时重新运行在计划模式下被中断的轮次的问题 - 修复了在 Claude Code 写入设置文件后几秒内所做的编辑被忽略的问题 - 修复了遗留名称的配置文件在无警告的情况下掩盖你的设置的问题:当主目录中存在两个配置文件时,Claude Code 现在会在 stderr 上说明,并指出正在使用的是哪一个 - 修复了在只读文件夹中保存或保存到绑定挂载文件时磁盘写满,导致 `~/.claude.json`、设置和已编辑文件变为空或被截断的问题(同一时间只有一个会话在保存) - 修复了 Write 在无法读取要覆盖的文件时以拒绝结束轮次的问题 - 修复了几乎立即完成的后台 Bash 命令丢失其输出却被报告为已完成的问题 - 修复了 Bash 工具对已更改文件的差异遗漏命令在结束前刚写入的文件的问题 - 修复了拼错的模型名称(例如 `opus-5-5`) 提示你更新 Claude Code,而不是建议你原本想用的模型的问题 - 修复了当权限提示打开期间笔记本发生变化时,`NotebookEdit` 更改错误单元格的问题 - 修复了在 `/login` 成功界面按 Enter 后约 0.5 秒的卡顿:对话框现在会立即关闭,登录后的刷新在后台运行 - 修复了在屏幕阅读器模式下回答问题的“其他”答案时,Ctrl+G 无法打开外部编辑器的问题 - 修复了在设置了 `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` 且机器自身没有 DNS 时,Monitor 的 WebSocket 监视在代理后失败并报“could not resolve”的问题 - 修复了 `claude plugin eval` 警告建议对绝不能调用的工具使用 `max: 0`,而这永远无法通过的问题 - 修复了后台插件自动更新未安装更新后插件版本新增的依赖的问题 - 修复了在从 agents 视图打开的会话中,通过 tmux 在 Ghostty 里 Cmd+click 无法打开链接的问题 - 修复了 `.claude/skills` 中某个 mod 的热重载遗漏刚出现后即被删除的文件,以及遗漏其返回的问题 - 修复了从 `/branch` 之前的检查点恢复代码时,`/rewind` 失败并报“No files were restored”的问题 - 修复了 `/claude-api` 技能称 Console 网页设置不适用于 Managed Agents 会话的问题,并收紧了其凭据和权限示例 - 修复了包裹在普通 `timeout DURATION` 中的只读命令(例如 `timeout 30 rg foo`)出现不必要的权限提示的问题 - 修复了 WebFetch 将 claude.ai 共享聊天链接描述为空页面的问题;现在它会说明无法读取共享聊天,并提示粘贴对话内容 - 修复了 Artifact 数据库调用被重新发送到没有数据库的 artifacts 的问题, 错误现在会说明重新发布是否有帮助 - 修复了保存到文件夹(`out_dir`)的 artifact 数据库读取被拒绝的问题 - 修复了详细 beta 追踪未向要求客户端证书的收集器提供 `CLAUDE_CODE_CLIENT_CERT` 的问题 - 修复了 OpenTelemetry 的 `claude_code.session.count` 指标将从未被认领的 Agent SDK `prewarm()` 进程计入的问题;预启动的进程现在在被认领时计入一次 - 修复了 `/clear` 杀死后台代理、队友和工作流中仍在运行的命令,以及后台代理和队友的前台子代理的问题 - 修复了 Claude 应用网关登录已过期的终端发送遥测和托管设置请求,而网关拒绝并将其记录为 `invalid_token` 的问题 - 修复了 agents 视图看似向等待权限提示的后台会话发送回复的问题;回复现在会留在输入框中,并提示打开会话进行回答 - 修复了 agent 视图在退出时删除同一目录下另一个 agent 视图保存的草稿的问题 - 修复了 agent 视图为更新而自行重启后,带回另一个 agent 视图输入文本的问题 - 修复了 agents 视图预览截断长命令、结果和状态行时没有省略号,以及从等待批准的命令中丢弃 `**`、反引号和标签的问题 - 修复了 Claude in Chrome 在操作中途连接断开时报告扩展未连接的问题; Claude 现在会在重复执行可能已经运行过的操作前先检查页面 - 修复了远程控制会话在其他设备上仍显示“已达上限”的问题,即使使用限制已在会话外解除 - 修复了 Claude iOS 应用中 Claude 发送单个文件时文件卡片有时缺失的问题 - 修复了自托管运行器会话在服务器持续拒绝续订模型访问时无任何说明地失败的问题:运行器现在会更早重试,并在会话中发布警告 - 修复了云会话中 `/permissions` 仅回复不可用的问题;现在它会说明会话规则所在位置以及如何更改它们 - 修复了云会话在迁移到新工作进程时丢失会话级 deny 和 ask 权限规则的问题,例如 PermissionRequest 钩子添加的规则 - 修复了在云会话中你输入三条消息而不是回答其问题时,该会话的 mod 热重载被关闭的问题 - 修复了在 Claude Code 网页版中,`/clear` 后仍在运行的后台任务从任务列表中消失、直到另一个任务开始或结束才重新出现的问题 - 修复了隐藏命令出现在移动端和网页版云会话斜杠命令菜单中的问题 - 修复了 `/rewind` 可能通过目录符号链接恢复或删除文件的问题 - 修复了 `sed` 命令在 accept-edits 和 auto 模式下可能跳过权限检查的问题 - 修复了当网关 URL 仅在托管设置中设置、且无法获取服务器托管设置时,托管设置中的 `CLAUDE_CODE_AUTO_MODE_SERVER=1` 在 LLM 网关之后被忽略的问题 - 修复了 Bash 权限绕过问题:精心构造的环境变量前缀可能使命令的一部分对权限检查隐藏 - 修复了使用 claude.ai 连接器的终端名称(`mcp__claude_ai_Slack`)编写的 deny 和 ask 规则、 钩子匹配器以及 `disallowedTools` 条目在 Claude Desktop 中被忽略的问题(Claude Desktop 包含此版本后生效) - 修复了创建 worktree 时的沙箱逃逸问题 - 修复了自托管运行器:`--trust-workspace false` 现在还会阻止仓库设置文件和技能中的钩子运行 - 修复了通过 shell 导出的 LLM 网关启动的空闲后台会话在更新后离开网关的问题 - 修复了 `/status` 中的帮助链接和 auto 模式计费通知在换行时只打开部分地址的问题 - 修复了在设置了 `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` 时,TLS 检查代理后面的证书错误持续存在的问题。 设置该变量后,Claude Code 现在会在证书失败后与配置的 API 主机进行 TLS 握手,如果设置了 http:// 代理则通过该代理进行;它不会发送任何 API 请求 - 修复了 `claude remote-control` 在首次运行问题未得到回答时(脚本、服务、批处理作业、Ctrl+C)以状态 0 静默退出的问题;现在它会说明原因并以 1 退出 - 修复了 `claude remote-control` 在首次运行问题中忽略管道传入的、后面没有换行的 `y` 的问题;现在它会被视为肯定回答 - 修复了 `/rename` 在新名称无法保存到会话记录时仍报告成功的问题;现在它会警告新名称可能无法保留 - 修复了插件提供的 `subagentStatusLine` 命令中 `${CLAUDE_PLUGIN_ROOT}` 未被替换的问题,该命令现在可以引用插件自己的脚本 - 修复了 `claude plugin update` 和 `/plugin` 的“立即更新”未安装新插件版本添加的依赖的问题 - 修复了子代理在压缩后被告知要等待其既未启动也未接手的后台代理的完成通知的问题 - 修复了后台代理的后续报告被静默丢失的问题:通知现在会说明报告被拒绝以及如何请求它 - 改进了 Windows 上的配置保存:Claude Code 会等待另一个程序打开的文件更长时间,因此保存期间被终止时 `~/.claude.json` 变为空的可能性更低 - 改进了 Claude in Chrome 在短暂断开连接后的表现:它会最多等待 6 秒让会话自己的浏览器恢复,然后再选择另一个 - 改进了 Claude in Chrome:最多 60,000 个字符的 `javascript_tool` 结果现在会保留在对话中,而不是保存到文件 - 改进了 `claude purge` 和旧会话清理,使其重试无法完全删除的文件夹, 并在其仍然存在时报告为错误 - 改进了 macOS 和 Windows 上对工作目录之外路径的拒绝提示:当其与工作目录内路径仅字母大小写不同时,消息会指出该拼写 - 改进了浅灰色次要文本的对比度,例如提示、`/stats`、`/model` 和 `/sandbox` 中的详细信息,以及被拒绝操作的消息 - 改进了当更新目标文档不存在时,以及当服务暂停重复被拒绝的写入时的 artifact 数据库错误 - 改进了 Claude 应用网关关于上游调用失败的警告:每条警告现在都会指明上游,而不仅是其提供商 - 改进了 Claude 应用网关的支出限制错误:它会显示“已达支出限制 · 12 月 1 日重置”,然后显示 `admin.blocked_message`(如果已设置) - 改进了 `/model` 选择器:较旧的模型现在分组在“更多模型”行下,而不是列在当前模型之后 - 改进了终端中的 `/context`,使 Claude 读取的表格保持简短:每个列表保留最大的 10 行,按需加载的 MCP 工具在被调用前每个服务器共享一行 - 改进了云会话中的 `/usage`:在无法显示套餐限制的情况下,它现在会链接到 claude.ai 上的设置 → 用量 - [VSCode] 改进了移除插件市场的确认:它现在会检查当时安装了哪些插件 - 更改了 MCP 任务,使其在终端中无需获取功能标志即可工作(Bedrock、Vertex、Foundry、LLM 网关、`DISABLE_TELEMETRY`); 设置 `CLAUDE_CODE_DISABLE_MCP_TASKS=1` 可将其关闭 - 更改了 auto mode,使项目的设置文件或插件在你于项目外部将其关闭后,无法再重新开启其服务器端检查 - 更改了 Monitor 的 WebSocket 监视,使其对每条 Bash 命令都遵循一条规则:拒绝规则会拒绝该命令,而在询问规则下,Monitor 上的允许、绕过模式或 auto mode 不再跳过提示 - 更改了 `CLAUDE_CODE_PROXY_RESOLVES_HOSTS`,使设置文件无法在主机管理网络的情况下设置它;请在进程环境中设置它 - 更改了会话的精确 Bash 或 PowerShell 询问规则:当更宽泛的拒绝规则覆盖该命令时,该规则会被拒绝,而不是询问 - 更改了 Bash 工具,使其在运行带有查找/显示集合之外标志的 `which` 之前请求权限 - 更改了 `--add-dir` 目录,使其仅在该目录自身的信任对话框被接受后才注册插件市场 - 更改了嵌套技能加载:在 Bash 沙箱开启时,起始文件夹下 `.claude/skills` 文件夹中的技能仅在你于该处启动 Claude Code 或 `/cd` 到该处时才会加载 - 更改了自定节奏的 `/loop`,使其在某一轮结束时未重新调度就结束,而不是调度一个后备唤醒;设置 `CLAUDE_CODE_LOOP_KEEPALIVE=1` 可保留旧行为 - 更改了 PostToolUse 钩子,使其在新消息中断该轮之后完成的工具调用上运行,最多有 10 秒时间完成 - 更改了在防护措施停止子代理后告知 Claude 的内容:改用更窄的提示重试或告知你,而不是自己完成工作 - 更改了云会话,使其在迁移到新 worker 时丢弃会话范围的允许规则,前提是其拒绝和询问规则无法全部保留, 因此你可能会再次被询问 - 更改了 TLS 检查代理背后的自动证书修复:当 `ALL_PROXY` 是唯一设置的代理变量时,它不再运行。请改为将 `HTTPS_PROXY` 设置为该代理的 http:// URL - 更改了 artifact 数据库对他人可能已写入的行的保存:每个文件都会获得一个隐藏标记文件,而没有该标记的现有文件(包括早期版本的导出文件)会被保持原样并报告 - 更新了 `/claude-api managed-agents-onboard` 模板以匹配 Claude Console:移除了 Performance tuner,重命名了两个,并在五个提示未使用它们的模板中关闭了网页搜索和抓取 - 从 Claude Code 内置的 Claude in Chrome 工具中移除了 `shortcuts_list` 和 `shortcuts_execute`,它们用于列出并启动保存在扩展中的快捷方式 - 网关:为将 AWS GovCloud 与其他上游混合的上游,以及网关环境中的基础 URL 变量,添加了启动警告 - 网关:添加了启动日志警告,当托管设置在一个标头中指定 Amazon Bedrock 护栏而网关不会转发该标头,且没有 `bedrock` 上游设置 `guardrail` 时 - 网关:修复了 Claude Desktop 在所有上游均为 Amazon Bedrock 时提供一个总是失败的网页搜索工具的问题 - 自托管运行器:修复了使用 `--use-anthropic-git-proxy` 或 `--configure-git` 启动的运行器在启动检查失败导致其退出之前就完成注册的问题;它现在会先退出 - 自托管运行器:更改了 `CLAUDE_RUNNER_CHECKOUT_PATH`,使会话中的每个仓库都有自己的文件夹:会话中已被占用的文件夹名会在末尾加上 `-2`、`-3`…… - 自托管运行器:移除了会话结束时上传会话调试日志的行为;失败会话的日志会保留在运行器主机上,除非设置了 `--remove-session-state` - [VSCode] 修复了超过 50,000 个字符的提示被静默截断的问题:提示现在会保留在聊天框中并显示通知,超过限制的粘贴会被拒绝并显示通知 - [VSCode] 修复了点击调查或“报告问题”按钮时会发送未完成提示的问题 - [VSCode] 修复了从扩展的 Web 标签页打开的云会话会带回已被 `/clear` 或对已输入提示的重试或编辑移除的轮次的问题 - [VSCode] 修复了在扩展中重命名已删除会话时该会话的文件会重新出现的问题 - [VSCode] 修复了窗口重新加载后 Claude 执行未经批准的计划的问题:在计划模式下被中断的步骤现在会在会话以另一种权限模式恢复时停止并显示通知 - [VSCode] 改进了 Claude 应用网关背后的“未登录”消息:它现在看起来像错误,并带有登录链接 - [VSCode] 更改了 Claude 回复中指向 Claude 登录、连接器或 API 地址的链接,使其显示为带地址的文本,而不是在浏览器中打开 - [VSCode] 修复了当拖放项的路径包含一长串“/”字符时聊天面板可能冻结的问题 - [VSCode] 修复了 `claude-vscode.toggleDictation` 命令会同时在所有打开的 Claude 视图中启动听写的问题;它现在只在你正在使用的视图中生效,再次按下会停止听写 - [VSCode] 修复了当带有许多未闭合 `$$` 数学围栏(每个都比上一个短)的回复流式传入时聊天面板变慢的问题 - [VSCode] 改进了聊天面板针对大型工作区的诊断工具:它会省略没有问题的文件,返回紧凑的 JSON,并接受可选的最低严重级别 - [云会话] 修复了计划任务会静默丢弃名为 memory 的连接器的问题:运行现在会保留它, 以该名称加上一个短后缀挂载 - [云会话] 修复了在云会话中于等待消息上点击“立即发送”会导致正在运行的后台代理结束的问题;它们现在会继续运行 - [云会话] 改进了自托管环境中设置停滞的警告:其链接现在会优先指向你组织的默认环境或带有活动运行器的环境,并显示其名称 - [代码审查] 更改了取消关联 GitHub 组织的操作,使其同时关闭代码审查中的“所有仓库”设置;重新关联后该设置会保持关闭,直到你重新开启 - [Claude Tag] 修复了当频道列表无法完全加载时 Claude Tag 设置会阻止启动的问题;管理员现在无需选择频道即可启动 - [Claude Tag] 在已连接 Claude Tag 的企业组织的模型管理页面中新增了 Claude Tag 行,链接到其模型默认值的管理位置 - [Claude Tag] 修复了在 Claude Tag 管理设置中保存自动模式允许规则时会覆盖另一位管理员所做更改的问题;现在保存会被拒绝并显示一条消息