Source Intelligence

DisclaimerUnofficial, and not affiliated with Anthropic. Nearly all of this is read straight out of what ships: npm bundles, captured prompts, published docs. Anthropic's own notes go in verbatim, marked as theirs. The rest is my reading, and every entry carries the strings behind it. If one looks wrong, vote it down and say why.

All of v2.1.246 Home All releases olderv2.1.245 v2.1.247newer
Claude Code v2.1.246

Per-class memory caps on spawned processes, wired through but off for everything except Bash

Not switched on
Useful2 Signal0
Sandbox not in their notes

Memory limits now reach npm, git, tmux, LSP, MCP and hooks, but everything except Bash is excluded.

Per-class memory capping is wired to nearly every spawn site, but the exclusion list defaults to all new classes.

Feature flag
tengu_tool_memory_cgroup Off in both readings

The flag server returned off for the account this site reads and for the anonymous baseline. A reading of off cannot rule out a rollout these two readings sit outside of.

This account: off · anonymous baseline: off · compiled default in v2.1.246: not a boolean we can read

tengu_tool_cgroup_exclude_classes Not enough to say

Nothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.

This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.246: not a boolean we can read

tengu_mcp_memory_cgroup Off in both readings

The flag server returned off for the account this site reads and for the anonymous baseline. A reading of off cannot rule out a rollout these two readings sit outside of.

This account: off · anonymous baseline: off · compiled default in v2.1.246: not a boolean we can read

Read once, for one account on one subscription tier, against v2.1.246. It isn't a statement about your account. What a flag value here can and cannot tell you

CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE
What

Claude Code can put the processes it spawns into a Linux cgroup with a memory limit, and this build makes that decision per class of process rather than all at once. The plumbing now reaches nearly every launch site: npm, git, tmux, systemctl, xdg-open, LSP, MCP, plugin installs and hooks. In practice nothing new is capped in this build, because the exclusion list falls back to the entire set of new classes, leaving only the pre-existing Bash shell path limited.

Details
  • The whole subsystem sits behind the server-side flag tengu_tool_memory_cgroup, which falls back to off, unless CLAUDE_CODE_TOOL_MEMORY_LIMIT is set.
  • Which classes are exempt comes from CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE as a comma-separated list, else the server value tengu_tool_cgroup_exclude_classes, whose fallback is empty and is treated as excluding all seven new classes: mcp, lsp, hooks, plugin, tmux, helper and agent, so only shell is capped.
  • The literal all-new in the exclusion list expands to every non-shell class.
  • A spawn that does not name a class is treated as helper, and capping is skipped whenever the class is in the exclusion set.
  • MCP is returned to the exclusion set even when otherwise enabled, unless CLAUDE_CODE_MCP_MEMORY_CGROUP or the server value tengu_mcp_memory_cgroup opts it back in.
  • The first time a given class is actually capped, the code reports class_enabled.
  • Alongside it: out-of-memory kills are counted by parsing oom_kill (\d+) from the cgroup, and a cgroup directory deleted underneath a running process is self-healed and reported as either recreated or vanished.
Evidence

CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE, tengu_tool_cgroup_exclude_classes

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

Related

Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.

See this entry in the whole of v2.1.246 →