Copilot in VS Code gives each agent session its own git worktree
Priya Nair
The first time I let two Copilot agents work on the same repo at the same time, one of them stomped on the other's edits inside about ninety seconds. Different tasks, same working tree, same branch. I closed the second session, made a coffee, and went back to running them one at a time like a person from 2024. That is the small, unglamorous frustration the July release notes for Copilot in VS Code aim at. Between v1.127 and v1.131, shipped across July, the Agents window learned to start each session in its own git worktree, and it learned to hold several chats inside a single session without losing the plot.
The change, in one paragraph
The Agents window is still in public preview, and the July batch is a spread of small, connected improvements rather than one headline feature. The one I care about most: you can now start a Copilot, Claude, or Codex session in a git worktree, so each session works in an isolated copy of your repository. Multi-chat lands next to it: a single agent session can hold several related chats, each with its own history, title, and model, and you can fork a chat from any point to explore a different approach while the original context stays put. There is a new panel that opens files and diffs next to the conversation, per-file addition and deletion counts, and a toggle between inline and side-by-side diff views. Subagent runs now surface their model, elapsed time, and active tool call, and if a pull request the agent is minding fails a CI check or picks up a new review comment, a banner shows up above the chat input.
Why the worktree bit is the one that matters for CI folks
If you have never used git worktree, the shape of it is simple: one repository, several checked-out working directories on different branches or commits, each with its own index. Two engineers can be halfway through two unrelated branches on the same machine without any stash-dance. Agents have quietly needed this for a while. An agent that runs a test suite, edits files, and commits is doing exactly what a second engineer would do, and the moment you have two of them, you want two working trees. Otherwise the second agent picks up half-written files from the first, or the first agent's CI run inherits changes it never intended, and you spend an afternoon wondering why a green local run went red in the pipeline.
Per-session worktrees also change what "parallel" means when you are prototyping fixes for the same bug. Fork a chat, send the fork down a different path, keep both running. When one comes back with a cleaner diff, discard the other. You are effectively branching your thinking without branching your working tree by hand.
Small quality-of-life items that add up
A handful of the smaller changes will show up in daily use faster than you expect.
- Start a chat message with
!to run its contents as a terminal command in the Agents window. Copy a failing command out of your build log, prefix it, hit send. It runs. The agent sees the output. - Terminal diff output now recognises the standard Git prefixes (
i/,w/) and lets you click through to the file. That is one less "which file was that" moment when readinggit diffin a terminal pane. - Bring-your-own-key models are now available in the Agents window, catching it up to the editor, which has had BYOK since v1.99.
- Copilot Business and Enterprise users can see billing-cycle credit usage from the status menu, which is the sort of thing that stops being invisible only after you have blown through your budget once.
- Copilot vision is generally available. Paste an image into chat, drag one in, or add it from the context menu. Screenshot of a broken pipeline dashboard, straight into the conversation.
Rough edges I noticed
Two honest caveats. The Agents window itself is still preview, so anything specific to it can move under you between releases; if you build a team workflow around forked chats or subagent tracking today, expect to revisit it. And a few of the interesting-sounding items are still experimental: built-in dictation for chat, editor and terminal ships behind a dictation.enabled setting, and the LLM-based transcript cleanup that removes filler words is behind dictation.experimental.llmCleanup. Same story for Markdown editing inside the Agents window, gated as experimental. Nothing wrong with that, it just means "try it on a scratch repo first" rather than "wire it into your main branch flow tomorrow".
What I am watching next
The worktree-per-session move quietly assumes something bigger: that a CI-adjacent agent is a first-class collaborator, and needs the same isolation a human collaborator does. Once that assumption is baked in, the next question is whose CI runs when the agent commits from its worktree, and against which policies. I want to see how the pull-request banner behaves the first time an agent's fork has a failing required check that only a human reviewer can bypass. If you have shipped anything with the July build already, I would love to hear how the shared tab bar has actually felt after a week. In my one afternoon with it, I stopped tab-switching to find the diff, which is usually the quiet sign that a release has done its job.
Source: GitHub Changelog (github.blog)