diff --git a/src/main/java/com/googlesource/gerrit/plugins/automerger/LoadedConfig.java b/src/main/java/com/googlesource/gerrit/plugins/automerger/LoadedConfig.java
index 058a879..5851f5a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/LoadedConfig.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/automerger/LoadedConfig.java
@@ -44,8 +44,8 @@
     global = Collections.emptyMap();
     config = Collections.emptyMap();
     defaultManifestInfo = Collections.emptyMap();
-    blankMergePattern = Pattern.compile("");
-    alwaysBlankMergePattern = Pattern.compile("");
+    blankMergePattern = null;
+    alwaysBlankMergePattern = null;
   }
 
   public LoadedConfig(
@@ -86,17 +86,18 @@
    */
   public boolean isSkipMerge(String fromBranch, String toBranch, String commitMessage) {
     // If regex matches always_blank_merge (DO NOT MERGE ANYWHERE), skip.
-    if (alwaysBlankMergePattern.matches(commitMessage)) {
+    if (alwaysBlankMergePattern != null && alwaysBlankMergePattern.matches(commitMessage)) {
       return true;
     }
 
     // If regex matches blank_merge (DO NOT MERGE), skip iff merge_all is false
-    if (blankMergePattern.matches(commitMessage)) {
+    if (blankMergePattern != null && blankMergePattern.matches(commitMessage)) {
       Map<String, Object> mergePairConfig = getMergeConfig(fromBranch, toBranch);
       if (mergePairConfig != null) {
         boolean isMergeAll = (boolean) mergePairConfig.getOrDefault("merge_all", false);
         return !isMergeAll;
       }
+      return true;
     }
     return false;
   }
@@ -185,7 +186,11 @@
   }
 
   private Pattern getConfigPattern(String key) {
-    Set<String> mergeStrings = new HashSet<>((List<String>) global.get(key));
-    return Pattern.compile(Joiner.on("|").join(mergeStrings), Pattern.DOTALL);
+    Object patterns = global.get(key);
+    if (patterns != null) {
+      Set<String> mergeStrings = new HashSet<>((List<String>) patterns);
+      return Pattern.compile(Joiner.on("|").join(mergeStrings), Pattern.DOTALL);
+    }
+    return null;
   }
 }
diff --git a/src/test/java/com/googlesource/gerrit/plugins/automerger/ConfigLoaderTest.java b/src/test/java/com/googlesource/gerrit/plugins/automerger/ConfigLoaderTest.java
index 92c9391..4bf316a 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/automerger/ConfigLoaderTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/automerger/ConfigLoaderTest.java
@@ -109,6 +109,15 @@
   }
 
   @Test
+  public void isSkipMergeTest_alwaysBlankMergeNull() throws Exception {
+    mockFile("alternate_config.yaml", "tools/automerger", "master", "config.yaml");
+    loadConfig();
+    assertThat(
+            configLoader.isSkipMerge("master", "ds_two", "test test \n \n DO NOT MERGE ANYWHERE"))
+        .isFalse();
+  }
+
+  @Test
   public void downstreamBranchesTest() throws Exception {
     loadConfig();
     Set<String> expectedBranches = new HashSet<String>();
diff --git a/src/test/resources/com/googlesource/gerrit/plugins/automerger/alternate_config.yaml b/src/test/resources/com/googlesource/gerrit/plugins/automerger/alternate_config.yaml
new file mode 100644
index 0000000..7c8c51a
--- /dev/null
+++ b/src/test/resources/com/googlesource/gerrit/plugins/automerger/alternate_config.yaml
@@ -0,0 +1,28 @@
+branches:
+  master:
+    ds_one:
+      add_projects:
+      - platform/added/project
+      ignore_projects:
+      - whoo
+    ds_two:
+      merge_all: true
+      add_projects:
+      - platform/added/project
+      ignore_projects:
+      - whoo
+      set_projects:
+      - platform/some/project
+      - platform/other/project
+  ds_two:
+    ds_three:
+      set_projects:
+      - platform/some/project
+global:
+  blank_merge:
+  - .*DO NOT MERGE.*
+  manifest:
+    file: default.xml
+    project: platform/manifest
+  ignore_projects:
+  - platform/ignore/me
