diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -6,6 +6,10 @@
 
 # Revision history for haskell-amqp-utils
 
+## 0.6.9.0  -- 2026-07-14
+
+* adapt to magic-2.0.0
+
 ## 0.6.8.0  -- 2026-06-20
 
 * relax upper bounds in preparation for ghc-9.14
diff --git a/agitprop.hs b/agitprop.hs
--- a/agitprop.hs
+++ b/agitprop.hs
@@ -208,12 +208,12 @@
     if (magic a)
       then do
         let firstchunk = if BL.null content then BS.empty else head $ BL.toChunks content
-        m <- magicOpen [MagicMimeType]
+        m <- magicOpen MagicMimeType
         magicLoadDefault m
         t <- BS.useAsCStringLen firstchunk (magicCString m)
-        magicSetFlags m [MagicMimeEncoding]
+        magicSetFlags m MagicMimeEncoding
         e <- BS.useAsCStringLen firstchunk (magicCString m)
-        return (Just (T.pack t), Just (T.pack e))
+        return (Just t, Just e)
       else return ((contenttype a), (contentencoding a))
   now <- getCurrentTime >>= return . floor . utcTimeToPOSIXSeconds
   publishMsg
diff --git a/amqp-utils.cabal b/amqp-utils.cabal
--- a/amqp-utils.cabal
+++ b/amqp-utils.cabal
@@ -4,7 +4,7 @@
 
 name:                amqp-utils
 
-version:             0.6.8.0
+version:             0.6.9.0
 
 synopsis:            AMQP toolset for the command line
 
@@ -83,7 +83,7 @@
                        unix >= 2.8 && < 2.9,
                        filepath >= 1.4 && < 1.6,
                        rawfilepath >= 1.1.1 && < 1.2,
-                       magic >= 1.1 && < 1.2
+                       magic >= 2 && < 3
   if os(linux)
     build-depends:     hinotify >= 0.3.10 && < 0.5
 
