Safeguard
Security Guides•

What should a Gradle supply chain review check? A ten question list

A ten question review for Gradle and Kotlin builds: repositories, plugins, versions, locking, verification, build logic, cache, JDK and inventory.

Safeguard Security Team
4 min read

A Gradle supply chain review comes down to ten questions: where code comes from, what versions resolve, whether bytes are verified, and what runs inside the build itself. Work through them in order for any Java, Kotlin or Android project. Each links to a deeper post, and each can be checked in a few minutes.

The ten questions

#QuestionWhere to look
1Which repositories can the build use, and who approved them?Settings file, repositories blocks
2Can a project add its own repository?repositoriesMode setting
3Are private groups restricted to the private repository?Content filters
4Where do plugins and JDKs come from?pluginManagement, toolchain settings
5Are any versions dynamic or SNAPSHOT?Build files, catalog, dependency report
6Are resolved versions locked?Lock files
7Are artifact checksums verified?Verification metadata
8Who can change build logic?buildSrc, build-logic, init scripts
9Who can write to shared caches?Build cache settings
10Is there an inventory per shipped variant and target?SBOM, dependency report

Quick guidance for each

1 and 2. Gradle's docs describe a settings level repositories block, and a mode that fails the build when a project declares its own. Android's default template uses it. See Google Maven and Maven Central.

3. Gradle's content filtering restricts a repository to named groups, and exclusiveContent makes one repository the only source. See keeping private groups off public repos.

4. Plugins resolve from the Plugin Portal unless you configure otherwise, and JDKs are downloaded only if a resolver is configured. See plugin sources and JDK auto-download.

5. Gradle says dynamic versions and changing modules can make builds unreproducible. See SNAPSHOT and changing modules.

6 and 7. Locking fixes versions, verification checks bytes. See turning on locking and bootstrapping verification.

8. Build logic is code, and init scripts affect every build they are attached to. See reviewing convention plugins and init scripts.

9. Gradle's docs expect only CI to populate a remote cache. See who should push.

10. Declarations are not the same as resolved graphs, especially across Android variants and Kotlin Multiplatform source sets.

Scoring it

Mark each question as yes, partly or no, and write the owner and date next to it. Three or more no answers on questions 1 to 7 is a good reason to start with repositories and locking, since those are quick changes. Re-run the list when the team adds a platform target, a new plugin or a new repository.

What to hand a customer

If a buyer asks about your build, a filled in version of this table, with dates and owners, is concrete and honest. Do not claim a certification you do not hold, and say plainly which items are in progress.

Try it yourself

Click through it at your own pace, or open it full screen.

See how findings are tracked from detection to closure. Your checklist answers should be tracked the same way.

Safeguard's SBOM and dependency scanning, policies and gates, and compliance and evidence automation cover parts of this list. The free scan is at gold.safeguard.sh/scan.

Quick check

Which question should I answer first?

Start with repositories, since where code comes from affects everything after it, and the change is small.

How often should I rerun the review?

At least when you add a repository, plugin or target, and on a regular schedule such as each quarter.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.