diff --git a/xmrstak/cli/cli-miner.cpp b/xmrstak/cli/cli-miner.cpp
index 546d226085f29db63bcd3e848c89f4ad59aeb443..3c3303eba50b9d7ba44b4f2b33cc76e488a68df3 100644
--- a/xmrstak/cli/cli-miner.cpp
+++ b/xmrstak/cli/cli-miner.cpp
@@ -87,6 +87,7 @@ void help()
 	cout<<" "<<endl;
 	cout<<"The Following options temporary overwrites the config entries of \nthe pool with the highest weight:"<<endl;
 	cout<<"  -o, --url URL         pool url and port, e.g. pool.usxmrpool.com:3333"<<endl;
+	cout<<"  -O, --tls-url URL     TLS pool url and port, e.g. pool.usxmrpool.com:10443"<<endl;
 	cout<<"  -u, --user USERNAME   pool user name or wallet address"<<endl;
 	cout<<"  -p, --pass PASSWD     pool password, in the most cases x or empty \"\""<<endl;
 	cout<<" \n"<<endl;
@@ -162,6 +163,15 @@ std::string get_multipool_entry(bool& final)
 		", \"tls_fingerprint\" : \"\", \"pool_weight\" : " + std::to_string(pool_weight) + " },\n";
 }
 
+inline void prompt_once(bool& prompted)
+{
+	if(!prompted)
+	{
+		std::cout<<"Please enter:"<<std::endl;
+		prompted = true;
+	}
+}
+
 void do_guided_config(bool userSetPasswd)
 {
 	using namespace xmrstak;
@@ -173,10 +183,13 @@ void do_guided_config(bool userSetPasswd)
 
 	configEditor configTpl{};
 	configTpl.set(std::string(tpl));
-	std::cout<<"Please enter:"<<std::endl;
+	bool prompted = false;
+	
 	auto& currency = params::inst().currency;
 	if(currency.empty())
 	{
+		prompt_once(prompted);
+
 		std::string tmp;
 #if defined(CONF_NO_AEON)
 		tmp = "monero";
@@ -196,6 +209,8 @@ void do_guided_config(bool userSetPasswd)
 	bool userSetPool = true;
 	if(pool.empty())
 	{
+		prompt_once(prompted);
+
 		userSetPool = false;
 		if(currency == "monero")
 			std::cout<<"- Pool address: e.g. pool.usxmrpool.com:3333"<<std::endl;
@@ -207,6 +222,8 @@ void do_guided_config(bool userSetPasswd)
 	auto& userName = params::inst().poolUsername;
 	if(userName.empty())
 	{
+		prompt_once(prompted);
+
 		std::cout<<"- Username (wallet address or pool login):"<<std::endl;
 		std::cin >> userName;
 	}
@@ -214,18 +231,35 @@ void do_guided_config(bool userSetPasswd)
 	auto& passwd = params::inst().poolPasswd;
 	if(passwd.empty() && (!userSetPasswd))
 	{
+		prompt_once(prompted);
+
 		// clear everything from stdin to allow an empty password
 		std::cin.clear(); std::cin.ignore(INT_MAX,'\n');
 		std::cout<<"- Password (mostly empty or x):"<<std::endl;
 		getline(std::cin, passwd);
 	}
 
+	bool tls;
 #ifdef CONF_NO_TLS
-	bool tls = false;
+	tls = false;
 #else
-	bool tls = read_yes_no("- Does this pool port support TLS/SSL? Use no if unknown. (y/N)");
+	if(!userSetPool)
+	{
+		prompt_once(prompted);
+		tls = read_yes_no("- Does this pool port support TLS/SSL? Use no if unknown. (y/N)");
+	}
+	else
+		tls = params::inst().poolUseTls;
 #endif
-	bool nicehash = read_yes_no("- Do you want to use nicehash on this pool? (y/n)");
+
+	bool nicehash;
+	if(!userSetPool)
+	{
+		prompt_once(prompted);
+		nicehash = read_yes_no("- Do you want to use nicehash on this pool? (y/n)");
+	}
+	else
+		nicehash = false;
 
 	bool multipool;
 	if(!userSetPool)
@@ -428,6 +462,19 @@ int main(int argc, char *argv[])
 				return 1;
 			}
 			params::inst().poolURL = argv[i];
+			params::inst().poolUseTls = false;
+		}
+		else if(opName.compare("-O") == 0 || opName.compare("--tls-url") == 0)
+		{
+			++i;
+			if( i >=argc )
+			{
+				printer::inst()->print_msg(L0, "No argument for parameter '-O/--tls-url' given");
+				win_exit();
+				return 1;
+			}
+			params::inst().poolURL = argv[i];
+			params::inst().poolUseTls = true;
 		}
 		else if(opName.compare("-u") == 0 || opName.compare("--user") == 0)
 		{
diff --git a/xmrstak/params.hpp b/xmrstak/params.hpp
index 2aedc38c4e99633566524b4b5fdabe25d6a38241..8f1056c160df813f65c8ae2059f5e2036e4b3a6f 100644
--- a/xmrstak/params.hpp
+++ b/xmrstak/params.hpp
@@ -24,6 +24,7 @@ struct params
 	bool useNVIDIA;
 	bool useCPU;
 
+	bool poolUseTls;
 	std::string poolURL;
 	std::string poolPasswd;
 	std::string poolUsername;