diff --git a/lib/config/__snapshots__/validation.spec.ts.snap b/lib/config/__snapshots__/validation.spec.ts.snap
index c13b732365e535b97074f9e808f9c236b3fa03b7..6ae432f8ec8c02a6443e1b3f5258ae38bde3cb74 100644
--- a/lib/config/__snapshots__/validation.spec.ts.snap
+++ b/lib/config/__snapshots__/validation.spec.ts.snap
@@ -164,6 +164,15 @@ Array [
 ]
 `;
 
+exports[`config/validation validateConfig(config) errors if invalid combinations in packageRules 1`] = `
+Array [
+  Object {
+    "message": "packageRules[0]: packageRules cannot combine both matchUpdateTypes and registryUrls. Rule: {\\"matchUpdateTypes\\":[\\"major\\"],\\"registryUrls\\":[\\"https://registry.npmjs.org\\"]}",
+    "topic": "Configuration Error",
+  },
+]
+`;
+
 exports[`config/validation validateConfig(config) errors if language or manager objects are nested 1`] = `
 Array [
   Object {
diff --git a/lib/config/validation.spec.ts b/lib/config/validation.spec.ts
index fe9582f4b37b71cc5a65799635a84f08a20570f7..2535fa4318097a239645298392fa260e737862f5 100644
--- a/lib/config/validation.spec.ts
+++ b/lib/config/validation.spec.ts
@@ -585,5 +585,22 @@ describe(getName(__filename), () => {
       expect(warnings).toMatchSnapshot();
       expect(errors).toHaveLength(0);
     });
+    it('errors if invalid combinations in packageRules', async () => {
+      const config = {
+        packageRules: [
+          {
+            matchUpdateTypes: ['major'],
+            registryUrls: ['https://registry.npmjs.org'],
+          },
+        ],
+      } as any;
+      const { warnings, errors } = await configValidation.validateConfig(
+        config,
+        true
+      );
+      expect(warnings).toHaveLength(0);
+      expect(errors).toHaveLength(1);
+      expect(errors).toMatchSnapshot();
+    });
   });
 });
diff --git a/lib/config/validation.ts b/lib/config/validation.ts
index 2fed4ee6a6d85d9aea67d47adb9f048745719f46..fde19e6814dffa662ac4342d587fe177e1f7214b 100644
--- a/lib/config/validation.ts
+++ b/lib/config/validation.ts
@@ -325,6 +325,34 @@ export async function validateConfig(
                       message,
                     });
                   }
+                  // It's too late to apply any of these options once you already have updates determined
+                  const preLookupOptions = [
+                    'extractVersion',
+                    'followTag',
+                    'ignoreDeps',
+                    'ignoreUnstable',
+                    'rangeStrategy',
+                    'registryUrls',
+                    'respectLatest',
+                    'rollbackPrs',
+                    'separateMajorMinor',
+                    'separateMinorPatch',
+                    'separateMultipleMajor',
+                    'versioning',
+                  ];
+                  if (is.nonEmptyArray(resolvedRule.matchUpdateTypes)) {
+                    for (const option of preLookupOptions) {
+                      if (resolvedRule[option] !== undefined) {
+                        const message = `${currentPath}[${subIndex}]: packageRules cannot combine both matchUpdateTypes and ${option}. Rule: ${JSON.stringify(
+                          packageRule
+                        )}`;
+                        errors.push({
+                          topic: 'Configuration Error',
+                          message,
+                        });
+                      }
+                    }
+                  }
                 } else {
                   errors.push({
                     topic: 'Configuration Error',