diff --git a/lib/modules/manager/helmfile/artifacts.spec.ts b/lib/modules/manager/helmfile/artifacts.spec.ts
index bfdaa57a08634c69b37def8de4caf815804fb010..d36b45bda5b662cabc5fa961245da4c21c14af82 100644
--- a/lib/modules/manager/helmfile/artifacts.spec.ts
+++ b/lib/modules/manager/helmfile/artifacts.spec.ts
@@ -325,7 +325,7 @@ describe('modules/manager/helmfile/artifacts', () => {
             'bash -l -c "' +
             'install-tool helm v3.7.2' +
             ' && ' +
-            'install-tool helmfile v0.129.0' +
+            'install-tool helmfile 0.151.0' +
             ' && ' +
             'install-tool kustomize 5.0.0' +
             ' && ' +
@@ -338,7 +338,7 @@ describe('modules/manager/helmfile/artifacts', () => {
       binarySource: 'install',
       expectedCommands: [
         { cmd: 'install-tool helm v3.7.2' },
-        { cmd: 'install-tool helmfile v0.129.0' },
+        { cmd: 'install-tool helmfile 0.151.0' },
         { cmd: 'install-tool kustomize 5.0.0' },
         { cmd: 'helmfile deps -f helmfile.yaml' },
       ],
@@ -359,9 +359,6 @@ describe('modules/manager/helmfile/artifacts', () => {
       datasource.getPkgReleases.mockResolvedValueOnce({
         releases: [{ version: 'v3.7.2' }],
       });
-      datasource.getPkgReleases.mockResolvedValueOnce({
-        releases: [{ version: 'v0.129.0' }],
-      });
       datasource.getPkgReleases.mockResolvedValueOnce({
         releases: [{ version: '5.0.0' }],
       });
diff --git a/lib/modules/manager/helmfile/artifacts.ts b/lib/modules/manager/helmfile/artifacts.ts
index 4e0fed89a5f5038d7d69452b27ea58dfbeda41ea..87c0b6c229b103efe026ebcc1d71491d8d18dbc3 100644
--- a/lib/modules/manager/helmfile/artifacts.ts
+++ b/lib/modules/manager/helmfile/artifacts.ts
@@ -14,7 +14,12 @@ import { getFile } from '../../../util/git';
 import { regEx } from '../../../util/regex';
 import { generateHelmEnvs } from '../helmv3/common';
 import type { UpdateArtifact, UpdateArtifactsResult } from '../types';
-import { generateRegistryLoginCmd, isOCIRegistry, parseDoc } from './utils';
+import {
+  generateRegistryLoginCmd,
+  isOCIRegistry,
+  parseDoc,
+  parseLock,
+} from './utils';
 
 export async function updateArtifacts({
   packageFileName,
@@ -51,7 +56,9 @@ export async function updateArtifacts({
       },
       {
         toolName: 'helmfile',
-        constraint: config.constraints?.helmfile,
+        constraint:
+          config.constraints?.helmfile ??
+          parseLock(existingLockFileContent).version,
       },
     ];
     const needKustomize = updatedDeps.some(
diff --git a/lib/modules/manager/helmfile/schema.ts b/lib/modules/manager/helmfile/schema.ts
index 8ed79044002d62c9606dc8e8b5a782772857da00..dd4ac7ff2fd79302de37da528bc216b045c7daa0 100644
--- a/lib/modules/manager/helmfile/schema.ts
+++ b/lib/modules/manager/helmfile/schema.ts
@@ -19,3 +19,7 @@ export const DocSchema = z.object({
   releases: z.array(ReleaseSchema).optional(),
   repositories: z.array(RepositorySchema).optional(),
 });
+
+export const LockSchema = z.object({
+  version: z.string(),
+});
diff --git a/lib/modules/manager/helmfile/types.ts b/lib/modules/manager/helmfile/types.ts
index 7667d98288173138d769c23c81bd361fa47ee6e4..a5bd8e60cf2152fa193c6703d985498d377f38d5 100644
--- a/lib/modules/manager/helmfile/types.ts
+++ b/lib/modules/manager/helmfile/types.ts
@@ -1,9 +1,16 @@
 import type { z } from 'zod';
 
-import type { DocSchema, ReleaseSchema, RepositorySchema } from './schema';
+import type {
+  DocSchema,
+  LockSchema,
+  ReleaseSchema,
+  RepositorySchema,
+} from './schema';
 
 export type Release = z.infer<typeof ReleaseSchema>;
 
 export type Repository = z.infer<typeof RepositorySchema>;
 
 export type Doc = z.infer<typeof DocSchema>;
+
+export type Lock = z.infer<typeof LockSchema>;
diff --git a/lib/modules/manager/helmfile/utils.ts b/lib/modules/manager/helmfile/utils.ts
index 578ee04c06bc2ce4fd2acf8af91c94dca8830415..b8acb7cc114a90c7d6e9d871185e66abee5b7a71 100644
--- a/lib/modules/manager/helmfile/utils.ts
+++ b/lib/modules/manager/helmfile/utils.ts
@@ -7,8 +7,8 @@ import { DockerDatasource } from '../../datasource/docker';
 import { generateLoginCmd } from '../helmv3/common';
 import type { RepositoryRule } from '../helmv3/types';
 
-import { DocSchema } from './schema';
-import type { Doc, Release, Repository } from './types';
+import { DocSchema, LockSchema } from './schema';
+import type { Doc, Lock, Release, Repository } from './types';
 
 /** Returns true if a helmfile release contains kustomize specific keys **/
 export function kustomizationsKeysUsed(release: Release): boolean {
@@ -36,6 +36,11 @@ export function parseDoc(packageFileContent: string): Doc {
   return DocSchema.parse(doc);
 }
 
+export function parseLock(lockFileContent: string): Lock {
+  const lock = yaml.load(lockFileContent);
+  return LockSchema.parse(lock);
+}
+
 export function isOCIRegistry(repository: Repository): boolean {
   return repository.oci === true;
 }