diff --git a/lib/manager/resolve.js b/lib/manager/resolve.js
index 45b3ffc4ef23ad048e435e667869f9d133425833..12e467ac5f542bd0194024f0030b7128d2326a1f 100644
--- a/lib/manager/resolve.js
+++ b/lib/manager/resolve.js
@@ -46,9 +46,18 @@ async function resolvePackageFiles(config) {
           { packageFile: packageFile.packageFile },
           'Cannot parse package.json'
         );
-        config.warnings.push({
+        if (config.repoIsOnboarded) {
+          const error = new Error('config-validation');
+          error.configFile = packageFile.packageFile;
+          error.validationError = 'Cannot parse package.json';
+          error.validationMessage =
+            'This package.json contains invalid JSON and cannot be parsed. Please fix it, or add it to your "ignorePaths" array in your renovate config so that Renovate can continue.';
+          throw error;
+        }
+        config.errors.push({
           depName: packageFile.packageFile,
-          message: 'Cannot parse package.json (invalid JSON)',
+          message:
+            "Cannot parse package.json (invalid JSON). Please fix the contents or add the file/path to the `ignorePaths` array in Renovate's config",
         });
         return null;
       }
diff --git a/test/manager/__snapshots__/resolve.spec.js.snap b/test/manager/__snapshots__/resolve.spec.js.snap
index 9096535ab8c80e1afdf62155f6fd3e0062054d4b..e62eb84483461e2287caf899b7d19f7e016c661f 100644
--- a/test/manager/__snapshots__/resolve.spec.js.snap
+++ b/test/manager/__snapshots__/resolve.spec.js.snap
@@ -1,6 +1,6 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
-exports[`manager/resolve resolvePackageFiles() detect package.json and warns if cannot parse 1`] = `
+exports[`manager/resolve resolvePackageFiles() detect package.json and adds error if cannot parse (onboarding) 1`] = `
 Object {
   "assignees": Array [],
   "autodiscover": false,
@@ -232,7 +232,12 @@ This PR has been generated by [Renovate Bot](https://renovateapp.com).",
   "enabled": true,
   "encrypted": null,
   "endpoint": null,
-  "errors": Array [],
+  "errors": Array [
+    Object {
+      "depName": "package.json",
+      "message": "Cannot parse package.json (invalid JSON). Please fix the contents or add the file/path to the \`ignorePaths\` array in Renovate's config",
+    },
+  ],
   "excludePackageNames": Array [],
   "excludePackagePatterns": Array [],
   "extends": Array [],
@@ -519,16 +524,13 @@ This PR has been generated by [Renovate Bot](https://renovateapp.com).",
   "unpublishSafe": false,
   "unstablePattern": null,
   "updateNotScheduled": true,
-  "warnings": Array [
-    Object {
-      "depName": "package.json",
-      "message": "Cannot parse package.json (invalid JSON)",
-    },
-  ],
+  "warnings": Array [],
   "yarnrc": null,
 }
 `;
 
+exports[`manager/resolve resolvePackageFiles() detect package.json and throws error if cannot parse (onboarded) 1`] = `[Error: config-validation]`;
+
 exports[`manager/resolve resolvePackageFiles() detects accompanying files 1`] = `
 Object {
   "assignees": Array [],
diff --git a/test/manager/resolve.spec.js b/test/manager/resolve.spec.js
index 4198dea4181fb67c7de425d16aedd028f894b715..08798b39e03c31f47f33ff280fe1941d11b60792 100644
--- a/test/manager/resolve.spec.js
+++ b/test/manager/resolve.spec.js
@@ -25,14 +25,29 @@ describe('manager/resolve', () => {
       expect(res).toMatchSnapshot();
       expect(res.errors).toHaveLength(2);
     });
-    it('detect package.json and warns if cannot parse', async () => {
+    it('detect package.json and adds error if cannot parse (onboarding)', async () => {
       manager.detectPackageFiles = jest.fn(() => [
         { packageFile: 'package.json' },
       ]);
       platform.getFile.mockReturnValueOnce('not json');
       const res = await resolvePackageFiles(config);
       expect(res).toMatchSnapshot();
-      expect(res.warnings).toHaveLength(1);
+      expect(res.errors).toHaveLength(1);
+    });
+    it('detect package.json and throws error if cannot parse (onboarded)', async () => {
+      manager.detectPackageFiles = jest.fn(() => [
+        { packageFile: 'package.json' },
+      ]);
+      platform.getFile.mockReturnValueOnce('not json');
+      config.repoIsOnboarded = true;
+      let e;
+      try {
+        await resolvePackageFiles(config);
+      } catch (err) {
+        e = err;
+      }
+      expect(e).toBeDefined();
+      expect(e).toMatchSnapshot();
     });
     it('detects package.json and parses json with renovate config', async () => {
       manager.detectPackageFiles = jest.fn(() => [