diff --git a/command/agent/agent.go b/command/agent/agent.go
index <HASH>..<HASH> 100644
--- a/command/agent/agent.go
+++ b/command/agent/agent.go
@@ -314,9 +314,18 @@ func (a *Agent) clientConfig() (*clientconfig.Config, error) {
 	if conf == nil {
 		conf = clientconfig.DefaultConfig()
 	}
+
+	// If we are running a server, append both its bind and advertise address so
+	// we are able to at least talk to the local server even if that isn't
+	// configured explicitly. This handles both running server and client on one
+	// host and -dev mode.
+	conf.Servers = a.config.Client.Servers
 	if a.server != nil {
-		conf.RPCHandler = a.server
+		conf.Servers = append(conf.Servers,
+			a.config.Addresses.RPC,
+			a.config.AdvertiseAddrs.RPC)
 	}
+
 	conf.LogOutput = a.logOutput
 	conf.LogLevel = a.config.LogLevel
 	conf.DevMode = a.config.DevMode
@@ -333,7 +342,6 @@ func (a *Agent) clientConfig() (*clientconfig.Config, error) {
 	if a.config.Client.AllocDir != "" {
 		conf.AllocDir = a.config.Client.AllocDir
 	}
-	conf.Servers = a.config.Client.Servers
 	if a.config.Client.NetworkInterface != "" {
 		conf.NetworkInterface = a.config.Client.NetworkInterface
 	}
Do not bypass normal RPC codepath when running both client and server at once