diff --git a/lib/modules/manager/gomod/update.spec.ts b/lib/modules/manager/gomod/update.spec.ts
index 0f1fb82db767909d950f47eb792de19c2a7bce07..741699102baf7be8a450b26150bc4000734aedf9 100644
--- a/lib/modules/manager/gomod/update.spec.ts
+++ b/lib/modules/manager/gomod/update.spec.ts
@@ -259,6 +259,23 @@ describe('modules/manager/gomod/update', () => {
       );
     });
 
+    it('handles +incompatible tag without duplicating it', () => {
+      const upgrade = {
+        depName: 'github.com/Azure/azure-sdk-for-go',
+        managerData: { lineNumber: 8 },
+        newValue: 'v26.0.0+incompatible',
+        depType: 'require',
+      };
+      const res = updateDependency({ fileContent: gomod1, upgrade });
+      expect(res).not.toEqual(gomod1);
+      expect(res).not.toContain(
+        'github.com/Azure/azure-sdk-for-go v26.0.0+incompatible+incompatible'
+      );
+      expect(res).toContain(
+        'github.com/Azure/azure-sdk-for-go v26.0.0+incompatible'
+      );
+    });
+
     it('handles replace line with minor version update', () => {
       const upgrade = {
         depName: 'github.com/pravesht/gocql',
diff --git a/lib/modules/manager/gomod/update.ts b/lib/modules/manager/gomod/update.ts
index de7f06b346ffdce6f5f05201604d4e16e6aa650d..50884c80d0e9deafd4edb4fb88468c14db09cdfe 100644
--- a/lib/modules/manager/gomod/update.ts
+++ b/lib/modules/manager/gomod/update.ts
@@ -120,7 +120,10 @@ export function updateDependency({
         }
       }
     }
-    if (lineToChange.endsWith('+incompatible')) {
+    if (
+      lineToChange.endsWith('+incompatible') &&
+      !upgrade.newValue?.endsWith('+incompatible')
+    ) {
       let toAdd = '+incompatible';
 
       if (upgrade.updateType === 'major' && upgrade.newMajor! >= 2) {