github anthropics/claude-code v2.1.319

2 hours ago

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

Don't miss a new claude-code release

NewReleases is sending notifications on new releases.