From 90063cf5f0a0704d90c3ce0776d086ae0ffe780f Mon Sep 17 00:00:00 2001 From: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com> Date: Wed, 13 May 2026 09:40:41 -0400 Subject: [PATCH] fix: skip empty assistant turns instead of placeholder space (#560) --- crates/sprout-agent/src/llm.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/crates/sprout-agent/src/llm.rs b/crates/sprout-agent/src/llm.rs index 5aa912756..82b0c803f 100644 --- a/crates/sprout-agent/src/llm.rs +++ b/crates/sprout-agent/src/llm.rs @@ -127,9 +127,11 @@ fn anthropic_body(cfg: &Config, history: &[HistoryItem], tools: &[ToolDef]) -> V "name": c.name, "input": c.arguments })); } if content.is_empty() { - // Anthropic requires non-empty content arrays AND rejects - // empty text blocks. A single space satisfies both. - content.push(json!({ "type": "text", "text": " " })); + // Empty assistant turn (no text, no tool calls) — skip it. + // Anthropic rejects empty text blocks, and a placeholder + // just defers the problem. No tool_use = no pairing + // constraint, so omitting is safe. + continue; } messages.push(json!({ "role": "assistant", "content": content })); }