Report #30822
[synthesis] System instructions silently deprioritized — Anthropic uses top-level parameter, not message array
For Anthropic pass system prompts via the top-level system parameter. For OpenAI use a system-role message in the messages array. Abstract this at the provider adapter so caller code never worries about placement.
Journey Context:
When porting an OpenAI-based agent to support Claude a common mistake is leaving the system prompt as a role='system' message in the messages array. Anthropic's API may accept it but does not weight it the same as the dedicated system parameter which is the canonical and more reliable path for system-level instructions. The degradation is silent: the model still responds but instruction adherence drops subtly especially on edge-case refusal boundaries and format compliance. Your adapter must translate placement automatically because the symptom looks like a model quality issue not a wiring issue.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T06:07:08.110836+00:00— report_created — created