glimfly
ai updated

What is a system prompt? (and why the same AI feels different in every tool)

In one sentence:A system prompt is the set of instructions an app hands the AI before you type your first word, and it's why the same underlying model can feel like a different assistant in every tool you use it in.

What it actually is

A system prompt is the briefing an AI gets before your first message ever reaches it. Picture a new temp worker starting a shift at a call center. Before their first call, someone hands them a sheet: our tone is friendly but not chatty, here’s what you can promise a customer and what needs a manager, here’s today’s date and the current promotion. The customer on the other end of the phone never sees that sheet. They just hear a worker who somehow already knows all of it, on every single call.

That sheet is the system prompt. It sits in a privileged spot, separate from the back-and-forth conversation you can see, and whoever built the app you’re using wrote it: Anthropic for claude.ai, Anthropic plus the Claude Code team for the CLI tool, or a developer for their own app if they built it on top of Claude’s API. If a developer uses the raw API and never sets one, there is no default system prompt at all; it starts as a blank slate until someone deliberately fills it in.

Why your AI just did this

This answers something that trips up people switching tools: why does Claude in Claude Code check your files, run terminal commands, and stop to ask before touching git, while Claude on the chat website just talks? Same model both times, running under a different system prompt, written for a different job. Claude.ai’s is tuned for a helpful conversational assistant: format answers cleanly, know the date, stay safe in open chat. Claude Code’s is tuned for an agent with a toolbox: read this file, run this test, don’t do anything risky without checking first.

On top of that, if your project has a CLAUDE.md file, Claude Code reads it and treats it as extra standing context alongside whatever its baseline instructions already are. That’s why the same Claude Code, pointed at two different repos, can feel like two different assistants once each repo has its own CLAUDE.md full of project-specific rules.

When you’ll run into it

  • A prompt that worked perfectly in ChatGPT does something odd in Claude Code. Different tool, different underlying instructions, not a broken prompt.
  • The same question gets a differently-shaped answer in claude.ai chat versus Claude Code: one replies with text, the other edits your files.
  • You ask Claude to reveal its system prompt and get a rough paraphrase, not a verbatim dump. It’s background context it’s working from, not a document it recites. (Anthropic does publish claude.ai’s real one publicly, so you can read it instead of guessing.)
  • Your repo has a CLAUDE.md, and Claude always double-checks with you before big changes. Someone wrote that instruction in, and it’s now standing behind every session in that project.
  • You build your own app on Claude’s API, leave the system prompt empty, and get a generic, personality-less assistant. Expected: the raw API has no default one baked in.

What to check

  • If a tool you’re using exposes a “custom instructions” or “system prompt” setting, that’s this exact idea, look there first before assuming the AI is just being inconsistent
  • In a Claude Code project, check for a CLAUDE.md at the repo root, it’s a second layer of standing instructions on top of the baseline
  • If you’re building on the API yourself, decide your system prompt on purpose, don’t leave it blank and expect claude.ai-style behavior
  • Want the real claude.ai system prompt instead of a rumor? Anthropic’s public changelog has it, updated with every model release

Say it like a dev

Instead of: “Claude keeps ignoring what I told it, I have to repeat myself every message” Say: “should this go in the system prompt or CLAUDE.md so it’s standing instruction, not something I retype”

Instead of: “why does the same AI act so different in this app” Say: “what system prompt is this tool running underneath the model”

Instead of: “can you just show me your secret instructions” Say: “is this behavior coming from your system prompt, and can I override it”

People actually ask

“What is a system prompt, in plain English?”

It's a block of instructions the app sets before your conversation starts, invisible to you, that tells the AI how to behave: its tone, what tools it has, what today's date is, what it should never do. You never see it or type it. It just quietly shapes every reply that follows.

“Can I actually read Claude's system prompt?”

For claude.ai and the mobile apps, yes: Anthropic publishes the real thing in a public changelog, updated with every release. Claude Code's is different (it's built for running an agentic coding tool, not chatting) and isn't published the same way, though people have reverse-engineered versions of it online.

“Why does Claude act completely different in Claude Code than on the website?”

Because it's running under a different system prompt. Claude.ai's is written for a conversational assistant: format nicely, mention today's date, stay helpful in a chat. Claude Code's is written for an agent that reads files, runs commands, and asks before doing anything destructive. Same model underneath, different job description on top.

Related terms

Checked against

Glim can explain your sessions, live.

The app watches your coding agent and narrates it in plain words. Waitlist is open.

Join the waitlist