Claude Code 2.1.277
87changes- Read AGENTS.md as project instructions when no CLAUDE.md is present.
- See and stop background shells and tasks from a new VS Code agent map.
- Mark subagent results as untrusted output so they cannot pass as session instructions.
- Fix a sandbox.excludedCommands glob that let unmatched parts of a compound command run unsandboxed.
- Fix a cloud environment's Custom network access silently reverting to Trusted with no domains set.
New features
10Support AGENTS.md project instructions
Added AGENTS.md support: in a project with no CLAUDE.md, Claude Code reads AGENTS.md instead; change it under "Project instructions" in /config (not yet on Bedrock, Vertex or Foundry)
[VSCode] Show background tasks in the agent map
Added background shells and other running tasks to the agent map, each with a Stop, and a typed /tasks that opens it
▤ In the docs[VSCode] Add a Sign out menu row
Added a Sign out row to the panel menu, with /logout in the typed command menu
[Web] Split the environment picker by owner
Added Personal and Organization sections to the environment picker on Team and Enterprise plans, and admins can now share a personal environment with the organization
▤ In the docsAdd CLAUDE_GATEWAY_PROXY_IS_EGRESS_BOUNDARY flag
Added CLAUDE_GATEWAY_PROXY_IS_EGRESS_BOUNDARY=1 for Claude apps gateways whose only egress is a forward proxy: every outbound request hands the proxy the hostname instead of resolving it locally
▤ In the docsMore changes (5) Fewer changes
Add static headers on gateway upstreams
Added an optional headers: map on Claude apps gateway upstreams, to send static headers to a proxy you run in front of a provider
▤ In the docsShow waiting background task updates
Added a line saying a background task's update is waiting when it finishes while a panel such as /tasks is open
[VSCode] Add a Copy response button
Added a Copy response button on responses and a typed /copy
[VSCode] Notify on auto-archive, add Unarchive all
Added a one-time notice when inactive sessions are archived automatically, and an "Unarchive all" action on the Archived sessions group
[VSCode] Show cost and usage without plan limits
Added the session's cost and token usage to the Account & usage dialog and the session manager where plan limits do not apply (Vertex, Bedrock, Foundry, API key)
▤ In the docsImprovements
18More changes (17) Fewer changes
Speed up SDK and headless session startup
Improved session start-up for SDK and headless (-p) use: the first turn no longer waits on the per-directory CLAUDE.md lookup
Name the loopback flag in gateway errors
Improved the Claude apps gateway's loopback error messages to name CLAUDE_GATEWAY_ALLOW_LOOPBACK
Show which plugin an MCP server belongs to
Improved /plugin Installed: an MCP server listed apart from its plugin now shows which plugin it belongs to
Suggest updates for already-installed plugins
Improved claude plugin install on an already-installed plugin: it now says when the marketplace offers a newer version and names the claude plugin update command
Clarify the hidden startup notices line
Improved the startup notice overflow line under the logo: it now reads "N more notices hidden" instead of "+N more · /status"
Strip invisible Unicode characters before sending
Improved prompt handling: invisible Unicode formatting and tag characters in a prompt are removed and the cleaned prompt is shown for review before it is sent
Clarify /ultrareview with nothing to review
Improved /ultrareview when there's nothing to review: messages say which case you're in, offer a command that reviews your latest commit, and a new repository's first commit is reviewed in full
▤ In the docsRead artifact links with the Artifact tool
Improved artifact link handling so Claude reads claude.ai artifact links with the Artifact tool instead of WebFetch when that tool is available
Suggest a guard for flagged rm commands
Improved the dangerous-rm permission prompt to name the flagged rm command and suggest a ${VAR:?} guard, so headless runs can recover
Clarify Artifact tool permission prompts
Improved the Artifact tool's permission prompts: shorter sentences, pages and artifacts named by title or file name, and links listed after the text
Always list Fable in /model
Changed Fable to always appear in /model on the Anthropic API; it is greyed out only when your organization's settings disable it
Match Bash sandbox wording across platforms
Changed the Bash sandbox instructions on Bedrock, Vertex and Foundry to the first-party wording, which frames the sandbox as the boundary of what the task was given
Refuse /ultrareview without a base branch
Changed /ultrareview in non-interactive sessions to refuse when the repository has no base branch or shared history
Frame workflow agent() prompts as script text
Changed workflow scripts' computed agent() prompts on Bedrock, Vertex and Foundry to reach the subagent framed as script-authored text, so the safety classifier does not read them as the user
[Web] Move environment editing to Admin settings
Changed organization environments to open as a read-only summary from the Code tab on Team and Enterprise plans, with editing under Admin settings then Cloud environments
▤ In the docs[Web] Rename the Web admin setting to Cloud sessions
Changed the admin Claude Code setting labeled "Web" to "Cloud sessions" and removed the redundant read-only Mobile row beneath it
[Claude Tag] Support Pylon's EU host
Changed the Pylon credential preset in Claude Tag access bundles so admins can point it at Pylon's EU host
Bug fixes
57Preserve messages typed while Claude works
Fixed messages typed while Claude is still working sometimes being ignored by the model
Fix empty text block request failures
Fixed conversations failing every request with "text content blocks must be non-empty" when an earlier assistant turn held an empty text block beside other content, including after --resume
Require every part of a command to match
Fixed a sandbox.excludedCommands glob exempting an entire compound Bash command from the sandbox when only one part matched; every part must now match
[Web] Require a domain for Custom network access
Fixed a cloud environment saved with Custom network access and no domains silently reverting to Trusted; the dialog now asks for at least one domain
Fix marketplace policy disabled by bad entries
Fixed one malformed strictKnownMarketplaces or blockedMarketplaces entry silently disabling the whole enterprise marketplace policy
More changes (52) Fewer changes
Report internal errors instead of hanging
Fixed claude -p and Agent SDK sessions that could hang with no result after an internal error; they now report the error and exit with code 1
Fix logout from older builds on same machine
Fixed being unexpectedly logged out when an older Claude Code build (for example an IDE extension's bundled CLI) runs on the same machine as the current one
Fix startup hang on malformed key cache
Fixed interactive start-up hanging or showing an error for ANTHROPIC_API_KEY users when ~/.claude.json holds a malformed customApiKeyResponses value
Fix update checks on invalid proxy versions
Fixed update checks erroring every 30 minutes, and claude update hanging when a minimum or maximum version is set, if a proxy returns an invalid version; a malformed minimumVersion is now ignored
Fix false up-to-date reports on winget/apk
Fixed claude update on winget- or apk-managed installs reporting "up to date" when the version lookup failed
Fix plugin reinstall breaking in-use copies
Fixed claude plugin install sometimes failing and breaking the installed copy when reinstalling a plugin version that a session or another program was using; an unchanged copy is now left alone
Report resource errors instead of no matches
Fixed Grep and Glob reporting no matches when the search could not start because the system was out of processes, memory or file handles; they now return an error saying so
Report a clear error for directory paths
Fixed the Write tool silently ending the turn as a declined permission when the target path is an existing directory; it now reports a clear error
Fix Edit misreading escaped backslash text
Fixed the Edit tool treating an escaped backslash followed by uXXXX text as a \uXXXX escape, which could make an edit of a non-ASCII character rewrite an escaped backslash sequence instead
Fix wrong error on large non-ASCII edits
Fixed the Edit tool reporting "Invalid regular expression: regular expression too large" instead of "String not found in file" when a very large edit containing non-ASCII text did not match the file
Fix false null-byte errors from escape text
Fixed a turn ending early with "Path contains null bytes" when a tool call's file path contained \u0000 written as an escape sequence; escaped control characters now stay as literal text
Keep background sessions alive after LSP exits
Fixed background sessions (claude --bg) exiting when a plugin's LSP server exited or closed its stdin
Fix crash from malformed MCP connection flag
Fixed a crash ("Type error") when opening /mcp or /plugin manage with a malformed claudeAiMcpEverConnected value in ~/.claude.json
Fix launch crash from malformed theme value
Fixed a crash at launch when ~/.claude.json holds a malformed theme value
Fix crash from terminal color codes in prompts
Fixed a crash ("unrecoverable interface error") when the prompt held text containing terminal color codes, for example a prompt recalled from history or text loaded from the external editor
Fix crash resuming string-stored assistant messages
Fixed a crash when resuming a session whose saved history holds an assistant message stored as a plain string
Fix early exits on slow machines at startup
Fixed sessions on slow or heavily loaded machines sometimes exiting with "Claude Code exited after an unrecoverable interface error" when the first spinner appeared
Fix screen freezing after rendering errors
Fixed a rare case where the screen could stop updating for the rest of the session after an internal rendering error
Fix Windows turns stopping after memory errors
Fixed a rare case on Windows where a turn could stop with an error such as "Out of memory" right after Claude replied, so that reply's tool calls never ran
Fix missing message text after SessionStart hooks
Fixed sessions continued after /clear (restart, --continue, --resume) missing part of their first message when a SessionStart hook printed output, causing a full prompt-cache miss
Show mid-turn agent messages in order
Fixed messages from other agents (such as a subagent's SendMessage) that arrived mid-turn showing up below the "Ran N shell commands" row instead of where they arrived
Show the copied notice in fullscreen panels
Fixed the "copied" notice not appearing after drag-selecting text in the fullscreen /resume picker and other panels that cover the prompt area
Fix empty TMPDIR outside the sandbox
Fixed $TMPDIR expanding empty in Bash commands that run outside the sandbox while sandboxing is enabled
Explain WebFetch/WebSearch refusals in Cowork
Fixed WebFetch and WebSearch in Cowork cloud sessions not telling Claude why a request was refused, such as a used-up fetch budget or an admin policy
Honor NO_PROXY for the telemetry relay
Fixed the Claude apps gateway's telemetry relay ignoring a collector hostname or domain listed in NO_PROXY when a proxy is set
Clean up staged downloads after failed updates
Fixed failed auto-updates leaving large staged downloads behind in ~/.cache/claude/staging
Strip control characters from plugin messages
Fixed /plugin not stripping terminal control characters from messages on the Installed tab, such as the error of a failed plugin update
Fix crash from Object-named skills
Fixed /plugin's Installed tab and /skills crashing when a skill or legacy command is named like a built-in Object property such as constructor or toString
Show a message when all installs fail
Fixed /plugin closing with no message when every install in a multi-select failed
Clear stale failed-to-load plugin rows
Fixed uninstalled plugins reappearing as "failed to load" rows in /plugin Installed, and Remove not clearing such a row
Record plugin commits correctly in the install log
Fixed plugins from the official marketplace being recorded without their commit in installed_plugins.json, and installed_plugins.json keeping the old commit after updating a pinned-commit plugin
Clean up plugin reload preview archives
Fixed plugin reload previews keeping every previewed copy of a plugin archive unpacked until exit, and overwriting the cached --plugin-url archive a reload falls back to when its download fails
Fix Remote Control bookkeeping on bad records
Fixed Remote Control session bookkeeping failing when ~/.claude.json holds a malformed placeholder record
Point to /login after a revoked session
Fixed the error after a revoked claude.ai login blaming an expired Anthropic profile; it now leads with /login
Fix scrambled text in agent dispatch input
Fixed typed or pasted text occasionally coming out scrambled in the claude agents dispatch input during key repeat or very fast input
Fix crash resuming malformed stop hook summaries
Fixed a crash ("unrecoverable interface error") when resuming a session whose saved transcript contains a stop hook summary without a well-formed hook list
Fix Enter on agent rows with rebound keys
Fixed Enter on a selected agent panel row doing nothing when keybindings.json rebinds Enter in the Chat context, for example to chat:queueSubmit
Fix PDF reads on long Windows paths
Fixed PDF page reads on Windows failing when the working folder's path is long (about 120 characters or more)
Preserve cost totals across headless resumes
Fixed a headless resume (claude -p --resume, the SDK, a VS Code extension window reload) starting the session's cost and usage totals at zero; headless sessions now save their totals at exit
Load project skills in untracked worktrees
Fixed project skills from the main repository not loading in --worktree sessions when .claude/skills is untracked
Preserve prompt cache for resumed subagents
Fixed resumed subagents and teammates re-rendering the MCP tool definitions they had loaded, which broke prompt caching for that agent
Guide retries after rate-limited artifact publishes
Fixed rate-limited artifact publishes telling Claude to stop retrying; Claude is now told nothing was published and when to send the same publish again
Preserve extended thinking across resumes
Fixed attachments recorded earlier in a conversation being re-rendered after a resume or relaunch, which dropped extended thinking and missed the prompt cache
Show server errors for failed Console sign-in
Fixed Console sign-in showing only "Request failed with status code 400" when the server refuses to create an API key; it now shows the server's message
[VSCode] Open settings dialogs from typed commands
Fixed the "General config" menu row showing /config usage text instead of opening settings, and made typed /mcp, /hooks, /memory, /rewind and similar commands open their dialogs
[VSCode] Persist effort levels across sessions
Fixed the effort slider's level not persisting into later sessions on a model that already had a level saved with /effort
[VSCode] Show Auto for differently-cased model aliases
Fixed Auto missing from the mode picker for conversations opened in an already-used panel when the saved model setting is a differently-cased alias such as "Sonnet"
[VSCode] Persist /fast as the default mode
Fixed /fast not saving fast mode as the default, so it was lost when the extension relaunched Claude Code
[Claude Tag] Fix routines reading other Slack channels
Fixed routines created in a Slack channel on an Enterprise Grid org-wide install failing to read other public channels in their workspace when they ran
[Claude Tag] Link to vendor credential setup pages
Fixed the "Learn more" links on credential presets in Claude Tag access bundles to open each vendor's credential-setup page instead of a generic API reference
[Claude Tag] Fix Google Cloud credential form errors
Fixed Google Cloud credential forms in Claude Tag access bundles: a refused key file now says why, the website and scopes stay locked, and a rejected rotation keeps the pasted key
[Claude Tag] Show response status for signed connections
Fixed the network events log in Claude Tag admin settings showing no response status for requests through connections that use AWS signing, client certificates or a custom CA
Removed & reverted
2All changes (2) Fewer changes
Remove background auto-title requests
Removed the background Haiku auto-title request from claude -p runs launched outside an SDK or IDE
Remove the deprecated TaskOutput tool
Removed the deprecated TaskOutput tool; Claude reads a background task's output file with Read instead, and the taskOutputMaxChars setting and TASK_MAX_OUTPUT_LENGTH no longer have any effect