diff --git a/hspec-core.cabal b/hspec-core.cabal
--- a/hspec-core.cabal
+++ b/hspec-core.cabal
@@ -1,5 +1,5 @@
 name:             hspec-core
-version:          2.1.6
+version:          2.1.7
 license:          MIT
 license-file:     LICENSE
 copyright:        (c) 2011-2015 Simon Hengel,
diff --git a/src/Test/Hspec/Core/Hooks.hs b/src/Test/Hspec/Core/Hooks.hs
--- a/src/Test/Hspec/Core/Hooks.hs
+++ b/src/Test/Hspec/Core/Hooks.hs
@@ -4,6 +4,7 @@
 , before_
 , beforeWith
 , beforeAll
+, beforeAll_
 , after
 , after_
 , afterAll
@@ -36,6 +37,13 @@
   mvar <- runIO (newMVar Nothing)
   let action_ = memoize mvar action
   before action_ spec
+
+-- | Run a custom action before the first spec item.
+beforeAll_ :: IO () -> SpecWith a -> SpecWith a
+beforeAll_ action spec = do
+  mvar <- runIO (newMVar Nothing)
+  let action_ = memoize mvar action
+  before_ action_ spec
 
 memoize :: MVar (Maybe a) -> IO a -> IO a
 memoize mvar action = modifyMVar mvar $ \ma -> case ma of
diff --git a/test/Test/Hspec/Core/HooksSpec.hs b/test/Test/Hspec/Core/HooksSpec.hs
--- a/test/Test/Hspec/Core/HooksSpec.hs
+++ b/test/Test/Hspec/Core/HooksSpec.hs
@@ -80,6 +80,21 @@
         , "bar"
         ]
 
+  describe "beforeAll_" $ do
+    it "runs an action before the first spec item" $ do
+      ref <- newIORef []
+      let append n = modifyIORef ref (++ return n)
+      silence $ H.hspec $ H.beforeAll (append "beforeAll_") $ do
+        H.it "foo" $ do
+          append "foo"
+        H.it "bar" $ do
+          append "bar"
+      readIORef ref `shouldReturn` [
+          "beforeAll_"
+        , "foo"
+        , "bar"
+        ]
+
     context "when used with an empty list of examples" $ do
       it "does not run specified action" $ do
         ref <- newIORef []
