System Prompts vs. User Prompts

If you've spent any time configuring an AI agent or chatbot on your VPS, you've probably run into the term "system prompt" somewhere in a settings panel, a config file, or a command flag. It sits right next to the box where you type your actual question, which raises a fair question: aren't those the same thing? They're not, and the difference matters more than it might seem. It affects how consistent your AI agent behaves, how much you can trust it to stay in its lane, and why the same tool can feel completely different depending on who set it up.

What Is a System Prompt

A system prompt is the standing instruction that tells an AI model who it's supposed to be and how it should behave, before you've typed a single word to it. It's usually written by whoever set up the application — that could be the developer of the tool, an administrator on your team, or you yourself if you're the one configuring the app. Once it's set, it stays in place for the whole conversation (or, in some setups, for every conversation) regardless of what gets asked.

Think of it as the job description an employee reads before their first day. It might say "you are a customer support assistant for a hosting company, answer only questions about hosting, and hand off anything about billing to a human." That framing doesn't change from customer to customer — only the customer's actual question does.

What Is a User Prompt

A user prompt is the message you actually type. It's whatever you're asking or telling the AI to do in that specific moment: "reboot the web server," "summarize this log file," "write a product description." Unlike the system prompt, it changes constantly — every message you send is a new user prompt.

Most AI platforms keep these two inputs technically separate rather than mashing them into one block of text. Behind the scenes, a request sent to an AI model is typically broken into labeled parts — a system role, a user role, and (once the model responds) an assistant role — so the model can tell the standing instructions apart from the immediate ask.

How They Work Together

In a typical exchange, the system prompt loads first and silently, then your user prompt arrives on top of it. The model is meant to treat the system prompt as the more authoritative layer — the rules of the room — and your user prompt as the specific request being made inside that room. A well-behaved AI agent should refuse to abandon its system prompt just because a user prompt asks it to, which is the whole point of having one.

In practice, that separation isn't airtight. How strictly a given model sticks to its system prompt when a user prompt pushes back on it varies by model and by how the request is worded, and it tends to get shakier the longer a conversation runs. This is a large part of why AI agent tools ask for approval before taking certain actions in the first place — a system prompt alone isn't a hard security boundary, just a strong steering mechanism.

Tip: For more on why AI agents pause and ask before doing something, see AI Agent Permissions & Approval Prompts.

Where You'll See This in Bluehost's AI Apps

The system prompt vs. user prompt split isn't just theory — it shows up directly in the settings of the AI apps available on Self-Managed VPS and VDS. A few examples:

App How the system prompt is set
Open WebUI Supports three layers: a per-chat system prompt a user can set for that one conversation, a per-account default, and a per-model default set by an administrator that takes precedence over both when locked. A user's per-chat prompt is restricted from overriding a locked per-model setting, not the other way around.
Ollama The system prompt is set with the SYSTEM instruction in a Modelfile (for a permanent custom model), the /set system command in an interactive session, or the system field when calling the API directly.
Claude Code Uses a preset system prompt by default. You can extend it with the --append-system-prompt flag, which adds to the existing system prompt rather than replacing it. A CLAUDE.md file works differently — it's injected into the conversation as project context rather than folded into the system prompt itself.

Important: A common mix-up: people often assume a CLAUDE.md file is the system prompt for Claude Code. It isn't — it's delivered as context alongside whatever system prompt is already in effect. The distinction matters if you're troubleshooting why a project-level instruction isn't behaving the way a system-level rule would.

What a System Prompt Cannot Do

A system prompt changes how a model communicates — its tone, its role, the rules it tries to follow — not what it knows. Writing "you are an expert in Bluehost's server infrastructure" into a system prompt doesn't hand the model any actual information about your server; it only changes how it talks about servers in general, using whatever it already learned during training. If you need the model to work from real, current information (your actual server logs, your actual documentation), that has to come in through the user prompt, a file upload, or a retrieval setup — the system prompt alone can't supply it.

Summary

A system prompt is the standing, behind-the-scenes instruction that defines how an AI model should behave, set once by a developer, administrator, or you as the person configuring the app. A user prompt is the specific, ever-changing request typed into the chat. Most platforms keep the two technically separate so the model can weigh the standing rules against the immediate ask, though that separation is a guideline the model follows rather than an unbreakable wall — which is exactly why AI agent tools still ask for permission before taking meaningful actions. On Bluehost's Self-Managed VPS and VDS, apps like Open WebUI, Ollama, and Claude Code each expose system prompt customization a little differently, so it's worth checking an app's own settings before assuming a project file or a chat message is doing more than it actually is.