diff --git a/cli/completer.go b/cli/completer.go
index ce2b7e2..650c84b 100644
--- a/cli/completer.go
+++ b/cli/completer.go
@@ -355,23 +355,28 @@
 				return nil, 0
 			}
 
-			autocompleteAPIArgs := []string{"listall=true"}
-			if autocompleteAPI.Noun == "templates" {
-				autocompleteAPIArgs = append(autocompleteAPIArgs, "templatefilter=executable")
+			completeArgs := t.Config.Core.AutoComplete
+			autocompleteAPIArgs := []string{}
+			argOptions := []argOption{}
+			if completeArgs {
+				autocompleteAPIArgs = []string{"listall=true"}
+				if autocompleteAPI.Noun == "templates" {
+					autocompleteAPIArgs = append(autocompleteAPIArgs, "templatefilter=executable")
+				}
+
+				if apiFound.Name != "provisionCertificate" && autocompleteAPI.Name == "listHosts" {
+					autocompleteAPIArgs = append(autocompleteAPIArgs, "type=Routing")
+				}
+
+				spinner := t.Config.StartSpinner("fetching options, please wait...")
+				request := cmd.NewRequest(nil, completer.Config, nil)
+				response, _ := cmd.NewAPIRequest(request, autocompleteAPI.Name, autocompleteAPIArgs, false)
+				t.Config.StopSpinner(spinner)
+
+				hasID := strings.HasSuffix(arg.Name, "id=") || strings.HasSuffix(arg.Name, "ids=")
+				argOptions = buildArgOptions(response, hasID)
 			}
 
-			if apiFound.Name != "provisionCertificate" && autocompleteAPI.Name == "listHosts" {
-				autocompleteAPIArgs = append(autocompleteAPIArgs, "type=Routing")
-			}
-
-			spinner := t.Config.StartSpinner("fetching options, please wait...")
-			request := cmd.NewRequest(nil, completer.Config, nil)
-			response, _ := cmd.NewAPIRequest(request, autocompleteAPI.Name, autocompleteAPIArgs, false)
-			t.Config.StopSpinner(spinner)
-
-			hasID := strings.HasSuffix(arg.Name, "id=") || strings.HasSuffix(arg.Name, "ids=")
-			argOptions := buildArgOptions(response, hasID)
-
 			filteredOptions := []argOption{}
 			if len(argOptions) > 0 {
 				sort.Slice(argOptions, func(i, j int) bool {
diff --git a/cmd/set.go b/cmd/set.go
index fef9b3f..c426948 100644
--- a/cmd/set.go
+++ b/cmd/set.go
@@ -31,19 +31,20 @@
 		Name: "set",
 		Help: "Configures options for cmk",
 		SubCommands: map[string][]string{
-			"prompt":     {"🐵", "🐱", "random"},
-			"asyncblock": {"true", "false"},
-			"timeout":    {"600", "1800", "3600"},
-			"output":     config.GetOutputFormats(),
-			"profile":    {},
-			"url":        {},
-			"username":   {},
-			"password":   {},
-			"domain":     {},
-			"apikey":     {},
-			"secretkey":  {},
-			"verifycert": {"true", "false"},
-			"debug":      {"true", "false"},
+			"prompt":       {"🐵", "🐱", "random"},
+			"asyncblock":   {"true", "false"},
+			"timeout":      {"600", "1800", "3600"},
+			"output":       config.GetOutputFormats(),
+			"profile":      {},
+			"url":          {},
+			"username":     {},
+			"password":     {},
+			"domain":       {},
+			"apikey":       {},
+			"secretkey":    {},
+			"verifycert":   {"true", "false"},
+			"debug":        {"true", "false"},
+			"autocomplete": {"true", "false"},
 		},
 		Handle: func(r *Request) error {
 			if len(r.Args) < 1 {
diff --git a/config/config.go b/config/config.go
index 5141df6..cca7913 100644
--- a/config/config.go
+++ b/config/config.go
@@ -56,12 +56,13 @@
 
 // Core block describes common options for the CLI
 type Core struct {
-	Prompt      string `ini:"prompt"`
-	AsyncBlock  bool   `ini:"asyncblock"`
-	Timeout     int    `ini:"timeout"`
-	Output      string `ini:"output"`
-	VerifyCert  bool   `ini:"verifycert"`
-	ProfileName string `ini:"profile"`
+	Prompt       string `ini:"prompt"`
+	AsyncBlock   bool   `ini:"asyncblock"`
+	Timeout      int    `ini:"timeout"`
+	Output       string `ini:"output"`
+	VerifyCert   bool   `ini:"verifycert"`
+	ProfileName  string `ini:"profile"`
+	AutoComplete bool   `ini:"autocomplete"`
 }
 
 // Config describes CLI config file and default options
@@ -141,6 +142,7 @@
 		Output:      JSON,
 		VerifyCert:  true,
 		ProfileName: "localcloud",
+		AutoComplete: true,
 	}
 }
 
@@ -251,6 +253,9 @@
 		// Update
 		core := new(Core)
 		conf.Section(ini.DEFAULT_SECTION).MapTo(core)
+		if (!conf.Section(ini.DEFAULT_SECTION).HasKey("autocomplete")) {
+			core.AutoComplete = true
+		}
 		cfg.Core = core
 	}
 
@@ -340,6 +345,8 @@
 		} else {
 			DisableDebugging()
 		}
+	case "autocomplete":
+		c.Core.AutoComplete = value == "true"
 	default:
 		fmt.Println("Invalid option provided:", key)
 		return
