Claude Code 2.1.274 warns before memory turns critical

Claude Code 2.1.274, released September 17, shows a visible warning when memory usage gets critical, along with steps to free memory or restart safely. Background commands used to be stopped after 30 idle minutes on machines under mild memory pressure. Now they are stopped only when memory is critically low, and the debug log says why.
Most of the release notes on GitHub are fixes, and they run to more than a hundred items across the CLI, the VS Code extension, cloud sessions, Claude Tag and Code Review. The ones that matter in daily work fall into four groups: sessions that got stuck or lost state, MCP connections, the Claude apps gateway that teams run in front of the API, and a few defaults that now behave differently.
Stuck sessions and lost state
Sessions could retry a 400 error reading “unexpected tool_use_id” without end. That error happens when the transcript no longer matches the tool calls the API expects. Corrupted transcripts now repair themselves where possible. Where they can’t, a clear error ends the loop and suggests /rewind.
Several fixes affect long-running, hook-driven work such as an active /goal. Those sessions used to stop with “Prompt is too long” when the context overflowed again after a reactive compaction (the automatic summary Claude Code makes when the window fills up). Now they compact again. An active /goal also survives --continue and --resume on a session that had compacted, where before it was lost. And claude agents keeps --model, --effort, --permission-mode, --allow-dangerously-skip-permissions and --agent after an auto-update relaunch. Before this release they were lost.
Smaller fixes in the same area:
- Turns no longer slow down when a language server publishes project-wide diagnostics for thousands of files.
- On Bedrock, Vertex or Foundry, a subagent with
model: "opus"no longer leaves the session’s model when the model id has no recognizable family, unlessANTHROPIC_DEFAULT_OPUS_MODELis set. - Self-hosted runners used to fail every turn with a 401 after a few failed token refreshes, until the next scheduled refresh. Now they keep retrying and fetch a new token after a 401.
- Headless and SDK sessions no longer make a separate model call for each background task that finishes. Completions that are already queued get one call.
What changes for MCP
The new variable CLAUDE_CODE_MCP_STARTUP_WAIT_MS caps how long the first non-interactive turn waits for MCP servers that are still connecting. Set it to 0 and the turn doesn’t wait at all. Two other startup fixes work in the same direction. In --input-format stream-json sessions, the first turn no longer waits up to 2 seconds for servers whose tools tool search defers, and those tools arrive on a later turn. And --strict-mcp-config with an empty --mcp-config no longer holds the first turn for up to MCP_TIMEOUT on incidental servers.
The transport fixes matter most to anyone running their own MCP servers:
- Servers configured as
httpthat only speak the legacy HTTP+SSE transport now connect even when they answer the first request with 422 or another 4xx. - Streamable HTTP tool calls no longer time out after about 5 minutes when a longer per-server timeout is set.
- Prompts and resources now refresh on list-changed notifications even when the server never declared
listChanged. - A 403
insufficient_scopeis no longer reported as an expired sign-in. The error names the missing permissions and points to re-authenticating through/mcp.
Secrets resolved from ${VAR} placeholders in MCP configs no longer show up in connection errors or in the description of the MCP login tool.
Two changes may mean editing config. "type": "sdk" entries in .mcp.json, settings, plugins and agent files are now skipped with a warning, because only an SDK host application can register in-process servers. Bedrock, Vertex, Foundry and telemetry-disabled installs now default to the v2 MCP client and MCP 2026-07-28 negotiation with direct HTTP servers, which other installs already used. The opt-outs are MCP_SDK_GENERATION=v1 and MCP_PROTOCOL_NEGOTIATION=legacy. A later release, 2.1.302, fixed MCP servers that showed no tools, or failed every tool call, when they negotiated protocol version 2026-07-28 but left out resultType, ttlMs or cacheScope.
The gateway under load
The Claude apps gateway gets the longest run of operational fixes. A day earlier it gained headers that label requests by class and agent. This release is about keeping it running when its database is slow or the gateway itself is busy.
The new store.connect_timeout_seconds setting lengthens the Postgres connect timeout, which defaults to 5 seconds. On boot the gateway now tries the first connection up to three times before exiting, so a database that comes up a few seconds late no longer fails the boot. When the database really is unreachable, the error points to store.postgres_url and the configured timeout.
Under load, the spend-limit check takes one database round trip where it used to take four, so fewer checks time out on a busy gateway. A Postgres connection dropped during a spend check no longer causes an unhandled promise rejection. Each replica sends at most 256 requests upstream at once. A startup log line now shows that limit, and the gateway warns when a replica has more requests open than that. When sign-in hits a rate limit, /login explains the refusal, and the gateway log says which limit was hit and which setting to change.
Shutdown is the fix that was overdue. Until this release a SIGTERM cut every open stream. Now the gateway lets in-flight requests finish for up to 25 seconds before it exits, and CLAUDE_GATEWAY_DRAIN_TIMEOUT_MS sets that window. Telemetry that Claude Desktop and Cowork send through the gateway also carries enduser.sub, the IdP subject.
Permissions and telemetry
Bash commands that loop over or assign certain special shell variables now ask for permission. Worktree-isolated sessions refuse Bash commands with certain nested shell expansions. In files with multi-byte characters, the Edit permission preview no longer sometimes shows a different location from the edit you approved.
For OpenTelemetry users, the claude_code.llm_request trace span gains an effort attribute to match the api_request event. A new claude_code.managed_settings_resolved event reports where managed settings came from and the state of the policy helper, and OTEL_LOG_MANAGED_SETTINGS=1 adds redacted settings and digests. With OTEL_LOG_RAW_API_BODIES=file:<dir>, a new index.jsonl file and the request_body_id and message.id attributes link each response to its request file and its transcript message.
Defaults that moved
/code-review now uses leaner inline review prompts for every model without tuned settings of its own. It used to spawn many review subagents. In local sessions, a new artifact version published somewhere else no longer starts a turn, and Claude learns about it from a later Artifact tool result. Self-hosted runners skip a read-only repository that the git host refuses at the access check, where before the session failed to start. In cloud sessions, routines skip a run and retry for up to 72 hours when the owner’s GitHub connection is missing. Previously they switched off at the first failed check. The interface now says “Cloud sessions” where it used to say “Claude Code on the web”.
The rest are small fixes. The VS Code extension now continues a step that a window reload interrupted and adds Memory and Instructions entries to the Customize menu. It also no longer leaves ~/.claude/settings.json unparseable when settings writes overlap. Claude Tag replies when another Slack app @mentions it. Code Review writes its findings as short plain sentences that say who is affected and give the fix up front. And the transcript no longer renumbers ordered lists in your own messages, where typing “3. 2. 1.” used to display “3. 4. 5.”.
Plugin authors have one default to adjust for. Plugin and marketplace clones now leave Git LFS files as pointers and don’t download them. To get the real files, run git lfs pull in the checkout.
Up next
Cowork and chat become one Claude, tasks keep running, Video
Close the laptop and the handed-off report keeps moving: Cowork and chat are merging into one Claude, rolling out to Pro and Max over the next few weeks, with Claude Docs, Slides and Design in beta on all paid plans.
Related stories
- Your claude.ai skills follow you into Claude Code 2.1.275
- Without CLAUDE.md, Claude Code 2.1.277 reads AGENTS.md
- Claude Code tags gateway requests by class and agent
- No multiplayer in Claude Code Projects yet, Anthropic says
- Claude Code on Pro lists Haiku 5.5 as the recommended default
- Claude Code on Opus 5.5 refuses to clone existing games
Comments
No comments yet. Be the first.
Join the conversation
Sign in to leave a comment. It appears after moderation.

