diff --git a/Cabal/src/Distribution/Simple.hs b/Cabal/src/Distribution/Simple.hs
index c52a02c0f965989a0bce9489f6ca7a746ec955ff..58e9f4046b0d04330401374ccf5e41b0b2c66c8b 100644
--- a/Cabal/src/Distribution/Simple.hs
+++ b/Cabal/src/Distribution/Simple.hs
@@ -743,8 +743,7 @@ simpleUserHooks =
 --
 -- * 'postConf' runs @.\/configure@, if present.
 --
--- * the pre-hooks 'preBuild', 'preClean', 'preCopy', 'preInst',
---   'preReg' and 'preUnreg' read additional build information from
+-- * the pre-hooks, except for pre-conf, read additional build information from
 --   /package/@.buildinfo@, if present.
 --
 -- Thus @configure@ can use local system information to generate
@@ -753,7 +752,8 @@ autoconfUserHooks :: UserHooks
 autoconfUserHooks =
   simpleUserHooks
     { postConf = defaultPostConf
-    , preBuild = readHookWithArgs buildVerbosity buildDistPref -- buildCabalFilePath,
+    , preBuild = readHookWithArgs buildVerbosity buildDistPref
+    , preRepl = readHookWithArgs replVerbosity replDistPref
     , preCopy = readHookWithArgs copyVerbosity copyDistPref
     , preClean = readHook cleanVerbosity cleanDistPref
     , preInst = readHook installVerbosity installDistPref
@@ -761,6 +761,8 @@ autoconfUserHooks =
     , preHaddock = readHookWithArgs haddockVerbosity haddockDistPref
     , preReg = readHook regVerbosity regDistPref
     , preUnreg = readHook regVerbosity regDistPref
+    , preTest = readHookWithArgs testVerbosity testDistPref
+    , preBench = readHookWithArgs benchmarkVerbosity benchmarkDistPref
     }
   where
     defaultPostConf
diff --git a/changelog.d/issue-9401 b/changelog.d/issue-9401
new file mode 100644
index 0000000000000000000000000000000000000000..404879765438c2fac03a39bb0a6be22e48b310bc
--- /dev/null
+++ b/changelog.d/issue-9401
@@ -0,0 +1,11 @@
+synopsis: Account for .buildinfo in repl, test, and bench
+packages: Cabal
+prs: #9440
+issues: #9401
+
+description: {
+
+Generated <project>.buildinfo is now respected in cabal repl, cabal test and cabal bench.
+
+}
+