Index: /trunk/src/org/openstreetmap/josm/gui/widgets/HistoryComboBox.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/HistoryComboBox.java	(revision 18125)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/HistoryComboBox.java	(revision 18126)
@@ -6,4 +6,5 @@
 import javax.swing.text.JTextComponent;
 
+import org.openstreetmap.josm.data.tagging.ac.AutoCompletionItem;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingComboBox;
 import org.openstreetmap.josm.spi.preferences.Config;
@@ -55,5 +56,12 @@
      */
     public void addCurrentItemToHistory() {
-        model.addElement((String) getEditor().getItem());
+        Object item = getEditor().getItem();
+        if (item instanceof String) {
+            model.addElement((String) item);
+        } else if (item instanceof AutoCompletionItem) {
+            model.addElement((AutoCompletionItem) item);
+        } else {
+            throw new IllegalArgumentException(item.getClass().getSimpleName() + " is not supported in addCurrentItemToHistory");
+        }
     }
 
Index: /trunk/test/unit/org/openstreetmap/josm/gui/widgets/HistoryComboBoxTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/widgets/HistoryComboBoxTest.java	(revision 18126)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/widgets/HistoryComboBoxTest.java	(revision 18126)
@@ -0,0 +1,54 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.widgets;
+
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+import java.util.stream.Stream;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+import org.openstreetmap.josm.data.tagging.ac.AutoCompletionItem;
+import org.openstreetmap.josm.testutils.annotations.FullPreferences;
+
+/**
+ * Test class for {@link HistoryComboBox}
+ * @author Taylor Smock
+ */
+@FullPreferences
+class HistoryComboBoxTest {
+    static Stream<Arguments> testNonRegression21203() {
+        return Stream.of(Arguments.of("Hello world"), Arguments.of(new AutoCompletionItem("Hello world2")));
+    }
+
+    /**
+     * Non-regression test for #21203
+     * @param object object to set as editor item
+     */
+    @ParameterizedTest
+    @MethodSource
+    void testNonRegression21203(final Object object) {
+        final HistoryComboBox historyComboBox = new HistoryComboBox();
+        // Sanity check
+        assertEquals(0, historyComboBox.getModel().getSize());
+        historyComboBox.getEditor().setItem(object);
+        assertDoesNotThrow(historyComboBox::addCurrentItemToHistory);
+    }
+
+    /**
+     * This ensures that we do throw on unknown objects for #21203
+     */
+    @Test
+    void testNonRegression21203Throws() {
+        final HistoryComboBox historyComboBox = new HistoryComboBox();
+        // Sanity check
+        assertEquals(0, historyComboBox.getModel().getSize());
+        historyComboBox.getEditor().setItem(new Object());
+        IllegalArgumentException illegalArgumentException = assertThrows(IllegalArgumentException.class,
+                historyComboBox::addCurrentItemToHistory);
+        assertEquals("Object is not supported in addCurrentItemToHistory", illegalArgumentException.getMessage());
+    }
+}
