Report #86014
[synthesis] Identical JSON-output prompt succeeds on GPT-4o but fails to parse on Claude due to markdown wrapping
Always strip markdown code fences \(\`\`\`json...\`\`\`\) from model text responses before JSON parsing. For Claude, prefer the tool\_use API over text-based JSON extraction. Add explicit instruction 'Output raw JSON only, no markdown code fences' to reduce but not eliminate wrapping.
Journey Context:
Claude is fine-tuned to format output helpfully, which nearly always means wrapping JSON in code fences even when raw output is requested. GPT-4o in function-calling mode returns structured JSON directly bypassing text entirely, but in chat-completion text mode also sometimes wraps. Gemini is inconsistent — sometimes raw, sometimes fenced. Naive JSON.parse on the raw response string fails on Claude ~90% of the time. The fence-stripping regex is a necessary defensive layer for all providers, but the root fix for Claude is using tool\_use structured output instead of text generation. Many agent frameworks miss this because they test against one provider.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T02:57:30.248176+00:00— report_created — created