diff --git a/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoFactory.java
index 468fb27..635c1b5 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoFactory.java
@@ -17,6 +17,8 @@
 import com.google.devtools.build.lib.actions.ArtifactRoot;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.cmdline.RepositoryName;
+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.vfs.PathFragment;
 import java.io.Serializable;
 
@@ -54,7 +56,10 @@
    * Build-info key for lookup from the {@link
    * com.google.devtools.build.lib.analysis.AnalysisEnvironment}.
    */
-  final class BuildInfoKey implements Serializable {
+  @AutoCodec
+  final class BuildInfoKey {
+    public static final ObjectCodec<BuildInfoKey> CODEC =
+        new BuildInfoFactory_BuildInfoKey_AutoCodec();
     private final String name;
 
     public BuildInfoKey(String name) {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionValue.java
index 09ce2db..b96e94b 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionValue.java
@@ -22,6 +22,8 @@
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.concurrent.BlazeInterners;
+import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.skyframe.SkyFunctionName;
 import java.util.Objects;
 
@@ -49,17 +51,19 @@
     return getStringHelper().add("collection", collection).toString();
   }
 
-  private static final Interner<BuildInfoKeyAndConfig> keyInterner =
-      BlazeInterners.newWeakInterner();
-
   public static BuildInfoKeyAndConfig key(
       BuildInfoFactory.BuildInfoKey key, BuildConfiguration config) {
-    return keyInterner.intern(
-        new BuildInfoKeyAndConfig(key, ConfiguredTargetKey.keyFromConfiguration(config).key));
+    return BuildInfoKeyAndConfig.create(key, ConfiguredTargetKey.keyFromConfiguration(config).key);
   }
 
   /** Key for BuildInfoCollectionValues. */
+  @AutoCodec
   public static class BuildInfoKeyAndConfig extends ActionLookupKey {
+    private static final Interner<BuildInfoKeyAndConfig> keyInterner =
+        BlazeInterners.newWeakInterner();
+    public static final ObjectCodec<BuildInfoKeyAndConfig> CODEC =
+        new BuildInfoCollectionValue_BuildInfoKeyAndConfig_AutoCodec();
+
     private final BuildInfoFactory.BuildInfoKey infoKey;
     private final BuildConfigurationValue.Key configKey;
 
@@ -69,6 +73,12 @@
       this.configKey = Preconditions.checkNotNull(configKey, key);
     }
 
+    @AutoCodec.Instantiator
+    static BuildInfoKeyAndConfig create(
+        BuildInfoFactory.BuildInfoKey infoKey, BuildConfigurationValue.Key configKey) {
+      return keyInterner.intern(new BuildInfoKeyAndConfig(infoKey, configKey));
+    }
+
     @Override
     public SkyFunctionName functionName() {
       return SkyFunctions.BUILD_INFO_COLLECTION;
