diff --git a/cabal-dev.cabal b/cabal-dev.cabal
--- a/cabal-dev.cabal
+++ b/cabal-dev.cabal
@@ -1,5 +1,5 @@
 Name:                cabal-dev
-Version:             0.7.2.1
+Version:             0.7.3.1
 Synopsis:            Manage sandboxed Haskell build environments
 
 Description:         cabal-dev is a tool for managing development builds of
@@ -25,7 +25,7 @@
                      @cabal-dev add-source@ also supports importing tarballs
                      into a local cabal repository.
                      .
-                     This tool has been tested with GHC 6.8-6.12.
+                     This tool has been tested with GHC 6.8-7.0.1.
 
 License:             BSD3
 License-file:        LICENSE
@@ -117,7 +117,7 @@
       bytestring >= 0.9 && < 0.10,
       directory >= 1.0 && < 1.3,
       filepath >= 1.1 && < 1.3,
-      Cabal >= 1.8.0.6 && < 1.11,
+      Cabal >= 1.10.0.0 && < 1.11,
       HTTP >= 4000.0.9 && < 4000.2,
       mtl >= 1.1 && < 2.1,
       network >= 2.2 && < 2.4,
@@ -137,8 +137,9 @@
     Distribution.Dev.Sandbox,
     Distribution.Dev.Command,
     Distribution.Dev.Flags,
+    Distribution.Dev.Ghci,
     Distribution.Dev.InvokeCabal,
     Distribution.Dev.InstallDependencies,
     Distribution.Dev.RewriteCabalConfig,
-    Distribution.Dev.InitPkgDb
+    Distribution.Dev.InitPkgDb,
     Distribution.Dev.Utilities
diff --git a/src/Distribution/Dev/Ghci.hs b/src/Distribution/Dev/Ghci.hs
new file mode 100644
--- /dev/null
+++ b/src/Distribution/Dev/Ghci.hs
@@ -0,0 +1,59 @@
+module Distribution.Dev.Ghci
+   ( actions )
+where
+
+import Distribution.Dev.Command ( CommandActions(..), CommandResult(..) )
+import Distribution.Dev.Flags ( Config, getVerbosity, getSandbox )
+import Distribution.Dev.InitPkgDb ( initPkgDb )
+import Distribution.Dev.Sandbox ( pkgConf, Sandbox, KnownVersion, resolveSandbox )
+import Distribution.Simple.Program ( Program( programFindVersion
+                                            )
+                                   , ConfiguredProgram( programDefaultArgs )
+                                   , emptyProgramConfiguration
+                                   , findProgramVersion
+                                   , runProgram
+                                   , requireProgram
+                                   , simpleProgram
+                                   , programVersion
+                                   , programLocation
+                                   , locationPath
+                                   )
+import Distribution.Simple.Utils ( debug )
+import Distribution.Text ( display )
+import System.Console.GetOpt  ( OptDescr )
+import System.FilePath ((</>))
+
+actions :: CommandActions
+actions = CommandActions
+              { cmdDesc = "Run ghci with the proper package database."
+              , cmdRun = \cfg _ args -> invokeGhci cfg args
+              , cmdOpts = [] :: [OptDescr ()]
+              , cmdPassFlags = True
+              }
+
+ghciArgs :: Sandbox KnownVersion -> [String]
+ghciArgs sandbox = [ "-package-conf", pkgConf sandbox
+                   , "-no-user-package-conf"
+                   ]
+
+configureGhci :: Config -> IO ConfiguredProgram
+configureGhci cfg = do (ghci, _) <- requireProgram (getVerbosity cfg) ghciProgram emptyProgramConfiguration
+                       sandbox <- initPkgDb (getVerbosity cfg) =<< (resolveSandbox cfg)
+                       return ghci { programDefaultArgs = ghciArgs sandbox }
+
+-- XXX This invocation pattern is repeated in at least two places (see InvokeCabal)
+invokeGhci :: Config -> [String] -> IO CommandResult
+invokeGhci cfg args = do let v = getVerbosity cfg
+                         ghci <- configureGhci cfg
+                         debug v $ concat [ "Using ghci "
+                                          , maybe "(unknown version)" display $ programVersion ghci
+                                          , " at "
+                                          , show (locationPath $ programLocation ghci)
+                                          ]
+                         runProgram v ghci args
+                         return CommandOk
+
+ghciProgram :: Program
+ghciProgram = (simpleProgram "ghci") {
+    programFindVersion = findProgramVersion "--numeric-version" id
+  }
diff --git a/src/Distribution/Dev/InitPkgDb.hs b/src/Distribution/Dev/InitPkgDb.hs
--- a/src/Distribution/Dev/InitPkgDb.hs
+++ b/src/Distribution/Dev/InitPkgDb.hs
@@ -65,6 +65,7 @@
     where
       res = do
         v <- programVersion p
+        -- XXX Needs updated for ghc 7
         let typ | v < Version [6, 10] [] = GHC_6_8_Db $ locationPath $
                                            programLocation p
                 | v < Version [6, 12] [] = GHC_6_10_Db
diff --git a/src/Distribution/Dev/InvokeCabal.hs b/src/Distribution/Dev/InvokeCabal.hs
--- a/src/Distribution/Dev/InvokeCabal.hs
+++ b/src/Distribution/Dev/InvokeCabal.hs
@@ -128,6 +128,7 @@
     where
       p = simpleProgram "ghc-pkg-6_8-compat"
 
+-- XXX This is duplicated in Setup.hs
 cabalProgram :: Program
 cabalProgram =
     (simpleProgram "cabal") { programFindVersion =
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -18,6 +18,7 @@
                               , getVerbosity, Config
                               )
 import qualified Distribution.Dev.AddSource as AddSource
+import qualified Distribution.Dev.Ghci as Ghci
 import qualified Distribution.Dev.InvokeCabal as InvokeCabal
 import qualified Distribution.Dev.InstallDependencies as InstallDeps
 import Paths_cabal_dev ( version )
@@ -25,6 +26,7 @@
 allCommands :: [(String, CommandActions)]
 allCommands = [ ("add-source", AddSource.actions)
               , ("install-deps", InstallDeps.actions)
+              , ("ghci", Ghci.actions)
               , cabal "build"
               , cabal "clean"
               , cabal "configure"
