diff --git a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
index 4b44be7..14b7dcc 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
@@ -49,6 +49,8 @@
 import com.google.devtools.build.lib.packages.Rule;
 import com.google.devtools.build.lib.packages.RuleClass;
 import com.google.devtools.build.lib.packages.Target;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.EvalUtils;
 import com.google.devtools.build.lib.util.OrderedSetMultimap;
@@ -776,10 +778,10 @@
     }
   }
 
-  /**
-   * A patch transition that returns a fixed set of options regardless of the input.
-   */
-  private static class FixedTransition implements PatchTransition {
+  /** A patch transition that returns a fixed set of options regardless of the input. */
+  @AutoCodec
+  @VisibleForSerialization
+  static class FixedTransition implements PatchTransition {
     private final BuildOptions toOptions;
 
     FixedTransition(BuildOptions toOptions) {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/HostTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/HostTransition.java
index 08fd609..b62ce78 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/HostTransition.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/HostTransition.java
@@ -14,12 +14,12 @@
 package com.google.devtools.build.lib.analysis.config;
 
 import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 
-/**
- * Dynamic transition to the host configuration.
- */
+/** Dynamic transition to the host configuration. */
 public final class HostTransition implements PatchTransition {
-  public static final HostTransition INSTANCE = new HostTransition();
+
+  @AutoCodec public static final HostTransition INSTANCE = new HostTransition();
 
   private HostTransition() {}
 
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NoTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NoTransition.java
index d5581e5..793edaf 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NoTransition.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NoTransition.java
@@ -14,12 +14,12 @@
 package com.google.devtools.build.lib.analysis.config.transitions;
 
 import com.google.devtools.build.lib.analysis.config.BuildOptions;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 
-/**
- * No-op configuration transition.
- */
+/** No-op configuration transition. */
 public final class NoTransition implements PatchTransition {
-  public static final NoTransition INSTANCE = new NoTransition();
+
+  @AutoCodec public static final NoTransition INSTANCE = new NoTransition();
 
   private NoTransition() {}
 
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NullTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NullTransition.java
index 2edbb9f..0d7156b 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NullTransition.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/NullTransition.java
@@ -14,13 +14,12 @@
 package com.google.devtools.build.lib.analysis.config.transitions;
 
 import com.google.devtools.build.lib.analysis.config.BuildOptions;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 
-/**
- * A {@link PatchTransition} to a null configuration.
- */
+/** A {@link PatchTransition} to a null configuration. */
 public class NullTransition implements PatchTransition {
 
-  public static final NullTransition INSTANCE = new NullTransition();
+  @AutoCodec public static final NullTransition INSTANCE = new NullTransition();
 
   private NullTransition() {
   }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTransitionFactory.java b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTransitionFactory.java
index 704ead9..a5201d5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTransitionFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTransitionFactory.java
@@ -23,6 +23,8 @@
 import com.google.devtools.build.lib.packages.NonconfigurableAttributeMapper;
 import com.google.devtools.build.lib.packages.Rule;
 import com.google.devtools.build.lib.packages.RuleTransitionFactory;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
 import java.util.Map;
 
 /**
@@ -34,13 +36,21 @@
 public class ConfigFeatureFlagTransitionFactory implements RuleTransitionFactory {
 
   /** Transition which resets the set of flag-value pairs to the map it was constructed with. */
-  private static final class ConfigFeatureFlagValuesTransition implements PatchTransition {
+  @AutoCodec
+  @VisibleForSerialization
+  static final class ConfigFeatureFlagValuesTransition implements PatchTransition {
     private final ImmutableSortedMap<Label, String> flagValues;
     private final int cachedHashCode;
 
     public ConfigFeatureFlagValuesTransition(Map<Label, String> flagValues) {
+      this(ImmutableSortedMap.copyOf(flagValues), flagValues.hashCode());
+    }
+
+    @AutoCodec.Instantiator
+    ConfigFeatureFlagValuesTransition(
+        ImmutableSortedMap<Label, String> flagValues, int cachedHashCode) {
       this.flagValues = ImmutableSortedMap.copyOf(flagValues);
-      this.cachedHashCode = this.flagValues.hashCode();
+      this.cachedHashCode = cachedHashCode;
     }
 
     @Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/ContextCollectorOwnerTransition.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/ContextCollectorOwnerTransition.java
index 3958974..a13f319 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/ContextCollectorOwnerTransition.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/ContextCollectorOwnerTransition.java
@@ -19,10 +19,11 @@
 import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition;
 import com.google.devtools.build.lib.rules.cpp.CppOptions;
 import com.google.devtools.build.lib.rules.cpp.CppOptions.LipoConfigurationState;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 
 /**
- * Configuration transition that creates the "artifact owner" configuration from the LIPO
- * context collector configuration.
+ * Configuration transition that creates the "artifact owner" configuration from the LIPO context
+ * collector configuration.
  *
  * <p>The context collector creates C++ output artifacts but doesn't create the actions that
  * generate those artifacts (this is what {@link BuildConfiguration#isActionsEnabled()} means).
@@ -33,6 +34,8 @@
  * <p>This is a no-op for all configurations but the context collector.
  */
 public class ContextCollectorOwnerTransition implements PatchTransition {
+
+  @AutoCodec
   public static final ContextCollectorOwnerTransition INSTANCE =
       new ContextCollectorOwnerTransition();
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/DisableLipoTransition.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/DisableLipoTransition.java
index 3284a1b..111207e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/DisableLipoTransition.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/DisableLipoTransition.java
@@ -17,17 +17,17 @@
 import com.google.devtools.build.lib.analysis.config.BuildOptions;
 import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition;
 import com.google.devtools.build.lib.rules.cpp.CppOptions;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig.LipoMode;
 
 /**
  * Configuration transition that turns off LIPO/FDO settings.
  *
- * <p>Has no effect on non-LIPO-enabled configurations or the LIPO context collector
- * configuration.
- *
+ * <p>Has no effect on non-LIPO-enabled configurations or the LIPO context collector configuration.
  */
 public final class DisableLipoTransition implements PatchTransition {
-  public static final DisableLipoTransition INSTANCE = new DisableLipoTransition();
+
+  @AutoCodec public static final DisableLipoTransition INSTANCE = new DisableLipoTransition();
 
   private DisableLipoTransition() {}
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/EnableLipoTransition.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/EnableLipoTransition.java
index 0d1295c..883d59c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/EnableLipoTransition.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/EnableLipoTransition.java
@@ -20,6 +20,8 @@
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.rules.cpp.CppOptions;
 import com.google.devtools.build.lib.rules.cpp.CppOptions.LipoConfigurationState;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
 import java.util.Objects;
 
 /**
@@ -27,6 +29,7 @@
  * disabled.
  */
 @Immutable
+@AutoCodec
 public class EnableLipoTransition implements PatchTransition {
   private final Label ruleLabel;
   private final int hashCode;
@@ -36,8 +39,14 @@
    * restricting this transition to the LIPO context binary.
    */
   public EnableLipoTransition(Label ruleLabel) {
+    this(ruleLabel, Objects.hashCode(ruleLabel));
+  }
+
+  @VisibleForSerialization
+  @AutoCodec.Instantiator
+  EnableLipoTransition(Label ruleLabel, int hashCode) {
     this.ruleLabel = ruleLabel;
-    this.hashCode = Objects.hashCode(ruleLabel);
+    this.hashCode = hashCode;
   }
 
   @Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PythonVersionTransition.java b/src/main/java/com/google/devtools/build/lib/rules/python/PythonVersionTransition.java
index cc0eb47..01ce26a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/python/PythonVersionTransition.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/python/PythonVersionTransition.java
@@ -16,11 +16,13 @@
 
 import com.google.devtools.build.lib.analysis.config.BuildOptions;
 import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 
 /**
- * A configuration transition that sets the Python version by setting
- * {@link PythonOptions#forcePython}.
+ * A configuration transition that sets the Python version by setting {@link
+ * PythonOptions#forcePython}.
  */
+@AutoCodec
 public class PythonVersionTransition implements PatchTransition {
   private final PythonVersion defaultVersion;
 
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/TestConfigFragments.java b/src/test/java/com/google/devtools/build/lib/analysis/TestConfigFragments.java
index 2dcad7e..ac9629c 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/TestConfigFragments.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/TestConfigFragments.java
@@ -25,6 +25,7 @@
 import com.google.devtools.build.lib.packages.Target;
 import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
 
 /**
  * Grab bag file for test configuration fragments and fragment factories.
@@ -34,7 +35,9 @@
    * A {@link PatchTransition} that appends a given value to {@link
    * BuildConfiguration.Options#hostCpu}.
    */
-  private static class HostCpuTransition implements PatchTransition {
+  @AutoCodec
+  @VisibleForSerialization
+  static class HostCpuTransition implements PatchTransition {
 
     private final String patchMessage;
 
