diff --git a/cli/cmd/login.go b/cli/cmd/login.go
index e1c8fdeb49fea104d263dbcc81dfe07f81eb63a7..19c48e60a0c522f7b67adca66d28d203aa28c635 100644
--- a/cli/cmd/login.go
+++ b/cli/cmd/login.go
@@ -67,16 +67,21 @@ var loginCmd = &cobra.Command{
 		spinner.Success("Authentication for ", nbUserName, " was successful.")
 
 		userToken = resp.Token
+
+		viper.Set("USER_TOKEN", userToken)
+
+		err = viper.WriteConfig()
+		if err != nil {
+			pterm.Error.Println(err)
+			return err
+		}
+
 		pterm.Info.Println("Authentication-User-Token:", userToken)
 
 		return nil
 	},
 }
 
-var nbUserName string
-var nbUserPwd string
-var controllerAPIEndpoint string
-
 func init() {
 	rootCmd.AddCommand(loginCmd)
 
diff --git a/cli/cmd/root.go b/cli/cmd/root.go
index 00206c1fa3dadd7469ed0ee8360bb3aa822aeb40..f64c570325085908932d9457966d004d1685a541 100644
--- a/cli/cmd/root.go
+++ b/cli/cmd/root.go
@@ -48,6 +48,10 @@ var loglevel string
 var grpcPort string
 var cliPnd string
 var cliSbi string
+var controllerAPIEndpoint string
+var nbUserName string
+var nbUserPwd string
+var userToken string
 
 var pndAdapter *adapter.PndAdapter
 
@@ -120,10 +124,9 @@ func initConfig() {
 		}
 	}
 
-	viper.SetDefault("socket", ":"+grpcPort)
-
 	cliPnd = viper.GetString("CLI_PND")
 	cliSbi = viper.GetString("CLI_SBI")
+	userToken = viper.GetString("USER_TOKEN")
 
 	ll := viper.GetString("GOSDN_LOG")
 	if ll != "" {
diff --git a/cli/cmd/utils.go b/cli/cmd/utils.go
index 0e5df4a663be835a9701806ff9bff5e1d6b07a02..27478a991306410ea83e34c76728139d5a07cc76 100644
--- a/cli/cmd/utils.go
+++ b/cli/cmd/utils.go
@@ -39,8 +39,6 @@ import (
 	"google.golang.org/grpc/metadata"
 )
 
-var userToken string
-
 func checkIPPort(string) error {
 	// check if address is in the format <IP>:<port>
 	ip, _, err := net.SplitHostPort(address)