Index: src/org/openstreetmap/josm/actions/UnGlueAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/UnGlueAction.java	(revision 17425)
+++ src/org/openstreetmap/josm/actions/UnGlueAction.java	(working copy)
@@ -312,6 +312,8 @@
 
     private static Node cloneNode(Node originalNode, List<Command> cmds) {
         Node newNode = new Node(originalNode, true /* clear OSM ID */);
+        if (!newNode.isTagged() && newNode.hasKeys())
+            newNode.removeAll(); // see #20289
         cmds.add(new AddCommand(originalNode.getDataSet(), newNode));
         return newNode;
     }
Index: src/org/openstreetmap/josm/gui/dialogs/PropertiesMembershipChoiceDialog.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/PropertiesMembershipChoiceDialog.java	(revision 17425)
+++ src/org/openstreetmap/josm/gui/dialogs/PropertiesMembershipChoiceDialog.java	(working copy)
@@ -142,7 +142,7 @@
     }
 
     private static boolean isTagged(final Collection<Node> existingNodes) {
-        return existingNodes.stream().anyMatch(Node::hasKeys);
+        return existingNodes.stream().anyMatch(Node::isTagged);
     }
 
     private static boolean isUsedInRelations(final Collection<Node> existingNodes) {
