Index: src/org/openstreetmap/josm/data/UndoRedoHandler.java
===================================================================
--- src/org/openstreetmap/josm/data/UndoRedoHandler.java	(revision 14829)
+++ src/org/openstreetmap/josm/data/UndoRedoHandler.java	(working copy)
@@ -283,10 +283,13 @@
     /**
      * Executes the command and add it to the intern command queue.
      * @param c The command to execute. Must not be {@code null}.
+     * @param execute true: Execute, else it is assumed that the command was already executed
      */
-    public void addNoRedraw(final Command c) {
+    public void addNoRedraw(final Command c, boolean execute) {
         CheckParameterUtil.ensureParameterNotNull(c, "c");
-        c.executeCommand();
+        if (execute) {
+            c.executeCommand();
+        }
         commands.add(c);
         // Limit the number of commands in the undo list.
         // Currently you have to undo the commands one by one. If
@@ -324,11 +327,22 @@
     }
 
     /**
+     * Executes the command only if wanted and add it to the intern command queue.
+     * @param c The command to execute. Must not be {@code null}.
+     * @param execute true: Execute, else it is assumed that the command was already executed
+     */
+    public void add(final Command c, boolean execute) {
+        addNoRedraw(c, execute);
+        afterAdd(c);
+
+    }
+
+    /**
      * Executes the command and add it to the intern command queue.
      * @param c The command to execute. Must not be {@code null}.
      */
     public synchronized void add(final Command c) {
-        addNoRedraw(c);
+        addNoRedraw(c, true);
         afterAdd(c);
     }
 
Index: src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(revision 14829)
+++ src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(working copy)
@@ -34,6 +34,7 @@
 import org.openstreetmap.josm.actions.ValidateAction;
 import org.openstreetmap.josm.actions.relation.EditRelationAction;
 import org.openstreetmap.josm.command.Command;
+import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.data.UndoRedoHandler;
 import org.openstreetmap.josm.data.osm.DataSelectionListener;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -603,10 +604,12 @@
 
         protected void fixError(TestError error) throws InterruptedException, InvocationTargetException {
             if (error.isFixable()) {
-                final Command fixCommand = error.getFix();
-                if (fixCommand != null) {
-                    SwingUtilities.invokeAndWait(() -> UndoRedoHandler.getInstance().addNoRedraw(fixCommand));
-                    fixCommands.add(fixCommand);
+                if (error.getPrimitives().stream().noneMatch(OsmPrimitive::isDeleted)) {
+                    final Command fixCommand = error.getFix();
+                    if (fixCommand != null) {
+                        SwingUtilities.invokeAndWait(() -> fixCommand.executeCommand());
+                        fixCommands.add(fixCommand);
+                    }
                 }
                 // It is wanted to ignore an error if it said fixable, even if fixCommand was null
                 // This is to fix #5764 and #5773:
@@ -637,7 +640,10 @@
                 }
                 monitor.subTask(tr("Updating map ..."));
                 SwingUtilities.invokeAndWait(() -> {
-                    UndoRedoHandler.getInstance().afterAdd(fixCommands);
+                    if (!fixCommands.isEmpty()) {
+                        UndoRedoHandler.getInstance().add(
+                                fixCommands.size() > 1 ? new AutofixCommand(fixCommands) : fixCommands.get(0), false);
+                    }
                     invalidateValidatorLayers();
                     tree.resetErrors();
                 });
@@ -662,4 +668,11 @@
         }
         super.destroy();
     }
+
+    private class AutofixCommand extends SequenceCommand {
+        AutofixCommand(Collection<Command> sequenz) {
+            super(tr("auto-fixed validator issues"), sequenz, true);
+            setSequenceComplete(true);
+        }
+    }
 }
