Cursor tried having coding agents coordinate through a shared file. To keep two agents from taking the same job, the company added a lock that let one agent update the file at a time. Agents sometimes held locks too long or forgot to release them. Cursor reports that 20 agents could spend so much time waiting that their throughput fell to that of two or three.

The team replaced locks with a design that rejected updates when someone else had already changed the underlying state. That reduced one bottleneck, but the agents still gravitated toward small changes. The company then separated roles. Planners explored the project and created tasks. Workers took those tasks and made changes.
Cursor's engineering report describes experiments inside the company. Its account shows how a group of agents can inherit familiar coordination problems, including who owns the hard work and what happens when everybody waits for the same shared resource.
