diff --git a/lib/src/main/java/com/diffplug/spotless/java/CleanthatJavaStep.java b/lib/src/main/java/com/diffplug/spotless/java/CleanthatJavaStep.java
index b5cc5452d1..2ef68f4f85 100644
--- a/lib/src/main/java/com/diffplug/spotless/java/CleanthatJavaStep.java
+++ b/lib/src/main/java/com/diffplug/spotless/java/CleanthatJavaStep.java
@@ -40,7 +40,7 @@ public final class CleanthatJavaStep {
 	private static final String MAVEN_COORDINATE = "io.github.solven-eu.cleanthat:java";
 
 	// CleanThat changelog is available at https://github.com/solven-eu/cleanthat/blob/master/CHANGES.MD
-	private static final Jvm.Support<String> JVM_SUPPORT = Jvm.<String> support(NAME).add(11, "2.1");
+	private static final Jvm.Support<String> JVM_SUPPORT = Jvm.<String> support(NAME).add(11, "2.2");
 
 	// prevent direct instantiation
 	private CleanthatJavaStep() {}
@@ -71,8 +71,7 @@ public static List<String> defaultExcludedMutators() {
 	 * @return
 	 */
 	public static List<String> defaultMutators() {
-		// see JavaRefactorerProperties.WILDCARD
-		return List.of("*");
+		return List.of("eu.solven.cleanthat.engine.java.refactorer.mutators.composite.SafeAndConsensualMutators");
 	}
 
 	/** Creates a step which apply selected CleanThat mutators. */
diff --git a/plugin-gradle/CHANGES.md b/plugin-gradle/CHANGES.md
index 087c1ade89..afba5abdc7 100644
--- a/plugin-gradle/CHANGES.md
+++ b/plugin-gradle/CHANGES.md
@@ -3,6 +3,7 @@
 We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format (starting after version `3.27.0`).
 
 ## [Unreleased]
+* Bump default `cleanthat` version to latest `2.1` -> `2.2` ([#1569](https://github.com/diffplug/spotless/pull/1569))
 
 ## [6.15.0] - 2023-02-10
 ### Added
diff --git a/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/JavaExtension.java b/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/JavaExtension.java
index 6e9f6de005..7ab94ba7e4 100644
--- a/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/JavaExtension.java
+++ b/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/JavaExtension.java
@@ -19,6 +19,7 @@
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 import java.util.Objects;
 
@@ -283,9 +284,9 @@ public class CleanthatJavaConfig {
 
 		private String sourceJdk = CleanthatJavaStep.defaultSourceJdk();
 
-		private List<String> mutators = CleanthatJavaStep.defaultMutators();
+		private List<String> mutators = new ArrayList<>(CleanthatJavaStep.defaultMutators());
 
-		private List<String> excludedMutators = CleanthatJavaStep.defaultExcludedMutators();
+		private List<String> excludedMutators = new ArrayList<>(CleanthatJavaStep.defaultExcludedMutators());
 
 		CleanthatJavaConfig() {
 			addStep(createStep());
@@ -319,14 +320,20 @@ public CleanthatJavaConfig clearMutators() {
 			return this;
 		}
 
-		// The fully qualified name of a class implementing eu.solven.cleanthat.engine.java.refactorer.meta.IMutator
-		// or '*' to include all default mutators
+		// An id of a mutator (see IMutator.getIds()) or
+		// tThe fully qualified name of a class implementing eu.solven.cleanthat.engine.java.refactorer.meta.IMutator
 		public CleanthatJavaConfig addMutator(String mutator) {
 			this.mutators.add(mutator);
 			replaceStep(createStep());
 			return this;
 		}
 
+		public CleanthatJavaConfig addMutators(Collection<String> mutators) {
+			this.mutators.addAll(mutators);
+			replaceStep(createStep());
+			return this;
+		}
+
 		// useful to exclude a mutator amongst the default list of mutators
 		public CleanthatJavaConfig excludeMutator(String mutator) {
 			this.excludedMutators.add(mutator);
diff --git a/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/CleanthatJavaIntegrationTest.java b/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/CleanthatJavaIntegrationTest.java
index a754b963f2..581bfe89b2 100644
--- a/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/CleanthatJavaIntegrationTest.java
+++ b/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/CleanthatJavaIntegrationTest.java
@@ -31,7 +31,9 @@ void integration() throws IOException {
 				"spotless {",
 				"    java {",
 				"        target file('test.java')",
-				"        cleanthat().sourceCompatibility('11')",
+				"        cleanthat()",
+				"          .sourceCompatibility('11')",
+				"          .addMutators(['LiteralsFirstInComparisons', 'OptionalNotEmpty'])",
 				"    }",
 				"}");
 
diff --git a/plugin-maven/CHANGES.md b/plugin-maven/CHANGES.md
index 74c6a0299a..8d4c67a9b6 100644
--- a/plugin-maven/CHANGES.md
+++ b/plugin-maven/CHANGES.md
@@ -3,6 +3,8 @@
 We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format (starting after version `1.27.0`).
 
 ## [Unreleased]
+### Changes
+* Bump default `cleanthat` version to latest `2.1` -> `2.2` ([#1569](https://github.com/diffplug/spotless/pull/1569))
 
 ## [2.33.0] - 2023-02-10
 ### Added
diff --git a/plugin-maven/src/test/java/com/diffplug/spotless/maven/java/CleanthatJavaRefactorerTest.java b/plugin-maven/src/test/java/com/diffplug/spotless/maven/java/CleanthatJavaRefactorerTest.java
index edb7a69cd5..a32ac337e4 100644
--- a/plugin-maven/src/test/java/com/diffplug/spotless/maven/java/CleanthatJavaRefactorerTest.java
+++ b/plugin-maven/src/test/java/com/diffplug/spotless/maven/java/CleanthatJavaRefactorerTest.java
@@ -29,6 +29,9 @@ class CleanthatJavaRefactorerTest extends MavenIntegrationHarness {
 	void testLiteralsFirstInComparisons() throws Exception {
 		writePomWithJavaSteps(
 				"<cleanthat>",
+				"  <mutators>",
+				"    <mutator>LiteralsFirstInComparisons</mutator>",
+				"  </mutators>",
 				"</cleanthat>");
 
 		runTest("LiteralsFirstInComparisons.dirty.java", "LiteralsFirstInComparisons.clean.java");
@@ -36,8 +39,13 @@ void testLiteralsFirstInComparisons() throws Exception {
 
 	@Test
 	void testMultipleMutators_defaultIsJdk7() throws Exception {
+		// OptionalNotEmpty will be excluded as it is not compatible with JDK7
 		writePomWithJavaSteps(
 				"<cleanthat>",
+				"  <mutators>",
+				"    <mutator>LiteralsFirstInComparisons</mutator>",
+				"    <mutator>OptionalNotEmpty</mutator>",
+				"  </mutators>",
 				"</cleanthat>");
 
 		runTest("MultipleMutators.dirty.java", "MultipleMutators.clean.onlyLiteralsFirst.java");
@@ -47,7 +55,11 @@ void testMultipleMutators_defaultIsJdk7() throws Exception {
 	void testMultipleMutators_Jdk11IntroducedOptionalisPresent() throws Exception {
 		writePomWithJavaSteps(
 				"<cleanthat>",
-				"<sourceJdk>11</sourceJdk>",
+				"  <sourceJdk>11</sourceJdk>",
+				"  <mutators>",
+				"    <mutator>LiteralsFirstInComparisons</mutator>",
+				"    <mutator>OptionalNotEmpty</mutator>",
+				"  </mutators>",
 				"</cleanthat>");
 
 		runTest("MultipleMutators.dirty.java", "MultipleMutators.clean.java");
@@ -57,6 +69,10 @@ void testMultipleMutators_Jdk11IntroducedOptionalisPresent() throws Exception {
 	void testExcludeOptionalNotEmpty() throws Exception {
 		writePomWithJavaSteps(
 				"<cleanthat>",
+				"  <mutators>",
+				"    <mutator>LiteralsFirstInComparisons</mutator>",
+				"    <mutator>OptionalNotEmpty</mutator>",
+				"  </mutators>",
 				"  <excludedMutators>",
 				"    <excludedMutator>OptionalNotEmpty</excludedMutator>",
 				"  </excludedMutators>",