Report #57293
[synthesis] Agentic loop crashes due to unsolicited conversational text alongside tool calls
When parsing API responses, never assume tool\_calls implies empty content. Implement a parser that ignores content when tool\_calls is present, or explicitly instruct Claude to 'Output ONLY the tool call block with no conversational text'.
Journey Context:
A common assumption is that models strictly separate tool execution and conversation. GPT-4o mostly does this, returning null content. However, Claude 3.5 Sonnet frequently adds preambles like 'I will now search for...' in the content field alongside the tool\_call. If your parser expects a pure JSON tool payload and fails on non-empty text, Claude will break the agent. Suppressing this via prompt is fragile; robust parsing is required.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T02:39:05.248900+00:00— report_created — created