{"version":"2.1.229","anchor":"per-session-tool-state-stops-caches-leaking-between-sessions","canonical_anchor":"per-session-tool-state-stops-caches-leaking-between-sessions","heading":"Per-session tool state stops caches leaking between sessions","tier":"internal","area":"Session State","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.229\/e\/per-session-tool-state-stops-caches-leaking-between-sessions","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.229","markdown":"### Per-session tool state stops caches leaking between sessions\n\nCaches now live per session, so parallel sessions in one process stop contaminating each other.\n\n**What**\n\nCaches that were previously process-wide now live in a per-session store: the WebFetch URL and domain-check caches, the send-file duplicate set, Bash working-directory tracking, the alias-probe fired set, plus per-host containers holding plugin sync state, the keybinding writer, the diagnostics manager and the binary-check cache. In a process running more than one session at once (SDK, runner, cowork) these no longer bleed across sessions.\n\n**Details**\n\n- The store is created with the session context and carried through context construction, forking and agent spawn.\n- Disposing a session installs a fresh store rather than clearing shared maps.\n\n**Evidence**\n\n`toolState: this.toolState`, `toolState`\n\n- Area: Session State\n- Tier: Under the hood\n- Useful: 3\/5\n- Signal: 3\/5"}