The symptom
After upgrading the Gradle wrapper from 9.6.1 to 9.7 or newer (9.8.2 in my case), every Gradle sync in IntelliJ IDEA 2026.2.3 on macOS ended in a red “failed” state:
- The Build window showed the sync as failed, with no error message.
idea.logonly hadGradle sync failed in 38 s 629 ms. Unknown causeand anExternalSystemPartialResolutionExceptionwith an empty message.- The Gradle daemon log said
BUILD SUCCESSFUL, and builds from the command line worked. - The project imported fine: modules, dependencies and code completion all worked.
It happened on a Kotlin Multiplatform/Android project and on a plain one-module Java WAR project. Going back to Gradle 9.6.1 made the sync green again.
What did not help
- Wiping the IDE caches (
~/Library/Caches/JetBrains/IntelliJIdea2026.2). - Requesting the models myself through the Gradle Tooling API. I wrote a small client to rule out my build scripts. Every standard model (
GradleBuild,KotlinDslScriptsModel,GradleProject,IdeaProject) came back without a failure, so the build scripts were fine.
Finding the real error
Turn on debug logging for the Gradle integration: Help → Diagnostic Tools → Debug Log Settings, add these two lines, then sync again:
org.jetbrains.plugins.gradle
com.android.tools.idea.gradle.project.sync
idea.log then shows the actual failures:
UnknownModelException: No builders are available to build a model of type
'org.jetbrains.compose.reload.gradle.idea.IdeaComposeHotReloadModel'
UnknownModelException: No builders are available to build a model of type
'com.intellij.kmm.gradle.tooling.rt.cocoapods.models.XcodeCocoaPodsModel'
What’s going on
- Two IDE plugins ask every Gradle project for their own model: the Compose Hot Reload support and the Kotlin Multiplatform plugin’s CocoaPods support. That happens even when the project uses neither, as mine didn’t.
- Up to Gradle 9.6 nobody noticed. A missing model came back as an empty answer and the IDE moved on.
- Gradle 9.7 added resilient sync, together with IntelliJ IDEA 2026.2. Gradle now reports each failed model fetch to the IDE, so the IDE can keep the parts that worked. A model that doesn’t exist now counts as a failure, the IDE marks the sync as partly failed, and the Android plugin’s sync status shows that as “Unknown cause”.
So nothing is wrong with your project. The red state is cosmetic.
JetBrains tracks it as KTIJ-40132, reportedly fixed in IntelliJ IDEA 2026.2.4 and 2026.3 EAP 3.
Workaround until the fix
Help → Find Action → Registry…, then set:
gradle.use.resilient.model.fetch = false
This brings back the pre-9.7 behaviour, and the sync turns green. Set it back to true after updating the IDE, because resilient sync is genuinely useful when your build really is broken.
If you only want to see the hidden failures in the Build window, the registry key gradle.show.suppressed.failure.events = true reportedly does that.
Takeaways
- If the IDE says the sync failed but Gradle says
BUILD SUCCESSFUL, the problem is on the IDE side. Debug logging fororg.jetbrains.plugins.gradlenames the model that fails. - “Unknown cause” with an empty
ExternalSystemPartialResolutionExceptionon Gradle 9.7+ almost always means a model fetch failed, not that the build failed.
Environment: IntelliJ IDEA Ultimate 2026.2.3 (build IU-262.10968.63), Gradle 9.8.2 (fails from 9.7.0), Gradle JVM JetBrains Runtime 25, macOS 27.