Gradle Is Going Agentic

We're making Gradle work well with coding agents, and that meant not shipping Configuration Cache by default in Gradle 10 this cycle. Here's the tradeoff, and why we think it's the right one.

Table of Contents

Introduction

More and more of the people who run Gradle every day aren’t typing ./gradlew build themselves. They’re asking an agent to run a build, paste it the failure, then ask it to fix the thing that failed. The agent is now part of the build loop, whether the build tool invited it or not.

This is not a Gradle-specific oddity. Every build tool is being driven by a new kind of user: not a person with muscle memory for flags and log output, but a model with a terminal, a context window, and alarming confidence. New user, new failure modes. We have hit enough of them that pretending this is temporary started to feel silly.

So we started a project. We’re calling it Agentic Gradle. The practical version has two buckets: skills that teach agents how to use Gradle effectively, and new Gradle features for the places where agents make today’s build tooling awkward. Not because Gradle is bad at this, but because agents push builds in ways we never had to support before.

Picking it up meant we didn’t do something else this cycle. We’ll get to that, because it is the more interesting part of the story. But first, what we’re actually building.

What this looks like in practice #

There are three pieces, in the order we’re putting real time behind them.

Official Gradle skills. A skill is a small, focused set of instructions that teaches an agent how to do something specific with Gradle: read a build failure, run the right task, understand what a Build Scan is telling it. Skills also make vague prompts less dangerous. Give an agent “speed up my build” and, left to its own devices, it’ll reach for whatever pattern it saw most often on the internet, which is often years out of date. A focused Gradle performance Skill can keep it closer to the boring advice that works: enabling the configuration cache, reaching for a version catalog, avoiding configuration-time anti-patterns it wouldn’t otherwise think to check.

We’ve been experimenting with these throughout the year, and a few are close to ready. We won’t ship one until we can show it makes an agent better at a real Gradle task, which is exactly what the next piece is about.

Benchmarking what helps. You can’t claim a change or a skill helps if you can’t show it helps. So we’re building the unglamorous thing: repeatable scenarios that hold the agent and the Gradle version steady, then measure what a new Skill or a change to Gradle actually adds. We’re not trying to crown this week’s smartest model. The agent and the Gradle version are the environment; the Skill or Gradle change is what’s under test. This is not going to be a journal article. It should still be enough signal that we’re comfortable putting the results in front of you.

Removing the friction. Some parts of using Gradle through an agent are just annoying today:

  • Builds behave oddly in some agentic workflows.
  • Agents burn tokens on interactions that should be one step.
  • Our documentation can do more to help an agent fetch the right answer mid-build.

We’re even chewing on what a more agent-friendly command line could look like. Whether that grows into a real feature is a question we’ll let the benchmarks answer. For now, we’re hunting these down and either fixing them or writing up a reproducible case so someone can.

Real talk: what this cost #

Now the tradeoff, and you can watch it play out on our public roadmap.

Every team has a ceiling. Ours has room for about three big projects a quarter, and no amount of calendar optimism changes that. So every cycle is a forced-ranking exercise: three major efforts get to move, and the rest of the roadmap waits its turn. To be clear, this is only about where the biggest efforts go. The everyday work of fixing bugs and smaller platform improvements keeps running the whole time.

This cycle, two of the three slots were spoken for:

  1. Declarative Gradle stays, because the window to define what a modern, approachable Gradle build looks like is open right now and won’t stay open forever. It pays off for agents too, maybe more than we first realized: a declarative build explains itself. An agent can read how the build is meant to be configured directly, without crawling through imperative build logic or running the build just to find out what it does. A stable, declarative DSL is far easier to reason about than today’s dynamic scripts.
  2. Isolated Projects stays, because it’s central to where Gradle’s performance is headed and we’re committed to making it stable. It’s already fast, and the isolation constraints it enforces unlock a whole class of optimizations we haven’t finished mining yet, so it’s only getting faster. We intend to carry it from incubating all the way to done.

That left one slot. We gave it to Agentic Gradle instead of the work to make Configuration Cache the default in Gradle 10.

We should be precise about what that does and doesn’t mean, because “we deprioritized Configuration Cache” is easy to misread as bad news, and it isn’t.

Configuration Cache already exists. It’s shipped, it’s stable, and it’s ready for you to adopt today. For a new project it should be your first choice, and our best practices say exactly that. What we chose not to do this cycle is flip the default in the Gradle codebase, and that’s a bigger job than it sounds. A default has to work all the time, for every existing build, not just the greenfield ones. That means cleanly attributing failures, closing capability gaps, and making sure nobody gets silently wrong results on upgrade. Getting there is a large, careful project in its own right.

That work is still ongoing; we just think supporting agentic development matters more right now. The plan is now to make Configuration Cache the default in Gradle 11 rather than Gradle 10, not to drop it. And in the meantime, the thing most people actually want from “CC by default” is available under one line in gradle.properties:

org.gradle.configuration-cache=true

Our advocacy team is spending real energy helping community projects turn the Configuration Cache on and get the benefits now. If you’ve been waiting for the default to flip before adopting, our strong advice is: don’t wait. The benefits are available now, and the projects that adopt early hit fewer surprises than the ones that wait for a forced migration.

Why agents were worth the slot #

Three slots, and we spent one on this instead of a performance default a lot of people are asking for. Fair question: why?

Because we don’t see the JVM build ecosystem treating agents as real build users yet. Build tools mostly assume a human at the keyboard. That’s a gap, and gaps like this don’t stay open. The tool that agents find easy to reason about is the tool teams keep reaching for, precisely because so much of the reaching is now done through an agent.

At the same time, open source projects we respect are leaning into this hard, shipping skills and agent-facing docs and treating “does this work with an agent” as a real question. We should be in that conversation, not watching it.

And the framing that matters most to us internally: this is Gradle work, not a wrapper around Gradle. Making a build tool legible to an agent is the same discipline as making it legible to a human. Clearer failures, fewer hidden footguns, better answers about what a build is doing. That work pays off whether the thing reading the output is a person or a model.

What’s next #

Over the next few weeks we’ll start releasing the first skills once they clear the benchmark bar, along with the scenarios we used to measure them. You should be able to see our work rather than take our word for it. If you’re already driving Gradle through an agent and hitting friction, that’s exactly the input we want. Come tell us where it hurts in the new #agentic-gradle channel on the Gradle Community Slack.

Configuration Cache by default is still coming. Just not this cycle, and not before we’re ready to make it right. For now, go turn it on yourself. It’s been waiting for you the whole time.

Discuss