diff --git a/metric/metric.go b/metric/metric.go
index 2c8fdb9c959932fb4d540bd0d0edeb32074ba610..3249b56ad99fc954f8a248d976bd1c2858847403 100644
--- a/metric/metric.go
+++ b/metric/metric.go
@@ -123,6 +123,7 @@ func (m *metric) AddTag(key, value string) {
 
 		if key == tag.Key {
 			tag.Value = value
+			return
 		}
 
 		m.tags = append(m.tags, nil)
diff --git a/metric/metric_test.go b/metric/metric_test.go
index 1fecf2e449b622888efbc8d092c47c4e66579deb..47d44f3ef6e57fd2d1e6848921c0a2610bdba34f 100644
--- a/metric/metric_test.go
+++ b/metric/metric_test.go
@@ -63,6 +63,7 @@ func TestAddTagOverwrites(t *testing.T) {
 	value, ok := m.GetTag("host")
 	require.True(t, ok)
 	require.Equal(t, "example.org", value)
+	require.Equal(t, 1, len(m.TagList()))
 }
 
 func TestRemoveTagNoEffectOnMissingTags(t *testing.T) {