diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 0.4.15
+
+* Support proxy authentication in environment variables [#129](https://github.com/snoyberg/http-client/issues/129)
+
 ## 0.4.14
 
 * Ignore empty `http_proxy` [#128](https://github.com/snoyberg/http-client/pull/128)
diff --git a/Network/HTTP/Client/Manager.hs b/Network/HTTP/Client/Manager.hs
--- a/Network/HTTP/Client/Manager.hs
+++ b/Network/HTTP/Client/Manager.hs
@@ -54,6 +54,7 @@
 import Network.HTTP.Client.Types
 import Network.HTTP.Client.Connection
 import Network.HTTP.Client.Headers (parseStatusHeaders)
+import Network.HTTP.Client.Request (username, password, applyBasicProxyAuth)
 import Control.Concurrent.MVar (MVar, takeMVar, tryPutMVar, newEmptyMVar)
 import System.Environment (getEnvironment)
 import qualified Network.URI as U
@@ -490,7 +491,7 @@
         Just ""  -> return noEnvProxy
         Just str -> do
             let invalid = throwIO $ InvalidProxyEnvironmentVariable name (T.pack str)
-            p <- maybe invalid return $ do
+            (p, muserpass) <- maybe invalid return $ do
                 uri <- case U.parseURI str of
                     Just u | U.uriScheme u == "http:" -> return u
                     _ -> U.parseURI $ "http://" ++ str
@@ -501,7 +502,13 @@
                 guard $ null $ U.uriFragment uri
 
                 auth <- U.uriAuthority uri
-                guard $ null $ U.uriUserInfo auth
+                let muserpass =
+                        if null authInfo
+                            then Nothing
+                            else Just ( S8.pack $ username authInfo
+                                      , S8.pack $ password authInfo
+                                      )
+                    authInfo = U.uriUserInfo auth
 
                 port <-
                     case U.uriPort auth of
@@ -512,8 +519,10 @@
                                 _ -> Nothing
                         _ -> Nothing
 
-                Just $ Proxy (S8.pack $ U.uriRegName auth) port
-            return $ \req -> req { proxy = Just p }
+                Just $ (Proxy (S8.pack $ U.uriRegName auth) port, muserpass)
+            return $ \req ->
+                maybe id (uncurry applyBasicProxyAuth) muserpass
+                req { proxy = Just p }
     where noEnvProxy = case eh of
             EHFromRequest -> id
             EHNoProxy     -> \req -> req { proxy = Nothing }
diff --git a/http-client.cabal b/http-client.cabal
--- a/http-client.cabal
+++ b/http-client.cabal
@@ -1,5 +1,5 @@
 name:                http-client
-version:             0.4.14
+version:             0.4.15
 synopsis:            An HTTP client engine, intended as a base layer for more user-friendly packages.
 description:         Hackage documentation generation is not reliable. For up to date documentation, please see: <http://www.stackage.org/package/http-client>.
 homepage:            https://github.com/snoyberg/http-client
