diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/AddHashtagsStep.java b/src/main/java/com/googlesource/gerrit/plugins/importer/AddHashtagsStep.java
index f3bf629..f8aaef9 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/AddHashtagsStep.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/AddHashtagsStep.java
@@ -14,11 +14,13 @@
 
 package com.googlesource.gerrit.plugins.importer;
 
+import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.extensions.api.changes.HashtagsInput;
 import com.google.gerrit.extensions.common.ChangeInfo;
 import com.google.gerrit.extensions.restapi.AuthException;
 import com.google.gerrit.reviewdb.client.Change;
 import com.google.gerrit.server.CurrentUser;
+import com.google.gerrit.server.change.ChangeTriplet;
 import com.google.gerrit.server.change.HashtagsUtil;
 import com.google.gerrit.server.project.ChangeControl;
 import com.google.gerrit.server.project.NoSuchChangeException;
@@ -27,6 +29,9 @@
 import com.google.inject.Inject;
 import com.google.inject.assistedinject.Assisted;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import java.io.IOException;
 import java.util.HashSet;
 
@@ -36,9 +41,13 @@
     AddHashtagsStep create(Change change, ChangeInfo changeInfo, boolean resume);
   }
 
+  private static final Logger log = LoggerFactory
+      .getLogger(AddHashtagsStep.class);
+
   private final HashtagsUtil hashtagsUtil;
   private final CurrentUser currentUser;
   private final ChangeControl.GenericFactory changeControlFactory;
+  private final String pluginName;
   private final Change change;
   private final ChangeInfo changeInfo;
   private final boolean resume;
@@ -47,14 +56,16 @@
   AddHashtagsStep(HashtagsUtil hashtagsUtil,
       CurrentUser currentUser,
       ChangeControl.GenericFactory changeControlFactory,
+      @PluginName String pluginName,
       @Assisted Change change,
       @Assisted ChangeInfo changeInfo,
       @Assisted boolean resume) {
     this.hashtagsUtil = hashtagsUtil;
-    this.change = change;
-    this.changeInfo = changeInfo;
     this.currentUser = currentUser;
     this.changeControlFactory = changeControlFactory;
+    this.pluginName = pluginName;
+    this.change = change;
+    this.changeInfo = changeInfo;
     this.resume = resume;
   }
 
@@ -62,14 +73,23 @@
       ValidationException, OrmException, NoSuchChangeException {
     ChangeControl ctrl = changeControlFactory.controlFor(change, currentUser);
 
-    if (resume) {
-      HashtagsInput input = new HashtagsInput();
-      input.remove = ctrl.getNotes().load().getHashtags();
-      hashtagsUtil.setHashtags(ctrl, input, false, false);
-    }
+    try {
+      if (resume) {
+        HashtagsInput input = new HashtagsInput();
+        input.remove = ctrl.getNotes().load().getHashtags();
+        hashtagsUtil.setHashtags(ctrl, input, false, false);
+      }
 
-    HashtagsInput input = new HashtagsInput();
-    input.add = new HashSet<>(changeInfo.hashtags);
-    hashtagsUtil.setHashtags(ctrl, input, false, false);
+      HashtagsInput input = new HashtagsInput();
+      input.add = new HashSet<>(changeInfo.hashtags);
+      hashtagsUtil.setHashtags(ctrl, input, false, false);
+    } catch (AuthException e) {
+      log.warn(String.format(
+          "[%s] Hashtags cannot be set on change %s because the importing"
+              + " user %s doesn't have permissions to edit hashtags"
+              + " (e.g. assign the 'Edit Hashtags' global capability"
+              + " and resume the import with the force option).",
+          pluginName, ChangeTriplet.format(change), currentUser.getUserName()));
+    }
   }
 }
