diff --git a/lib/manager/index.js b/lib/manager/index.js
index 7f7a753de4439a4f485779e4e029c098655f0dd8..927ba8f17515e42f3f6d3b3034396c1d854fc6a3 100644
--- a/lib/manager/index.js
+++ b/lib/manager/index.js
@@ -191,6 +191,5 @@ async function resolvePackageFiles(config) {
     return packageFile;
   });
 
-  platform.ensureIssueClosing('Action Required: Fix Renovate Configuration');
   return checkMonorepos({ ...config, packageFiles });
 }
diff --git a/lib/manager/npm/package.js b/lib/manager/npm/package.js
index c042fbde6bb189af2c17ed51dbf5a929ea1caae3..17511efc06b7ebbe5569661f0650cf13ee479df6 100644
--- a/lib/manager/npm/package.js
+++ b/lib/manager/npm/package.js
@@ -45,18 +45,25 @@ async function getPackageUpdates(config) {
       );
     }
   } else {
-    // If dependency lookup fails then warn and return
-    const result = {
-      type: 'warning',
-      message: 'Failed to look up dependency',
-    };
     if (
       config.updateLockFiles &&
       (config.yarnLock || config.packageLock || config.npmShrinkwrap)
     ) {
-      result.message +=
-        '. This will block *all* dependencies from being updated due to presence of lock file.';
+      // Config error
+      const error = new Error('config-validation');
+      error.configFile = config.packageFile;
+      error.validationError = `Failed to look up npm dependency \`${
+        config.depName
+      }\``;
+      error.validationMessage =
+        'This dependency lookup failure will cause all lock file updates to fail. Please either remove the dependency, or remove the lock file, or add npm authentication, or set `updateLockFiles` to false in your config.';
+      throw error;
     }
+    // If dependency lookup fails then warn and return
+    const result = {
+      type: 'warning',
+      message: `Failed to look up dependency ${config.depName}`,
+    };
     results = [result];
     logger.info({ dependency: config.depName }, result.message);
   }
diff --git a/lib/workers/repository/error-config.js b/lib/workers/repository/error-config.js
index c203df361f51f875744cd2d4468279f49fb9e59c..a8dcb869468f364f3a742728e9b378de7e5a9204 100644
--- a/lib/workers/repository/error-config.js
+++ b/lib/workers/repository/error-config.js
@@ -4,9 +4,9 @@ module.exports = {
 
 async function raiseConfigWarningIssue(config, error) {
   logger.debug('raiseConfigWarningIssue()');
-  let body = `There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop renovations until it is fixed.\n\n`;
+  let body = `There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.\n\n`;
   if (error.configFile) {
-    body += `Configuration file: \`${error.configFile}\`\n`;
+    body += `File: \`${error.configFile}\`\n`;
   }
   body += `Error type: ${error.validationError}\n`;
   if (error.validationMessage) {
@@ -23,7 +23,7 @@ async function raiseConfigWarningIssue(config, error) {
       'Action Required: Fix Renovate Configuration',
       body
     );
-    if (res) {
+    if (res === 'created') {
       logger.warn({ configError: error, res }, 'Config Warning');
     }
   }
diff --git a/lib/workers/repository/updates/index.js b/lib/workers/repository/updates/index.js
index 856f60846a07203ff04351ba51aa6b9670ef426b..cdfcc1baaf0d73dbec1ad4a8e95f5595e68aa17d 100644
--- a/lib/workers/repository/updates/index.js
+++ b/lib/workers/repository/updates/index.js
@@ -10,6 +10,7 @@ async function determineUpdates(input) {
   logger.debug('determineUpdates()');
   logger.trace({ config });
   config = await determineRepoUpgrades(config);
+  platform.ensureIssueClosing('Action Required: Fix Renovate Configuration');
   config = branchifyUpgrades(config);
   logger.debug('Finished determining upgrades');
   return config;
diff --git a/test/manager/npm/__snapshots__/package.spec.js.snap b/test/manager/npm/__snapshots__/package.spec.js.snap
index de45e88d218520f37bda21dd7cd4e8bc04d42e80..b3802a82da270917d886d8f1f971a687d96a6f77 100644
--- a/test/manager/npm/__snapshots__/package.spec.js.snap
+++ b/test/manager/npm/__snapshots__/package.spec.js.snap
@@ -6,30 +6,10 @@ Array [
 ]
 `;
 
-exports[`lib/workers/package/npm getPackageUpdates returns error if no npm scoped dep found 1`] = `
-Array [
-  Object {
-    "message": "Failed to look up dependency. This will block *all* dependencies from being updated due to presence of lock file.",
-    "repositoryUrl": null,
-    "type": "warning",
-  },
-]
-`;
-
 exports[`lib/workers/package/npm getPackageUpdates returns warning if no npm dep found 1`] = `
 Array [
   Object {
-    "message": "Failed to look up dependency",
-    "repositoryUrl": null,
-    "type": "warning",
-  },
-]
-`;
-
-exports[`lib/workers/package/npm getPackageUpdates returns warning if no npm dep found and lock file 1`] = `
-Array [
-  Object {
-    "message": "Failed to look up dependency. This will block *all* dependencies from being updated due to presence of lock file.",
+    "message": "Failed to look up dependency some-dep",
     "repositoryUrl": null,
     "type": "warning",
   },
diff --git a/test/manager/npm/package.spec.js b/test/manager/npm/package.spec.js
index 9e7f2f3f39055b44b92cfa3e573ba893996c383d..4227ad3fe37289a95c4647430ad1d9277fffc0a1 100644
--- a/test/manager/npm/package.spec.js
+++ b/test/manager/npm/package.spec.js
@@ -48,21 +48,26 @@ describe('lib/workers/package/npm', () => {
       expect(res[0].type).toEqual('warning');
       expect(npmApi.getDependency.mock.calls.length).toBe(1);
     });
-    it('returns warning if no npm dep found and lock file', async () => {
+    it('throws error if no npm dep found and lock file', async () => {
       config.packageLock = 'some package lock';
-      const res = await npm.getPackageUpdates(config);
-      expect(res).toMatchSnapshot();
-      expect(res).toHaveLength(1);
-      expect(res[0].type).toEqual('warning');
-      expect(npmApi.getDependency.mock.calls.length).toBe(1);
+      let e;
+      try {
+        await npm.getPackageUpdates(config);
+      } catch (err) {
+        e = err;
+      }
+      expect(e).toBeDefined();
     });
     it('returns error if no npm scoped dep found', async () => {
       config.depName = '@foo/something';
       config.yarnLock = '# some yarn lock';
-      const res = await npm.getPackageUpdates(config);
-      expect(res).toMatchSnapshot();
-      expect(res).toHaveLength(1);
-      expect(res[0].type).toEqual('warning');
+      let e;
+      try {
+        await npm.getPackageUpdates(config);
+      } catch (err) {
+        e = err;
+      }
+      expect(e).toBeDefined();
     });
     it('returns warning if warning found', async () => {
       npmApi.getDependency.mockReturnValueOnce({});