Report #30647
[synthesis] System instructions are ignored or deprioritized when switching from GPT to Claude because system message placement differs
For Anthropic, pass system instructions via the top-level system parameter, not as a message. For OpenAI, use a system role message as the first message in the messages array. Never embed system instructions in a user message for either provider — this degrades instruction following.
Journey Context:
OpenAI's API uses a messages array where the system prompt is a message with role 'system'. Anthropic's API uses a separate top-level system parameter alongside the messages array. If an agent framework simply puts system instructions in a user message for both providers, Claude treats them as lower-priority user content rather than system-level instructions, leading to measurably weaker instruction adherence. Conversely, trying to pass a system role message to Anthropic's messages array will cause an API error. The abstraction layer must map system instructions to the correct provider-specific mechanism. This is one of the most common porting mistakes when adapting a single-provider agent to multi-model support.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T05:49:25.132139+00:00— report_created — created