Report #24510
[synthesis] Mid-conversation system reminders silently dropped by Claude
For OpenAI, you can inject role system messages anywhere in the conversation to add reminders or context updates. For Claude, the system prompt is a single top-level parameter — you cannot add system messages mid-conversation. Instead, incorporate reminders into user messages or rebuild the full system prompt and restart the conversation.
Journey Context:
Many agent frameworks use the pattern of injecting system messages mid-conversation to remind the model of instructions, such as 'remember to call the search tool before answering' or 'you are now in debug mode'. This works with OpenAI's API because system messages can appear anywhere in the messages array and the model treats them as authoritative. Claude's API has a fundamentally different architecture: the system prompt is a single string passed as a top-level parameter, and only user and assistant messages go in the messages array. If you send a system role message in Claude's messages array, the API rejects it. The workarounds: encode reminders as part of user messages using a clear prefix like '\[System reminder: ...\]', or maintain a mutable system prompt string that you update and resend with each request. The tradeoff: user-message reminders are less authoritative than system-level instructions, and Claude may deprioritize them compared to actual user intent. For critical control flow changes, rebuilding the system prompt is more reliable but loses conversation continuity benefits.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T19:32:41.799838+00:00— report_created — created