diff --git a/pkg/agent/loop.go b/pkg/agent/loop.go index f3dd94090..3173793dd 100644 --- a/pkg/agent/loop.go +++ b/pkg/agent/loop.go @@ -468,6 +468,19 @@ func (al *AgentLoop) runLLMIteration(ctx context.Context, messages []providers.M "iteration": iteration, "content_chars": len(finalContent), }) + // If content is empty and we just processed tool results (iteration > 1), + // retry once by adding a nudge message to prompt the model to respond. + if strings.TrimSpace(finalContent) == "" && iteration > 1 && iteration < al.maxIterations { + logger.InfoCF("agent", "Empty response after tool use, retrying with nudge", + map[string]interface{}{ + "iteration": iteration, + }) + messages = append(messages, providers.Message{ + Role: "user", + Content: "Please provide your response based on the tool results above.", + }) + continue + } break }