Prompt Engineering

System Prompt vs User Prompt: Which Box Gets What

A system prompt holds the rules that should apply every time, and a user prompt holds the task in front of you. Here is where each one goes in ChatGPT, Claude and the main AI APIs.

Toolbit AI - Team
5 min read
System Prompt vs User Prompt: Which Box Gets What

Short answer: A system prompt holds the rules that should apply every time, like your tone, format and role. A user prompt holds the task in front of you right now.

If you retype the same preferences in every new chat, they are in the wrong box. Move them once into the layer that already persists, and your messages can shrink to just the task.

How system and user prompts work together

The system layer works like a job description, and each user prompt works like today's task list. The job description shapes every task without being repeated. The task list changes all the time.

Here is what belongs in each box:

If it's true...Put it in
In every chat you haveAccount-wide Instructions (Claude) or Custom Instructions (ChatGPT)
Only inside one projectProject instructions
Only for this one requestThe user prompt itself
In an app you're buildingThe API's system or developer field

Anthropic's API docs describe the system prompt as "a way of providing context and instructions to Claude, such as specifying a particular goal or role." Everything else, like your question, the pasted document and your follow-ups, goes in the messages.

Why put standing rules in Instructions instead of a message?

Claude's help center says account-wide Instructions "will be applied to all of your conversations with Claude."

A rule you type in one message belongs to that chat only. Put it in Instructions and it applies to every new chat.

If you build with the API, there is a second reason to keep stable text up front: caching. A cache only works while the start of the prompt stays identical. OpenAI's caching guide says "Cache reuse requires the entire rendered prefix to match."

Prompt caching reads tools, then the system prompt, then messages, so editing the system prompt resets the system and messages caches while the tools cache stays valid

Anthropic's caching docs give the order: tools, system, then messages. Changing the system prompt invalidates the system and messages caches, and only the tools cache survives. OpenAI's advice matches: "Put stable developer instructions and shared reference material first." Google's Gemini docs say the same about large, common content. For the full pattern, see how to keep the cached prefix stable.

Where is the system prompt in ChatGPT, Claude and the APIs?

In the chat apps, you don't edit a raw system prompt. You edit settings that do the same job.

  • Claude: Instructions for Claude are "account-wide settings." Project instructions "only apply to chats within that project," and they need a paid plan.
  • ChatGPT: Custom Instructions sit in the Customize ChatGPT settings. ChatGPT has a character limit for this box; check Settings for yours.
  • Projects: Both apps let you scope rules to one project. Our Claude Projects vs ChatGPT Projects guide compares them.

In the APIs, the field has a different name in each one:

  • Anthropic: a separate system parameter on the Messages API.
  • OpenAI: developer messages, which are "prioritized ahead of user messages." The instructions parameter applies only to the current request, so use developer messages for rules that should carry across turns.
  • Google Gemini: a system_instruction parameter, as the system instructions docs show.

If you build agents, the same split applies. Describe tools and standing rules in the system layer. Let the message history carry what happened. Our guide to agent skills covers the next step up.

Try it yourself: one prompt, split in two

Take a long message you send often and split it into a rule and a task.

Before: one long message repeats your role, tone and summary rule in every chat; after: those rules sit once in Instructions and the message is only the task

Before, typed fresh in every chat:

"I'm a product manager at a B2B SaaS company. I like concise answers, no fluff, bullet points where possible, and I always want a one-line summary at the top. Can you write a Slack update about our Q3 roadmap slipping by two weeks?"

After, split in two:

  • Instructions (set once in Settings): I'm a product manager at a B2B SaaS company. Keep answers concise. Use bullet points where useful. Always start with a one-line summary.
  • User prompt: "Write a Slack update about our Q3 roadmap slipping by two weeks."

Open a fresh chat and send only the short version. Check whether the summary line and bullets show up.

Don't confuse instructions with memory or the task

Instructions, project instructions and memory are different tools. They are easy to mix up.

TermWhat it isHow it differs
InstructionsRules you write onceApply to every chat
Project instructionsRules for one projectApply only inside that project
MemoryWhat the app recalls from past chatsNot rules you wrote
User promptYour request right nowChanges every message

Claude's help center adds that it "uses the project's memory alongside your memory from chats outside of projects."

Watch for these mistakes:

  • Contradictory rules. A rule to be concise and a rule to explain everything in detail can't both win. Pick one, or move one into a project.
  • A task inside Instructions. A one-off request there fires in every unrelated chat.
  • Stuffing the box. Keep it short: who you are, how to answer, and what to always or never do.
  • Never testing a rule. Try an off-topic question and a long paste to see if the rule holds.

If you want a reusable voice guide, a style card is a good thing to keep in Instructions.

Quick check: where would you put it?

  1. Always reply in US English. Account-wide Instructions, because it's true in every chat.
  2. Summarize this contract. The user prompt, because it's this task only.
  3. Use our brand terms for the Acme launch. Project instructions, because it only matters in one project.

What to move into Instructions today

  1. Open your settings in Claude or ChatGPT and find Instructions or Custom Instructions.
  2. Paste in your role, tone and format rules.
  3. Move rules for one client or topic into a project instead.
  4. Send your next request with only the task, and check that the rules held.
Share this article

Related articles

Continue exploring similar guides and insights