diff --git a/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/CachedConfig.java b/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/CachedConfig.java
index 87204a8..fc6302e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/CachedConfig.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/CachedConfig.java
@@ -14,23 +14,11 @@
 
 package com.googlesource.gerrit.plugins.messageoftheday;
 
-import com.google.auto.value.AutoValue;
 import org.eclipse.jgit.lib.Config;
 import org.eclipse.jgit.lib.ObjectId;
 
-@AutoValue
-public abstract class CachedConfig {
+public record CachedConfig(Config config, String message, ObjectId commitId) {
   public static CachedConfig empty() {
-    return new AutoValue_CachedConfig(null, null, null);
+    return new CachedConfig(null, null, null);
   }
-
-  public static CachedConfig create(Config config, String message, ObjectId commitId) {
-    return new AutoValue_CachedConfig(config, message, commitId);
-  }
-
-  public abstract Config config();
-
-  public abstract String message();
-
-  public abstract ObjectId commitId();
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/ConfiguredMessage.java b/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/ConfiguredMessage.java
index ae3901f..873b1eb 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/ConfiguredMessage.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/ConfiguredMessage.java
@@ -14,16 +14,6 @@
 
 package com.googlesource.gerrit.plugins.messageoftheday;
 
-import com.google.auto.value.AutoValue;
 import org.eclipse.jgit.lib.Config;
 
-@AutoValue
-public abstract class ConfiguredMessage {
-  public static ConfiguredMessage create(Config cfg, String message) {
-    return new AutoValue_ConfiguredMessage(cfg, message);
-  }
-
-  public abstract Config config();
-
-  public abstract String message();
-}
+public record ConfiguredMessage(Config config, String message) {}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/FileBasedMessageStore.java b/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/FileBasedMessageStore.java
index 765c2f8..4c40d85 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/FileBasedMessageStore.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/FileBasedMessageStore.java
@@ -54,11 +54,11 @@
     String htmlFileId = cfg.getString(SECTION_MESSAGE, null, KEY_ID);
     if (Strings.isNullOrEmpty(htmlFileId)) {
       logger.atWarning().log("id not defined, no message will be shown");
-      return ConfiguredMessage.create(cfg, null);
+      return new ConfiguredMessage(cfg, null);
     }
 
     String message = loadMessage(htmlFileId);
-    return ConfiguredMessage.create(cfg, message);
+    return new ConfiguredMessage(cfg, message);
   }
 
   private FileBasedConfig loadConfig() throws MessageStoreException {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/GitBasedConfigReader.java b/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/GitBasedConfigReader.java
index 3e66ce9..b3d482c 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/GitBasedConfigReader.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/GitBasedConfigReader.java
@@ -123,7 +123,7 @@
         BinaryResult result =
             fileContentUtil.getContent(configRepo, state.get(), commitId, id + ".html");
         String message = result.asString();
-        return CachedConfig.create(config, message, commitId);
+        return new CachedConfig(config, message, commitId);
       } catch (ResourceNotFoundException e) {
         logger.atWarning().withCause(e).log("Loading failed");
         return CachedConfig.empty();
diff --git a/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/GitBasedMessageStore.java b/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/GitBasedMessageStore.java
index 2115f02..ae38d4e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/GitBasedMessageStore.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/GitBasedMessageStore.java
@@ -73,7 +73,7 @@
   @Override
   public ConfiguredMessage getConfiguredMessage() throws MessageStoreException {
     CachedConfig cached = configReader.getConfig();
-    return ConfiguredMessage.create(cached.config(), cached.message());
+    return new ConfiguredMessage(cached.config(), cached.message());
   }
 
   @Override
diff --git a/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/SetMessage.java b/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/SetMessage.java
index 39efa69..3fc8898 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/SetMessage.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/messageoftheday/SetMessage.java
@@ -119,7 +119,7 @@
     }
 
     try {
-      messageStore.saveConfiguredMessage(ConfiguredMessage.create(cfg, input.message));
+      messageStore.saveConfiguredMessage(new ConfiguredMessage(cfg, input.message));
     } catch (MessageStoreException e) {
       throw new UnprocessableEntityException(e.getMessage(), e);
     }
