The system prompt is the instruction block that sits before the conversation begins.
It applies to every turn without being repeated, and the user usually never sees it.
It is where role, tone, boundaries and output requirements belong.
Models are trained to weight it above ordinary user messages, so it wins most conflicts.
That priority is a strong default rather than a guarantee, and a determined user can still push against it.
Put durable rules here and one-off requests in the user message.
A rule repeated in every user turn wastes tokens and drifts as the conversation grows.
Good system prompts are specific about the job, the audience and the format.
Vague personas such as you are a helpful assistant change almost nothing.
Stating what to do when information is missing prevents a large share of invented answers.
Telling the model to say it does not know is more effective than telling it not to guess.
Keep it short enough to stay entirely relevant, since irrelevant instruction dilutes the rest.
It is billed on every single call, so length here is a recurring cost.
Never place secrets in it, because a sufficiently persistent user will extract them.
Version it like code, since changing it changes behaviour everywhere at once.