diff --git a/docs/usage/configuration-options.md b/docs/usage/configuration-options.md
index c89cd097d2cd384f1f73bb608db3050c6cd60116..9bb09058e75cc4f491bd9742b583996c92cda6be 100644
--- a/docs/usage/configuration-options.md
+++ b/docs/usage/configuration-options.md
@@ -1336,6 +1336,19 @@ For example, consider this config:
 
 It would take the entire `"config:base"` preset - which has a lot of sub-presets - but ignore the `":prHourlyLimit2"` rule.
 
+## ignoreReviewers
+
+By default, Renovate does not add assignees or reviewers to PRs which are configured for automerge.
+If tests have failed, Renovate then does add them, but only if the assignees and reviewers list is empty.
+In the case that a user is automatically added as reviewer (such as Renovate Approve bot) and you want to ignore it for the purpose of this decision, add it to the `ignoreReviewers` list.
+
+```json
+{
+  "reviewers": ["foo"],
+  "ignoreReviewers": ["renovate-approve"]
+}
+```
+
 ## ignoreScripts
 
 Applicable for npm and Composer only for now. Set this to `true` if running scripts causes problems.
diff --git a/docs/usage/key-concepts/automerge.md b/docs/usage/key-concepts/automerge.md
index acad5034890ddad1a8e04b7da672fc683495d839..cbc711491929efe7e1ad9300a6dd5d216fcc43c3 100644
--- a/docs/usage/key-concepts/automerge.md
+++ b/docs/usage/key-concepts/automerge.md
@@ -137,6 +137,9 @@ If you have enabled branch protection which prevents Renovate from automerging d
 When automerge is enabled on a PR, Renovate will _not_ add assignees or reviewers at PR creation time, in order to decrease notifications noise a little.
 If tests subsequently _fail_, making automerge not possible, then Renovate will add the configured assignees and/or reviewers.
 
+Note: Renovate won't add assignees and reviewers to a PR with failing checks if the PR already has assignees or reviewers present.
+If there are accounts you wish to ignore (i.e. add assignees and reviewers regardless) then add them to `ignoreReviewers` to specify those which should be filtered out in such consideration.
+
 ## Frequent problems and how to resolve them
 
 ### Automerge not enabled correctly in config
diff --git a/lib/config/options/index.ts b/lib/config/options/index.ts
index 898292ff8089eac64e2b591fd76cbabfd8e8bc88..ec1f31ecd569bae7ddeb1e6cd579f2c497fb26f9 100644
--- a/lib/config/options/index.ts
+++ b/lib/config/options/index.ts
@@ -1900,6 +1900,13 @@ const options: RenovateOptions[] = [
     type: 'boolean',
     default: false,
   },
+  {
+    name: 'ignoreReviewers',
+    description:
+      'Reviewers to be ignored in PR reviewers presence (either username or email address depending on the platform).',
+    type: 'array',
+    subType: 'string',
+  },
   {
     name: 'reviewers',
     description:
diff --git a/lib/config/types.ts b/lib/config/types.ts
index 3c2c8ef3757484a2f308d0bf7c537ef7105f97c6..817fcdca976dcb052fb8890dac24fd8c39ae5ece 100644
--- a/lib/config/types.ts
+++ b/lib/config/types.ts
@@ -262,6 +262,7 @@ export interface AssigneesAndReviewersConfig {
   assigneesFromCodeOwners?: boolean;
   assignees?: string[];
   assigneesSampleSize?: number;
+  ignoreReviewers?: string[];
   reviewersFromCodeOwners?: boolean;
   reviewers?: string[];
   reviewersSampleSize?: number;
diff --git a/lib/modules/platform/azure/__snapshots__/index.spec.ts.snap b/lib/modules/platform/azure/__snapshots__/index.spec.ts.snap
index 52dc90bafe4efcc6dd265d7a1d1e3b5ae5f3c3e7..7c57b8934ba826c71249bcc75d44b2daaa0ab196 100644
--- a/lib/modules/platform/azure/__snapshots__/index.spec.ts.snap
+++ b/lib/modules/platform/azure/__snapshots__/index.spec.ts.snap
@@ -238,7 +238,6 @@ exports[`modules/platform/azure/index getPr(prNo) should return a pr in the righ
   },
   "createdAt": undefined,
   "displayNumber": "Pull Request #1234",
-  "hasReviewers": false,
   "labels": [
     "renovate",
   ],
diff --git a/lib/modules/platform/azure/index.spec.ts b/lib/modules/platform/azure/index.spec.ts
index 36358385f3e3933b43ef6ce93f5ed560c1ecca3d..54364a6e6bff5df06ff8650cc918a3c42770d612 100644
--- a/lib/modules/platform/azure/index.spec.ts
+++ b/lib/modules/platform/azure/index.spec.ts
@@ -379,7 +379,6 @@ describe('modules/platform/azure/index', () => {
         },
         createdAt: undefined,
         displayNumber: 'Pull Request #1',
-        hasReviewers: false,
         labels: [],
         number: 1,
         pullRequestId: 1,
diff --git a/lib/modules/platform/azure/index.ts b/lib/modules/platform/azure/index.ts
index c2ea8376bfd81cb0983981d7942f11840578369a..39320768cc0bc983a50318965ab8c6843c7b160b 100644
--- a/lib/modules/platform/azure/index.ts
+++ b/lib/modules/platform/azure/index.ts
@@ -288,7 +288,6 @@ export async function getPr(pullRequestId: number): Promise<Pr | null> {
     .filter((label) => label.active)
     .map((label) => label.name)
     .filter(is.string);
-  azurePr.hasReviewers = is.nonEmptyArray(azurePr.reviewers);
   return azurePr;
 }
 
diff --git a/lib/modules/platform/bitbucket-server/__snapshots__/index.spec.ts.snap b/lib/modules/platform/bitbucket-server/__snapshots__/index.spec.ts.snap
index e135f302c2075ce3a3e0b83b9dc512cea19ed561..c1dcbecf200f4edd5ce334b37ae6d94846f486e4 100644
--- a/lib/modules/platform/bitbucket-server/__snapshots__/index.spec.ts.snap
+++ b/lib/modules/platform/bitbucket-server/__snapshots__/index.spec.ts.snap
@@ -32,7 +32,6 @@ exports[`modules/platform/bitbucket-server/index endpoint with no path getBranch
   },
   "createdAt": 1547853840016,
   "displayNumber": "Pull Request #5",
-  "hasReviewers": true,
   "number": 5,
   "reviewers": [
     "userName2",
@@ -52,7 +51,6 @@ exports[`modules/platform/bitbucket-server/index endpoint with no path getPr() c
   },
   "createdAt": 1547853840016,
   "displayNumber": "Pull Request #5",
-  "hasReviewers": true,
   "number": 5,
   "reviewers": [
     "userName2",
@@ -72,7 +70,6 @@ exports[`modules/platform/bitbucket-server/index endpoint with no path getPr() c
   },
   "createdAt": 1547853840016,
   "displayNumber": "Pull Request #5",
-  "hasReviewers": true,
   "number": 5,
   "reviewers": [
     "userName2",
@@ -92,7 +89,6 @@ exports[`modules/platform/bitbucket-server/index endpoint with no path getPr() c
   },
   "createdAt": 1547853840016,
   "displayNumber": "Pull Request #5",
-  "hasReviewers": true,
   "number": 5,
   "reviewers": [
     "userName2",
@@ -112,7 +108,6 @@ exports[`modules/platform/bitbucket-server/index endpoint with no path getPr() g
   },
   "createdAt": 1547853840016,
   "displayNumber": "Pull Request #5",
-  "hasReviewers": true,
   "number": 5,
   "reviewers": [
     "userName2",
@@ -132,7 +127,6 @@ exports[`modules/platform/bitbucket-server/index endpoint with no path getPr() g
   },
   "createdAt": undefined,
   "displayNumber": "Pull Request #undefined",
-  "hasReviewers": false,
   "number": undefined,
   "reviewers": [],
   "sourceBranch": undefined,
@@ -248,7 +242,6 @@ exports[`modules/platform/bitbucket-server/index endpoint with path getBranchPr(
   },
   "createdAt": 1547853840016,
   "displayNumber": "Pull Request #5",
-  "hasReviewers": true,
   "number": 5,
   "reviewers": [
     "userName2",
@@ -268,7 +261,6 @@ exports[`modules/platform/bitbucket-server/index endpoint with path getPr() canR
   },
   "createdAt": 1547853840016,
   "displayNumber": "Pull Request #5",
-  "hasReviewers": true,
   "number": 5,
   "reviewers": [
     "userName2",
@@ -288,7 +280,6 @@ exports[`modules/platform/bitbucket-server/index endpoint with path getPr() canR
   },
   "createdAt": 1547853840016,
   "displayNumber": "Pull Request #5",
-  "hasReviewers": true,
   "number": 5,
   "reviewers": [
     "userName2",
@@ -308,7 +299,6 @@ exports[`modules/platform/bitbucket-server/index endpoint with path getPr() canR
   },
   "createdAt": 1547853840016,
   "displayNumber": "Pull Request #5",
-  "hasReviewers": true,
   "number": 5,
   "reviewers": [
     "userName2",
@@ -328,7 +318,6 @@ exports[`modules/platform/bitbucket-server/index endpoint with path getPr() gets
   },
   "createdAt": 1547853840016,
   "displayNumber": "Pull Request #5",
-  "hasReviewers": true,
   "number": 5,
   "reviewers": [
     "userName2",
@@ -348,7 +337,6 @@ exports[`modules/platform/bitbucket-server/index endpoint with path getPr() gets
   },
   "createdAt": undefined,
   "displayNumber": "Pull Request #undefined",
-  "hasReviewers": false,
   "number": undefined,
   "reviewers": [],
   "sourceBranch": undefined,
diff --git a/lib/modules/platform/bitbucket-server/index.ts b/lib/modules/platform/bitbucket-server/index.ts
index e71b0311d7fb53d66e83cf2f5a888a4ae4f087a8..c817596d08c651a0c82d1f294b35fdaea3ecf69c 100644
--- a/lib/modules/platform/bitbucket-server/index.ts
+++ b/lib/modules/platform/bitbucket-server/index.ts
@@ -1,4 +1,3 @@
-import is from '@sindresorhus/is';
 import delay from 'delay';
 import JSON5 from 'json5';
 import type { PartialDeep } from 'type-fest';
@@ -265,7 +264,6 @@ export async function getPr(
     ...utils.prInfo(res.body),
     reviewers: res.body.reviewers.map((r) => r.user.name),
   };
-  pr.hasReviewers = is.nonEmptyArray(pr.reviewers);
   // TODO #7154
   pr.version = updatePrVersion(pr.number, pr.version!);
 
diff --git a/lib/modules/platform/bitbucket/__snapshots__/index.spec.ts.snap b/lib/modules/platform/bitbucket/__snapshots__/index.spec.ts.snap
index d85ff37cef732a00095ad5e713e5b121c5f54b58..c16e0e18d06fcb35b2b12fdf29375ccf6dea68a0 100644
--- a/lib/modules/platform/bitbucket/__snapshots__/index.spec.ts.snap
+++ b/lib/modules/platform/bitbucket/__snapshots__/index.spec.ts.snap
@@ -35,7 +35,6 @@ exports[`modules/platform/bitbucket/index getBranchPr() bitbucket finds PR for b
   },
   "createdAt": "2018-07-02T07:02:25.275030+00:00",
   "displayNumber": "Pull Request #5",
-  "hasReviewers": false,
   "number": 5,
   "sourceBranch": "branch",
   "state": "open",
@@ -70,7 +69,6 @@ exports[`modules/platform/bitbucket/index getPr() canRebase 1`] = `
   },
   "createdAt": "2018-07-02T07:02:25.275030+00:00",
   "displayNumber": "Pull Request #3",
-  "hasReviewers": false,
   "number": 3,
   "sourceBranch": "branch",
   "state": "open",
@@ -86,7 +84,6 @@ exports[`modules/platform/bitbucket/index getPr() canRebase 2`] = `
   },
   "createdAt": "2018-07-02T07:02:25.275030+00:00",
   "displayNumber": "Pull Request #5",
-  "hasReviewers": false,
   "number": 5,
   "sourceBranch": "branch",
   "state": "open",
@@ -102,7 +99,6 @@ exports[`modules/platform/bitbucket/index getPr() canRebase 3`] = `
   },
   "createdAt": "2018-07-02T07:02:25.275030+00:00",
   "displayNumber": "Pull Request #5",
-  "hasReviewers": false,
   "number": 5,
   "sourceBranch": "branch",
   "state": "open",
@@ -118,7 +114,6 @@ exports[`modules/platform/bitbucket/index getPr() exists 1`] = `
   },
   "createdAt": "2018-07-02T07:02:25.275030+00:00",
   "displayNumber": "Pull Request #5",
-  "hasReviewers": false,
   "number": 5,
   "sourceBranch": "branch",
   "state": "open",
diff --git a/lib/modules/platform/bitbucket/index.spec.ts b/lib/modules/platform/bitbucket/index.spec.ts
index 55009a07bcb68c3f1ab078affc5e3970cfdd1183..36683143ecf24748f98df5017f40964b12ef0ca6 100644
--- a/lib/modules/platform/bitbucket/index.spec.ts
+++ b/lib/modules/platform/bitbucket/index.spec.ts
@@ -985,6 +985,32 @@ describe('modules/platform/bitbucket/index', () => {
 
       expect(await bitbucket.getPr(5)).toMatchSnapshot();
     });
+
+    it('reviewers', async () => {
+      const reviewer = {
+        display_name: 'Jane Smith',
+        uuid: '{90b6646d-1724-4a64-9fd9-539515fe94e9}',
+        account_id: '456',
+      };
+      const scope = await initRepoMock();
+      scope.get('/2.0/repositories/some/repo/pullrequests/5').reply(200, {
+        ...pr,
+        reviewers: [reviewer],
+      });
+      expect(await bitbucket.getPr(5)).toEqual({
+        bodyStruct: {
+          hash: '761b7ad8ad439b2855fcbb611331c646ef0870b0631247bba3f3025cb6df5a53',
+        },
+        createdAt: '2018-07-02T07:02:25.275030+00:00',
+        displayNumber: 'Pull Request #5',
+        number: 5,
+        reviewers: ['{90b6646d-1724-4a64-9fd9-539515fe94e9}'],
+        sourceBranch: 'branch',
+        state: 'open',
+        targetBranch: 'master',
+        title: 'title',
+      });
+    });
   });
 
   describe('massageMarkdown()', () => {
diff --git a/lib/modules/platform/bitbucket/index.ts b/lib/modules/platform/bitbucket/index.ts
index c1db3ea9620374ab41c61ae55bcd396247effb77..397ab4269f25ee27051e9fe8ddc7140496e8174a 100644
--- a/lib/modules/platform/bitbucket/index.ts
+++ b/lib/modules/platform/bitbucket/index.ts
@@ -290,12 +290,16 @@ export async function getPr(prNo: number): Promise<Pr | null> {
     return null;
   }
 
-  const res: any = {
+  const res: Pr = {
     displayNumber: `Pull Request #${pr.id}`,
     ...utils.prInfo(pr),
   };
 
-  res.hasReviewers = is.nonEmptyArray(pr.reviewers);
+  if (is.nonEmptyArray(pr.reviewers)) {
+    res.reviewers = pr.reviewers
+      .map(({ uuid }) => uuid)
+      .filter(is.nonEmptyString);
+  }
 
   return res;
 }
diff --git a/lib/modules/platform/github/common.ts b/lib/modules/platform/github/common.ts
index b8fbf81a5a7837cfcca0d8ee7edcafecad97591a..4d0af34c62bba7b9dad03ddfea07d889ec9aced3 100644
--- a/lib/modules/platform/github/common.ts
+++ b/lib/modules/platform/github/common.ts
@@ -38,7 +38,9 @@ export function coerceRestPr(pr: GhRestPr): GhPr {
   }
 
   if (pr.requested_reviewers) {
-    result.hasReviewers = true;
+    result.reviewers = pr.requested_reviewers
+      .map(({ login }) => login)
+      .filter(is.nonEmptyString);
   }
 
   if (pr.created_at) {
diff --git a/lib/modules/platform/github/index.spec.ts b/lib/modules/platform/github/index.spec.ts
index 4e059d0b7a47046701f192086116fcf38e42d6ea..23b69abb522146f340fd5a4c9c4862964e99a052 100644
--- a/lib/modules/platform/github/index.spec.ts
+++ b/lib/modules/platform/github/index.spec.ts
@@ -2580,7 +2580,6 @@ describe('modules/platform/github/index', () => {
         },
         displayNumber: 'Pull Request #1234',
         hasAssignees: true,
-        hasReviewers: true,
         number: 1234,
         sourceBranch: 'some/branch',
         state: 'open',
diff --git a/lib/modules/platform/gitlab/__snapshots__/index.spec.ts.snap b/lib/modules/platform/gitlab/__snapshots__/index.spec.ts.snap
index 5aa3de2cc3f26ff55062bddc9b565e8c42c7cce1..c8fc7d11ac7b262790976e37d725547a5a01e98a 100644
--- a/lib/modules/platform/gitlab/__snapshots__/index.spec.ts.snap
+++ b/lib/modules/platform/gitlab/__snapshots__/index.spec.ts.snap
@@ -75,10 +75,10 @@ exports[`modules/platform/gitlab/index getBranchPr(branchName) should return the
   },
   "displayNumber": "Merge Request #91",
   "hasAssignees": false,
-  "hasReviewers": false,
   "headPipelineStatus": undefined,
   "labels": undefined,
   "number": 91,
+  "reviewers": undefined,
   "sha": undefined,
   "sourceBranch": "some-branch",
   "state": "open",
@@ -94,11 +94,11 @@ exports[`modules/platform/gitlab/index getBranchPr(branchName) should strip depr
   },
   "displayNumber": "Merge Request #91",
   "hasAssignees": false,
-  "hasReviewers": false,
   "headPipelineStatus": undefined,
   "isDraft": true,
   "labels": undefined,
   "number": 91,
+  "reviewers": undefined,
   "sha": undefined,
   "sourceBranch": "some-branch",
   "state": "open",
@@ -114,11 +114,11 @@ exports[`modules/platform/gitlab/index getBranchPr(branchName) should strip draf
   },
   "displayNumber": "Merge Request #91",
   "hasAssignees": false,
-  "hasReviewers": false,
   "headPipelineStatus": undefined,
   "isDraft": true,
   "labels": undefined,
   "number": 91,
+  "reviewers": undefined,
   "sha": undefined,
   "sourceBranch": "some-branch",
   "state": "open",
@@ -134,11 +134,11 @@ exports[`modules/platform/gitlab/index getPr(prNo) removes deprecated draft pref
   },
   "displayNumber": "Merge Request #12345",
   "hasAssignees": false,
-  "hasReviewers": false,
   "headPipelineStatus": undefined,
   "isDraft": true,
   "labels": undefined,
   "number": 12345,
+  "reviewers": undefined,
   "sha": undefined,
   "sourceBranch": "some-branch",
   "state": "merged",
@@ -154,11 +154,11 @@ exports[`modules/platform/gitlab/index getPr(prNo) removes draft prefix from ret
   },
   "displayNumber": "Merge Request #12345",
   "hasAssignees": false,
-  "hasReviewers": false,
   "headPipelineStatus": undefined,
   "isDraft": true,
   "labels": undefined,
   "number": 12345,
+  "reviewers": undefined,
   "sha": undefined,
   "sourceBranch": "some-branch",
   "state": "merged",
@@ -174,10 +174,10 @@ exports[`modules/platform/gitlab/index getPr(prNo) returns the PR 1`] = `
   },
   "displayNumber": "Merge Request #12345",
   "hasAssignees": false,
-  "hasReviewers": false,
   "headPipelineStatus": undefined,
   "labels": undefined,
   "number": 12345,
+  "reviewers": undefined,
   "sha": undefined,
   "sourceBranch": "some-branch",
   "state": "merged",
@@ -193,10 +193,10 @@ exports[`modules/platform/gitlab/index getPr(prNo) returns the PR with nonexisti
   },
   "displayNumber": "Merge Request #12345",
   "hasAssignees": true,
-  "hasReviewers": false,
   "headPipelineStatus": undefined,
   "labels": undefined,
   "number": 12345,
+  "reviewers": undefined,
   "sha": undefined,
   "sourceBranch": "some-branch",
   "state": "open",
@@ -212,10 +212,10 @@ exports[`modules/platform/gitlab/index getPr(prNo) returns the mergeable PR 1`]
   },
   "displayNumber": "Merge Request #12345",
   "hasAssignees": true,
-  "hasReviewers": false,
   "headPipelineStatus": undefined,
   "labels": undefined,
   "number": 12345,
+  "reviewers": undefined,
   "sha": undefined,
   "sourceBranch": "some-branch",
   "state": "open",
diff --git a/lib/modules/platform/gitlab/index.spec.ts b/lib/modules/platform/gitlab/index.spec.ts
index 3f4ebe1a781bba6e4fcc5b8c61716d9035b177b7..21406758b4231632979f31734a6d594e7c7030ea 100644
--- a/lib/modules/platform/gitlab/index.spec.ts
+++ b/lib/modules/platform/gitlab/index.spec.ts
@@ -1919,6 +1919,47 @@ describe('modules/platform/gitlab/index', () => {
       expect(pr).toMatchSnapshot();
       expect(pr?.hasAssignees).toBeTrue();
     });
+
+    it('returns the PR with reviewers', async () => {
+      httpMock
+        .scope(gitlabApiHost)
+        .get(
+          '/api/v4/projects/undefined/merge_requests/12345?include_diverged_commits_count=1'
+        )
+        .reply(200, {
+          id: 1,
+          iid: 12345,
+          title: 'do something',
+          description: 'a merge request',
+          state: 'merged',
+          merge_status: 'cannot_be_merged',
+          diverged_commits_count: 5,
+          source_branch: 'some-branch',
+          target_branch: 'master',
+          assignees: [],
+          reviewers: [
+            { id: 1, username: 'foo' },
+            { id: 2, username: 'bar' },
+          ],
+        });
+      const pr = await gitlab.getPr(12345);
+      expect(pr).toEqual({
+        bodyStruct: {
+          hash: '23f41dbec0785a6c77457dd6ebf99ae5970c5fffc9f7a8ad7f66c1b8eeba5b90',
+        },
+        displayNumber: 'Merge Request #12345',
+        hasAssignees: false,
+        headPipelineStatus: undefined,
+        labels: undefined,
+        number: 12345,
+        reviewers: ['foo', 'bar'],
+        sha: undefined,
+        sourceBranch: 'some-branch',
+        state: 'merged',
+        targetBranch: 'master',
+        title: 'do something',
+      });
+    });
   });
 
   describe('updatePr(prNo, title, body)', () => {
diff --git a/lib/modules/platform/gitlab/index.ts b/lib/modules/platform/gitlab/index.ts
index 4a6cca5bcaed26903bf602697e12d08877eb09e3..bec610187461e0cd706077641cde20e72093fbf9 100644
--- a/lib/modules/platform/gitlab/index.ts
+++ b/lib/modules/platform/gitlab/index.ts
@@ -628,7 +628,7 @@ export async function getPr(iid: number): Promise<GitlabPr> {
     state: mr.state === 'opened' ? 'open' : mr.state,
     headPipelineStatus: mr.head_pipeline?.status,
     hasAssignees: !!(mr.assignee?.id ?? mr.assignees?.[0]?.id),
-    hasReviewers: !!mr.reviewers?.length,
+    reviewers: mr.reviewers?.map(({ username }) => username),
     title: mr.title,
     labels: mr.labels,
     sha: mr.sha,
diff --git a/lib/modules/platform/types.ts b/lib/modules/platform/types.ts
index 3dc626c3b09cb710ee0dabd6a4db5955d5794bb6..d35a8f9658669fe70b3d18d4b9017e637a8ad6c8 100644
--- a/lib/modules/platform/types.ts
+++ b/lib/modules/platform/types.ts
@@ -67,7 +67,6 @@ export interface Pr {
   closedAt?: string;
   displayNumber?: string;
   hasAssignees?: boolean;
-  hasReviewers?: boolean;
   labels?: string[];
   number: number;
   reviewers?: string[];
diff --git a/lib/workers/repository/update/pr/index.spec.ts b/lib/workers/repository/update/pr/index.spec.ts
index db355ade89171206ae8e3cdc7526f5e6c69cf605..9c56179c055beb7d4a372df5c48b0f24436be19f 100644
--- a/lib/workers/repository/update/pr/index.spec.ts
+++ b/lib/workers/repository/update/pr/index.spec.ts
@@ -361,7 +361,6 @@ describe('workers/repository/update/pr/index', () => {
         const changedPr: Pr = {
           ...pr,
           hasAssignees: false,
-          hasReviewers: false,
         };
         platform.getBranchPr.mockResolvedValueOnce(changedPr);
         checks.resolveBranchStatus.mockResolvedValueOnce('red');
@@ -377,6 +376,27 @@ describe('workers/repository/update/pr/index', () => {
         expect(participants.addParticipants).toHaveBeenCalled();
       });
 
+      it('adds reviewers for PR automerge with red status and existing ignorable reviewers that can be ignored', async () => {
+        const changedPr: Pr = {
+          ...pr,
+          hasAssignees: false,
+          reviewers: ['renovate-approve'],
+        };
+        platform.getBranchPr.mockResolvedValueOnce(changedPr);
+        checks.resolveBranchStatus.mockResolvedValueOnce('red');
+
+        const res = await ensurePr({
+          ...config,
+          automerge: true,
+          automergeType: 'pr',
+          assignAutomerge: false,
+          ignoreReviewers: ['renovate-approve'],
+        });
+
+        expect(res).toEqual({ type: 'with-pr', pr: changedPr });
+        expect(participants.addParticipants).toHaveBeenCalled();
+      });
+
       it('skips branch automerge and forces PR creation due to artifact errors', async () => {
         platform.createPr.mockResolvedValueOnce(pr);
 
@@ -479,7 +499,6 @@ describe('workers/repository/update/pr/index', () => {
         const changedPr: Pr = {
           ...pr,
           hasAssignees: false,
-          hasReviewers: false,
         };
         platform.getBranchPr.mockResolvedValueOnce(changedPr);
         checks.resolveBranchStatus.mockResolvedValueOnce('red');
@@ -504,7 +523,6 @@ describe('workers/repository/update/pr/index', () => {
         const changedPr: Pr = {
           ...pr,
           hasAssignees: false,
-          hasReviewers: false,
         };
         platform.getBranchPr.mockResolvedValueOnce(changedPr);
         checks.resolveBranchStatus.mockResolvedValueOnce('red');
@@ -533,7 +551,6 @@ describe('workers/repository/update/pr/index', () => {
           const changedPr: Pr = {
             ...pr,
             hasAssignees: false,
-            hasReviewers: false,
           };
           platform.getBranchPr.mockResolvedValueOnce(changedPr);
           checks.resolveBranchStatus.mockResolvedValueOnce('red');
diff --git a/lib/workers/repository/update/pr/index.ts b/lib/workers/repository/update/pr/index.ts
index 5091ef1abf259cb6460d75a6cfdf9d6c1e7551f2..f34daccb90553c639d7a2d7bda1e06d56eba6003 100644
--- a/lib/workers/repository/update/pr/index.ts
+++ b/lib/workers/repository/update/pr/index.ts
@@ -74,6 +74,20 @@ export function updatePrDebugData(
   };
 }
 
+function hasNotIgnoredReviewers(pr: Pr, config: BranchConfig): boolean {
+  if (
+    is.nonEmptyArray(config.ignoreReviewers) &&
+    is.nonEmptyArray(pr.reviewers)
+  ) {
+    const ignoreReviewers = new Set(config.ignoreReviewers);
+    return (
+      pr.reviewers.filter((reviewer) => !ignoreReviewers.has(reviewer)).length >
+      0
+    );
+  }
+  return pr.reviewers ? pr.reviewers.length > 0 : false;
+}
+
 // Ensures that PR exists with matching title/body
 export async function ensurePr(
   prConfig: BranchConfig
@@ -273,9 +287,10 @@ export async function ensurePr(
   try {
     if (existingPr) {
       logger.debug('Processing existing PR');
+
       if (
         !existingPr.hasAssignees &&
-        !existingPr.hasReviewers &&
+        !hasNotIgnoredReviewers(existingPr, config) &&
         config.automerge &&
         !config.assignAutomerge &&
         (await getBranchStatus()) === 'red'