diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,18 @@
 # Changelog
 
+## 0.9.0.1 — 2026-09-15
+
+### Other Changes
+
+- Raise the `effectful` upper bound from `<2.7` to `<2.8` so downstream
+  packages can move to effectful 2.7. Built and tested against effectful
+  2.7.1.0 / effectful-core 2.7.1.2 on GHC 9.12.4; no source changes were
+  needed. Nothing here uses the APIs 2.7 deprecated, renamed, or removed:
+  `withLiftMap`, `stateM`/`modifyM`, the `*StateMVar` functions,
+  `Effectful.Internal.MTL`, `SharedSuffix`, `KnownEffects`, or the `LocalEnv`
+  `handlerEs` parameter. The lower bound stays at 2.6.1 so consumers are not
+  forced to upgrade.
+
 ## 0.9.0.0 — 2026-08-10
 
 ### Breaking Changes
diff --git a/shibuya-core.cabal b/shibuya-core.cabal
--- a/shibuya-core.cabal
+++ b/shibuya-core.cabal
@@ -1,6 +1,6 @@
 cabal-version: 3.12
 name: shibuya-core
-version: 0.9.0.0
+version: 0.9.0.1
 synopsis: Supervised queue processing framework for Haskell
 description:
   A supervised queue processing framework inspired by Broadway (Elixir).
@@ -72,7 +72,7 @@
     bytestring ^>=0.12.2.0,
     containers ^>=0.7,
     deepseq ^>=1.5,
-    effectful ^>=2.6.1.0,
+    effectful >=2.6.1 && <2.8,
     hs-opentelemetry-api ^>=1.0,
     hs-opentelemetry-propagator-w3c ^>=1.0,
     hs-opentelemetry-semantic-conventions ^>=1.40,
