diff --git a/hadrian/src/Settings/Packages.hs b/hadrian/src/Settings/Packages.hs
index 931e92c490aa2147f595b6f00d086f134cdd8f6b..1b37ecbb8f50920f6cdddf230cbe301edbd3fd49 100644
--- a/hadrian/src/Settings/Packages.hs
+++ b/hadrian/src/Settings/Packages.hs
@@ -107,7 +107,16 @@ packageArgs = do
              , compilerStageOption ghcDebugAssertions ? arg "-DDEBUG" ]
 
           , builder (Cabal Flags) ? mconcat
-            [ expr ghcWithInterpreter `cabalFlag` "internal-interpreter"
+            [
+              -- When cross compiling, enable for stage0 to get ghci
+              -- support. But when not cross compiling, disable for
+              -- stage0, otherwise we introduce extra dependencies
+              -- like haskeline etc, and mixing stageBoot/stage0 libs
+              -- can cause extra trouble (e.g. #25406)
+              expr ghcWithInterpreter ?
+                ifM (expr cross)
+                  (arg "internal-interpreter")
+                  (notStage0 `cabalFlag` "internal-interpreter")
             , ifM stage0
                   -- We build a threaded stage 1 if the bootstrapping compiler
                   -- supports it.