← All AI Engineer talks

AI Engineer Europe 2026

Replacing 12K LoC with a 200 LoC Skill

Read the talk

Replacing Cursor’s worktree machinery with Markdown

Cursor moved worktree orchestration into prompts and subagents, reducing maintenance and enabling new workflows while giving up enforced checkout boundaries.

From a talk by David Gomes

Before you start: Familiarity with Git branches, pull requests, and coding agents is helpful; worktrees and subagent coordination are explained as they appear.

How much of a feature can become instructions?

What does it take to replace a maintained application feature—with its dependencies, tests, and specialized code—with Markdown instructions? David Gomes’s example is Cursor’s support for parallel agents in Git worktrees. The goal is to preserve the workflow while moving much of its orchestration into instructions an agent can follow.

A Git worktree is a separate checkout associated with the same repository. Different agents can work on identical or different tasks in separate folders without overwriting one another’s files. A file in an agent’s worktree can change while its counterpart in the primary checkout remains untouched.

Diagram linking a Git repo to three worktree folders and a history labeled Main branch, Bugfix branch, and Feature branch.
Git worktrees connect separate folders to branches in one repository.

In Cursor’s original implementation, commands and lint runs were scoped to the agent’s checkout. Users could watch a grid of agents working in parallel, then ask an agent to open a pull request containing its worktree’s changes. Best-of-N extended that workflow to competing implementations: give several models the same prompt, compare their results, and, for a front-end project, preview the different interfaces before choosing one. This arrived alongside Cursor 2.0, released in October 2025.

0:150:35
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

0:15 · section reference included

The code behind parallel checkouts

The visible workflow depended on several pieces of application machinery:

  • Lifecycle and context: create worktrees, manage them, and tell each agent which checkout it was operating in.
  • Isolation and setup: constrain agents to their assigned checkout and run user-configured setup scripts when work began.
  • Judging: evaluate the competing implementations and show a thumbs-up recommendation.
  • Harness support: add system reminders and other changes that helped agents stay on track.
  • Cleanup: remove abandoned worktrees before users running hundreds of them exhausted their disk space.

The revised implementation removed much of this dedicated machinery, although worktree cleanup remained a responsibility.

Gomes estimates that his deletion PR removed around 15,000 lines of code. The revised overview shows a roughly 200-line skill; these are approximate descriptions of the refactor, not a reconciled before-and-after count. His assessment of the replacement is also qualified: it is almost as good as the old feature, much lighter to maintain, and better at some workflows. The question becomes which responsibilities existing agent primitives can absorb.

NEW Implementation Overview slide with five crossed-out bullets, uncrossed Worktree clean up, a ~200 LoC skill bullet, and a code-change summary.
The new implementation crosses out five responsibilities, retaining worktree cleanup and adding a roughly 200-line skill.
3:103:23
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

3:10 · section reference included

A parent agent becomes the coordinator

The replacement combines two existing primitives: agent skills, which supply reusable instructions, and subagents, which let a parent delegate work. The first demonstration is deliberately small: invoke /worktree and assign the task “Fix a typo in the footer of the website.” The agent creates a separate checkout and performs the task there.

The worktree instructions describe a short procedure: create the checkout, run any configured setup scripts, and keep subsequent work inside that checkout. Expressed as a compact Markdown instruction body, that procedure looks like this:

markdown

# Work in a separate checkout

Task: Fix a typo in the footer of the website.

1. Create a Git worktree for this task.
2. Run the user's configured setup scripts in that worktree.
3. Make the footer correction inside that worktree.
4. Run commands and checks from that worktree.
5. Keep all task edits out of the primary checkout.

The last instruction carries much of the burden: creating a directory is a discrete action, but staying in it is a constraint that must survive the rest of the session.

Best-of-N adds coordination around that same procedure:

  1. The parent starts one subagent for each requested model.
  2. Each subagent creates its own worktree and works inside it.
  3. The parent waits for all subagents to finish.
  4. The parent compares the implementations, offers criticism or grades, and helps the user choose, preferably in a table.

Gomes describes the Best-of-N prompt as around 40 lines of Markdown, compared with perhaps 4,000 lines of code in the previous implementation. The prompt delegates orchestration to capabilities already present in the agent system.

4:585:11
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

4:58 · section reference included

The command contract

The instruction set still has to account for the environment. It includes Windows-specific directions alongside Linux and macOS directions, tells the parent to run configured setup scripts for each worktree, and emphatically tells the model not to leave its assigned checkout. That last requirement is handled through prompting.

CommandPurpose
/worktreeStart work in a separate checkout.
/best-of-nGive the same task to multiple agents.
/apply-worktreeBring side-checkout changes into the primary checkout.
/delete-worktreeRemove the side worktree.

These commands cover both starting isolated work and managing what happens to its result.

Although Gomes calls the replacement a skill, the demonstrated implementation technically uses Cursor commands. Like skills, their prompts enter context on demand, when the user invokes them. Cursor chose commands so it could control the prompts on its backend: an improved prompt could reach the next invocation without requiring a client update. That deployment mechanism is part of this implementation, distinct from the general skill-package documentation.

The Best-of-N demonstration assigns one task to Kimi, Grok, Composer, GPT, and Opus. The parent starts five subagents, each with a separate context and its own worktree. Context separation keeps each delegated conversation distinct; the worktree supplies its separate checkout. Opus finishes later in this run, and the parent then compares all the implementations.

The comparison can identify which models took essentially the same approach and which contributed something unique. It also supports a follow-up that the previous selection interface could not express: ask the parent to combine a preferred part of Opus’s implementation with a preferred part of GPT’s. The parent can use the independent results as material for a combined implementation instead of treating them only as candidates from which to choose one.

7:197:31
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

7:19 · section reference included

Less maintenance, more flexible workflows

The maintenance savings matter because worktrees serve an advanced subset of Cursor users: people who actively want parallel execution and grids of agents. Gomes does not give an adoption rate. His product judgment is that this feature should not demand a disproportionate amount of maintenance from the team.

Moving orchestration into the conversation also removes some restrictions of the former interface:

  • Switch during a chat: users can discuss a task first, then invoke /worktree when they decide to move the work into a side checkout. The old workflow did not support this transition, and adding more prompt-interface settings was unattractive.
  • Work across repositories: the old implementation disabled worktrees for multi-repository setups. In the new workflow, an agent working across separate front-end and back-end repositories can create a worktree for each and open a pull request in each repository.
  • Judge and combine results: the parent has richer context about what its subagents did. Users can ask it to stitch together useful pieces from several implementations, whereas the old experience required choosing one model’s result.

The flexibility comes from giving the coordinator access to the task and its evolving conversation, rather than fixing every workflow in advance in the interface.

Pros slide listing less code and prompt UI clutter, switching into a worktree during chat, multiple workspaces or repositories, improved Best of N judging, and stitching together subagent implementations.
Five listed benefits cover maintenance, switching worktrees, multiple repositories, judging, and combining subagent implementations.
9:5810:09
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

9:58 · section reference included

Instructions replace an enforced boundary

The change received mixed feedback, including from users accustomed to the old workflow. The most consequential regression is checkout discipline. Gomes says the previous implementation prevented the model from touching files outside its worktree. The replacement tells the model which directory to use and trusts it to comply.

A directory instruction is not an enforced file-access boundary. Over a long session, the model can forget where it should operate and begin changing the primary checkout. Gomes identifies weaker models as particularly susceptible to this drift. The refactor therefore changes more than where orchestration is implemented: it changes how a critical constraint is maintained, from application enforcement to model behavior.

There are also costs in how the workflow feels and how users find it:

  • Visible setup: worktree creation now appears as agent activity in the chat. Gomes says the new workflow feels slower without actually being slower; he supplies no timing measurements. Users see the agent doing setup that previously appeared to have been handled for it.
  • Reduced discoverability: the old dropdown exposed local, cloud, and worktree execution. With that dropdown removed, users need to know /worktree exists before they can invoke it. The team accepts some loss of discoverability for an advanced feature.

These are separate problems: hiding setup activity would not fix checkout drift, and stronger checkout discipline would not make the command easier to discover.

12:1412:22
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

12:14 · section reference included

Evaluate both the intended work and the forbidden work

Cursor is pursuing two ways to improve adherence: use evaluations to improve the prompts, and add relevant tasks to reinforcement learning. Gomes says Composer 2 had no RL tasks using these prompts or this kind of operating environment. The team was adding such tasks to its training pipeline, hoping to improve later Composer releases. For other providers’ models, Cursor can share feedback with the labs but cannot directly change their training.

For the evaluation harness, Gomes uses Braintrust and agent-assisted eval authoring, then runs tasks through the headless Cursor CLI. He describes two separate scorers:

ScorerQuestion
Intended workDid the model do work in its assigned worktree?
Checkout violationDid the model do work in the primary checkout?

Both questions are necessary. An agent might make the requested change in its worktree and still modify the primary checkout along the way. Checking only the desired result would miss that violation.

The initial evaluations are simple and do not reproduce extremely long sessions, where Gomes sees behavior deteriorate. In these preliminary checkout-adherence tests, Gomes reports that Haiku often drifts into the primary checkout, while the tested Composer and Grok models do better. He provides no numerical scores or model-version breakdown. The observation points toward a model-dependent reliability problem within this workflow, not a general ranking of coding ability.

The next step is to make the cases more demanding, identify recurring failure patterns, and use those patterns to revise the prompts. Better system reminders are another proposed intervention: reinforce the assigned checkout during the session so the model does not lose the constraint as the conversation grows.

14:1314:26
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

14:13 · section reference included

Where native worktrees still belong

The roadmap includes a partial return to native implementation. Cursor 3.0 had already introduced an agent window organized around agents and chat while retaining code viewing and editing. Gomes describes a more complete native worktree experience for that window as planned work, not as a completed consequence of the release.

The reasoning is about where the workflow belongs. Users who want extensive local parallelization are likely to use an interface built around agents. In that setting, Cursor intends to provide more native worktree support while continuing to improve the instruction-based approach through evals, RL, and other training. The refactor does not eliminate the case for application code; it changes which interface and users justify that investment.

Git worktrees themselves also impose limits. They can take time to create, consume substantial disk space, and only work in Git repositories. Projects using something other than Git consequently lack this local parallelization option in Cursor. The team is investigating alternatives that do not depend on Git or Git worktrees, with details still to come. The remaining design problem is how to give concurrent agents separate working environments without inheriting all the costs and restrictions of the current primitive.

What next? slide beside the presenter, with an Agent Window screenshot and bullets mentioning Cursor 3.0, multiple agents on one worktree, Cursor 3.1, traditional editor skills, and alternatives to Git worktrees.
The roadmap includes native worktrees in the new Agent Window, continued skill improvements, and other local parallelism approaches.
17:0517:16
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

17:05 · section reference included

Resources

From the talk

Read the complete timestamped transcript
  1. 0:00

    [upbeat music] Hi, everyone.

  2. 0:15

    How you all doing? Thank you for, uh, coming today. Um, I'm going to be talking about how Markdown is basically the new code. Uh, as Teja's already sort of previewed, um, we recently replaced a lot of code in the Cursor application with just Markdown, just a skill.

  3. 0:35

    And in today's talk, I'm going to share a bit of the journey of going from a full-blown feature with a lot of code, a lot of dependencies, a lot of complexity and tests into a much more lightweight, trimmed-down version of the same feature effectively, but just with a single skill.

  4. 0:57

    Um, before I start though, I have to give you guys a little recap of Git worktrees and how they work in Cursor. Now, if you haven't heard of worktrees in Git, they're effectively like, um, separate checkouts, and I'm sorry for the wide screen.

  5. 1:13

    Um, but they're effectively like, like separate checkouts of your repos that allow you to work in parallel. So different agents can be working on the same task at the same-- or on different tasks at the same time without, um, interfering with each other.

  6. 1:30

    If you've never used this feature before in Cursor, the way it works is that you can spin up an agent on an individual worktree, um, and you will see, for example, the same file in two different worktrees, and you can see that they look different because then the agent is doing some work on, on the worktree, but

  7. 1:48

    not on your primary checkout. And any time the agent runs commands or lints or anything it does, will be isolated and scoped to that Git worktree. Um, with this feature, you can also, um, work even in parallel.

  8. 2:05

    At the same time on the screen, you can have, like, these grids of agents working for you. Um, and f- if you say, "Hey, open a PR," the agent will open a pull request from that worktree with the changes that it produced inside that worktree.

  9. 2:19

    And one of the coolest things about this feature is that it allows you to give the same task even to different models at the same time, and then compare what different models do on the same prompt.

  10. 2:34

    So if you haven't heard of this, we call it Best-of-N, and it's effectively a way for you to compete on, on diff-- have, have different models compete on the same task.

  11. 2:46

    And then you can even preview the changes. If it's a front-end, um, project you're working on, uh, you can, um, compare all the different visual implementations and then choose the one you prefer.

  12. 2:58

    Now, if you have never heard about this, all, all-- everything I'm talking about today, um, I will also just say that it all came out in around October of last year or alongside Cursor two point o.

  13. 3:10

    Um, and when we initially shipped that, it came with a lot of complexity. Um, we had to write all the code for creating worktrees, managing these worktrees, fitting them into the agent as context.

  14. 3:23

    We also had to make sure that the agents were scoped and isolated, and they could not escape the worktree they were working on. Uh, we also have something called setup scripts, which users can configure and run, uh, and, and have Cursor run them anytime an agent starts operating on a given workstream.

  15. 3:40

    We also have the judging. So I didn't show you this before, but, uh, there's a little thumbs up icon on one of the models. That's just a, a judge that we run, um, that tells you which implementation looks the best based on, um, different criterion.

  16. 3:54

    Uh, and then we also had to make some changes to the harness, uh, and introduce some system reminders to help the agents stay on track in these worktrees. And then finally, there's, there's some cleanup complexity as well because people like to spin up hundreds of these worktrees, and then their disk sizes blow up, and we have to

  17. 4:10

    help them by cleaning up the, um, the, the worktrees that stay behind. Now, in our new implementation, the one that I'm gonna be talking about today, we were able to get rid of most of these things.

  18. 4:24

    And in fact, I recently opened a PR, uh, removing this entire feature from Cursor, and it was a massive, like, deletion of, of, of code. Like, I think it was around fifteen thousand lines of code deleted.

  19. 4:36

    The new implementation of the feature is almost as good as the previous one, um, and it is much, much more lightweight in terms of us to maintain it, um, and it even has some benefits compared to the previous implementation that I'll be talking about today.

  20. 4:53

    So how were we able to replace an entire feature with a skill?

  21. 4:58

    We decided that there are two primitives that we could use to effectively allow Cursor users to use worktrees by simply leveraging two primitives. One is agent skills and the other are sub-agents.

  22. 5:11

    So both of these are existing Cursor features. You can learn more about them in our docs. Uh, we have a page for skills, and we have a page for sub-agents.

  23. 5:20

    We realized that if we took these two things together, we could basically re-implement both the Cursor Worktrees feature as well as the Cursor Best-of-N feature with just Markdown. And this is a little video of how it works.

  24. 5:33

    So I can now, as a user, say /worktree, and then I'll give it some task. I'll say, "Fix a typo in the footer of the website." And this agent will run in an isolated worktree and do its work there.

  25. 5:47

    So the way the skill is written is actually really simple. I can show you most of it.

  26. 5:55

    Uh, it doesn't fit on the screen, but it's basically a set of instructions telling the model Um, how to create worktrees and, um, to run the setup scripts that the user might have configured, and then to stay on that checkout, right?

  27. 6:10

    We want to make sure that when the agent is operating on a worktree, it is staying in that checkout. Um, the Best-of-N skill is very similar. It's, um, actually even smaller.

  28. 6:20

    The entire skill fits on the screen here with, with a small, uh, font. Um, and what we're doing here is we're instructing the parent agent to go and create sub-agents for each model, and then spin up a worktree for each...

  29. 6:34

    Uh, so a- have each sub-agent create its own worktree, and work inside that worktree. Um, and then we also tell it to wait for all the sub-agents, and when they're done, please provide some commentary.

  30. 6:47

    Please let the user know, um, what, um, the different implementations by the different sub-agents look like. Maybe you can grade them, maybe you can make some, uh, criticism of them, and maybe you can help the user choose which one is the best.

  31. 7:04

    Um, and, and please give that to the user in some nice table format or something. But again, it's only around 40 lines of code, and it's all Markdown. Like, it's not even code.

  32. 7:14

    And the previous version of this was maybe four thousand lines of code.

  33. 7:19

    Uh, some of the considerations we have to have in this, in this skill is that the skill must be cross-platform compatible. Like, we have Windows-specific instructions, and we have Linux and macOS instructions as well.

  34. 7:31

    We also instruct the parent model to run the setup scripts for each worktree that the user might have configured. And then, and this is the hardest part, we'll spend a bit of time on this on the talk today, we have to instruct the model to stay on that worktree, right?

  35. 7:43

    We have to really say, "Hey, do not ever work outside this and do not ever, um, escape," right? Um,

  36. 7:54

    and we, we do that with some aggressive prompting, effectively. So, the new commands are /worktree and then /best-of-n to do the basic- basically, like, um, the, to start agents in isolated worktrees and to start multiple agents on the same task.

  37. 8:12

    And then we also have apply worktree and delete worktree to bring over changes from the side worktree into your primary checkout, and delete worktree just does, uh, what you would expect.

  38. 8:24

    Uh, a little note is that these are not actually skills in Cursor. They're actually commands, but the way these commands work in Cursor is extremely similar to how skills work in that they're-- the prompts only get loaded into the context if the user chooses to load them.

  39. 8:41

    Um, and the only reason we did it as commands and not as skills is so that the prompts for them can be controlled in our servers, in our backend.

  40. 8:49

    This means I can iterate on these prompts, um, without you having to update your Cursor version. Um, if I do some improvements to these prompts, the next time you use them, you're gonna have-- you're gonna get the latest version of the prompts.

  41. 9:03

    But effectively, they work like skills. Um, this is a demo of the Best-of-N, um, skill or command where I'm giving the same task to Kimi, Groq, Composer, GPT, and Opus.

  42. 9:17

    And w- what you will see is that the parent agent starts by spinning up five sub-agents on the five different models that I specified, and each one is gonna have its own worktree.

  43. 9:27

    Each, each one has its own context. And then Opus takes a little longer, as expected. And then at the end, the parent model, as instructed, will do that comparison ac- a- across all the different sub-agents.

  44. 9:40

    It'll say, um, "These two models did basically the same thing. This one did something that none of the others did." And you can even talk to the parent agent and you can say, "Oh, I like this part that Opus did, and I like this part that GPT did.

  45. 9:53

    Can you, can you mash them together?" And the, the, the parent agent will do that for you.

  46. 9:58

    Um, so let's talk about some of the pros of the new implementation, and then I'll talk about some of the, some of the, the, the cons, some of the things we lost, um, with this refactor.

  47. 10:09

    So the main pro of reimplementing this entire feature as a skill is that I have a lot less code to maintain. [laughs]

  48. 10:18

    Uh, selfishly, um, I'm going to be spending a lot less time maintaining this feature. And this is an a- an advanced feature, right? We're not talking about a feature that is used by ninety percent of Cursor's users.

  49. 10:28

    Far from it. Worktrees are kind of an advanced thing, um, and so only the Cursor power users that love parallelizing and having these grids of agents are using worktrees.

  50. 10:40

    So it's not the kind of feature where we want to be spending a lot of time with maintenance.

  51. 10:47

    Another advantage is that our users can now switch into a worktree halfway through a chat. It was not possible before. Um, we didn't want to pollute the prompt UI too much with all these, like, dropdowns and settings.

  52. 11:01

    And so now that it's just a slash command, it's much easier for, for users to switch to a worktree halfway through a chat. They can start talking about something, and then if they decide they wanna work on the side, they can do that with /worktree.

  53. 11:13

    Another big advantage is that the previous implementation did not work if you were working on multiple repos at the same time. So it's very common to have a multi-repo setup where maybe your front-end and your back-end are separate repos.

  54. 11:27

    In the past, you could not do worktrees in this kind of setup. It was just disabled. With the new /worktree command, everything works fine. The agent will make sure to create a worktree on each repo, and then if you open a PR, it'll open two PRs, one for each repo.

  55. 11:43

    It works quite well. Another advantage of the new skill implementation is that the judging experience at the end of knowing what model did which for Best-of-N is far superior.

  56. 11:54

    The parent now has a lot more context over what each of the sub-agents did, and the user can even ask the agent to stitch together little different piece, pieces and bits from the different implementations, which was not possible before.

  57. 12:06

    In the previous implementation, you had to choose one

  58. 12:09

    Sub-agent or one model and just s-stick with that.

  59. 12:14

    Now let's talk about some of the cons. And if you're curious, um, we have a forums link here where we're actually getting some mixed feedback on the new implementation.

  60. 12:22

    Like, some people were really accustomed to the old way of how the feature used to work. Um, and if you're curious, you can go and see that not everyone is happy with the change, at least for now, but we're, we're tracking.

  61. 12:34

    What are the problems? Number one, it's very hard for the agent to stay on track.

  62. 12:39

    With our previous approach, um, the agent had to stay on track. Like, it-- We didn't let the model ever touch any files outside its worktree. It was physically impossible for it to do so.

  63. 12:51

    Now we're trusting the model, so it's... You could say it's a bit vibes-based because we're basically saying, "Hey, operate on this directory," and, and, and then, like, you know, "Knock on wood, please, please don't forget about this."

  64. 13:03

    And especially over long sessions, it's quite possible that the model will forget where it should be operating. And sometimes these models, especially the worst models, will kind of hallucinate or they'll go a bit haywire, and they'll start doing things they shouldn't.

  65. 13:17

    But we're, we're working on this. Um, another con is that it feels slower because you're, you're seeing the agent create the worktree, and you're seeing that in your chat.

  66. 13:29

    It's not actually slower, but it does feel like the agent is kind of, like, wasting time doing something that should be done for it in advance. Um, we're also looking at some improvements here.

  67. 13:40

    And then finally, this is much harder to find the feature now, right? Like, before, whenever you opened Cursor, you had this dropdown that would show you, "Do you wanna run this task locally, or do you wanna run it in the cloud, or do you wanna run it in a worktree?"

  68. 13:53

    Now that entire dropdown is gone, and so if you want to use worktrees, you have to know the feature exists, so you can actually type /worktree. So the discoverability is a bit worse, but as I mentioned before, this is an advanced power user feature, um, which we're personally okay-- We're, we're, we're okay with being less discoverable in

  69. 14:13

    general. So how can we make the skill better? Um, as I mentioned, the biggest problem right now is that the agent is not really always staying on track. Uh, there's two ways that we're gonna improve this.

  70. 14:26

    One is with evals, and then using those evals to improve the prompts, and then the other one is through RL and training. So at Cursor, we train our own model called Composer.

  71. 14:36

    And for Composer 2, our-- the latest version of this model, we didn't have any RL tasks with these prompts. We di- we didn't have any tasks in all of the many, many thousands of tasks that we, um, used for RL actually operating in this type of environment.

  72. 14:55

    So we're working on adding a bunch of these tasks into our RL pipeline so that by the time we launch Composer 3 or 4 or 5, um, at least our own model will be much better at this.

  73. 15:08

    Obviously, we cannot improve the models that the other companies develop, but we've been sharing feedback with all the other labs and model providers on this kind of thing.

  74. 15:16

    And for evals, uh, I've been working on some evals for this feature, and it was actually my first time... Or not my first time, but one-- I'm, I'm fairly, um, early in my, um, my writing evals, uh, journey, and I was actually very surprised.

  75. 15:33

    If you use something like Braintrust, and shout-out to Braintrust, they've been super helpful, uh, writing these kinds of evals are s- is actually super, super easy. You don't have to know almost anything about evals, and you can just prompt the agent, and it'll do everything for you.

  76. 15:46

    Um, effectively, what I'm doing is I spin up the Cursor CLI. It's headless, so it's great for evals. Um, and then I have two scorers, one that checks to see if the model did any work in its worktree as expected, and then another one which is the reverse of that, which is did the model do any work

  77. 16:05

    in the primary checkout where it shouldn't be doing any work? Uh, and so far, the evals I've got are pretty simple, so I actually haven't been,

  78. 16:15

    um, able to simulate extremely long sessions, which is when the models start performing worse. But even so far, I've already understood that not all models are equally good at this.

  79. 16:26

    So for example, Haiku, which is a smaller, less intelligent model, will very often deviate and start working in the primary checkout. But the other models that I've been testing, such as Composer and Groq, um, are doing much better.

  80. 16:42

    So I still have to improve these evals a lot more to make them more complicated. But the hope is that as soon as I can start to find patterns here, I can actually go and improve the prompts.

  81. 16:53

    And then another thing we can do is have better system reminders to the models, uh, instructing them to stay on track and to not deviate from the worktree that they are supposed to be working in.

  82. 17:05

    Okay. So what's next? Um, the first thing is we're actually going to take a, a small step back here, and we're actually going to have a much more

  83. 17:16

    complete and native worktrees implementation in the new Cursor agent window. If you're, uh-- If you've been following, we recently announced Cursor 3.0. Part of 3.0 is a more agentic interface for coding, where you can still edit code and you can still see code, but the UI and the UX are much more optimized around the agent and the

  84. 17:37

    chat interface. We believe this kind of interface is the right place for a proper worktrees implementation. The kind of person who is more likely to be, uh, doing a bunch of local parallelization is usually the same type of person that is more likely to use this type of UI.

  85. 17:54

    So we're taking a small step back there and building a proper worktrees, uh, implementation that is more native, not so much agentic in the new UI. Also, we're improving the skills, um, as I mentioned, through this continued work on evals and then RL and other training work.

  86. 18:12

    And then finally, we are actually looking into other parallelization primitives that are not Git worktrees. So if you've used Git worktrees, you might know that, uh, they can be a bit slow to create, um, and also to, uh...

  87. 18:27

    they also use up a lot of disk space on your computer. Um, and then finally, uh, they only work in Git repos. So if you're using something other than Git, there's really no local parallelization primitive in Cursor.

  88. 18:39

    Um, in the near future, we hope to, uh, share more about this, but we're looking into some other solutions for local parallelization that don't involve Git and don't involve Git worktrees.

  89. 18:50

    Um, so yeah, stay tuned for that. Um, thank you all for coming to the talk today. Um, I'm sure many of you have questions, and I'm gonna be around all day.

  90. 18:59

    Uh, feel free to grab me anytime and, uh, um, I'm happy to chat with anyone. Thank you. [applause] [outro jingle]