diff --git a/hedgehog-extras.cabal b/hedgehog-extras.cabal
--- a/hedgehog-extras.cabal
+++ b/hedgehog-extras.cabal
@@ -1,7 +1,7 @@
 cabal-version: 2.4
 
 name:                   hedgehog-extras
-version:                0.6.3.0
+version:                0.6.4.0
 synopsis:               Supplemental library for hedgehog
 description:            Supplemental library for hedgehog.
 category:               Test
diff --git a/src/Hedgehog/Extras/Test/Base.hs b/src/Hedgehog/Extras/Test/Base.hs
--- a/src/Hedgehog/Extras/Test/Base.hs
+++ b/src/Hedgehog/Extras/Test/Base.hs
@@ -154,10 +154,10 @@
   maybeKeepWorkspace <- H.evalIO $ IO.lookupEnv "KEEP_WORKSPACE"
   ws <- H.evalIO $ IO.createTempDirectory systemTemp $ prefixPath <> "-test"
   H.annotate $ "Workspace: " <> ws
-  liftIO $ IO.writeFile (ws </> "module") callerModuleName
+  H.evalIO $ IO.writeFile (ws </> "module") callerModuleName
   f ws
   when (IO.os /= "mingw32" && maybeKeepWorkspace /= Just "1") $ do
-    H.evalIO $ IO.removeDirectoryRecursive ws
+    H.evalIO $ IO.removePathForcibly ws
 
 -- | Create a workspace directory which will exist for at least the duration of
 -- the supplied block.
diff --git a/src/Hedgehog/Extras/Test/Golden.hs b/src/Hedgehog/Extras/Test/Golden.hs
--- a/src/Hedgehog/Extras/Test/Golden.hs
+++ b/src/Hedgehog/Extras/Test/Golden.hs
@@ -58,22 +58,24 @@
   return $ value == Just "1"
 
 writeGoldenFile :: ()
+  => HasCallStack
   => MonadIO m
   => MonadTest m
   => FilePath
   -> String
   -> m ()
-writeGoldenFile goldenFile actualContent = do
+writeGoldenFile goldenFile actualContent = GHC.withFrozenCallStack $ do
   H.note_ $ "Creating golden file " <> goldenFile
   H.createDirectoryIfMissing_ (takeDirectory goldenFile)
   H.writeFile goldenFile actualContent
 
 reportGoldenFileMissing :: ()
+  => HasCallStack
   => MonadIO m
   => MonadTest m
   => FilePath
   -> m ()
-reportGoldenFileMissing goldenFile = do
+reportGoldenFileMissing goldenFile = GHC.withFrozenCallStack $ do
   H.note_ $ unlines
     [ "Golden file " <> goldenFile <> " does not exist."
     , "To create it, run with CREATE_GOLDEN_FILES=1."
@@ -82,12 +84,13 @@
   H.failure
 
 checkAgainstGoldenFile :: ()
+  => HasCallStack
   => MonadIO m
   => MonadTest m
   => FilePath
   -> [String]
   -> m ()
-checkAgainstGoldenFile goldenFile actualLines = do
+checkAgainstGoldenFile goldenFile actualLines = GHC.withFrozenCallStack $ do
   referenceLines <- List.lines <$> H.readFile goldenFile
   let difference = getGroupedDiff actualLines referenceLines
   case difference of
@@ -95,7 +98,7 @@
     [Both{}] -> pure ()
     _        -> do
       H.note_ $ unlines
-        [ "Golden test failed against golden file: " <> goldenFile
+        [ "Golden test failed against the golden file."
         , "To recreate golden file, run with RECREATE_GOLDEN_FILES=1."
         ]
       failMessage callStack $ ppDiff difference
