diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## next
+  - Exit with `exitFailure` on `AlreadyGeneratedByNewerHpack` or
+    `ExistingCabalFileWasModifiedManually` in `Hpack.printResult`
+
 ## Changes in 0.28.1
   - GHC 8.4.1 compatibility
 
diff --git a/hpack.cabal b/hpack.cabal
--- a/hpack.cabal
+++ b/hpack.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 7d11b64019bcd70a856a7bd339ef0a2be052be71eff6a5a81bd549cd56befe1c
+-- hash: 5391105d37fea2b976290b95e847c0d2da5ea7e0ef9ae9e5cf8945911dd983a1
 
 name:           hpack
-version:        0.28.1
+version:        0.28.2
 synopsis:       An alternative format for Haskell packages
 description:    See README at <https://github.com/sol/hpack#readme>
 category:       Development
diff --git a/src/Hpack.hs b/src/Hpack.hs
--- a/src/Hpack.hs
+++ b/src/Hpack.hs
@@ -139,6 +139,11 @@
       OutputUnchanged -> resultCabalFile r ++ " is up-to-date"
       AlreadyGeneratedByNewerHpack -> resultCabalFile r ++ " was generated with a newer version of hpack, please upgrade and try again."
       ExistingCabalFileWasModifiedManually -> resultCabalFile r ++ " was modified manually, please use --force to overwrite."
+  case resultStatus r of
+      Generated -> return ()
+      OutputUnchanged -> return ()
+      AlreadyGeneratedByNewerHpack -> exitFailure
+      ExistingCabalFileWasModifiedManually -> exitFailure
 
 printWarnings :: [String] -> IO ()
 printWarnings = mapM_ $ Utf8.hPutStrLn stderr . ("WARNING: " ++)
