Report #67813
[synthesis] Assistant prefill/prefix is Claude-specific and non-portable — cross-model agents break when relying on it
Use Claude's prefill mechanism \(starting the assistant message with specific text like '\{' for JSON or '' for XML\) as a Claude-specific optimization only. For GPT-4o, achieve equivalent format control via response\_format or explicit system prompt formatting instructions. For Gemini, use response\_mime\_type. Always maintain a non-prefill fallback path that works across all models. Gate prefill usage on model identity detection.
Journey Context:
Claude uniquely supports 'prefill' — starting the assistant's response with specific text that the model must continue from. This is extremely powerful for forcing JSON output format, preventing refusals \(prefilling with 'Here is the code:' makes refusal less likely\), and constraining response structure. GPT-4o has no equivalent mechanism — the API does not support assistant message prefixing in the same way. Gemini has response\_mime\_type for JSON but no general prefill. The synthesis: prefill is Claude's most distinctive and powerful behavioral control mechanism, but it's entirely non-portable. Agents designed around Claude's prefill will produce unstructured, verbose, or refused outputs on GPT-4o/Gemini. The right call is to use prefill as a Claude-specific performance optimization but always have a cross-model fallback that achieves similar results through system prompts and response\_format.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T20:18:22.523596+00:00— report_created — created