diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 # Revision history for deriving-trans
 
+## 0.11.0.0 *07 Apr 2026*
+
+* Raise lower version bound for mtl `>= 2.3.2`.
+* Completely remove the `random` flag and drop the optional dependency.
+
 ## 0.10.0.1 *07 Apr 2026*
 
 * Add upper version bound for mtl `< 2.3.2`.
diff --git a/deriving-trans.cabal b/deriving-trans.cabal
--- a/deriving-trans.cabal
+++ b/deriving-trans.cabal
@@ -1,6 +1,6 @@
 cabal-version: 3.0
 name: deriving-trans
-version: 0.10.0.1
+version: 0.11.0.0
 synopsis: Derive instances for monad transformer stacks
 description:
   Implementing instances for monad transformer stacks can be tedious.
@@ -50,11 +50,6 @@
   description:
     Implement instances for `PrimMonad`.
 
-flag random
-  default: False
-  description:
-    Implement instances for random's type classes.
-
 flag resourcet
   default: True
   description:
@@ -89,16 +84,12 @@
       , monad-logger >= 0.3.38
   if flag(mtl)
     other-modules:
-      Control.Monad.Accum.OrphanInstances
       Control.Monad.Select.OrphanInstances
     build-depends:
-      , mtl >= 2.3 && < 2.3.2
+      , mtl >= 2.3.2
   if flag(primitive)
     build-depends:
       , primitive >= 0.7.1.0
-  if flag(random)
-    build-depends:
-      , random >= 1.2 && < 1.3
   if flag(resourcet)
     build-depends:
       , resourcet >= 1.2
diff --git a/src/Control/Monad/Accum/OrphanInstances.hs b/src/Control/Monad/Accum/OrphanInstances.hs
deleted file mode 100644
--- a/src/Control/Monad/Accum/OrphanInstances.hs
+++ /dev/null
@@ -1,10 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-orphans #-}
-
-module Control.Monad.Accum.OrphanInstances where
-
-import Control.Monad.Accum
-import Control.Monad.Trans.Accum qualified as T
-
-instance (Monoid w, Monad m) => MonadAccum w (T.AccumT w m) where
-  look = T.look
-  add = T.add
diff --git a/src/Control/Monad/Trans/Compose.hs b/src/Control/Monad/Trans/Compose.hs
--- a/src/Control/Monad/Trans/Compose.hs
+++ b/src/Control/Monad/Trans/Compose.hs
@@ -35,7 +35,6 @@
 
 #if defined(VERSION_mtl)
 import Control.Monad.Accum qualified as Mtl
-import Control.Monad.Accum.OrphanInstances qualified as Mtl ()
 import Control.Monad.Cont.Class qualified as Mtl
 import Control.Monad.Error.Class qualified as Mtl
 import Control.Monad.Reader.Class qualified as Mtl
@@ -64,11 +63,6 @@
 import Control.Monad.Primitive qualified as Primitive
 #endif
 
-#if defined(VERSION_random)
-import Data.Functor.Const qualified as Random
-import System.Random.Stateful qualified as Random
-#endif
-
 #if defined(VERSION_resourcet)
 import Control.Monad.Trans.Resource qualified as ResourceT
 #endif
@@ -584,31 +578,6 @@
     , MonadTrans (ComposeT t1 t2)
     ) =>
     Primitive.PrimMonad (ComposeT t1 t2 m)
-#endif
-
-#if defined(VERSION_random)
--- | /OVERLAPPABLE/.
--- Elevated to @(t2 m)@.
-instance {-# OVERLAPPABLE #-} (Random.StatefulGen g (t2 m), MonadTrans t1) => Random.StatefulGen (Random.Const g (ComposeT t1 t2)) (ComposeT t1 t2 m) where
-  uniformWord32R word32 = ComposeT . lift . Random.uniformWord32R word32 . Random.getConst
-  uniformWord64R word64 = ComposeT . lift . Random.uniformWord64R word64 . Random.getConst
-  uniformWord8 = ComposeT . lift . Random.uniformWord8 . Random.getConst
-  uniformWord16 = ComposeT . lift . Random.uniformWord16 . Random.getConst
-  uniformWord32 = ComposeT . lift . Random.uniformWord32 . Random.getConst
-  uniformWord64 = ComposeT . lift . Random.uniformWord64 . Random.getConst
-  uniformShortByteString n = ComposeT . lift . Random.uniformShortByteString n . Random.getConst
-
--- | /OVERLAPPABLE/.
--- Elevated to @(t2 m)@.
-instance {-# OVERLAPPABLE #-} (Random.FrozenGen f (t2 m), MonadTrans t1) => Random.FrozenGen (Random.Const f (ComposeT t1 t2)) (ComposeT t1 t2 m) where
-  type MutableGen (Random.Const f (ComposeT t1 t2)) (ComposeT t1 t2 m) = Random.Const (Random.MutableGen f (t2 m)) (ComposeT t1 t2)
-  freezeGen = ComposeT . lift . fmap Random.Const . Random.freezeGen . Random.getConst
-  thawGen = ComposeT . lift . fmap Random.Const . Random.thawGen . Random.getConst
-
--- | /OVERLAPPABLE/.
--- Elevated to @(t2 m)@.
-instance {-# OVERLAPPABLE #-} (Random.RandomGenM g r (t2 m), MonadTrans t1) => Random.RandomGenM (Random.Const g (ComposeT t1 t2)) r (ComposeT t1 t2 m) where
-  applyRandomGenM f = ComposeT . lift . Random.applyRandomGenM f . Random.getConst
 #endif
 
 #if defined(VERSION_resourcet)
diff --git a/src/Control/Monad/Trans/Elevator.hs b/src/Control/Monad/Trans/Elevator.hs
--- a/src/Control/Monad/Trans/Elevator.hs
+++ b/src/Control/Monad/Trans/Elevator.hs
@@ -42,11 +42,6 @@
 import Control.Monad.Primitive qualified as Primitive
 #endif
 
-#if defined(VERSION_random)
-import Data.Functor.Const qualified as Random
-import System.Random.Stateful qualified as Random
-#endif
-
 #if defined(VERSION_resourcet)
 import Control.Monad.Trans.Resource qualified as ResourceT
 #endif
@@ -200,25 +195,6 @@
 instance (Primitive.PrimMonad m, MonadTrans t) => Primitive.PrimMonad (Elevator t m) where
   type PrimState (Elevator t m) = Primitive.PrimState m
   primitive = lift . Primitive.primitive
-#endif
-
-#if defined(VERSION_random)
-instance (Random.StatefulGen g m, MonadTrans t) => Random.StatefulGen (Random.Const g (Elevator t)) (Elevator t m) where
-  uniformWord32R word32 = lift . Random.uniformWord32R word32 . Random.getConst
-  uniformWord64R word64 = lift . Random.uniformWord64R word64 . Random.getConst
-  uniformWord8 = lift . Random.uniformWord8 . Random.getConst
-  uniformWord16 = lift . Random.uniformWord16 . Random.getConst
-  uniformWord32 = lift . Random.uniformWord32 . Random.getConst
-  uniformWord64 = lift . Random.uniformWord64 . Random.getConst
-  uniformShortByteString n = lift . Random.uniformShortByteString n . Random.getConst
-
-instance (Random.FrozenGen f m, MonadTrans t) => Random.FrozenGen (Random.Const f (Elevator t)) (Elevator t m) where
-  type MutableGen (Const f (Elevator t)) (Elevator t m) = Const (Random.MutableGen f m) (Elevator t)
-  freezeGen = lift . fmap Random.Const . Random.freezeGen . Random.getConst
-  thawGen = lift . fmap Random.Const . Random.thawGen . Random.getConst
-
-instance (Random.RandomGenM g r m, MonadTrans t) => Random.RandomGenM (Random.Const g (Elevator t)) r (Elevator t m) where
-  applyRandomGenM f = lift . Random.applyRandomGenM f . Random.getConst
 #endif
 
 #if defined(VERSION_resourcet)
