diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # ChangeLog hie-bios
 
+## 2023-11-13 - 0.12.1
+
+* 9.8 support [#417](https://github.com/haskell/hie-bios/pull/417)
+
 ## 2023-03-13 - 0.12.0
 
 * 9.6 support [#392](https://github.com/haskell/hie-bios/pull/392)
diff --git a/hie-bios.cabal b/hie-bios.cabal
--- a/hie-bios.cabal
+++ b/hie-bios.cabal
@@ -1,6 +1,6 @@
 Cabal-Version:          2.2
 Name:                   hie-bios
-Version:                0.12.0
+Version:                0.12.1
 Author:                 Matthew Pickering <matthewtpickering@gmail.com>
 Maintainer:             Matthew Pickering <matthewtpickering@gmail.com>
 License:                BSD-3-Clause
@@ -150,11 +150,11 @@
   autogen-modules:      Paths_hie_bios
   Build-Depends:
                         base                 >= 4.8 && < 5,
-                        aeson                >= 1.4.4 && < 2.2,
+                        aeson                >= 1.4.4 && < 2.3,
                         base16-bytestring    >= 0.1.1 && < 1.1,
-                        bytestring           >= 0.10.8 && < 0.12,
+                        bytestring           >= 0.10.8 && < 0.13,
                         co-log-core          ^>= 0.3.0,
-                        deepseq              >= 1.4.3 && < 1.5,
+                        deepseq              >= 1.4.3 && < 1.6,
                         exceptions           ^>= 0.10,
                         cryptohash-sha1      >= 0.11.100 && < 0.12,
                         directory            >= 1.3.0 && < 1.4,
@@ -162,12 +162,12 @@
                         time                 >= 1.8.0 && < 1.13,
                         extra                >= 1.6.14 && < 1.8,
                         prettyprinter        ^>= 1.6 || ^>= 1.7.0,
-                        ghc                  >= 8.6.1 && < 9.7,
+                        ghc                  >= 8.6.1 && < 9.9,
                         transformers         >= 0.5.2 && < 0.7,
                         temporary            >= 1.2 && < 1.4,
                         template-haskell,
-                        text                 >= 1.2.3 && < 2.1,
-                        unix-compat          >= 0.5.1 && < 0.7,
+                        text                 >= 1.2.3 && < 2.2,
+                        unix-compat          >= 0.5.1 && < 0.8,
                         unordered-containers >= 0.2.9 && < 0.3,
                         yaml                 >= 0.10.0 && < 0.12,
                         file-embed           >= 0.0.11 && < 1,
diff --git a/src/HIE/Bios/Ghc/Gap.hs b/src/HIE/Bios/Ghc/Gap.hs
--- a/src/HIE/Bios/Ghc/Gap.hs
+++ b/src/HIE/Bios/Ghc/Gap.hs
@@ -158,6 +158,11 @@
 import qualified GhcMake as G
 #endif
 
+#if __GLASGOW_HASKELL__ >= 907
+import GHC.Types.Error (mkUnknownDiagnostic, Messages)
+import GHC.Driver.Errors.Types (DriverMessage)
+#endif
+
 ghcVersion :: String
 ghcVersion = VERSION_ghc
 
@@ -169,8 +174,11 @@
 homeUnitId_ = homeUnitId
 #endif
 
-#if __GLASGOW_HASKELL__ >= 904
+#if __GLASGOW_HASKELL__ >= 907
 load' :: GhcMonad m => Maybe G.ModIfaceCache -> LoadHowMuch -> Maybe Messager -> ModuleGraph -> m SuccessFlag
+load' mhmi_cache how_much = G.load' mhmi_cache how_much mkUnknownDiagnostic
+#elif __GLASGOW_HASKELL__ >= 904
+load' :: GhcMonad m => Maybe G.ModIfaceCache -> LoadHowMuch -> Maybe Messager -> ModuleGraph -> m SuccessFlag
 load' = G.load'
 #else
 load' :: GhcMonad m => a -> LoadHowMuch -> Maybe G.Messager -> ModuleGraph -> m SuccessFlag
@@ -474,7 +482,12 @@
     => Logger
     -> DynFlags
     -> [G.Located String]
-    -> m (DynFlags, [G.Located String], [CmdLine.Warn])
+    -> m (DynFlags, [G.Located String]
+#if __GLASGOW_HASKELL__ >= 907
+          , Messages DriverMessage)
+#else
+          , [CmdLine.Warn])
+#endif
 #if __GLASGOW_HASKELL__ >= 902
 parseDynamicFlags = G.parseDynamicFlags
 #else
