The promise of AI coding agents has a dirty secret: the faster you generate code, the harder you slam into your continuous integration pipeline. Linear, the project management tool company, discovered this firsthand when their CTO flagged ballooning CI costs. The test suite had nearly quadrupled since January. Every pull request still had to pass through CI, and the queue was backing up. The fix wasn't a single magic bullet but a systematic teardown of waste at every layer. They started by swapping GitHub Actions for third-party runners with faster CPUs and better storage, netting a 34% average speedup with some jobs like TypeScript compilation dropping 52%. Then they adopted tsgo, the native TypeScript compiler, which cut the weekly median tsc check by 73% — enough to remove typechecking from the critical path entirely. Linting got the same treatment. A handful of custom ESLint rules required the full TypeScript type graph, making lint one of the most memory-intensive CI jobs. Linear rewrote those rules to use static AST analysis instead, cutting API lint time by 68% and full-repo lint time by 55%. That refactor also smoothed the later migration to Oxlint, since syntax-only rules port trivially. The next layer was structural: optimizing the small gating jobs that blocked everything downstream. Change-detection jobs were checking out the entire working tree when they needed almost none of it. Capping fetch depth dropped the slowest gate from 94 seconds to 20. Removing checkout entirely from jobs that never needed a working tree cut others from 27 seconds to 7. The median change-detection job fell from 26 to 8 seconds. Repeated setup costs were the next target. Every API test shard was installing the same Postgres client with apt, running the full database migration history, and installing the entire pnpm workspace. Linear baked shared dependencies into a base CI image, restricted pnpm installs to only the needed package (cutting install from 44-73 seconds to 16-18 seconds), switched database setup from migration replay to a schema snapshot (12 seconds to 1-2 seconds), and consolidated seven short independent checks into two concurrent jobs. That last move alone saved roughly 87,000 runner-minutes per month — 11.8% of total CI usage. On the test execution side, they attacked the shard-balancing problem. Vitest distributes work by file, so a few large test files could dominate a shard while others sat idle. Splitting those files and moving from four to eight shards made the critical job 19% faster and 19% cheaper. The slowest shard dropped from 5.25 minutes to 4.33 minutes. They also introduced an opt-in shared module registry for safe test files, eliminating redundant rebuilds of the entity and GraphQL graph in each shard. The net result: despite test suites nearly quadrupling, PR wait time dropped from over 6 minutes to just over 5, and runner time per test was cut roughly in half. None of these optimizations required exotic tooling or bespoke infrastructure. They required treating CI as a system — identifying critical paths, eliminating redundant work, and refusing to accept inherited defaults. As AI agents accelerate code production, this kind of infrastructure discipline becomes the binding constraint on whether teams actually ship faster or just generate more queues.