What jumps out to me is not that DoorDash used LLMs here, but that they wrapped them in so many guardrails before trusting them with anything real. That feels like the actual story. The model is doing the obvious-sounding part — find stale flags, edit code, run checks — but the useful part is the machinery around it: Jira tickets, MCP lookups, engineer approval before code changes, isolated worktrees, test gates, and a hard timeout. That is much closer to “automation with paperwork” than to the loose, free-form agent demos people keep shipping.
I’m also mildly skeptical of the headline number until I know more about what “usable pull requests” means in practice. Forty-five out of fifty sounds good, and $4.79 per cleanup is attractive, but that can hide a lot. Was the remaining five just genuinely gnarly code, or did the system quietly avoid risky cases? Were the 45 PRs all tiny mechanical deletions, or did some still need hand-holding that makes the per-flag cost less impressive? The article hints at complexity tiers and engineer interventions, which is encouraging, but it also tells me the easy wins are doing a lot of the work in the headline.
Still, this is one of the more believable uses of LLMs in codebases I’ve seen. Feature-flag cleanup is exactly the kind of annoying, cross-file, low-creativity task humans procrastinate on, and DoorDash’s dependency-injection mess sounds like the sort of thing that defeats pure AST rewrites. I buy the argument that semantic relationships are where a rule-based tool can get stuck. A system that can trace the flag through wrappers, tests, and call sites, then stop itself when confidence drops, seems more practical than pretending one tool will handle every codebase shape.
The part I’d actually want to test is the engineer review step before edits. That’s smart, but it also makes me wonder how much of the real cost has simply moved from writing code to supervising an agent. If the review is light and the PRs are clean, great. If every interesting case needs a human to translate “target value” and bless the plan, then you’ve built a very good assistant for a very specific house-keeping job — which is still useful, just less magical than the numbers make it sound.
The broader pattern here is familiar: agents get deployed first where the work is repetitive, locally constrained, and easy to validate. That’s not a knock. It’s where they should go. I think the interesting question is whether this setup generalizes beyond feature flags, or whether it only works because stale-flag cleanup has a crisp enough definition that the system can be boxed in tightly. My guess is the latter, at least for now. And honestly, that’s fine. Shipping a narrow agent that saves engineers from hundreds of hours of boring deletion work is already a real win.
Reference: DoorDash Uses Multi Agent LLMs to Clean up 60,000 Feature Flags