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

Worktree creation and resume handle missing git objects more carefully

Creating or resuming a git worktree now checks for and fetches missing objects, re-checks state before resetting, and handles partial clones and sparse checkouts

Group of 2 You'll notice Nothing to try yet In Development
JSON All of v2.1.309
You'll noticeTier: how much it should matter to you
3Useful: my rating, 1 to 5
3Signal: worth watching, 1 to 5
WorktreesArea: what it touches
In DevelopmentKind: in v2.1.309,
ImprovementsSection of the release

Unclear It is not clear whether this behaviour is switched on unless it is enabled remotely.

What

A worktree is a separate working copy of a git repository that Claude Code can create so work happens apart from your main checkout. A partial clone is a repository downloaded without every file's contents, so git fetches them later when needed. A sparse checkout puts only some of a repository's files on disk. This release changes how Claude Code prepares worktrees in these situations.

When a resumed worktree is moved to a new starting point (its "base"):

  • Git first checks that the objects it needs are present, and can fetch them if they are missing.
  • It then checks again that the worktree has no uncommitted changes and is still on its branch.
  • If any check fails, the worktree keeps its old base and a log line says the fast-resume reset was skipped. Before, a hard reset ran straight after the check for uncommitted changes, with no fetch.
  • Sparse checkouts now fail if git left out files it could not read, and the new worktree is removed.
  • Git status commands now run in your own language settings (locale).

Another set of changes sits behind a server-controlled switch named tengu_eager_balloon. Nothing has been read about whether that switch is on. When it is on:

  • Worktree checkouts run with GIT_NO_LAZY_FETCH=1, so git does not quietly download missing objects on its own. They also run with a restricted GIT_ALLOW_PROTOCOL, which limits the network protocols git may use.
  • For partial clones, Claude Code first lists the missing objects, then fetches them from the repository's promisor remotes using --filter=blob:none and --stdin, within a time limit. A promisor remote is the server a partial clone promises to fetch missing data from.
  • Partial clones and submodules each get their own error messages.
  • Sparse-checkout patterns are taken into account.
  • A sandbox check was added. A sandbox is a restricted environment for running commands.

Why

In repositories that are partly downloaded or partly checked out, a worktree could start from a base whose files were not all present. With these checks, Claude Code either gets what it needs or leaves the worktree as it was and says so. If you work in a partial clone, worktree setup may now pause to fetch objects, or fail with a clearer message.

How sure we are
Something disagreesSomething we can check disagrees with this entry, or the writer said they could not settle it.
The writer flagged doubtIt is not clear whether this behaviour is switched on unless it is enabled remotely.

See this entry in the whole of v2.1.309 →

Feedback