What each prompt position actually does
**System prompt — sets the persistent context the model assumes across every turn.** Includes: persona definition, tone, formatting rules that apply universally, security constraints, output format conventions. The system prompt is read and weighted by the model on every turn of a multi-turn conversation, so its instructions accumulate influence over the session. This makes system prompts powerful for behaviors you want everywhere, and noisy for instructions specific to one task.
**User prompt — describes the current task and provides task-specific context.** Includes: the actual question or request, examples relevant to this specific call, data to operate on, formatting requirements specific to this output. The user prompt has the model's strongest attention because it's the most recent input. Task-specific instructions live here, not in the system prompt.
**Why the distinction matters:** when you put a one-off instruction in the system prompt, the model treats it as universal — and applies it to subsequent turns where it doesn't belong, often producing weird drift. Conversely, when you put a persistent rule in the user prompt, the model often forgets it by turn 3. Each prompt position has a specific job; mixing them produces specific failure modes.