diff --git a/spring-ai-modules/pom.xml b/spring-ai-modules/pom.xml
index 94a9814b6426..c3fac6c3fe15 100644
--- a/spring-ai-modules/pom.xml
+++ b/spring-ai-modules/pom.xml
@@ -39,5 +39,6 @@
spring-ai-vector-stores
spring-ai-mcp-annotations
spring-ai-subagent-orchestrator
+ spring-ai-ask-user-question
diff --git a/spring-ai-modules/spring-ai-ask-user-question/pom.xml b/spring-ai-modules/spring-ai-ask-user-question/pom.xml
new file mode 100644
index 000000000000..46c2b94a8af6
--- /dev/null
+++ b/spring-ai-modules/spring-ai-ask-user-question/pom.xml
@@ -0,0 +1,70 @@
+
+
+ 4.0.0
+
+
+ com.baeldung
+ spring-ai-modules
+ 0.0.1
+ ../pom.xml
+
+
+ spring-ai-cli-agent
+ spring-ai-ask-user-question
+ Spring AI AskUserQuestionTool reference implementation
+
+
+
+ org.springframework.ai
+ spring-ai-starter-model-ollama
+
+
+ org.springaicommunity
+ spring-ai-agent-utils
+ 0.10.0
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-dependencies
+ ${spring-boot.version}
+ pom
+ import
+
+
+ org.springframework.ai
+ spring-ai-bom
+ ${spring-ai.version}
+ pom
+ import
+
+
+
+
+
+ 2.0.0
+ 4.1.1
+ 1.5.38
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-ai-modules/spring-ai-ask-user-question/src/main/java/com/baeldung/agent/AgentConfiguration.java b/spring-ai-modules/spring-ai-ask-user-question/src/main/java/com/baeldung/agent/AgentConfiguration.java
new file mode 100644
index 000000000000..a4ff9ab70b8b
--- /dev/null
+++ b/spring-ai-modules/spring-ai-ask-user-question/src/main/java/com/baeldung/agent/AgentConfiguration.java
@@ -0,0 +1,38 @@
+package com.baeldung.agent;
+
+import org.springaicommunity.agent.tools.AskUserQuestionTool;
+import org.springaicommunity.agent.utils.CommandLineQuestionHandler;
+import org.springframework.ai.chat.client.ChatClient;
+import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor;
+import org.springframework.ai.chat.memory.ChatMemory;
+import org.springframework.ai.chat.memory.MessageWindowChatMemory;
+import org.springframework.ai.chat.model.ChatModel;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+class AgentConfiguration {
+
+ @Bean
+ ChatClient chatClient(ChatModel chatModel) {
+ ChatMemory chatMemory = MessageWindowChatMemory.builder()
+ .maxMessages(20)
+ .build();
+
+ return ChatClient.builder(chatModel)
+ .defaultSystem("You are an interactive CLI assistant.\n"
+ + "Be helpful, concise.\n"
+ + "If you need information, a preference or disambiguation from the user,\n"
+ + "Always use an available tool to ask - never ask in ordinary assistant text.\n"
+ + "After receiving the tool result, continue with the response.\n")
+ .defaultTools(
+ AskUserQuestionTool.builder()
+ .questionHandler(new CommandLineQuestionHandler())
+ .build()
+ )
+ .defaultAdvisors(
+ MessageChatMemoryAdvisor.builder(chatMemory).build()
+ )
+ .build();
+ }
+}
\ No newline at end of file
diff --git a/spring-ai-modules/spring-ai-ask-user-question/src/main/java/com/baeldung/agent/Application.java b/spring-ai-modules/spring-ai-ask-user-question/src/main/java/com/baeldung/agent/Application.java
new file mode 100644
index 000000000000..318de18ae181
--- /dev/null
+++ b/spring-ai-modules/spring-ai-ask-user-question/src/main/java/com/baeldung/agent/Application.java
@@ -0,0 +1,11 @@
+package com.baeldung.agent;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class Application {
+ public static void main(String[] args) {
+ SpringApplication.run(Application.class, args);
+ }
+}
\ No newline at end of file
diff --git a/spring-ai-modules/spring-ai-ask-user-question/src/main/java/com/baeldung/agent/ChatLoop.java b/spring-ai-modules/spring-ai-ask-user-question/src/main/java/com/baeldung/agent/ChatLoop.java
new file mode 100644
index 000000000000..13c2d4201daf
--- /dev/null
+++ b/spring-ai-modules/spring-ai-ask-user-question/src/main/java/com/baeldung/agent/ChatLoop.java
@@ -0,0 +1,37 @@
+package com.baeldung.agent;
+
+import java.util.Scanner;
+
+import org.springframework.ai.chat.client.ChatClient;
+import org.springframework.ai.chat.memory.ChatMemory;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.stereotype.Component;
+
+@Component
+class ChatLoop implements CommandLineRunner {
+
+ private final ChatClient chatClient;
+
+ ChatLoop(ChatClient chatClient) {
+ this.chatClient = chatClient;
+ }
+
+ @Override
+ public void run(String... args) {
+ System.out.println("AI Agent (type 'exit' to quit)\n");
+ try (Scanner scanner = new Scanner(System.in)) {
+ while (true) {
+ System.out.print("You: ");
+ String input = scanner.nextLine();
+ if ("exit".equalsIgnoreCase(input.trim())) break;
+
+ String response = chatClient.prompt()
+ .user(input)
+ .advisors(a -> a.param(ChatMemory.CONVERSATION_ID, "session-1"))
+ .call()
+ .content();
+ System.out.println("AI: " + response + "\n");
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/spring-ai-modules/spring-ai-ask-user-question/src/main/resources/application.properties b/spring-ai-modules/spring-ai-ask-user-question/src/main/resources/application.properties
new file mode 100644
index 000000000000..72aee62b49c7
--- /dev/null
+++ b/spring-ai-modules/spring-ai-ask-user-question/src/main/resources/application.properties
@@ -0,0 +1,3 @@
+spring.ai.ollama.base-url=http://localhost:11434
+spring.ai.ollama.chat.options.model=gemma4:e4b-mlx
+logging.level.org.springframework.ai.model.tool=DEBUG
\ No newline at end of file