diff --git a/lib/modules/manager/npm/post-update/pnpm.spec.ts b/lib/modules/manager/npm/post-update/pnpm.spec.ts
index 5089b185d1660fcbe003e5b71a51187739b65ef3..ed632a38c128ddede8b37bda96e7337d5430439a 100644
--- a/lib/modules/manager/npm/post-update/pnpm.spec.ts
+++ b/lib/modules/manager/npm/post-update/pnpm.spec.ts
@@ -98,6 +98,7 @@ describe('modules/manager/npm/post-update/pnpm', () => {
         depType: 'packageManager',
         depName: 'pnpm',
         newValue: '6.16.1',
+        newVersion: '6.16.1',
       },
     ]);
     expect(fs.readLocalFile).toHaveBeenCalledTimes(1);
diff --git a/lib/modules/manager/npm/post-update/pnpm.ts b/lib/modules/manager/npm/post-update/pnpm.ts
index 8f0845c7054e70b6d046558da1888a32a43eb01b..dccc3a5c9225351b067185acc1f21e8cb893a812 100644
--- a/lib/modules/manager/npm/post-update/pnpm.ts
+++ b/lib/modules/manager/npm/post-update/pnpm.ts
@@ -16,6 +16,15 @@ import type { NpmPackage } from '../extract/types';
 import { getNodeToolConstraint } from './node-version';
 import type { GenerateLockFileResult, PnpmLockFile } from './types';
 
+function getPnpmConstraintFromUpgrades(upgrades: Upgrade[]): string | null {
+  for (const upgrade of upgrades) {
+    if (upgrade.depName === 'pnpm' && upgrade.newVersion) {
+      return upgrade.newVersion;
+    }
+  }
+  return null;
+}
+
 export async function generateLockFile(
   lockFileDir: string,
   env: NodeJS.ProcessEnv,
@@ -32,7 +41,9 @@ export async function generateLockFile(
     const pnpmToolConstraint: ToolConstraint = {
       toolName: 'pnpm',
       constraint:
-        config.constraints?.pnpm ?? (await getPnpmConstraint(lockFileDir)),
+        getPnpmConstraintFromUpgrades(upgrades) ??
+        config.constraints?.pnpm ??
+        (await getPnpmConstraint(lockFileDir)),
     };
 
     const extraEnv: ExtraEnv = {