Follow Discord
Sweep 22 Oct 2026 · 21:04Z Build v2.1.309 528 read Stable v2.1.308 Latest v2.1.309 Next v2.1.309 Feeds RSS JSON llms.txt llms-full.txt Unofficial

Claude Code v2.1.227 ·

Module-level mutable state folded into resettable holders

More scattered state became resettable holders, including per-instance locks instead of one global.

Under the hood Internal Changes
JSON All of v2.1.227
Under the hoodTier: how much it should matter to you
1Useful: my rating, 1 to 5
2Signal: worth watching, 1 to 5
Session StateArea: what it touches
Internal ChangesKind: in v2.1.227,
Internal ChangesSection of the release
What

Dozens of scattered module-level variables, maps and sets were moved into lazily created state objects reached through accessors, covering plugin state, agent and task state, git scrub paths, config caching, teammate mailboxes and terminal capability probes. Several holders gained a reset() method, and a process-wide promise-chain lock became a factory producing per-instance locks, so in-process state can now be torn down and rebuilt.

Details
  • MCP errors are now dispatched into a store as { type: "mcpError", serverName, error } rather than accumulated in a module array.
  • New named fields include agentTranscriptSubdirs, bareGitRepoScrubPaths, installedPluginsFile, terminalRejects, childProcessTmpDirMemo and scriptCapsLatched.
  • No user-visible behaviour change.
Evidence

bareGitRepoScrubPaths

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

See this entry in the whole of v2.1.227 →

Feedback