Claude Code v2.1.267 Major Updates - Addition of maxEffortLevel and Comprehensive Fixes Around Prompt Caching

Claude Code v2.1.267 Major Updates - Addition of maxEffortLevel and Comprehensive Fixes Around Prompt Caching

With the release of Claude Code v2.1.267, 53 updates were included, such as the ability to set an upper limit on effort level and bug fixes for issues when resuming large sessions. This release focuses more on fixes that address problems that are hard to notice during long work sessions, rather than new features. Today, I tried out the new maxEffortLevel.
2026.09.10

This page has been translated by machine translation. View original

This is Ishikawa from the Cloud Business Division. Claude Code v2.1.267 (released September 9, 2026) has been released. This is a large release with 53 items, with the breakdown leaning more toward fixes than new features. Today, I tried out the new maxEffortLevel.

The previous update article is here.

https://dev.classmethod.jp/articles/20260909-cc-updates-v2-1-266/

Update Summary

v2.1.267 includes 53 changes. The breakdown is 3 new features, 6 improvements, 3 performance improvements, 2 security fixes, and 39 bug fixes.

Of the 39 fixes, 8 are listed as discards of prompt cache or thinking, and including related fixes, this forms the largest cluster in this release. Additionally, there are 8 fixes for the VS Code extension, 2 for Claude Code on the web, and 3 for Claude Tag.

Notable Updates

maxEffortLevel now allows setting an upper limit on effort level

The maxEffortLevel setting has been added. It can be specified at the top level or per model under modelSettings, and limits the upper bound of effort level across all providers including Bedrock, Vertex, and Foundry. Users can choose a level lower than the upper limit.

Even for personal use, I feel it can be used as an upper limit when you want to reduce thinking time and speed up responses. When distributing to an organization, it can be placed in admin settings, making it an option when you want to standardize effort regardless of provider.

--system-prompt-snapshot off regenerates system prompt on every request

--system-prompt-snapshot off has been added. Instead of reusing the system prompt recorded in the conversation, it regenerates the system prompt for each request. This is an option intended for use when testing while rewriting prompt content.

For those who test by rewriting system prompt wording, I feel this is effective in that changes can be reflected without recreating the conversation.

Prompt cache and extended thinking discards fixed collectively

8 issues were fixed across individual paths where tool definitions were rewritten mid-conversation, causing prompt cache misses or discarding previous thinking and reasoning. The affected paths are: tool re-submission by MCP servers, tool disappearance due to disconnection or upgrade, tool addition to sessions without ToolSearch, background workers forked from conversations, model switching with /model, tool changes in claude.ai connectors, tool announcement rewrites before connector reconnection, and resuming a print mode (-p) conversation in interactive mode.

Related to this, 2 issues where inline tool sets and tool descriptions were rewritten in resumed sessions were also fixed, and for sessions started with subagents and --system-prompt / --append-system-prompt, an improvement was made to record the system prompt and tool definitions only once.

I think the more you work with multiple MCP servers connected for long periods, the more you'll feel the difference in perceived wait time and reasoning persistence.

Note that what was fixed are the paths listed in the CHANGELOG, and this does not mean that cache misses or thinking discards will never occur again in the future.

Fixed missing parallel tool calls when resuming sessions over 5 MB

When resuming a session where the transcript exceeds 5 MB, an issue where parallel tool calls and their hook output were missing from the conversation after loading has been fixed.

For those who operate by resuming sessions after long work periods, I feel it's worth confirming that there will be no more missing content in resumed conversations.

Permission judgment when admin settings cannot be read changed to "deny all"

When allowedHttpHookUrls, httpHookAllowedEnvVars, and allowedChannelPlugins in admin settings cannot be read, the behavior has been changed from allowing everything to allowing nothing. This applies to the case where these 3 settings cannot be read.

For organizations that distribute admin settings, I feel it's necessary to understand this behavior change, as the outcome when settings cannot be read will differ.

Fixed issue allowing bypass of marketplace storage location check

On macOS and Linux, an issue where marketplace entry paths containing backslashes could sometimes bypass the storage location check for retrieved marketplace content has been fixed.

For environments that retrieve plugins via the marketplace, I feel this is a fix you'll want to apply sooner rather than later.

Update Details

New Features

  • Added maxEffortLevel setting. Can be specified at the top level or per model under modelSettings, and limits the upper bound of effort level across all providers including Bedrock, Vertex, and Foundry. Users can choose a lower level
  • Added --system-prompt-snapshot off. Instead of reusing the system prompt recorded in the conversation, regenerates it for each request
  • [Claude Tag] Added "Use a custom connector" link to the admin settings preset connection form. Allows switching to a custom connection without starting over from scratch

Improvements

  • Improved prompt cache stability. Subagents and sessions started with --system-prompt or --append-system-prompt now record the system prompt and tool definitions only once instead of re-rendering them every time
  • Improved initial render time of --resume for sessions with many Bash tool calls
  • Improved prompt input responsiveness. Key input no longer waits one frame behind spinner and streaming re-renders
  • Improved guidance for Bash tool descriptions, encouraging plain-language explanations of what the command does rather than transcribing the command itself
  • Improved sandbox guidance to suggest /copy when clipboard commands like pbcopy fail inside the sandbox
  • Improved /diff panel. "0 files changed" with a spinner no longer flashes briefly before confirmation, and the empty state is centered within the panel
  • Improved Artifact tool publish errors. When publishing is rejected, the message now shows the reason and how to address it

Fixes

  • Fixed prompt cache and thinking discards: Fixed 8 paths collectively, including tool re-submission by MCP servers, tool disappearance due to disconnection or upgrade, tool addition to sessions without ToolSearch (received as deferred definitions in supported models), addition to tool blocks by background workers, model switching with /model, tool changes in claude.ai connectors, and resuming from print mode to interactive mode
  • Fixed tool definition re-rendering in resumed sessions: Fixed an issue where inline tool sets were rewritten when MCP connector reconnection timing differed from before, and an issue where recorded tool descriptions were re-rendered instead of replayed in sessions that executed tools in the first turn
  • Fixed missing tool calls when resuming large sessions: When resuming sessions where transcripts exceed 5 MB, parallel tool calls and hook output are no longer missing
  • Fixed effort frontmatter being ignored: On models with a fixed default effort (Opus 4.7, Opus 4.8, Fable 5), the effort: frontmatter in custom commands, skills, and subagents was being ignored
  • [VSCode] Fixed extension host CPU 100% hang: Occurred when forking, editing past messages, or rewinding conversations that contained circular parent links in saved transcripts
  • [VSCode] Fixed edit application failure for CRLF files: On files with Windows line endings, approving edits in diff view was failing with "String not found in file"
  • Fixed Cowork scheduled task launch failure in sandbox-required environments: In organizations where sandboxing is required in admin settings, cloud-based scheduled tasks were failing at startup
  • Fixed unnecessary retries on credential expiration: When AWS or Google Cloud credentials expired under a host app such as Claude Desktop, the system was retrying 10 times with a generic "request failed" before displaying a re-authentication error
  • Fixed extra turn insertion on session resume: When resuming after executing /compact or similar via -p --resume, a "Continue from where you left off." turn is no longer inserted
  • Fixed remote-control disconnection due to credential expiration: When claude remote-control server credentials expired (approximately 30 days after launch), the command would terminate and disconnect all connected sessions. The host now re-registers and continues processing
  • Fixed blank output display for commands on mobile clients: Output from local commands like /context was being displayed as blank
  • [VSCode] Fixed screenshot paste in WSL2/WSLg: Raw image bytes were being inserted directly into the chat input
  • [VSCode] Fixed ripgrep process runaway in large workspaces: Occurred when displaying files in workspaces with many symbolic links
  • [Claude Code on the web] Fixed GitHub integration failures: Fixed an issue where accounts appeared disconnected when tokens expired on GitHub Enterprise Server, and an issue where gh and GitHub API calls failed in organizations without the Claude GitHub App installed
  • A quietly appreciated fix: Fixed an issue where shift+enter and option+backspace stopped working after reconnecting to a tmux or ssh session inside the agent view. Reconnection frequency is high when working through tmux or ssh, and I feel that losing key functionality each time is a quietly disruptive experience
  • In addition, numerous minor bugs have been fixed including Artifact publish retries, Remote Control permission mode display, usage limit warning display, VS Code @ mentions and diff theme following, Claude Tag admin screens, and more

Behavior-Changing Updates

These are 2 items listed as Changed in the CHANGELOG. Neither is described as a breaking change or deprecation, but since the outcomes differ from before, I'll note the contrast. The following are descriptive examples explaining the changes.

  • The --use-anthropic-git-proxy flag for self-hosted runners is now reported to the server at registration time.
    • It is now reported to the server at registration time, and a warning will be displayed for each session that clones via the conventional git proxy.
  • Upstreams using Gateway's forward_user_identity now return 429 directly.
    • Developers whose email addresses are forwarded will receive 429 directly without failover. Per-user limits in the proxy will function correctly.

Trying out maxEffortLevel

Let me verify the new feature locally. First, I run the claude command in its default state and check the Effort Level with /effort.

$ claude

Options from low through max and ultracode are displayed.

maxEffortLevel-1

This time I left the user settings unchanged and ran it by passing a settings file (cap-medium.json) placed in a temporary directory via --settings. cap-medium.json contains {"maxEffortLevel":"medium"}.

% claude --settings cap-medium.json

Checking the Effort Level with /effort. Only low and medium are displayed. This means effort levels greater than medium can no longer be set.

maxEffortLevel-2

In the video below, I first check with /effort without any settings, then set maxEffortLevel and verify the behavior.

maxEffortLevel-9

Furthermore, it is also possible to set maxEffortLevel per model under modelSettings. The following is an example where only claude-opus-5 is specified with maxEffortLevel: "max", removing the upper limit for that model.

$ cat cap-permodel.json
{
  "maxEffortLevel": "medium",
  "modelSettings": {
    "claude-opus-5": { "maxEffortLevel": "max" }
  }
}

According to the official documentation, maxEffortLevel under modelSettings overrides the top-level value for that model only within configuration sources where both are set. Specifying "max" removes the upper limit from that source, but upper limits set by other sources continue to apply.

When multiple configuration sources are present, the resolution order is as follows.

The fact that an upper limit was applied does not appear on screen during normal execution — it could only be confirmed by adding --debug. I feel it would be easy to miss cases where a setting was intended but not taking effect, or conversely, where an unintended upper limit is being applied.

Closing Thoughts

This release felt more focused on closing hard-to-notice paths than on new features. I think the longer you keep sessions running, the more impact you'll feel.

Those who regularly use MCP servers, those who use the VS Code extension, and those who distribute admin settings to an organization will each find relevant changes in this release. Why not update and give it a try?

References

https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md

https://code.claude.com/docs/en/changelog

https://code.claude.com/docs/en/settings-reference#maxeffortlevel

https://dev.classmethod.jp/articles/20260909-cc-updates-v2-1-266/


Claudeならクラスメソッドにお任せください

クラスメソッドは、Anthropic社とリセラー契約を締結しています。各種製品ガイドから、業種別の活用法、フェーズごとのお悩み解決などサービス支援ページにまとめております。まずはご覧いただき、お気軽にご相談ください。

サービス詳細を見る

Share this article

AI白書