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.228 ·

Per-session state replaces module-level globals

Process-wide state moved onto the session object, the biggest structural change in this build.

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

State that used to live in module-level singletons now hangs off the session object, so two sessions in one process no longer share it. No behaviour change on its own, but it is the largest structural change in this release.

Details
  • The session object previously carried only workflow usage consent; it now owns a dozen stores, including observers, shell and command history, pending hints, prompt suggestions, plugin sync, precompute, tool progress throttling and the stash of pending write permissions.
  • Forked sessions share these stores with their root session rather than getting fresh copies.
  • Hundreds of call sites now take an explicit session parameter; for example the pending-write-permission stash is reached through the session rather than a global.
Evidence

writePermissionStash

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.228 →

Feedback