Index: Makefile
===================================================================
--- Makefile	(revision d40ffbb3d017230b7180b90b3da0475264990731)
+++ Makefile	(revision e3c3172de8f6c4741dd8c769b65f646f797b7da8)
@@ -66,5 +66,9 @@
 
 config_default: $(CONFIG_RULES)
+ifeq ($(HANDS_OFF),y)
+	$(CONFIG) $< hands-off $(PROFILE)
+else
 	$(CONFIG) $< default $(PROFILE)
+endif
 
 config: $(CONFIG_RULES)
Index: tools/config.py
===================================================================
--- tools/config.py	(revision d40ffbb3d017230b7180b90b3da0475264990731)
+++ tools/config.py	(revision e3c3172de8f6c4741dd8c769b65f646f797b7da8)
@@ -495,9 +495,25 @@
 		read_config(MAKEFILE, config)
 	
-	# Default mode: only check values and regenerate configuration files
+	# Default mode: check values and regenerate configuration files
 	if (len(sys.argv) >= 3) and (sys.argv[2] == 'default'):
 		if (infer_verify_choices(config, rules)):
 			create_output(MAKEFILE, MACROS, config, rules)
 			return 0
+	
+	# Hands-off mode: check values and regenerate configuration files,
+	# but no interactive fallback
+	if (len(sys.argv) >= 3) and (sys.argv[2] == 'hands-off'):
+		# We deliberately test sys.argv >= 4 because we do not want
+		# to read implicitly any possible previous run configuration
+		if len(sys.argv) < 4:
+			sys.stderr.write("Configuration error: No presets specified\n")
+			return 2
+		
+		if (infer_verify_choices(config, rules)):
+			create_output(MAKEFILE, MACROS, config, rules)
+			return 0
+		
+		sys.stderr.write("Configuration error: The presets are ambiguous\n")
+		return 1
 	
 	# Check mode: only check configuration
