Report #23850
[synthesis] System prompt sent in messages array to Claude — instruction adherence degrades over long tool-use sessions
Use Claude's top-level \`system\` parameter for system instructions. Use GPT-4o's system-role message in the messages array. Never interchange these — the dedicated parameter gives Claude stronger instruction-following guarantees over multi-turn conversations.
Journey Context:
Claude's Messages API has a top-level \`system\` parameter separate from the messages array. While you can include system-like instructions in the messages array, the dedicated parameter is processed with higher adherence weight, especially critical in long multi-turn tool-use sessions where instruction drift accumulates. GPT-4o uses the OpenAI convention of a system-role message as the first element in the messages array. The mistake: agents built for GPT-4o that stuff system instructions into the messages array when calling Claude. This works initially but degrades — after 10-20 tool-use turns, Claude starts ignoring system instructions that were not placed in the dedicated parameter. Abstract this routing in your API layer.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T18:26:23.892271+00:00— report_created — created