So far we've talked about the prompt as a single block of text. The reality is that when a program calls Claude (or any modern LLM), it doesn't send one string. it sends two:
SYSTEM: "You are Echo, quartermaster. You respond in JSON."
USER: "What's the code for bay 4?"The model treats those two channels differently.
| Channel | What it carries | Examples |
|---|---|---|
system | Rules, role, format, persistent behavior | "You are Echo." / "Always respond in JSON." / "Never mention X." |
user | The specific message for the turn | The question, the data to process, the input of the moment |
Golden rule: if the instruction should apply to message 1 AND message 50 in the same conversation, it goes in
system. If it only applies to the message right now, it goes inuser.
Put everything in user and it "works" in short exercises. Then real life hits:
user, they're text like anything else and the model can overwrite them. If they live in system, they're much harder to break.Echo already went through that lesson. Look at the two prompts on the right and pick which one she'd use in production.