
Claude Code v2.1.218 Major Updates - Background execution of /code-review and detailed display of MCP connection errors
This page has been translated by machine translation. View original
This is Ishikawa from the Cloud Business Division. Claude Code v2.1.218 (released 2026-07-22) has been released. I feel this is a highly anticipated release with many changes that directly impact day-to-day usability. I tried out the new feature for displaying detailed MCP connection errors.
The previous update article is here.
Update Summary
v2.1.218 includes 37 changes. The breakdown is 4 new features, 7 improvements, 2 security fixes, and 22 bug fixes, with 2 behavioral changes that could constitute breaking changes. The focus is on revisions to review and permission-related behavior, along with accumulated stability fixes.
Notable Updates
/code-review Now Runs as a Background Subagent
/code-review now runs as a background subagent. Review work no longer consumes conversation context, and stacked slash commands are retained as review targets.
Since even large reviews no longer put pressure on conversation context, I feel this is an impactful change for those who handle both reviewing and implementation within the same session.
Detailed Display of MCP Connection Errors
claude mcp list and /mcp now display HTTP status and error text when a connection to a server fails. A warning has also been added for when MCP configuration values contain invisible whitespace at the beginning or end.
I feel that the more MCP servers you have configured, the more time this will save when investigating connection issues.
Fix for Lost Conversations and Files
On Windows, a bug was fixed where paths containing segments starting with \u (e.g., C:\Users\unicorn) were corrupted into CJK characters within tool input, making the target files inaccessible. For those using Claude Code on Windows, this is probably a long-awaited fix.
A bug was also fixed where pressing the left arrow key would irrecoverably discard a conversation. It now prompts for confirmation when pressed immediately after editing, and pressing Esc in the agent view returns to the original conversation that was backgrounded. I feel this is a reassuring fix for anyone who has accidentally lost a conversation through a miskey.
Workspace Trust Now Required for Agent Hook Execution
A bug was fixed where hooks from agent frontmatter could be executed from untrusted folders. Hook execution now requires that the agent file's own folder has workspace trust approved.
For those who frequently open third-party repositories, I feel it is reassuring that hook execution is now limited to trusted folders.
Revision of Permission Checks in auto Mode and Manualization of /deep-research
In auto mode, the checks for dangerous rm, background &, and suspicious Windows paths no longer open the permission dialog, and are now determined by the auto mode classifier. Since there will be fewer situations where permission dialogs interrupt your workflow in auto mode, I feel this is an impactful change for those who use it in a "set it and let it run" style.
Additionally, /deep-research now only starts when manually invoked and will no longer be launched autonomously by Claude. Since heavy research tasks will no longer run at unintended times, this should be a welcome change for those who want to control token consumption.
Update Details
New Features
claude mcp listand/mcpnow display HTTP status and error text on server connection failure. A warning for invisible whitespace at the beginning or end of MCP configuration values has also been added (mentioned above)- In
--ax-screen-readermode, deleted text is now announced by the screen reader during word/line deletion operations (Option+Delete,Ctrl+W,Cmd+Backspace,Ctrl+U,Ctrl+K) - When fast mode changes as a result of switching models via
/config model=<x>or Remote Control, this is now announced - Skill/plugin frontmatter boolean values now accept
yes/no/on/off/1/0(case-insensitive) in addition totrue/false
Improvements
- Changed
/code-reviewto run as a background subagent (mentioned above) - Changed the checks for dangerous
rm, background&, and suspicious Windows paths in auto mode from permission dialogs to classifier determination (mentioned above) - Changed
/deep-researchto only start when manually invoked (mentioned above) - In plan mode combined with auto, Bash commands that static analysis cannot prove are read-only no longer show a confirmation prompt and are instead determined by the auto mode classifier
- Improved error feedback in
/ultrareviewso Claude can correct invalid arguments instead of retrying them as-is - The trust dialog now shows the name of the repository root to which the permission applies
- In server-managed settings, toggling harmless feature/cost settings no longer triggers a settings approval prompt
Security
- Fixed a bug where agent frontmatter hooks could be executed from untrusted folders (mentioned above)
- Improved sandbox command restrictions for IDE operations
Bug Fixes
- Fixed Windows path corruption: Fixed an issue where paths containing segments starting with
\uwere corrupted into CJK characters, making files inaccessible (mentioned above) - Fixed conversation discard via left arrow key: Fixed an issue where conversations were irrecoverably discarded (mentioned above)
- Fixed spend metering when using Bedrock: Gateway spend metering now correctly prices Bedrock application-inference-profile ARNs and other configured upstream model IDs at the rate of the configured model
- Fixed Bedrock setup wizard validation failure: Fixed an issue where profile validation failed for assume-role profiles in partitioned AWS regions and proxy-only networks
- Fixed crashes from deep nesting: Fixed crashes (maximum call stack exceeded) when deleting or moving deeply nested watched directory trees, or when rendering deeply nested UI trees
- Fixed retry loop after context overflow: Fixed an issue where after a context overflow error with a large thinking budget, the same inevitably-failing request was repeatedly resent. Also applied the same background shell limit used by other paths to backgrounding via
Ctrl+B - Fixed failures and crashes on session resume: Fixed an issue where sessions containing malformed delta attachments in their history would fail or crash on every turn when resumed
- Fixed infinite retry of remote sessions: Fixed an issue where heartbeats continued to be sent after a worker was replaced, causing long-running desktop and IDE processes to retry rejected requests every few seconds
- A quietly satisfying fix: Fixed an issue where the "N MCP servers require authentication" notification at startup overcounted claude.ai connectors that were not connected on the claude.ai side. For those who saw "authentication required" notifications at every startup that didn't match reality, this is a quietly satisfying fix.
- In addition, numerous minor bugs have been fixed, including corrupted multi-line pastes, argument handling in
/ultrareviewand/code-review ultra, false messages and display inconsistencies during tool interruption, missing and duplicate prompt history, and screen reader support.
Breaking Changes
Skills with context: fork Now Run in Background by Default
Skills specifying context: fork now run in the background by default. To maintain the previous behavior, opt out by specifying background: false in the frontmatter for each skill.
After the change (v2.1.218 and later, to maintain previous behavior):
---
context: fork
background: false
---
Agent Definitions Containing ":" in the Name Are Now Rejected
In agent Markdown files, agent names containing : are now rejected. : is reserved for plugin namespacing. If you are using such a name, you will need to change it to a name that does not contain :. Here is a configuration example.
Before (example that was not rejected up to v2.1.217):
name: my:agent
After (v2.1.218 and later):
name: my-agent
Trying Out the New MCP Connection Error Detail Display
In the v2.1.218 environment, I ran claude mcp list to check the display for servers that failed to connect.
Preparation
To force errors or return arbitrary response codes, I started a dummy local MCP server.
% python3 -c "
from http.server import BaseHTTPRequestHandler, HTTPServer
class H(BaseHTTPRequestHandler):
def do_POST(self):
if self.path == '/401':
body = b'Invalid API key: authentication required for this MCP endpoint'
self.send_response(401)
else:
body = b'Service temporarily unavailable: upstream MCP backend is down'
self.send_response(503)
self.send_header('Content-Length', str(len(body)))
self.end_headers()
self.wfile.write(body)
do_GET = do_POST
HTTPServer(('127.0.0.1', 8931), H).serve_forever()" &
[1] 45960
:
:
I registered the MCP servers.
% claude mcp add --transport http test-http-503 http://127.0.0.1:8931/503
Added HTTP MCP server test-http-503 with URL: http://127.0.0.1:8931/503 to local config
File modified: /Users/ishikawa.satoru/.claude.json [project: /Users/ishikawa.satoru/workspaces/cc/blog/20260723-v2.1.218/tryit]
% claude mcp add --transport http test-auth http://127.0.0.1:8931/401 \
--header "Authorization: Bearer wrong-token"
Added HTTP MCP server test-auth with URL: http://127.0.0.1:8931/401 to local config
Headers: {
"Authorization": "[REDACTED]"
}
File modified: /Users/ishikawa.satoru/.claude.json [project: /Users/ishikawa.satoru/workspaces/cc/blog/20260723-v2.1.218/tryit]
Verification with claude mcp list
The CHANGELOG states both claude mcp list and /mcp, but in practice the list side only showed ✘ Failed to connect.
% claude mcp list
:
(abbreviated)
:
test-http-503: http://127.0.0.1:8931/503 (HTTP) - ✘ Failed to connect
test-auth: http://127.0.0.1:8931/401 (HTTP) - ✘ Failed to connect
Verification with /mcp
In the server list, test-auth and test-http-503 both show only ✘ Failed.

test-auth is displayed with the case where the Authorization header was rejected (with HTTP status).

test-http-503 displays the error text from the response body.

Results
In the actual environment, I was able to confirm at a glance that failing servers were listed as ✘ Failed to connect. Note that the servers that were failing this time were stdio-type (command-launched) servers, so I was not able to confirm the new feature of HTTP status and error text display itself.
Since there used to be few clues when an MCP server "wouldn't connect" and it took considerable effort to isolate the issue, having the HTTP status and error text visible through standard commands is straightforwardly useful as a first step in troubleshooting, especially now that remote MCP server usage is growing.
Closing Thoughts
I feel v2.1.218 is a release where changes aimed at reducing "interruptions" to work stand out, such as the backgrounding of /code-review and the revision of permission checks in auto mode. With 37 changes in a single version, the steady accumulation of minor fixes is also notable.
Those who have created their own context: fork skills or agent definitions should check their definition files, and everyone else should update and give it a try.
References
