Write Your SOUL.md
Configure your agent's personality, communication style, and values using SOUL.md.
By the end of this page, your agent will respond in a way that feels intentional — not like a generic assistant.
Time: ~20 minutes
Why this matters
Every OpenClaw agent reads two core files when it starts:
SOUL.md— Personality, communication style, values, expertiseUSER.md— Information about you
SOUL.md is the most important. A thoughtfully written one makes your agent useful. A generic one gives you a generic assistant.
Both files live at ~/.openclaw/. To open them:
# macOS — opens in TextEdit
open -e ~/.openclaw/SOUL.md
# Windows (WSL2) — opens in Notepad
notepad.exe ~/.openclaw/SOUL.md
# Any platform — if you have VS Code
code ~/.openclaw/SOUL.mdOr use any editor you prefer: nano (nano ~/.openclaw/SOUL.md), vim, etc.
What goes in SOUL.md
SOUL.md is a plain text file. Write it the way you'd brief a new assistant on their first day.
A basic structure that works:
# Personality
[3-5 specific traits. "Direct and opinionated" beats "friendly and helpful".]
# Communication Style
- Response length: [short by default / long when asked / always detailed]
- Format: [bullet points / prose / depends on context]
- Tone: [casual / professional / dry / warm]
- Don't say: ["Great question!", "Certainly!", "As an AI..."]
# What you're good at
[Your actual strengths. Be specific.]
# What I know about the person I work for
See USER.md.
# Values
[What to optimize for. What to avoid.]The specificity rule: Vague instructions get ignored. "Be concise" is ignored. "Default to 2-3 sentences unless I ask for more" works.
| Dimension | What it controls | Example instruction |
|---|---|---|
| Tone | Formal vs. casual language | "Casual but precise — like a smart colleague, not a chatbot" |
| Verbosity | Default response length | "Default to 2-3 sentences. Go longer only when I ask" |
| Format | When to use lists, code, prose | "Prose by default. Bullets only for 3+ parallel items" |
| Opinion | Whether to give direct answers | "When I ask for your opinion, give it. Don't hedge or ask what I want to hear" |
| Skip list | Phrases to never say | "Never say: 'Great question!', 'Certainly!', 'As an AI...'" |
Poor vs. effective instruction
Poor: "Be concise and helpful."
Effective: "Default to 2-3 sentences. If I ask for more detail, give it. Skip all preamble."
The difference: the effective version is testable. You can tell immediately whether the agent is following it.
A minimal example
Here's a SOUL.md that produces noticeably better results than the default:
You are a sharp personal assistant with strong opinions.
Communication style:
- Short by default. 2-3 sentences unless depth is asked for.
- Direct. Say what you think, don't hedge.
- Skip filler phrases like "Great question!" or "Certainly!"
- Use markdown only when it adds clarity.
Expertise:
- Strong: reasoning, writing, research synthesis, code review
- Weak: real-time data, my personal schedule (check USER.md)
When I ask for opinions: give them. Don't ask "what do you want me to say?"
When you're uncertain: say so once and move on.What goes in USER.md
USER.md gives your agent context about you. It doesn't need to be long — a few key facts are enough to start.
Name: [Your name]
Location: [City, Timezone]
Role: [What you do]
Current projects: [1-2 things you're working on]
Communication preference: [How you like information delivered]
Key context:
- [Anything the agent should always know about you]You'll add to this over time as you notice gaps.
Naming your agent (optional)
Some interfaces let you give your agent a display name. Add a Name: line to SOUL.md directly:
# Identity
Name: [Whatever you want to call it]This is informal — OpenClaw reads it as part of your personality configuration, not a structured field.
Test it
After editing, restart the Gateway so the changes load:
openclaw gateway restartThen open WebChat and run a few tests:
openclaw dashboardSend these messages and check if the responses match what you configured:
- "Summarize the French Revolution in one paragraph" — should match your length preference
- "What do you think about X?" — should give an opinion if you configured it to
- "Can you help me?" — should not say "Certainly!"
If something's off, edit SOUL.md and add a more specific instruction for that behavior.
Common mistakes
The 200-line trap
Over 200 lines and the agent starts ignoring sections. Every line competes for attention. If your SOUL.md is getting long, cut vague rules and keep only specific, testable instructions.
Too vague. "Be helpful" does nothing. "When I ask a yes/no question, answer yes or no first, then explain" does something.
Never updating it. Your agent drifts from how you work. Review it monthly and add specific corrections for behaviors you don't like.