diff --git a/hls-hlint-plugin.cabal b/hls-hlint-plugin.cabal
--- a/hls-hlint-plugin.cabal
+++ b/hls-hlint-plugin.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.4
 name:          hls-hlint-plugin
-version:       2.1.0.0
+version:       2.2.0.0
 synopsis:      Hlint integration plugin with Haskell Language Server
 description:
   Please see the README on GitHub at <https://github.com/haskell/haskell-language-server#readme>
@@ -45,10 +45,10 @@
     , extra
     , filepath
     , ghc-exactprint        >=0.6.3.4
-    , ghcide                == 2.1.0.0
+    , ghcide                == 2.2.0.0
     , hashable
     , hlint                 < 3.7
-    , hls-plugin-api        == 2.1.0.0
+    , hls-plugin-api        == 2.2.0.0
     , lens
     , lsp
     , mtl
@@ -89,7 +89,7 @@
     , filepath
     , hls-hlint-plugin
     , hls-plugin-api
-    , hls-test-utils      == 2.1.0.0
+    , hls-test-utils      == 2.2.0.0
     , lens
     , lsp-types
     , row-types
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -121,7 +121,7 @@
         contents <- skipManyTill anyMessage $ getDocumentEdit doc
         liftIO $ contents @?= "main = undefined\nfoo x = x\n"
 
-    , testCase "falls back to pre 3.8 code actions" $ runSessionWithServerAndCaps hlintPlugin noLiteralCaps "test/testdata" $ do
+    , testCase "falls back to pre 3.8 code actions" $ runSessionWithServerAndCaps def hlintPlugin noLiteralCaps "test/testdata" $ do
         doc <- openDoc "Base.hs" "haskell"
 
         _ <- waitForDiagnosticsFromSource doc "hlint"
@@ -303,6 +303,7 @@
 configTests = testGroup "hlint plugin config" [
 
     testCase "changing hlint plugin configuration enables or disables hlint diagnostics" $ runHlintSession "" $ do
+        setIgnoringConfigurationRequests False
         enableHlint
 
         doc <- openDoc "Base.hs" "haskell"
@@ -315,19 +316,21 @@
         liftIO $ noHlintDiagnostics diags'
 
     , testCase "adding hlint flags to plugin configuration removes hlint diagnostics" $ runHlintSession "" $ do
+        setIgnoringConfigurationRequests False
         enableHlint
 
         doc <- openDoc "Base.hs" "haskell"
         testHlintDiagnostics doc
 
         let config' = hlintConfigWithFlags ["--ignore=Redundant id", "--hint=test-hlint-config.yaml"]
-        sendConfigurationChanged (toJSON config')
+        setHlsConfig config'
 
         diags' <- waitForDiagnosticsFrom doc
 
         liftIO $ noHlintDiagnostics diags'
 
     , testCase "adding hlint flags to plugin configuration adds hlint diagnostics" $ runHlintSession "" $ do
+        setIgnoringConfigurationRequests False
         enableHlint
 
         doc <- openDoc "Generalise.hs" "haskell"
@@ -335,7 +338,7 @@
         expectNoMoreDiagnostics 3 doc "hlint"
 
         let config' = hlintConfigWithFlags ["--with-group=generalise"]
-        sendConfigurationChanged (toJSON config')
+        setHlsConfig config'
 
         diags' <- waitForDiagnosticsFromSource doc "hlint"
         d <- liftIO $ inspectDiagnostic diags' ["Use <>"]
@@ -350,8 +353,7 @@
 testDir = "test/testdata"
 
 runHlintSession :: FilePath -> Session a -> IO a
-runHlintSession subdir  =
-    failIfSessionTimeout . runSessionWithServerAndCaps hlintPlugin codeActionNoResolveCaps (testDir </> subdir)
+runHlintSession subdir = failIfSessionTimeout . runSessionWithServerAndCaps def hlintPlugin codeActionNoResolveCaps (testDir </> subdir)
 
 noHlintDiagnostics :: [Diagnostic] -> Assertion
 noHlintDiagnostics diags =
@@ -373,10 +375,10 @@
     unObject _            = undefined
 
 enableHlint :: Session ()
-enableHlint = sendConfigurationChanged $ toJSON $ def { Plugin.plugins = Map.fromList [ ("hlint", def { Plugin.plcGlobalOn = True }) ] }
+enableHlint = setHlsConfig $ def { Plugin.plugins = Map.fromList [ ("hlint", def { Plugin.plcGlobalOn = True }) ] }
 
 disableHlint :: Session ()
-disableHlint = sendConfigurationChanged $ toJSON $ def { Plugin.plugins = Map.fromList [ ("hlint", def { Plugin.plcGlobalOn = False }) ] }
+disableHlint = setHlsConfig $ def { Plugin.plugins = Map.fromList [ ("hlint", def { Plugin.plcGlobalOn = False }) ] }
 
 -- We have two main code paths in the plugin depending on how hlint interacts with ghc:
 -- * One when hlint uses ghc-lib (all ghc versions but the last version supported by hlint)
@@ -439,7 +441,7 @@
 
 setupGoldenHlintTest :: TestName -> FilePath -> (TextDocumentIdentifier -> Session ()) -> TestTree
 setupGoldenHlintTest testName path =
-  goldenWithHaskellAndCaps codeActionNoResolveCaps hlintPlugin testName testDir path "expected" "hs"
+  goldenWithHaskellAndCaps def codeActionNoResolveCaps hlintPlugin testName testDir path "expected" "hs"
 
 ignoreHintGoldenResolveTest :: TestName -> FilePath -> Point -> T.Text -> TestTree
 ignoreHintGoldenResolveTest testCaseName goldenFilename point hintName =
@@ -460,4 +462,4 @@
 
 setupGoldenHlintResolveTest :: TestName -> FilePath -> (TextDocumentIdentifier -> Session ()) -> TestTree
 setupGoldenHlintResolveTest testName path =
-  goldenWithHaskellAndCaps codeActionResolveCaps hlintPlugin testName testDir path "expected" "hs"
+  goldenWithHaskellAndCaps def codeActionResolveCaps hlintPlugin testName testDir path "expected" "hs"
