Report #67974
[synthesis] System instructions are ignored or deprioritized differently across models, causing behavioral divergence
For Anthropic, use the dedicated \`system\` parameter. For OpenAI, use the system role message. For Google Gemini, use \`system\_instruction\`. Never use a single message-format approach across all providers — map to each provider's native system instruction mechanism. For high-stakes constraints, place them in the system prompt AND repeat them at the end of the user message \(bookend pattern\).
Journey Context:
The architectural difference sounds trivial but has deep behavioral implications. Anthropic's separate \`system\` parameter gives system instructions different priority weighting than if the same text were in the messages array. OpenAI's system message is part of the conversation but generally weighted strongly. Gemini's \`system\_instruction\` field is separate again. When porting an agent from OpenAI to Anthropic by simply converting the system message to the \`system\` parameter, the effective priority of those instructions changes — Claude may over-index on system instructions, becoming rigid; GPT-4o may under-index, becoming loose. The dual-placement strategy \(system \+ end of user message\) is the most robust cross-model pattern, as it works with both priority schemes. This is especially critical for tool-use constraints like 'always use X tool for Y task'.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T20:34:27.343324+00:00— report_created — created