Claude Code 2.1.267: maxEffortLevel Caps Thinking-Token Spend Globally, Plus 36 Bug Fixes
Released late on September 9 and rolling out on September 10, Claude Code 2.1.267 is a dense maintenance and feature build. The headline addition is maxEffortLevel — a hard ceiling on reasoning effort that applies across every provider (Bedrock, Vertex, Foundry) and is honoured both in the API and in the /effort UI picker. A second addition, --system-prompt-snapshot off, lets teams that iterate on their system prompt get a freshly rendered version on each request instead of replaying the one captured at the start of the conversation. Underneath those two features sits 36 bug fixes — the largest single-build correction count since 2.1.240.
maxEffortLevel in depth
- It is a ceiling, not a default. Users can still select any effort level at or below the cap. Setting
maxEffortLevel: "medium"prevents a user from running athighormax, but does not stop them from explicitly choosinglow. - UI enforcement is immediate: The
/effortpicker stops offering levels above the cap. If a user names a capped level via--effortor/effort highon a session capped atmedium, the request silently runs at the cap rather than failing. - Per-model overrides supported: You can set a lower cap for cheaper models and a higher cap for Opus-tier work within the same
modelSettingsblock.
# ~/.claude/settings.json — global effort cap with per-model override
{
"maxEffortLevel": "medium",
"modelSettings": {
"claude-opus-4-6": {
"maxEffortLevel": "high"
}
}
}
Any team running Claude Code on shared budgets — especially those whose September 14 usage-limit cut (17%) leaves less headroom — should set maxEffortLevel at the org or project level now. The single setting prevents a runaway overnight agent from burning a disproportionate share of monthly budget on extended reasoning before you notice.
--system-prompt-snapshot off
By default, Claude Code records the system prompt text at the start of each conversation and replays that snapshot for cache efficiency. This is optimal for stable prompts but breaks workflows where you are actively iterating on the system prompt text — such as during prompt engineering sessions or when a CI pipeline regenerates the system prompt from templates at runtime. Adding --system-prompt-snapshot off to a session or setting it in config causes the full system prompt to be rendered and sent fresh on every request. The cache saving is lost, but prompt fidelity is guaranteed.
Key fixes in 2.1.267
- MCP prompt-cache stability (11 fixes): Various scenarios where tool registration, schema changes, or server restarts caused prompt-cache invalidation are now handled correctly — most significantly in subagent and multi-session setups.
- VS Code platform (9 fixes): CPU-hang on large file diffs is resolved; WSL2 image handling and clipboard clipboard path issues are corrected.
- Session management: Dropped tool results during interrupted conversations are recovered; model-switch mid-conversation no longer orphans the prior turn's tool calls.
- Cowork scheduled tasks: Organisations requiring sandboxing were seeing scheduled Cowork tasks fail at startup — now fixed.
- Artifact publish retry: Publish operations cut off by dropped connections now retry once automatically.
- Bash tool descriptions: Now use plain-language explanations rather than echoing the raw command, reducing confusion in permission prompts.