diff --git a/apiary-clientsession.cabal b/apiary-clientsession.cabal
--- a/apiary-clientsession.cabal
+++ b/apiary-clientsession.cabal
@@ -1,5 +1,5 @@
 name:                apiary-clientsession
-version:             0.11.1
+version:             0.13.0
 synopsis:            clientsession support for apiary web framework.
 description:
   examples:
@@ -27,17 +27,18 @@
   other-extensions:    
   build-depends:       base               >=4.6   && <4.8
                      , bytestring         >=0.10  && <0.11
-                     , apiary             >=0.9   && <0.13
-                     , apiary-cookie      >=0.9   && <0.13
+                     , apiary             >=0.13  && <0.14
+                     , apiary-cookie      >=0.13  && <0.14
                      , clientsession      >=0.9   && <0.10
                      , time               >=1.4   && <1.5
                      , data-default-class >=0.0   && <0.1
-                     , reflection         >=1.4   && <1.5
+                     , reflection         >=1.4   && <1.6
                      , binary             >=0.7   && <0.8
                      , crypto-random      >=0.0   && <0.1
                      , cprng-aes          >=0.5   && <0.6
                      , base64-bytestring  >=1.0   && <1.1
                      , http-types         >=0.8   && <0.9
+                     , blaze-html         >=0.7   && <0.8
 
   hs-source-dirs:      src
   ghc-options:         -O2 -Wall
diff --git a/src/Web/Apiary/ClientSession/Internal.hs b/src/Web/Apiary/ClientSession/Internal.hs
--- a/src/Web/Apiary/ClientSession/Internal.hs
+++ b/src/Web/Apiary/ClientSession/Internal.hs
@@ -21,10 +21,13 @@
 import Web.Apiary.Cookie.Internal
 import Web.ClientSession 
 import Data.Maybe
+import Data.Monoid
 import Data.Time
 import Data.Default.Class
 import Data.Binary
 import Data.IORef
+import Data.Apiary.Document
+import Text.Blaze.Html
 import qualified Data.ByteString.Base64 as Base64
 
 import "crypto-random" Crypto.Random
@@ -129,7 +132,7 @@
 
 session :: (Functor n, MonadIO n, Strategy w, Query a) => Session
         -> S.ByteString -> proxy (w a) -> ApiaryT (SNext w as a) n m b -> ApiaryT as n m b
-session sess k p = focus id $ \l -> do
+session sess k p = focus (DocPrecondition $ toHtml (show k) <> " session cookie required") $ \l -> do
     r   <- getRequest
     t   <- liftIO getCurrentTime
     let mbr = readStrategy readQuery ((k ==) . fst) p
@@ -140,7 +143,7 @@
            => Session
            -> ApiaryT c n m a
            -> ApiaryT c n m a
-checkToken sess@Session{..} = focus id $ \l -> do
+checkToken sess@Session{..} = focus (DocPrecondition "CSRF token required") $ \l -> do
     r <- getRequest
     p <- getReqParams
 
