diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/its/ItsConfig.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/its/ItsConfig.java
index cd125b0..1b06cd6 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/its/ItsConfig.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/its/ItsConfig.java
@@ -21,6 +21,7 @@
 import com.google.gerrit.extensions.api.projects.CommentLinkInfo;
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.reviewdb.client.Project.NameKey;
+import com.google.gerrit.reviewdb.client.RefNames;
 import com.google.gerrit.server.config.GerritServerConfig;
 import com.google.gerrit.server.config.PluginConfig;
 import com.google.gerrit.server.config.PluginConfigFactory;
@@ -102,6 +103,10 @@
   }
 
   public boolean isEnabled(Project.NameKey projectNK, String refName) {
+    if (isInternalRef(refName)) {
+      return false;
+    }
+
     ProjectState projectState = projectCache.get(projectNK);
     if (projectState == null) {
       log.error(
@@ -123,6 +128,10 @@
         && isEnabledForBranch(projectState, refName);
   }
 
+  private boolean isInternalRef(String refName) {
+    return RefNames.isNoteDbMetaRef(refName) || refName.startsWith(RefNames.REFS_SEQUENCES);
+  }
+
   private boolean isEnforcedByAnyParentProject(String refName, ProjectState projectState) {
     for (ProjectState parentState : projectState.treeInOrder()) {
       PluginConfig parentCfg = pluginCfgFactory.getFromProjectConfig(parentState, pluginName);
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/its/ItsConfigTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/its/ItsConfigTest.java
index 6561d00..aafbf38 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/its/ItsConfigTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/its/ItsConfigTest.java
@@ -20,6 +20,8 @@
 import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.extensions.config.FactoryModule;
 import com.google.gerrit.reviewdb.client.Project;
+import com.google.gerrit.reviewdb.client.Project.NameKey;
+import com.google.gerrit.reviewdb.client.RefNames;
 import com.google.gerrit.server.config.GerritServerConfig;
 import com.google.gerrit.server.config.PluginConfig;
 import com.google.gerrit.server.config.PluginConfigFactory;
@@ -386,6 +388,48 @@
     assertTrue(itsConfig.isEnabled(event));
   }
 
+  public void testIsDisabledForStarredChangesRefs() {
+    RefUpdatedEvent event =
+        new RefUpdatedEvent() {
+          @Override
+          public String getRefName() {
+            return RefNames.REFS_STARRED_CHANGES + "123";
+          }
+
+          @Override
+          public NameKey getProjectNameKey() {
+            return new Project.NameKey("foo");
+          }
+        };
+
+    ItsConfig itsConfig = createItsConfig();
+
+    replayMocks();
+
+    assertFalse(itsConfig.isEnabled(event));
+  }
+
+  public void testIsDisabledForSequencesRefs() {
+    RefUpdatedEvent event =
+        new RefUpdatedEvent() {
+          @Override
+          public String getRefName() {
+            return RefNames.REFS_SEQUENCES + "changes";
+          }
+
+          @Override
+          public NameKey getProjectNameKey() {
+            return new Project.NameKey("foo");
+          }
+        };
+
+    ItsConfig itsConfig = createItsConfig();
+
+    replayMocks();
+
+    assertFalse(itsConfig.isEnabled(event));
+  }
+
   public void BROKEN_testIsEnabledEventDisabled() {
     String[] branches = {"^refs/heads/testBranch"};
     setupIsEnabled("false", null, branches);
