diff --git a/hls-explicit-imports-plugin.cabal b/hls-explicit-imports-plugin.cabal
--- a/hls-explicit-imports-plugin.cabal
+++ b/hls-explicit-imports-plugin.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.2
 name:               hls-explicit-imports-plugin
-version:            1.1.0.1
+version:            1.2.0.0
 synopsis:           Explicit imports plugin for Haskell Language Server
 description:
   Please see the README on GitHub at <https://github.com/haskell/haskell-language-server#readme>
@@ -15,6 +15,10 @@
   test/testdata/*.hs
   test/testdata/*.yaml
 
+source-repository head
+    type:     git
+    location: https://github.com/haskell/haskell-language-server.git
+
 library
   buildable: True
   exposed-modules:    Ide.Plugin.ExplicitImports
@@ -25,9 +29,9 @@
     , containers
     , deepseq
     , ghc
-    , ghcide                ^>=1.7 || ^>=1.8
+    , ghcide                ^>=1.9
     , hls-graph
-    , hls-plugin-api        ^>=1.4 || ^>=1.5
+    , hls-plugin-api        ^>=1.6
     , lsp
     , text
     , unordered-containers
diff --git a/src/Ide/Plugin/ExplicitImports.hs b/src/Ide/Plugin/ExplicitImports.hs
--- a/src/Ide/Plugin/ExplicitImports.hs
+++ b/src/Ide/Plugin/ExplicitImports.hs
@@ -118,7 +118,7 @@
     -- haskell-lsp provides conversion functions
     | Just nfp <- uriToNormalizedFilePath $ toNormalizedUri _uri = liftIO $
       do
-        mbMinImports <- runAction "" state $ useWithStale MinimalImports nfp
+        mbMinImports <- runAction "MinimalImports" state $ useWithStale MinimalImports nfp
         case mbMinImports of
           -- Implement the provider logic:
           -- for every import, if it's lacking a explicit list, generate a code lens
@@ -212,6 +212,7 @@
         Map.fromList
           [ (realSrcSpanStart l, printOutputable i)
             | L (locA -> RealSrcSpan l _) i <- fromMaybe [] mbMinImports
+            , not (isImplicitPrelude i)
           ]
       res =
         [ (i, Map.lookup (realSrcSpanStart l) importsMap)
@@ -219,7 +220,16 @@
           , RealSrcSpan l _ <- [getLoc i]
         ]
   return ([], MinimalImportsResult res <$ mbMinImports)
+  where
+    isImplicitPrelude :: (Outputable a) => a -> Bool
+    isImplicitPrelude importDecl =
+      T.isPrefixOf implicitPreludeImportPrefix (printOutputable importDecl)
 
+-- | This is the prefix of an implicit prelude import which should be ignored,
+-- when considering the minimal imports rule
+implicitPreludeImportPrefix :: T.Text
+implicitPreludeImportPrefix = "import (implicit) Prelude"
+
 --------------------------------------------------------------------------------
 
 -- | Use the ghc api to extract a minimal, explicit set of imports for this module
@@ -306,7 +316,7 @@
       oneLineText = T.unwords $ T.lines input
       -- Now, split at the max columns, leaving space for the summary text we're going to add
       -- (conservatively assuming we won't need to print a number larger than 100)
-      (prefix, suffix) = T.splitAt (maxColumns - (T.length (summaryText 100))) oneLineText
+      (prefix, suffix) = T.splitAt (maxColumns - T.length (summaryText 100)) oneLineText
       -- We also want to truncate the last item so we get a "clean" break, rather than half way through
       -- something. The conditional here is just because 'breakOnEnd' doesn't give us quite the right thing
       -- if there are actually no commas.
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -15,8 +15,8 @@
 import           System.FilePath            ((<.>), (</>))
 import           Test.Hls
 
-explicitImportsPlugin :: PluginDescriptor IdeState
-explicitImportsPlugin = ExplicitImports.descriptor mempty "explicitImports"
+explicitImportsPlugin :: PluginTestDescriptor ExplicitImports.Log
+explicitImportsPlugin = mkPluginTestDescriptor ExplicitImports.descriptor "explicitImports"
 
 longModule :: T.Text
 longModule = "F" <> T.replicate 80 "o"
