diff --git a/System/Directory.hs b/System/Directory.hs
--- a/System/Directory.hs
+++ b/System/Directory.hs
@@ -1,5 +1,10 @@
 {-# LANGUAGE CPP, NondecreasingIndentation #-}
 
+#if !(MIN_VERSION_base(4,8,0))
+-- In base-4.8.0 the Foreign module became Safe
+{-# LANGUAGE Trustworthy #-}
+#endif
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  System.Directory
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,6 +1,11 @@
 Changelog for the [`directory`][1] package
 ==========================================
 
+## 1.2.3.1 (August 2015)
+
+  * Restore support for Safe Haskell with base < 4.8
+    ([#30](https://github.com/haskell/directory/issues/30))
+
 ## 1.2.3.0 (July 2015)
 
   * Add support for XDG Base Directory Specification
diff --git a/directory.cabal b/directory.cabal
--- a/directory.cabal
+++ b/directory.cabal
@@ -1,5 +1,5 @@
 name:           directory
-version:        1.2.3.0
+version:        1.2.3.1
 -- NOTE: Don't forget to update ./changelog.md
 license:        BSD3
 license-file:   LICENSE
diff --git a/tests/Main.hs b/tests/Main.hs
--- a/tests/Main.hs
+++ b/tests/Main.hs
@@ -15,6 +15,7 @@
 import qualified GetPermissions001
 import qualified RemoveDirectoryRecursive001
 import qualified RenameFile001
+import qualified Safe
 import qualified T8482
 import qualified WithCurrentDirectory
 
@@ -35,5 +36,6 @@
   T.isolatedRun _t "GetPermissions001" GetPermissions001.main
   T.isolatedRun _t "RemoveDirectoryRecursive001" RemoveDirectoryRecursive001.main
   T.isolatedRun _t "RenameFile001" RenameFile001.main
+  T.isolatedRun _t "Safe" Safe.main
   T.isolatedRun _t "T8482" T8482.main
   T.isolatedRun _t "WithCurrentDirectory" WithCurrentDirectory.main
diff --git a/tests/Safe.hs b/tests/Safe.hs
new file mode 100644
--- /dev/null
+++ b/tests/Safe.hs
@@ -0,0 +1,7 @@
+-- Verify that System.Directory is indeed Safe (regression test for issue #30)
+{-# LANGUAGE Safe #-}
+module Safe where
+import System.Directory ()
+
+main :: a -> IO ()
+main _ = return ()
