Index: src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java
===================================================================
--- src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java	(revision 13260)
+++ src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java	(working copy)
@@ -171,12 +171,12 @@
             });
         }
 
-        final Collection<OsmPrimitive> forTagAdd = new HashSet<>();
+        final Collection<OsmPrimitive> forTagAdd = new HashSet<>(); // these objects will receive new tags
         final Bounds bbox = new Bounds(minlat, minlon, maxlat, maxlon);
         if (args.containsKey("select") && PermissionPrefWithDefault.CHANGE_SELECTION.isAllowed()) {
             // select objects after downloading, zoom to selection.
             GuiHelper.executeByMainWorkerInEDT(() -> {
-                Set<OsmPrimitive> newSel = new HashSet<>();
+                Set<OsmPrimitive> newSel = new HashSet<>(); // these objects will be selected later on
                 DataSet ds = MainApplication.getLayerManager().getEditDataSet();
                 if (ds == null) // e.g. download failed
                     return;
@@ -193,7 +193,6 @@
                     forTagAdd.addAll(sel);
                 }
                 toSelect.clear();
-                isKeepingCurrentSelection = false;
                 ds.setSelected(newSel);
                 zoom(newSel, bbox);
                 MapFrame map = MainApplication.getMap();
@@ -236,7 +235,24 @@
             });
         }
 
-        AddTagsDialog.addTags(args, sender, forTagAdd);
+        // needs to run in EDT since forTagAdd is updated in EDT as well
+        GuiHelper.executeByMainWorkerInEDT(() -> {
+            if (forTagAdd.size() > 0) {
+                AddTagsDialog.addTags(args, sender, forTagAdd);
+            } else if (isKeepingCurrentSelection && args.containsKey("addtags")) {
+                // TODO: see #15707, display error message:
+                // You clicked on a JOSM remotecontrol link that would apply tags onto selected objects.
+                // Since no objects were selected, no tags were added. Select one or more objects and click the link again.
+                Logging.warn("RemoteControl: addtags= is set, but forTagAdd is empty (isKeepingCurrentSelection is set)");
+            } else if (!isKeepingCurrentSelection && args.containsKey("addtags")) {
+                // TODO: see #15707, display error message:
+                // You clicked on a JOSM remotecontrol link that would apply tags onto selected objects.
+                // This link seems to be broken due to an invalid value of the query parameter 'select='.
+                // Ask at the source of the link if it can be fixed.
+                Logging.warn("RemoteControl: addtags= is set, but forTagAdd is empty (isKeepingCurrentSelection is not set)");
+            }
+        });
+
     }
 
     protected void zoom(Collection<OsmPrimitive> primitives, final Bounds bbox) {
