diff --git a/lib/workers/repository/cleanup.js b/lib/workers/repository/cleanup.js
index 5771c6b1f5064427f8025bb702ca0848f773b1db..16a9cb7eb83aae275c4a931255351ab32b5d953e 100644
--- a/lib/workers/repository/cleanup.js
+++ b/lib/workers/repository/cleanup.js
@@ -13,8 +13,29 @@ async function pruneStaleBranches(config, branchList) {
     logger.debug('Platform is not GitHub - returning');
     return;
   }
-  const renovateBranches = await config.api.getAllRenovateBranches();
+  let renovateBranches = await config.api.getAllRenovateBranches();
   logger.debug(`renovateBranches=${renovateBranches}`);
+  if (renovateBranches.indexOf('renovate/lock-file-maintenance') !== -1) {
+    logger.debug('Checking lock file branch');
+    const pr = await config.api.getBranchPr('renovate/lock-file-maintenance');
+    if (pr.isClosed) {
+      logger.info(
+        'Deleting lock file maintenance branch as PR has been closed'
+      );
+      await config.api.deleteBranch('renovate/lock-file-maintenance');
+    } else if (pr.isUnmergeable) {
+      logger.info('Deleting lock file maintenance branch as it is unmergeable');
+      await config.api.deleteBranch('renovate/lock-file-maintenance');
+    } else if (pr.changed_files === 0) {
+      logger.info(
+        'Deleting lock file maintenance branch as it has no changed files'
+      );
+      await config.api.deleteBranch('renovate/lock-file-maintenance');
+    }
+    renovateBranches = renovateBranches.filter(
+      branch => branch !== 'renovate/lock-file-maintenance'
+    );
+  }
   const remainingBranches = renovateBranches.filter(
     branch => branchList.indexOf(branch) === -1
   );
diff --git a/test/workers/repository/cleanup.spec.js b/test/workers/repository/cleanup.spec.js
index bf711aa34a36f150d5ab09dea1ce930622ae031c..a29d9660c41c3f8a8e81c1e813167dc835ac0023 100644
--- a/test/workers/repository/cleanup.spec.js
+++ b/test/workers/repository/cleanup.spec.js
@@ -38,5 +38,51 @@ describe('workers/repository/cleanup', () => {
       expect(config.api.getAllRenovateBranches.mock.calls).toHaveLength(1);
       expect(config.api.deleteBranch.mock.calls).toHaveLength(1);
     });
+    it('deletes lock file maintenance if pr is closed', async () => {
+      branchNames = ['renovate/lock-file-maintenance'];
+      config.api.getAllRenovateBranches.mockReturnValueOnce([
+        'renovate/lock-file-maintenance',
+      ]);
+      config.api.getBranchPr = jest.fn(() => ({ isClosed: true }));
+      await cleanup.pruneStaleBranches(config, [
+        'renovate/lock-file-maintenance',
+      ]);
+      expect(config.api.getAllRenovateBranches.mock.calls).toHaveLength(1);
+      expect(config.api.deleteBranch.mock.calls).toHaveLength(1);
+    });
+    it('deletes lock file maintenance if pr is unmergeable', async () => {
+      branchNames = ['renovate/lock-file-maintenance'];
+      config.api.getAllRenovateBranches.mockReturnValueOnce([
+        'renovate/lock-file-maintenance',
+      ]);
+      config.api.getBranchPr = jest.fn(() => ({ isUnmergeable: true }));
+      await cleanup.pruneStaleBranches(config, [
+        'renovate/lock-file-maintenance',
+      ]);
+      expect(config.api.getAllRenovateBranches.mock.calls).toHaveLength(1);
+      expect(config.api.deleteBranch.mock.calls).toHaveLength(1);
+    });
+    it('deletes lock file maintenance if no changed files', async () => {
+      branchNames = ['renovate/lock-file-maintenance'];
+      config.api.getAllRenovateBranches.mockReturnValueOnce([
+        'renovate/lock-file-maintenance',
+      ]);
+      config.api.getBranchPr = jest.fn(() => ({ changed_files: 0 }));
+      await cleanup.pruneStaleBranches(config, [
+        'renovate/lock-file-maintenance',
+      ]);
+      expect(config.api.getAllRenovateBranches.mock.calls).toHaveLength(1);
+      expect(config.api.deleteBranch.mock.calls).toHaveLength(1);
+    });
+    it('calls delete only once', async () => {
+      branchNames = ['renovate/lock-file-maintenance'];
+      config.api.getAllRenovateBranches.mockReturnValueOnce([
+        'renovate/lock-file-maintenance',
+      ]);
+      config.api.getBranchPr = jest.fn(() => ({ isClosed: true }));
+      await cleanup.pruneStaleBranches(config, []);
+      expect(config.api.getAllRenovateBranches.mock.calls).toHaveLength(1);
+      expect(config.api.deleteBranch.mock.calls).toHaveLength(1);
+    });
   });
 });