diff --git a/README.md b/README.md
index b328169..a080e7b 100644
--- a/README.md
+++ b/README.md
@@ -20,4 +20,5 @@
  - autoaddreviewers = true - if true, automaticaly matchses pachset files under their component based of maintainers file configuration
  - allowmaintainersubmit = true - if true, automaticaly post +2 on patch after all respective component maintainers have added +1
  - autosubmit = true - if true, after previous step automaticaly submits patch
+ - dislikewarnings = true - if true, if any warnings are present, -1 review is posted on patch, no review otherwise
    
diff --git a/src/main/java/io/fd/maintainer/plugin/events/OnCommittersToBeAddedListener.java b/src/main/java/io/fd/maintainer/plugin/events/OnCommittersToBeAddedListener.java
index d0a2e90..a0df89f 100644
--- a/src/main/java/io/fd/maintainer/plugin/events/OnCommittersToBeAddedListener.java
+++ b/src/main/java/io/fd/maintainer/plugin/events/OnCommittersToBeAddedListener.java
@@ -125,7 +125,7 @@
 
             final Set<WarningGenerator.ComponentChangeWarning> warnings =
                     generateComponentChangeWarnings(index, renamedEntryToComponentsIndex);
-            warningPusher.sendWarnings(warnings, change, mostCurrentPatchSet, settings.getPluginUserName());
+            warningPusher.sendWarnings(warnings, change, mostCurrentPatchSet, settings);
             LOG.info("Warnings for change {} successfully added", change.getId());
         } catch (OrmException e) {
             throw new IllegalStateException("Unable to open review DB", e);
diff --git a/src/main/java/io/fd/maintainer/plugin/service/SettingsProvider.java b/src/main/java/io/fd/maintainer/plugin/service/SettingsProvider.java
index 052874b..9c3f6fd 100644
--- a/src/main/java/io/fd/maintainer/plugin/service/SettingsProvider.java
+++ b/src/main/java/io/fd/maintainer/plugin/service/SettingsProvider.java
@@ -56,6 +56,9 @@
     private static final String AUTO_SUBMIT = "autosubmit";
     private static final boolean DEFAULT_AUTO_SUBMIT = false;
 
+    private static final String DISLIKE_WARNINGS = "dislikewarnings";
+    private static final boolean DEFAULT_DISLIKE_WARNINGS = false;
+
     @Inject
     private PluginConfigFactory cfg;
 
@@ -77,6 +80,7 @@
                 .setAllowMaintainersSubmit(allowMaintainersSubmitOrDefault(branchName, closestBranch))
                 .setAutoAddReviewers(autoAddReviewersOrDefault(branchName, closestBranch))
                 .setAutoSubmit(autoSubmitOrDefault(branchName, closestBranch))
+                .setDislikeWarnings(dislikeWarningsOrDefault(branchName, closestBranch))
                 .setBranch(globalPluginConfig().getSubsections(BRANCH_SECTION)
                         .stream()
                         .filter(subSection -> subSection.equals(branchName))
@@ -97,6 +101,10 @@
         return getKey(branch, closesBranch, ALLOW_SUBMIT, DEFAULT_ALLOW_SUBMIT, Boolean::valueOf);
     }
 
+    private Boolean dislikeWarningsOrDefault(final String branch, final String closesBranch){
+        return getKey(branch, closesBranch, DISLIKE_WARNINGS, DEFAULT_DISLIKE_WARNINGS, Boolean::valueOf);
+    }
+
     private String fileNameRefOrDefault(final String branch, final String closesBranch) {
         return getKey(branch, closesBranch, MAINTAINERS_FILE_REF, DEFAULT_MAINTAINERS_FILE_REF, String::valueOf);
     }
diff --git a/src/main/java/io/fd/maintainer/plugin/service/dto/PluginBranchSpecificSettings.java b/src/main/java/io/fd/maintainer/plugin/service/dto/PluginBranchSpecificSettings.java
index 49960ab..4005a27 100644
--- a/src/main/java/io/fd/maintainer/plugin/service/dto/PluginBranchSpecificSettings.java
+++ b/src/main/java/io/fd/maintainer/plugin/service/dto/PluginBranchSpecificSettings.java
@@ -29,6 +29,7 @@
     private final boolean allowMaintainersSubmit;
     private final boolean autoAddReviewers;
     private final boolean autoSubmit;
+    private final boolean dislikeWarnings;
 
     private PluginBranchSpecificSettings(final String pluginUserName,
                                          final String branch,
@@ -36,7 +37,8 @@
                                          final String localFilePath,
                                          final boolean allowMaintainersSubmit,
                                          final boolean autoAddReviewers,
-                                         final boolean autoSubmit) {
+                                         final boolean autoSubmit,
+                                         final boolean dislikeWarnings) {
         this.pluginUserName = pluginUserName;
         this.branch = branch;
         this.fileRef = fileRef;
@@ -44,10 +46,7 @@
         this.allowMaintainersSubmit = allowMaintainersSubmit;
         this.autoAddReviewers = autoAddReviewers;
         this.autoSubmit = autoSubmit;
-    }
-
-    public String getFileRef() {
-        return fileRef;
+        this.dislikeWarnings = dislikeWarnings;
     }
 
     public String getLocalFilePath() {
@@ -74,14 +73,21 @@
         return pluginUserName;
     }
 
+    public boolean isDislikeWarnings() {
+        return dislikeWarnings;
+    }
+
     @Override
     public String toString() {
         return "PluginBranchSpecificSettings{" +
-                "branch='" + branch + '\'' +
+                "pluginUserName='" + pluginUserName + '\'' +
+                ", branch='" + branch + '\'' +
                 ", fileRef='" + fileRef + '\'' +
                 ", localFilePath='" + localFilePath + '\'' +
                 ", allowMaintainersSubmit=" + allowMaintainersSubmit +
                 ", autoAddReviewers=" + autoAddReviewers +
+                ", autoSubmit=" + autoSubmit +
+                ", dislikeWarnings=" + dislikeWarnings +
                 '}';
     }
 
@@ -93,6 +99,7 @@
         private boolean allowMaintainersSubmit;
         private boolean autoAddReviewers;
         private boolean autoSubmit;
+        private boolean dislikeWarnings;
 
         private static String reduceWildcard(String input) {
             return input.contains("*")
@@ -142,9 +149,14 @@
             return this;
         }
 
+        public PluginSettingsBuilder setDislikeWarnings(final boolean dislikeWarnings) {
+            this.dislikeWarnings = dislikeWarnings;
+            return this;
+        }
+
         public PluginBranchSpecificSettings createPluginSettings() {
             return new PluginBranchSpecificSettings(pluginUserName, branch, fileRef, localFilePath,
-                    allowMaintainersSubmit, autoAddReviewers, autoSubmit);
+                    allowMaintainersSubmit, autoAddReviewers, autoSubmit, dislikeWarnings);
         }
     }
 }
diff --git a/src/main/java/io/fd/maintainer/plugin/service/push/WarningPusher.java b/src/main/java/io/fd/maintainer/plugin/service/push/WarningPusher.java
index 464a016..e194988 100644
--- a/src/main/java/io/fd/maintainer/plugin/service/push/WarningPusher.java
+++ b/src/main/java/io/fd/maintainer/plugin/service/push/WarningPusher.java
@@ -33,6 +33,7 @@
 import com.google.inject.Inject;
 import com.google.inject.Provider;
 import com.google.inject.Singleton;
+import io.fd.maintainer.plugin.service.dto.PluginBranchSpecificSettings;
 import io.fd.maintainer.plugin.util.CommonTasks;
 import io.fd.maintainer.plugin.util.WarningGenerator;
 import java.io.IOException;
@@ -71,7 +72,7 @@
     public void sendWarnings(@Nonnull final Set<ComponentChangeWarning> comments,
                              @Nonnull final Change change,
                              @Nonnull final PatchSet patchSet,
-                             @Nonnull final String onBehalfOf) throws OrmException {
+                             @Nonnull final PluginBranchSpecificSettings settings) throws OrmException {
         if (comments.isEmpty()) {
             LOG.warn("No warnings");
             return;
@@ -81,9 +82,15 @@
             ChangeResource changeResource = changesCollection.parse(change.getId());
             final RevisionResource revisionResource = revisions.parse(changeResource, IdString.fromUrl("current"));
 
-            ReviewInput review = ReviewInput.dislike()
-                    .message(formatComments(comments));// review -1
-            review.onBehalfOf = onBehalfOf;
+            ReviewInput review;
+            if (settings.isDislikeWarnings()) {
+                review = ReviewInput.dislike();// review -1
+            } else {
+                review = ReviewInput.noScore();// review 0
+            }
+
+            review.message(formatComments(comments));
+            review.onBehalfOf = settings.getPluginUserName();
 
             reviewProvider.get().apply(revisionResource, review);
         } catch (IOException | RestApiException | UpdateException e) {
