diff --git a/src/main/java/com/google/devtools/build/lib/pkgcache/PackageCacheOptions.java b/src/main/java/com/google/devtools/build/lib/pkgcache/PackageCacheOptions.java
index dc4aa71..f4d17da 100644
--- a/src/main/java/com/google/devtools/build/lib/pkgcache/PackageCacheOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/pkgcache/PackageCacheOptions.java
@@ -14,6 +14,7 @@
 
 package com.google.devtools.build.lib.pkgcache;
 
+
 import com.google.common.base.Splitter;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
@@ -152,15 +153,19 @@
   public boolean checkOutputFiles;
 
   @Option(
-      name = "experimental_enable_tools_defaults_package",
-      defaultValue = "true",
+      name = "incompatible_disable_tools_defaults_package",
+      defaultValue = "false",
       documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
-      effectTags = {OptionEffectTag.AFFECTS_OUTPUTS},
-      metadataTags = {OptionMetadataTag.EXPERIMENTAL},
+      effectTags = {OptionEffectTag.AFFECTS_OUTPUTS, OptionEffectTag.LOADING_AND_ANALYSIS},
+      metadataTags = {
+        OptionMetadataTag.EXPERIMENTAL,
+        OptionMetadataTag.TRIGGERED_BY_ALL_INCOMPATIBLE_CHANGES,
+        OptionMetadataTag.INCOMPATIBLE_CHANGE
+      },
       help =
-          "If true, Blaze constructs an in-memory //tools/defaults package based on the command"
-              + " line options. If false, //tools/defaults is resolved as a regular package.")
-  public boolean experimentalInMemoryToolsDefaultsPackage;
+          "If false, Blaze constructs an in-memory //tools/defaults package based on the command"
+              + " line options. If true, //tools/defaults is resolved as a regular package.")
+  public boolean incompatibleDisableInMemoryToolsDefaultsPackage;
 
   /**
    * A converter from strings containing comma-separated names of packages to lists of strings.
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
index 9efd99a..4f2f8bb 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
@@ -1162,12 +1162,12 @@
     setShowLoadingProgress(packageCacheOptions.showLoadingProgress);
     setDefaultVisibility(packageCacheOptions.defaultVisibility);
     setSkylarkSemantics(skylarkSemanticsOptions.toSkylarkSemantics());
-    if (packageCacheOptions.experimentalInMemoryToolsDefaultsPackage) {
+    if (packageCacheOptions.incompatibleDisableInMemoryToolsDefaultsPackage) {
+      setupDefaultPackage("# //tools/defaults in-memory package is disabled.");
+      PrecomputedValue.ENABLE_DEFAULTS_PACKAGE.set(injectable(), false);
+    } else {
       setupDefaultPackage(defaultsPackageContents);
       PrecomputedValue.ENABLE_DEFAULTS_PACKAGE.set(injectable(), true);
-    } else {
-      setupDefaultPackage("# //tools/defaults in-memory package is not enabled.");
-      PrecomputedValue.ENABLE_DEFAULTS_PACKAGE.set(injectable(), false);
     }
 
     setPackageLocator(pkgLocator);
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/EnableDefaultsPackageOptionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/EnableDefaultsPackageOptionTest.java
index 92d149a..c2d4165 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/EnableDefaultsPackageOptionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/EnableDefaultsPackageOptionTest.java
@@ -31,7 +31,7 @@
   @Test
   public void testEnableDefaultsPackageOptionWorks() throws Exception {
 
-    setPackageCacheOptions("--experimental_enable_tools_defaults_package=true");
+    setPackageCacheOptions("--incompatible_disable_tools_defaults_package=false");
 
     ConfiguredTarget target = getConfiguredTarget("//tools/defaults:jdk");
 
@@ -49,7 +49,7 @@
         ")");
 
     reporter.removeHandler(failFastHandler);
-    setPackageCacheOptions("--experimental_enable_tools_defaults_package=false");
+    setPackageCacheOptions("--incompatible_disable_tools_defaults_package=true");
     ConfiguredTarget target = getConfiguredTarget("//a:my_filegroup");
 
     assertThat(target).isNull();
@@ -61,16 +61,16 @@
   @Test
   public void testFlipFlagOnFly() throws Exception {
 
-    setPackageCacheOptions("--experimental_enable_tools_defaults_package=false");
+    setPackageCacheOptions("--incompatible_disable_tools_defaults_package=true");
     ConfiguredTarget defaultsJDKtarget = getConfiguredTarget("//tools/defaults:jdk");
     assertThat(defaultsJDKtarget).isNull();
 
-    setPackageCacheOptions("--experimental_enable_tools_defaults_package=true");
+    setPackageCacheOptions("--incompatible_disable_tools_defaults_package=false");
     defaultsJDKtarget = getConfiguredTarget("//tools/defaults:jdk");
     assertThat(defaultsJDKtarget).isNotNull();
     assertThat(defaultsJDKtarget.getLabel().toString()).isEqualTo("//tools/defaults:jdk");
 
-    setPackageCacheOptions("--experimental_enable_tools_defaults_package=false");
+    setPackageCacheOptions("--incompatible_disable_tools_defaults_package=true");
     defaultsJDKtarget = getConfiguredTarget("//tools/defaults:jdk");
     assertThat(defaultsJDKtarget).isNull();
   }
