Nine engineers, 1,211 code updates in a day: Lessons from building Copilot Cowork
Microsoft’s Copilot Cowork moved from prototype to global release in four and a half months, with nine engineers merging 1,211 pull requests in a single day while shifting its runtime from Python to Rust live.
In January, a small Microsoft team began building Copilot Cowork, an agentic execution layer that automates multi-step workflows for knowledge workers using Microsoft 365 tools. The project combined Work IQ, Microsoft 365 security and governance, cloud execution, and Microsoft’s multi-model architecture to deliver AI-assisted capabilities. Engineers started with an empty repository and, within months, reached worldwide general availability while simultaneously migrating the live runtime from Python to Rust.
Nine engineers merged 1,211 pull requests in one day, a pace that contrasted sharply with the handful of commits made in January. Agents wrote most of the code, but engineers defined specifications, set architecture and security boundaries, and focused reviews on high-risk changes and production impact. Automated checks and agent reviewers evaluated every change, though final decisions remained with engineers. The team adapted its workflow every few weeks as agents improved and processes broke down.
Six practices emerged from the team’s iterative process: clearer specifications, bounded agent execution, rigorous testing of automated checks, preserving team learnings, designing the codebase for parallel work, and limiting automated loops. These practices were not intended to replicate the team’s pull request volume but to help other teams move quickly while maintaining reliability, security, and cost control. The team enforced a rule that no code could be written without a markdown specification first, which reduced rework despite initial time costs.
The project culminated in migrating the live runtime from Python to Rust without downtime. Engineers built review bots that competed to catch errors, each undergoing at least 10,000 generations of improvement. On recent merged pull requests, the median first review time was about four and a half minutes, demonstrating how automation accelerated the review process while maintaining quality.