Unclear It is not clear whether the removed waits were real file locks, or whether equivalent protection now happens somewhere else.
What
A session transcript is the file where Claude Code records a conversation so it can be resumed later. Until this release, Claude Code took a per-file lock before moving or rewriting that file. A lock is a guard that makes other writers wait their turn instead of touching the same file at the same moment. That lock is now gone from several places:
relocateSessionTranscript, which moves a transcript to a new place, for example after the session changes directory. It no longer locks the destination before setting it aside, or the source before the move. A follow-up step that ran after the move (TRn(h, S)) was removed as well, and the move helper changed fromVRntoLRn, which no longer takes the guard. The recovery path that logsrelocateSessionTranscript: could not restore set-aside destination after ENOENT moveis kept.- Remote session hydration, the step that fills in a local transcript from a remote copy, both the v1 path and the CCR v2 foreground path. The
Skipping remote hydrationandSkipping CCR v2 foreground hydrationpaths now run without the lock. - Subagent transcript writes, where a subagent (a helper agent Claude starts for part of a task) saves its own transcript. The
Subagent transcript write failedpath also runs without the lock.
In the code, each removed lock was a using ... = await EI(path) acquisition on the file's path.
Why
Without the lock, two things writing the same transcript at once, such as resuming, teleporting a session or a subagent saving its transcript, are no longer made to wait for each other. The members do not say why the lock was removed. If transcripts look incomplete or out of order after moving, resuming or running subagents, this change is a place to look.
It is not clear whether the removed waits were real file locks, or whether equivalent protection now happens somewhere else.