You’ve typed the same tone rules into Claude for the fifth chat this week and it still drifts. That’s the pain Claude system prompts fix: behavior that lives above the message, not inside it. The topic is hot again because Anthropic keeps publishing the real web/app prompts, and people are stripping them for reusable patterns.
Key takeaway: on claude.ai you never edit Anthropic’s hidden prompt. You stack profile instructions + Project instructions (+ Styles). On the API you own the full system field. Copy structure – short role, sectioned rules, “do this” over long “don’t” lists – not their product-sized dump.
What’s actually going on (quick)
claude.ai and the mobile apps inject a system layer every chat: current date, Markdown-for-code habits, behavior defaults. Those published updates stop at the consumer apps – they do not ride along on API calls (system prompt release notes). Same model family. Different briefing.
That’s why Claude “feels different” inside a third-party app. Someone else wrote the system layer. Mining the published text for filler bans, list rules, and safety phrasing is useful as a mirror. Pasting the whole thing into a Project is not.
Method A vs Method B for Claude system prompts
Match the path to where you already work.
| Method A – claude.ai personalization | Method B – API system |
|
|---|---|---|
| Control | Profile “Instructions for Claude” + per-Project instructions + Styles | Full blank-slate system string (or blocks) on each Messages call |
| Scope | Profile = all chats; Project = only that workspace | Whatever you send on that request |
| Default Anthropic web prompt | Still underneath; you layer preferences on top | Not injected – you define behavior |
| Best for | Writing, research, recurring client work without shipping code | Products, agents, tool-heavy workflows, deterministic apps |
| Hard limit | Free accounts: max five Projects (Help Center personalization article, as of July 2026) | System tokens count as input on every turn |
Start with A if you live in the browser. Ten minutes gets most of the win. B is for when the product is the prompt.
Winner walkthrough: Project instructions that copy Anthropic’s patterns
Account-wide defaults live under your initials → Settings → Instructions for Claude (timezone quirks, “be concise,” jargon you always want). The real system-prompt stand-in is a Project: every chat in that box shares one role, format, and constraint set (Claude Help Center – personalization).
- Create a Project named for one job only (e.g. “Client email – Acme”).
- Write instructions in short sections, not a novel. Anthropic’s effective context engineering note pushes the “right altitude”: specific enough to steer, not a brittle if/else tree.
- Long reference material → Project knowledge. Instructions stay behavior-only.
- Styles handle delivery tone (more/less formal) so the instruction block stays about judgment and workflow.
- Run three real tasks. Where it ignores you, add one rule per failure – not ten guesses up front.
A tight template that mirrors patterns people keep pulling from the published prompts (answer first, prose over bullet spam, explicit format) without copying Anthropic’s product text:
You are a senior account writer for B2B SaaS.
<priority>
- Lead with the usable answer in the first short paragraph.
- Match the user's energy: short question → short reply; complex brief → structured depth.
- Use plain paragraphs for explanations. Lists only for true inventories or when I ask.
</priority>
<output>
- Subject line options: 3, under 45 characters.
- Body: plain text, max ~120 words unless I request long form.
- End with one suggested CTA sentence.
</output>
<constraints>
- No filler openers.
- Don't invent metrics, customer names, or legal claims.
- If a fact is missing, ask one precise question - then stop.
</constraints>
Building on the API instead? Official prompting best practices still recommend the same moves: role in system, XML-ish sections when prompts get mixed, say what to do instead of only what to avoid.
import anthropic
client = anthropic.Anthropic()
msg = client.messages.create(
model="MODEL_ID_FROM_YOUR_ACCOUNT", # pick a current ID your workspace lists
max_tokens=1024,
system="You are a helpful coding assistant specializing in Python.",
messages=[{"role": "user", "content": "How do I sort a list of dicts by key?"}],
)
Pro tip: After you draft instructions, paste them into a fresh chat and ask Claude: “Which rules are vague or contradictory? Rewrite at the minimal set that still covers my failures.” Then replace your draft with that rewrite. You’re using the model as a lint pass on its own constitution.
Edge cases that burn people
- API amnesia: Raw Messages calls do not inherit claude.ai’s published personality. No system string → base manners only.
- Token tax: System text is input every turn. Community measurements of Claude Code-class stacks climb into the tens of thousands of tokens once tools and feature flags pile on – overhead before your real task starts. Keep your block tight.
- Cache-friendly steering: On supported newer models, mid-conversation system-role messages can add rules later in
messageswithout rewriting the top-levelsystemand busting a cached prefix (see Anthropic’s mid-conversation system messages docs; confirm model support – this may have changed since early write-ups). Editing the top-level system mid-run is the expensive trap. - Free Project ceiling: Five Projects on free means one catch-all box collapses under conflicting rules. Split by workflow, not by mood.
Ever notice how a “perfect” mega-prompt looks sharp on message one and turns mushy by message twelve? That’s attention budget leaking, not you “prompting wrong.”
FAQ
Can I replace Anthropic’s default Claude system prompt on claude.ai?
No. Layer profile instructions, Project instructions, and Styles. Full replacement is an API job.
Should I paste the published Claude system prompt into my Project?
Don’t. It’s built for Anthropic’s full surface – tools, safety routing, app UX – and it’s long. You’ll burn context fighting rules that don’t match your job. Lift patterns (decisive first answer, section tags, concrete output contracts) into a short brief for one workflow. Field guides like Simon Willison’s Claude 4 prompt breakdown beat copy-paste.
Profile instructions or Project instructions – which wins when they conflict?
People assume “more instructions = more control.” Opposite problem: two sources saying different things about tone or format make Claude average them into mush. Keep profile for globals you always want. Put role, deliverable shape, and client-specific bans in the Project. If two rules collide, delete the weaker line from profile – one clear source beats a stack of overrides.
Open claude.ai, create one Project for a task you repeat this week, paste the template above, and run your next real brief inside that Project – not in a blank chat.