chore: keep agent worktrees out of the repository - #358
Merged
Merged
Conversation
A subagent launched with worktree isolation gets a full checkout under `.claude/worktrees/agent-<id>/`, and the directory survives the agent. Four of them appeared during one session's work and showed up as untracked content — each one a complete copy of the tree, including its own `target/`, so committing one by accident would be spectacular. `.claude/` cannot be ignored wholesale: `.claude/skills/` is tracked and is where this repo's own skills live. Only the worktree directory is excluded. A removed worktree also leaves its branch checked out until `git worktree prune` runs, which is what makes that branch impossible to check out from the main copy with the unhelpful `fatal: '<branch>' is already used by worktree at …`.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A subagent launched with worktree isolation gets a full checkout under
.claude/worktrees/agent-<id>/, and the directory survives the agent. Four appeared during one session's work and sat there as untracked content — each a complete copy of the tree, including its owntarget/. Committing one by accident would be spectacular..claude/cannot be ignored wholesale:.claude/skills/is tracked and is where this repo's own skills live. Only.claude/worktrees/is excluded.The related trap, for whoever hits it next
A worktree keeps its branch checked out until
git worktree pruneruns, and a locked one refuses removal untilgit worktree unlock. That is what produces:which is easy to mistake for a stale branch rather than a live checkout. The failed
git checkoutthen leaves HEAD where it was, so the next edit lands on the previous branch — which happened once in this session and put aSKILL.mdline on the wrong PR before it was caught.Nothing else changed: one line in
.gitignore.