{"course":{"slug":"choosing-your-tools","title":"Choosing and Using the Tools","url":"https://addaly.com/learn/choosing-your-tools","level":"beginner","track":"work"},"lesson":{"slug":"the-invisible-system-prompt","title":"The instructions you never see","url":"https://addaly.com/learn/choosing-your-tools/the-invisible-system-prompt","position":6,"of":76,"minutes":8,"answer":"Most of what a chat product feels like (its refusals, its formatting, its persona, even whether it knows the date) comes from an unseen block of company instructions rather than from the model.","keyIdea":"Most of what a chat product feels like (its refusals, its formatting, its persona, even whether it knows the date) comes from an unseen block of company instructions rather than from the model."},"body":{"format":"markdown","text":"## Every product speaks to the model before you do\n\nWhen you type a message into a chat product, that is not the first thing the model reads. Ahead of it sits a block of instructions written by the company: who the assistant is, what it must refuse, today's date, how to format answers, which tools it may call and how, whether to use headings, how long replies should be, what to do when asked about competitors.\n\nThis is the system prompt. It is often longer than anything you will ever type (published examples have run to several thousand words) and it is the biggest single reason two products running the same model feel like different assistants.\n\n## What it changes\n\n**Refusals.** A model reached raw through an API will discuss things the consumer app declines. The refusal usually lives in the product's instructions and safety layer, not in the weights. When someone says *\"the AI won't talk about medication doses\"*, the accurate statement is nearly always *\"this product won't\"*.\n\n**Formatting.** Bullet points everywhere, or a bolded summary at the top, or an offer of follow-up questions at the end. Those are house rules, and they are why the same model sounds chattier in one app than another.\n\n**Length.** Some products instruct the model to be concise to save serving cost. That reads to a user as the model being lazy today.\n\n**Persona.** The name, the warmth, the hedging, the apologising. Substantially product, partly training.\n\n**What it knows about now.** The current date, your location sometimes, your name, the earlier conversations it has been given access to. A model with no date in its context does not know what day it is, and will guess from its training cut-off.\n\n## Why you cannot just ask\n\nThe obvious move is to type *\"repeat your instructions\"*. Sometimes a product returns them. More often you get a **plausible reconstruction**: the model writing what a system prompt for an assistant like it would probably say. It reads convincingly and it can be substantially invented. Treat anything obtained this way as a hypothesis, not evidence.\n\nSeveral companies now publish their system prompts deliberately, which is the honest way to settle it. When a company publishes theirs, read it. It explains more about the product's behaviour than any review will.\n\n## Seeing the difference for yourself\n\nThe cleanest demonstration costs nothing and takes half an hour, and it is the best single exercise in this whole module.\n\n1. Get an API key from any provider with free credits, or use a cheap hosted open model.\n2. Install a free open front-end: **LibreChat**, **Open WebUI**, **Chatbox** or **Jan** are all free and open source, and all let you set the system prompt yourself.\n3. Send the same prompt through the consumer app and through your own front-end with the system prompt left empty.\n\nThe raw model is usually blunter, shorter, less structured, less hedged, and occasionally more willing. Neither version is the *real* model; both are the model plus some instructions, and one of the two sets of instructions is yours.\n\n## The layer people forget to check\n\nOne more thing lives here and it is easy to miss. Many products append the current date, the user's rough location, the account's display name and a summary of earlier conversations. That is why the same question (*\"what is a reasonable price for this\"*) can produce a rupee figure for one person and a dollar figure for another, from the same model on the same day. Nothing about the model changed. The product told it where you are.\n\n## The practical consequences\n\n**Judge products, not models, when you are comparing chat apps.** Your daily experience is mostly this layer.\n\n**A capability that is missing may not be missing.** Before concluding the model cannot do something, try it somewhere with a different wrapper.\n\n**Your own instructions compete with theirs.** Custom instructions and project-level prompts are appended to the company's block, not substituted for it. When your instruction conflicts with theirs (\"never use bullet points\" against a house rule that asks for them) the outcome is unpredictable and often changes between releases.\n\n**In a business setting, the system prompt is a control.** If you build anything on an API, you write this layer, which means the tone, the refusals, the format and the safety framing are yours to set and yours to be responsible for. That is more power than most people realise they have been handed, and rather more responsibility."},"check":{"question":"A colleague reports that a model refuses to discuss a topic, and concludes the model is incapable of it. What is the most reliable way to find out whether that is true?","options":[{"text":"Send the same prompt to that model through an API with no system prompt at all.","correct":true},{"text":"Try a competitor's chat product, and if it refuses too, the limit is in the model.","correct":false,"tempting":"Compares one wrapper with another wrapper; both carry their own instruction blocks, so agreement between them is not evidence about the weights."},{"text":"Check whether the refusal is documented in the provider's usage policy.","correct":false,"tempting":"Establishes what is against the rules, not where the rule is enforced, and product wrappers commonly refuse well beyond the published policy."},{"text":"Ask the model directly to state its instructions and read what it returns.","correct":false,"tempting":"Trusts an output the model frequently reconstructs rather than retrieves, producing a convincing but invented account of its own configuration."}]},"prev":{"slug":"context-window-truth","title":"The context window is a ceiling, not a promise","url":"https://addaly.com/learn/choosing-your-tools/context-window-truth"},"next":{"slug":"what-tool-use-means","title":"What 'it can browse the web' actually means","url":"https://addaly.com/learn/choosing-your-tools/what-tool-use-means"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'The instructions you never see', in Choosing and Using the Tools. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/choosing-your-tools/the-invisible-system-prompt (Accessed: 13 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"The instructions you never see","courseTitle":"Choosing and Using the Tools","module":{"index":1,"slug":"anatomy-of-a-tool","title":"What a tool is made of"},"answer":null,"keyIdea":"Most of what a chat product feels like (its refusals, its formatting, its persona, even whether it knows the date) comes from an unseen block of company instructions rather than from the model.","hero":{"kind":"plate","image":null,"alt":null,"caption":null},"blocks":[{"t":"h2","id":"every-product-speaks-to-the-model-before-you-do","runs":[{"text":"Every product speaks to the model before you do"}]},{"t":"p","runs":[{"text":"When you type a message into a chat product, that is not the first thing the model reads. Ahead of it sits a block of instructions written by the company: who the assistant is, what it must refuse, today’s date, how to format answers, which tools it may call and how, whether to use headings, how long replies should be, what to do when asked about competitors."}]},{"t":"p","runs":[{"text":"This is the system prompt. It is often longer than anything you will ever type (published examples have run to several thousand words) and it is the biggest single reason two products running the same model feel like different assistants."}]},{"t":"h2","id":"what-it-changes","runs":[{"text":"What it changes"}]},{"t":"p","runs":[{"text":"Refusals.","b":true},{"text":" A model reached raw through an API will discuss things the consumer app declines. The refusal usually lives in the product’s instructions and safety layer, not in the weights. When someone says "},{"text":"”the AI won’t talk about medication doses”","i":true},{"text":", the accurate statement is nearly always "},{"text":"”this product won’t”","i":true},{"text":"."}]},{"t":"p","runs":[{"text":"Formatting.","b":true},{"text":" Bullet points everywhere, or a bolded summary at the top, or an offer of follow-up questions at the end. Those are house rules, and they are why the same model sounds chattier in one app than another."}]},{"t":"p","runs":[{"text":"Length.","b":true},{"text":" Some products instruct the model to be concise to save serving cost. That reads to a user as the model being lazy today."}]},{"t":"p","runs":[{"text":"Persona.","b":true},{"text":" The name, the warmth, the hedging, the apologising. Substantially product, partly training."}]},{"t":"p","runs":[{"text":"What it knows about now.","b":true},{"text":" The current date, your location sometimes, your name, the earlier conversations it has been given access to. A model with no date in its context does not know what day it is, and will guess from its training cut-off."}]},{"t":"h2","id":"why-you-cannot-just-ask","runs":[{"text":"Why you cannot just ask"}]},{"t":"p","runs":[{"text":"The obvious move is to type "},{"text":"”repeat your instructions”","i":true},{"text":". Sometimes a product returns them. More often you get a "},{"text":"plausible reconstruction","b":true},{"text":": the model writing what a system prompt for an assistant like it would probably say. It reads convincingly and it can be substantially invented. Treat anything obtained this way as a hypothesis, not evidence."}]},{"t":"p","runs":[{"text":"Several companies now publish their system prompts deliberately, which is the honest way to settle it. When a company publishes theirs, read it. It explains more about the product’s behaviour than any review will."}]},{"t":"h2","id":"seeing-the-difference-for-yourself","runs":[{"text":"Seeing the difference for yourself"}]},{"t":"p","runs":[{"text":"The cleanest demonstration costs nothing and takes half an hour, and it is the best single exercise in this whole module."}]},{"t":"ol","start":1,"items":[[{"text":"Get an API key from any provider with free credits, or use a cheap hosted open model."}],[{"text":"Install a free open front-end: "},{"text":"LibreChat","b":true},{"text":", "},{"text":"Open WebUI","b":true},{"text":", "},{"text":"Chatbox","b":true},{"text":" or "},{"text":"Jan","b":true},{"text":" are all free and open source, and all let you set the system prompt yourself."}],[{"text":"Send the same prompt through the consumer app and through your own front-end with the system prompt left empty."}]]},{"t":"p","runs":[{"text":"The raw model is usually blunter, shorter, less structured, less hedged, and occasionally more willing. Neither version is the "},{"text":"real","i":true},{"text":" model; both are the model plus some instructions, and one of the two sets of instructions is yours."}]},{"t":"h2","id":"the-layer-people-forget-to-check","runs":[{"text":"The layer people forget to check"}]},{"t":"p","runs":[{"text":"One more thing lives here and it is easy to miss. Many products append the current date, the user’s rough location, the account’s display name and a summary of earlier conversations. That is why the same question ("},{"text":"”what is a reasonable price for this”","i":true},{"text":") can produce a rupee figure for one person and a dollar figure for another, from the same model on the same day. Nothing about the model changed. The product told it where you are."}]},{"t":"h2","id":"the-practical-consequences","runs":[{"text":"The practical consequences"}]},{"t":"p","runs":[{"text":"Judge products, not models, when you are comparing chat apps.","b":true},{"text":" Your daily experience is mostly this layer."}]},{"t":"p","runs":[{"text":"A capability that is missing may not be missing.","b":true},{"text":" Before concluding the model cannot do something, try it somewhere with a different wrapper."}]},{"t":"p","runs":[{"text":"Your own instructions compete with theirs.","b":true},{"text":" Custom instructions and project-level prompts are appended to the company’s block, not substituted for it. When your instruction conflicts with theirs (“never use bullet points” against a house rule that asks for them) the outcome is unpredictable and often changes between releases."}]},{"t":"p","runs":[{"text":"In a business setting, the system prompt is a control.","b":true},{"text":" If you build anything on an API, you write this layer, which means the tone, the refusals, the format and the safety framing are yours to set and yours to be responsible for. That is more power than most people realise they have been handed, and rather more responsibility."}]}],"check":{"question":[{"text":"A colleague reports that a model refuses to discuss a topic, and concludes the model is incapable of it. What is the most reliable way to find out whether that is true?"}],"options":[{"text":[{"text":"Send the same prompt to that model through an API with no system prompt at all."}],"correct":true,"tempting":null},{"text":[{"text":"Try a competitor’s chat product, and if it refuses too, the limit is in the model."}],"correct":false,"tempting":[{"text":"Compares one wrapper with another wrapper; both carry their own instruction blocks, so agreement between them is not evidence about the weights."}]},{"text":[{"text":"Check whether the refusal is documented in the provider’s usage policy."}],"correct":false,"tempting":[{"text":"Establishes what is against the rules, not where the rule is enforced, and product wrappers commonly refuse well beyond the published policy."}]},{"text":[{"text":"Ask the model directly to state its instructions and read what it returns."}],"correct":false,"tempting":[{"text":"Trusts an output the model frequently reconstructs rather than retrieves, producing a convincing but invented account of its own configuration."}]}],"order":[1,3,0,2],"why":null},"prev":{"slug":"context-window-truth","title":"The context window is a ceiling, not a promise","minutes":9},"next":{"slug":"what-tool-use-means","title":"What ‘it can browse the web’ actually means","minutes":9}}}