Claude Code 发布 v2.1.319:MCP 任务后台化与网关多项更新
v2.1.319
Anthropic 给 Claude Code 更新了一批实用功能:MCP 任务能直接丢后台跑,权限卡住时自动拒绝不阻塞,还能用 /claude-api latency-optimize 找 API 延迟点,用网关的团队尤其值得升级。
Anthropic 发布 Claude Code v2.1.319。新版本在关闭 telemetry 或 feature flags 时调整了 auto mode 行为,无法校验的调用会被询问或拒绝,可用 CLAUDE_CODE_AUTO_MODE_SERVER=0 保留内置分类器。MCP 工具调用现在可作为 task 立即转入后台运行,完成后才把结果返回给 Claude。新增 permissions.denyInsteadInsteadOfPrompting 设置,权限提示会改为直接拒绝并继续当前回合。/claude-api latency-optimize 可分析 Claude API 代码中的延迟点并用 eval 尝试更快配置,/usage 也新增了今日、本周、本月的消费统计。
v2.1.319
What's changed Changed auto mode with telemetry or feature flags off, including behind LLM gateways: calls the server can't check are asked about or denied, with no fallback to the built-in classifier; set CLAUDE_CODE_AUTO_MODE_SERVER=0 to keep using it (Bedrock, Vertex and Foundry are unchanged) Changed auto mode behind an LLM gateway: CLAUDE_CODE_AUTO_MODE_SERVER=1 turns on the server-side check even with CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS set; if managed settings set the latter, they must set the 1 too Added support for MCP tasks in the terminal: when an MCP server runs a tool call as a task, Claude Code moves it to the background right away and tells Claude the result when it finishes Added the CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUND environment variable to make Claude Code wait for an MCP task inside its tool call instead of moving it to the background right away Added permissions.denyInsteadOfPrompting setting: a tool call that would wait on a permission prompt is denied and the turn continues, in terminal sessions, subagents and teammates Added /claude-api latency-optimize to find where your Claude API code makes people wait and try faster settings against your eval Added the CLAUDE_CODE_DISABLE_FEATURE_FLAGS environment variable, which stops feature-flag fetching without turning off telemetry; every flag then uses its built-in default Added spend for today, this week and this month to /usage for developers behind a Claude apps gateway who have no spend limit, when the gateway runs this version or later Added admin.pooled_conflict_rule and admin.pooled_priority_order to the Claude apps gateway, to set which pooled group budget pays first for a developer in several groups Added an optional login_notice setting to the Claude apps gateway that shows an operator-defined message on the gateway's browser verification page and on Claude Code's sign-in screen Added CLAUDE_GATEWAY_LOG_FORMAT=json to the Claude apps gateway: operational log lines become JSON with severity , time and message , for log collectors that read the level from a field Added a Claude apps gateway boot warning for a case where another policy's availableModels also allows a custom model id that one policy lists by name Added start-up warnings to the Claude apps gateway for policies with no desktopHome that rely on coworkTabEnabled: false or chatSessionRetentionDays , ahead of Claude Desktop's November 10 change Added a warning when your claude.ai login ends and Claude Code continues on the sign-in from ant auth login , which bills usage to your Claude Console organization Added a line at startup naming the Claude Console organization that is billed in a case where Claude Code uses the sign-in from ant auth login Added an "Earlier in this session" row to /tasks that lists finished subagents, so you can reopen one and message it even after it leaves the list or you restart Added a note to /loop confirmations in cloud sessions that a timer stops with its container, with an offer of a loop that survives Fixed MCP servers on the older handshake failing to connect, or returning empty results, because Claude Code declared an extension that it only uses with newer servers Fixed a long-running MCP tool call on a claude.ai connector sometimes never reporting its result after --resume Fixed a session's diff failing to load on claude.ai and the mobile apps when the folder Claude Code runs in has a file or folder named HEAD Fixed /diff showing "Diff unavailable" when a git repository has a file or folder named HEAD at its top level Fixed the /diff pane opening blank in sessions where 64 or more turns edited files Fixed slash commands typed after a leading space, tab or newline being sent to Claude as plain text instead of running Fixed a request that kept failing with a 401 refreshing your login on every retry and causing 401s in your other sessions Fixed /context sending its full visual grid to Claude on every later turn; Claude now reads only the table Fixed claude -p exiting 0 in auto mode when its actions were refused because no safety check was available: text and JSON output now exit 1 Fixed a case where Claude Code listed every project file at start on Linux for projects on a network file system (NFS, SMB, Lustre and similar) Fixed a case where auto mode was wrongly refused when a client sent a model change and a request for auto mode back to back Fixed /status showing "Auto mode server: Enabled" when the server-side review isn't reaching the session, for example behind an LLM gateway that drops it Fixed Claude-drafted feedback, surveys and /feedback continuing to appear after the server refused feedback for your organization Fixed Claude drafting feedback on third-party gateways, where it can't be sent Fixed auto mode refusing actions without saying why when permission rules or autoMode settings are very large: it now explains and, unless autoMode deny rules are set, asks you in the terminal Fixed a case where Bash deny and ask rules missed commands written with quoted words Fixed subagent hand-back reports showing an internal marker and provenance note when expanded outside verbose mode Fixed claude -p --resume with a prompt losing a deferred tool call when its MCP server is missing: the run now exits 1, keeps the call and refuses later input Fixed a case where text was dropped from informational messages sent to SDK clients Fixed a case where Agent SDK hosts got a generic exit-code error instead of a failed run's own error message when the disk was full Fixed CLAUDE_CODE_RESUME_INTERRUPTED_TURN re-running a turn that was interrupted in plan mode when the session resumes in another permission mode Fixed edits to a settings file being ignored when made within a few seconds of Claude Code writing that file Fixed a config file left at the legacy name hiding your setup with no warning: Claude Code now says on stderr when a home holds two config files, and which is in use Fixed ~/.claude.json , settings and edited files ending up empty or cut off when the disk fills during a save in a read-only folder or to a bind-mounted file (one session saving at a time) Fixed Write ending the turn as a refusal when it couldn't read the file to overwrite Fixed background Bash commands that finish almost instantly losing their output while being reported as completed Fixed the Bash tool's diff of changed files missing a file that the command wrote just before it ended Fixed a mistyped model name, such as opus-5-5 , telling you to update Claude Code instead of suggesting the model you meant Fixed a case where NotebookEdit changed the wrong cell when the notebook changed while a permission prompt was open Fixed a ~0.5s hang after pressing Enter on the /login success screen: the dialog now dismisses immediately and the post-login refresh runs in the background Fixed Ctrl+G not opening the external editor while typing an "Other" answer to a question in screen reader mode Fixed Monitor's WebSocket watch failing with "could not resolve" behind a proxy when CLAUDE_CODE_PROXY_RESOLVES_HOSTS is set and the machine has no DNS of its own Fixed claude plugin eval warnings suggesting max: 0 for a tool that must not be called, which could never pass Fixed background plugin auto-update not installing a dependency added by the updated plugin version Fixed Cmd+click not opening links in Ghostty over tmux in sessions opened from the agents view Fixed a mod's hot reload in .claude/skills missing a file that was deleted just after it appeared, and missing its return Fixed /rewind failing with "No files were restored" when restoring code to a checkpoint from before /branch Fixed the /claude-api skill saying Console web settings don't apply to Managed Agents sessions, and tightened its credential and permission examples Fixed needless permission prompts for read-only commands wrapped in a plain timeout DURATION , such as timeout 30 rg foo Fixed WebFetch describing claude.ai shared-chat links as empty pages; it now says shared chats can't be read and to paste the conversation instead Fixed Artifact database calls being re-sent to artifacts without a database; errors now say whether republishing helps Fixed a case where artifact database reads that save to a folder ( out_dir ) were refused Fixed detailed beta tracing not presenting CLAUDE_CODE_CLIENT_CERT to collectors that require a client certificate Fixed the OpenTelemetry claude_code.session.count metric counting Agent SDK prewarm() processes that were never claimed; a pre-started process now counts once, when it is claimed Fixed /clear killing running commands of background agents, teammates and workflows that keep running, and foreground subagents of background agents and teammates Fixed a terminal whose Claude apps gateway sign-in had expired sending telemetry and managed-settings requests that the gateway refused and logged as invalid_token Fixed the agents view appearing to send a reply to a background session waiting on a permission prompt; the reply now stays in the box with a hint to open the session and answer Fixed agent view removing a draft saved by another agent view in the same directory when exiting Fixed a case where agent view came back with another agent view's input text after restarting itself for an update Fixed the agents view preview cutting off long commands, results and status lines without an ellipsis, and dropping ** , backticks and tags from commands waiting for approval Fixed Claude in Chrome reporting the extension as not connected when the connection dropped mid-action; Claude now checks the page before repeating an action that may have run Fixed Remote Control sessions still showing "Limit reached" on other devices after a usage limit was lifted outside the session Fixed the file card sometimes missing in the Claude iOS app when Claude sent a single file Fixed self-hosted runner sessions failing with no explanation when the server keeps refusing to renew model access: the runner now retries sooner and posts a warning in the session Fixed /permissions in cloud sessions replying only that it isn't available; it now says where the session's rules live and how to change them Fixed cloud sessions losing session-scoped deny and ask permission rules, such as those a PermissionRequest hook adds, when the session moves to a new worker Fixed mod hot-reloading turning off for the session when you typed three messages instead of answering its question in a cloud session Fixed background tasks that keep running after /clear disappearing from the task list in Claude Code on the web until another task started or ended Fixed hidden commands appearing in the slash command menu of cloud sessions on mobile and web Fixed a case where /rewind could restore or delete a file through a directory symlink Fixed a case where a sed command could skip the permission check in accept-edits and auto mode Fixed a case where CLAUDE_CODE_AUTO_MODE_SERVER=1 in managed settings was ignored behind an LLM gateway when the gateway's URL is set only there and server-managed settings can't be fetched Fixed a Bash permission bypass where a crafted environment prefix could hide part of a command from permission checks Fixed a case where deny and ask rules, hook matchers and disallowedTools entries written with a claude.ai connector's terminal name ( mcp__claude_ai_Slack ) were ignored in Claude Desktop (takes effect once Claude Desktop includes this version) Fixed a sandbox escape when creating a worktree Fixed self-hosted runners: --trust-workspace false now also stops hooks in the repository's settings files and skills from running Fixed a case where idle background sessions started through a shell-exported LLM gateway left the gateway after an update Fixed help links in /status and the auto mode billing notice opening only part of the address when they wrap Fixed a case where certificate errors behind a TLS-inspecting proxy persisted when CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC was set. With it set, Claude Code now makes a TLS handshake with the configured API host after a certificate failure, through your http:// proxy if one is set; it sends no API request Fixed claude remote-control exiting silently with status 0 when a first-run question gets no answer (scripts, services, batch jobs, Ctrl+C); it now says why and exits 1 Fixed claude remote-control ignoring a piped y that has no newline after it at the first-run question; it now counts as a yes Fixed /rename reporting plain success when the new name could not be saved to the session transcript; it now warns that the new name may not last Fixed ${CLAUDE_PLUGIN_ROOT} not being substituted in a plugin-provided subagentStatusLine command, which can now reference the plugin's own scripts Fixed claude plugin update and /plugin "Update now" not installing dependencies added by the new plugin version Fixed subagents being told after compaction to expect a completion notice for background agents they neither started nor took over Fixed a case where a background agent's later report was lost silently: the notification now says it was refused and how to ask for it Improved config saves on Windows: Claude Code waits longer for a file another program has open, so a kill during a save is less likely to leave ~/.claude.json empty Improved Claude in Chrome after a brief disconnect: it waits up to 6 seconds for the session's own browser to return before picking another Improved Claude in Chrome: javascript_tool results of up to 60,000 characters now stay in the conversation instead of being saved to a file Improved claude purge and the clean-up of old sessions to retry a folder that could not be fully deleted, and to report it as an error if it remains Improved the refusal for a path outside the working directories on macOS and Windows: when only its letter case differs from a path inside them, the message names that spelling Improved the contrast of faint gray secondary text, such as hints, details in /stats , /model and /sandbox , and rejected-action messages Improved the artifact database error when an update targets a document that does not exist, and when the service pauses repeated refused writes Improved the Claude apps gateway's warnings about a failed upstream call: each now names the upstream, not only its provider Improved the Claude apps gateway's spend limit error: it reads "spend limit reached · resets Dec 1", then admin.blocked_message if one is set Improved the /model picker: older models are now grouped under a "More models" row instead of being listed after the current ones Improved /context at the terminal so the table Claude reads stays short: each list keeps its 10 largest rows, and MCP tools that load on demand share one row per server until they're called Improved /usage in cloud sessions: it now links to Settings → Usage on claude.ai in a case where plan limits can't be shown [VSCode] Improved the confirmation for removing a plugin marketplace: it now checks which of its plugins are installed at that moment Changed MCP tasks to work in the terminal without feature-flag fetching (Bedrock, Vertex, Foundry, LLM gateways, DISABLE_TELEMETRY ); set CLAUDE_CODE_DISABLE_MCP_TASKS=1 to turn them off Changed auto mode so that a project's settings files or a plugin can no longer switch its server-side check back on once you have switched it off outside the project Changed Monitor's WebSocket watch to follow a rule on every Bash command: a deny refuses it, and under an ask rule an allow on Monitor, bypass mode or auto mode no longer skips the prompt Changed CLAUDE_CODE_PROXY_RESOLVES_HOSTS so that settings files can no longer set it where the host manages the network; set it in the process environment Changed a session's exact Bash or PowerShell ask rule to be refused, not asked about, when a broader deny rule covers the command Changed the Bash tool to ask for permission before running which with flags outside a lookup/display set Changed --add-dir directories to register plugin marketplaces only once that directory's own trust dialog has been accepted Changed nested skill loading: with the Bash sandbox on, skills in .claude/skills folders below the starting folder load only if you start Claude Code there or /cd there Changed self-paced /loop to end when a turn finishes without rescheduling, instead of scheduling a fallback wakeup; set CLAUDE_CODE_LOOP_KEEPALIVE=1 to keep the old behavior Changed PostToolUse hooks to run, with up to 10 seconds to finish, on tool calls that finish after a new message interrupts the turn Changed what Claude is told after safeguards stop a subagent: retry with a narrower prompt or tell you, instead of doing the work itself Changed cloud sessions to drop session-scoped allow rules at a move to a new worker when their deny and ask rules can't all be kept, so you may be asked again Changed the automatic certificate repair behind a TLS-inspecting proxy: it no longer runs when ALL_PROXY is the only proxy variable set. Set HTTPS_PROXY to the proxy's http:// URL instead Changed artifact database saves of rows others may have written: each file gets a hidden marker file, and existing files without one, earlier versions' exports among them, are left alone and reported Updated /claude-api managed-agents-onboard templates to match the Claude Console: removed Performance tuner, renamed two, and turned off web search and fetch in five whose prompts don't use them Removed shortcuts_list and shortcuts_execute , which listed and started shortcuts saved in the extension, from Claude Code's built-in Claude in Chrome tools Gateway: Added startup warnings for upstreams that mix AWS GovCloud with other upstreams, and for base URL variables in the gateway's environment Gateway: Added a start-up log warning when managed settings name an Amazon Bedrock guardrail in a header, which the gateway doesn't forward, and no bedrock upstream sets a guardrail Gateway: Fixed Claude Desktop offering a web search tool that always failed when every upstream is Amazon Bedrock Self-hosted runner: Fixed a runner started with --use-anthropic-git-proxy or --configure-git registering before a failed startup check made it exit; it now exits first Self-hosted runner: Changed CLAUDE_RUNNER_CHECKOUT_PATH so that each repository in a session gets its own folder: a folder name already taken in the session gets -2 , -3 , … at the end Self-hosted runner: Removed the end-of-session upload of a session's debug log; a failed session's log stays on the runner host unless --remove-session-state is set [VSCode] Fixed prompts over 50,000 characters being cut off silently: the prompt now stays in the chat box with a notice, and a paste over the limit is refused with a notice [VSCode] Fixed a click on the survey or "Report a problem" buttons sending the unfinished prompt [VSCode] Fixed cloud sessions opened from the extension's Web tab bringing back turns that /clear , or Retry or Edit of a typed prompt, had removed [VSCode] Fixed a deleted session's file coming back when that session was renamed in the extension [VSCode] Fixed Claude carrying out an unapproved plan after a window reload: a step interrupted in plan mode now stops with a notice when the session comes back in another permission mode [VSCode] Improved the "not signed in" message behind a Claude apps gateway: it now looks like an error and has a Sign in link [VSCode] Changed links in Claude's replies that point at Claude sign-in, connector or API addresses to show as text with the address, instead of opening in the browser [VSCode] Fixed a possible chat panel freeze when a dropped item's path contains a very long run of "/" characters [VSCode] Fixed the claude-vscode.toggleDictation command starting dictation in every open Claude view at once; it now acts only in the view you are using, and a second press stops it [VSCode] Fixed the chat panel slowing down while a reply with many unclosed $$ math fences, each shorter than the last, streams in [VSCode] Improved the chat panel's diagnostics tool for large workspaces: it leaves out files with no problems, returns compact JSON, and accepts an optional minimum severity [Cloud sessions] Fixed scheduled tasks silently dropping a connector named memory: runs now keep it, mounted under that name plus a short suffix [Cloud sessions] Fixed Send now on a waiting message in cloud sessions ending running background agents; they now keep running [Cloud sessions] Improved the stalled-setup warning on self-hosted environments: its link now prefers your organization's default or an environment with a live runner, and names it [Code Review] Changed unlinking a GitHub organization to also turn off its All repositories setting in Code Review; it stays off after you relink until you turn it back on [Claude Tag] Fixed Claude Tag setup blocking launch when the channel list couldn't fully load; admins can now launch without picking a channel [Claude Tag] Added a Claude Tag row to the Models admin page for Enterprise orgs with Claude Tag connected, linking to where its model defaults are managed [Claude Tag] Fixed saving auto mode allow rules in Claude Tag admin settings overwriting another admin's changes; the save is now refused with a message