diff --git a/lib/manager/composer/utils.spec.ts b/lib/manager/composer/utils.spec.ts
index ff972e6a9f301bd25970569ec3debe0042f85117..76b3efb091a187efcc9dd95b1aace1e063b332c2 100644
--- a/lib/manager/composer/utils.spec.ts
+++ b/lib/manager/composer/utils.spec.ts
@@ -42,12 +42,12 @@ describe('manager/composer/utils', () => {
     it('returns from composer-runtime-api', () => {
       expect(
         extractContraints({ require: { 'composer-runtime-api': '^1.1.0' } }, {})
-      ).toEqual({ composer: '1.*' });
+      ).toEqual({ composer: '^1.1' });
     });
 
     it('returns from plugin-api-version', () => {
       expect(extractContraints({}, { 'plugin-api-version': '1.1.0' })).toEqual({
-        composer: '1.*',
+        composer: '^1.1',
       });
     });
 
diff --git a/lib/manager/composer/utils.ts b/lib/manager/composer/utils.ts
index 3841400c03235f7ccacd5db945a20d9607e7fa97..98f34bf2b451cd0f17eb15100fd38cb49069f815 100644
--- a/lib/manager/composer/utils.ts
+++ b/lib/manager/composer/utils.ts
@@ -80,12 +80,14 @@ export function extractContraints(
   // check last used composer version
   else if (lockParsed?.['plugin-api-version']) {
     const major = api.getMajor(lockParsed?.['plugin-api-version']);
-    res.composer = `${major}.*`;
+    const minor = api.getMinor(lockParsed?.['plugin-api-version']);
+    res.composer = `^${major}.${minor}`;
   }
   // check composer api dependency
   else if (composerJson.require?.['composer-runtime-api']) {
     const major = api.getMajor(composerJson.require?.['composer-runtime-api']);
-    res.composer = `${major}.*`;
+    const minor = api.getMinor(composerJson.require?.['composer-runtime-api']);
+    res.composer = `^${major}.${minor}`;
   }
   return res;
 }