diff --git a/lib/workers/repository/onboarding.js b/lib/workers/repository/onboarding.js
index 0ddba69e8bb5585bb1852826fac102fd8a5f7a05..33b31df6d91cf0dec5ae2c38cf0b263a7e631737 100644
--- a/lib/workers/repository/onboarding.js
+++ b/lib/workers/repository/onboarding.js
@@ -176,6 +176,7 @@ async function getOnboardingStatus(config) {
     'Configure Renovate'
   );
   if (pr) {
+    config.logger.debug(`Found existing onboarding PR#${pr.number}`);
     if (pr.isClosed) {
       config.logger.debug('Found closed Configure Renovate PR');
       return true;
@@ -184,8 +185,13 @@ async function getOnboardingStatus(config) {
     config.logger.debug(
       `PR #${pr.displayNumber} needs to be closed to enable renovate to continue`
     );
-    return false;
+    const prDetails = await config.api.getPr(pr.number);
+    if (!prDetails.canRebase) {
+      // Cannot update files if rebasing not possible
+      return false;
+    }
   }
+  // Create or update files, then return
   await module.exports.createBranch(config);
   return false;
 }
diff --git a/test/workers/repository/__snapshots__/onboarding.spec.js.snap b/test/workers/repository/__snapshots__/onboarding.spec.js.snap
index d35d12af0306fe2573560fd60e7a9c6c72e8a5c2..affb372c0b66b8a20cfe4c5700f0eb5cdb4494d0 100644
--- a/test/workers/repository/__snapshots__/onboarding.spec.js.snap
+++ b/test/workers/repository/__snapshots__/onboarding.spec.js.snap
@@ -201,7 +201,7 @@ Alternatively, you can add the same configuration settings into a \\"renovate\\"
 ]
 `;
 
-exports[`lib/workers/repository/onboarding getOnboardingStatus(config) enables semantic commits 1`] = `
+exports[`lib/workers/repository/onboarding getOnboardingStatus(config) commits files and returns false if no pr 1`] = `
 Array [
   "renovate/configure",
   Array [
@@ -219,7 +219,7 @@ Array [
   \\"ignoreDeps\\": [],
   \\"pinVersions\\": true,
   \\"separateMajorReleases\\": true,
-  \\"semanticCommits\\": true,
+  \\"semanticCommits\\": false,
   \\"semanticPrefix\\": \\"chore(deps): \\",
   \\"rebaseStalePrs\\": false,
   \\"prCreation\\": \\"immediate\\",
@@ -238,7 +238,7 @@ Array [
 ]
 `;
 
-exports[`lib/workers/repository/onboarding getOnboardingStatus(config) returns false if no pr 1`] = `
+exports[`lib/workers/repository/onboarding getOnboardingStatus(config) enables semantic commits 1`] = `
 Array [
   "renovate/configure",
   Array [
@@ -256,7 +256,7 @@ Array [
   \\"ignoreDeps\\": [],
   \\"pinVersions\\": true,
   \\"separateMajorReleases\\": true,
-  \\"semanticCommits\\": false,
+  \\"semanticCommits\\": true,
   \\"semanticPrefix\\": \\"chore(deps): \\",
   \\"rebaseStalePrs\\": false,
   \\"prCreation\\": \\"immediate\\",
diff --git a/test/workers/repository/onboarding.spec.js b/test/workers/repository/onboarding.spec.js
index 07ea36224e3233a23c40e67e2b45093ab2cc710c..dbf0bbb71b9916593941493533eadf7fe4b0392e 100644
--- a/test/workers/repository/onboarding.spec.js
+++ b/test/workers/repository/onboarding.spec.js
@@ -177,6 +177,7 @@ describe('lib/workers/repository/onboarding', () => {
         commitFilesToBranch: jest.fn(),
         createPr: jest.fn(() => ({ displayNumber: 1 })),
         findPr: jest.fn(),
+        getPr: jest.fn(() => {}),
         getCommitMessages: jest.fn(),
       };
       config.logger = logger;
@@ -203,14 +204,23 @@ describe('lib/workers/repository/onboarding', () => {
       expect(config.api.findPr.mock.calls.length).toBe(1);
       expect(config.api.commitFilesToBranch.mock.calls.length).toBe(0);
     });
-    it('returns false if pr and pr is not closed', async () => {
+    it('commits files if pr is not closed and is rebaseable', async () => {
       config.api.findPr.mockReturnValueOnce({});
+      config.api.getPr.mockReturnValueOnce({ canRebase: true });
+      const res = await onboarding.getOnboardingStatus(config);
+      expect(res).toEqual(false);
+      expect(config.api.findPr.mock.calls.length).toBe(1);
+      expect(config.api.commitFilesToBranch.mock.calls.length).toBe(1);
+    });
+    it('skips file update if existing pr is not rebaseable', async () => {
+      config.api.findPr.mockReturnValueOnce({});
+      config.api.getPr.mockReturnValueOnce({ canRebase: false });
       const res = await onboarding.getOnboardingStatus(config);
       expect(res).toEqual(false);
       expect(config.api.findPr.mock.calls.length).toBe(1);
       expect(config.api.commitFilesToBranch.mock.calls.length).toBe(0);
     });
-    it('returns false if no pr', async () => {
+    it('commits files and returns false if no pr', async () => {
       const res = await onboarding.getOnboardingStatus(config);
       expect(res).toEqual(false);
       expect(config.api.findPr.mock.calls.length).toBe(1);