diff --git a/cabal-install/Distribution/Client/FileMonitor.hs b/cabal-install/Distribution/Client/FileMonitor.hs
index 7a1abb3bf79f0dab184fc7c7026a5e0144dfae61..15cca4a4513c949beda6be7e2669f5d35958e0ee 100644
--- a/cabal-install/Distribution/Client/FileMonitor.hs
+++ b/cabal-install/Distribution/Client/FileMonitor.hs
@@ -19,6 +19,7 @@ module Distribution.Client.FileMonitor (
   monitorDirectoryExistence,
   monitorFileOrDirectory,
   monitorFileGlob,
+  monitorFileGlobExistence,
   monitorFileSearchPath,
   monitorFileHashedSearchPath,
 
@@ -156,6 +157,13 @@ monitorFileOrDirectory = MonitorFile FileModTime DirModTime
 monitorFileGlob :: FilePathGlob -> MonitorFilePath
 monitorFileGlob = MonitorFileGlob FileHashed DirExists
 
+-- | Monitor a set of files (or directories) identified by a file glob for
+-- existence only. The monitored glob is considered to have changed if the set
+-- of files matching the glob changes (i.e. creations or deletions).
+--
+monitorFileGlobExistence :: FilePathGlob -> MonitorFilePath
+monitorFileGlobExistence = MonitorFileGlob FileExists DirExists
+
 -- | Creates a list of files to monitor when you search for a file which
 -- unsuccessfully looked in @notFoundAtPaths@ before finding it at
 -- @foundAtPath@.
diff --git a/cabal-install/Distribution/Client/RebuildMonad.hs b/cabal-install/Distribution/Client/RebuildMonad.hs
index f3ef1c107aa71da585aa7c78d1757e0f2aec80cb..fbd224889151028a888519f5246aab65a67c8fcf 100644
--- a/cabal-install/Distribution/Client/RebuildMonad.hs
+++ b/cabal-install/Distribution/Client/RebuildMonad.hs
@@ -28,6 +28,7 @@ module Distribution.Client.RebuildMonad (
     monitorFileHashedSearchPath,
     -- ** Monitoring file globs
     monitorFileGlob,
+    monitorFileGlobExistence,
     FilePathGlob(..),
     FilePathRoot(..),
     FilePathGlobRel(..),
@@ -140,6 +141,6 @@ rerunIfChanged verbosity monitor key action = do
 matchFileGlob :: FilePathGlob -> Rebuild [FilePath]
 matchFileGlob glob = do
     root <- askRoot
-    monitorFiles [monitorFileGlob glob]
+    monitorFiles [monitorFileGlobExistence glob]
     liftIO $ Glob.matchFileGlob root glob