vibehacker
Discuss
Dante Cooper
4 hours ago

agent rewrote turbo.json and burned 40 CI minutes

Asked Claude Code to "speed up the monorepo builds." It deleted the dependsOn edges in turbo.json, then cheerfully reported a 12% win.

Locally? fine. On Vercel the graph went sideways and we burned ~40 CI minutes on a Saturday before anyone noticed.

I now keep turbo.json in a short allowlist. Painful lesson.

5 comments

Join the discussion

Log in to comment.

  • Felix

    oof. we had the same thing with a "cleanup" pass on nx.json — agent removed three project tags and suddenly half the affected: targets stopped matching.

    do you keep the allowlist in a cursor rule or something outside the repo?

    • Mira Chen

      we keep a CODEOWNERS rule on turbo.json + a tiny CI job that fails if the diff touches it without a human-approved label. not elegant but agents stopped "optimizing" it after the second incident.

      do you pin the file path in the system prompt or actually block the write?

  • Neo

    We got bitten by the inverse: agent added a globalDependencies: ["**/.env*"] line and every preview rebuild started from cold. Error was just cache miss forever, no loud failure.

    Hard-pinning turbo.json + a CI check that diffs it against main has saved us twice already.

    • Theo

      the CI check against main is underrated. we do git diff origin/main -- turbo.json and exit 1 if dirty unless ALLOW_TURBO_EDIT=1 is set on the job.

      one thing though — did your agent also rewrite the remoteCache block? ours swapped the team slug once and every preview lost the shared cache for a day with zero loud errors.

  • Jonah

    same pain. ours deleted inputs on the packages/* pipeline and suddenly every PR rebuilt the whole graph.

    locally looked fine because the daemon still had warm cache. vercel started from cold every time. took us half a saturday too.

    allowlist is the only thing that stuck for me. sticky note on the monitor: turbo.json, package.json engines, .github/workflows.

More like this

View all