Personality & SOUL.md
الشخصية وملف SOUL.md
What this page is, and what it holds.
This page covers Personality & SOUL.md. About 7 minutes to read. Open the channel to yourself first with an allowlist. An open channel means anyone can message your agent.
Customize Hermes Agent's personality with a global SOUL.md, built-in personalities, and custom persona definitions
Outcomes taken from this page, not a template.
- Understand what بوابة المراسلة is and when you need it.
- Read the table and take only the row that applies to you.
- Set
HERMES_HOMEin the right place.
Exactly as they appear in Hermes.
HERMES_HOME
Jump to the part you need.
- 01How SOUL.md works now
- 02Why this design
- 03Where to edit it
- 04What should go in SOUL.md?
- 05Good SOUL.md content
- 06What Hermes injects into the prompt
- 07Security scanning
- 08SOUL.md vs AGENTS.md
- 09SOUL.md vs `/personality`
- 10Built-in personalities
- 11Switching personalities with commands
- 12Custom personalities in config
- 13Resetting to the default
- 14Recommended workflow
- 15How personality interacts with the full prompt
- 16Related docs
- 17CLI appearance vs conversational personality
Nothing summarised away.
The documentation body below is reproduced from the official source so commands and identifiers stay exact. Each section carries a short note describing what it contains.
Hermes Agent's personality is fully customizable. SOUL.md is the primary identity — it's the first thing in the system prompt and defines who the agent is.
SOUL.md— a durable persona file that lives inHERMES_HOMEand serves as the agent's identity (slot #1 in the system prompt)- built-in or custom
/personalitypresets — session-level system-prompt overlays
If you want to change who Hermes is — or replace it with an entirely different agent persona — edit SOUL.md.
How SOUL.md works now
Settings you configure once. Change one at a time so you can see what each does. Set HERMES_HOME in your environment, not in the chat.
Hermes now seeds a default SOUL.md automatically in:
~/.hermes/SOUL.mdMore precisely, it uses the current instance's HERMES_HOME, so if you run Hermes with a custom home directory, it will use:
$HERMES_HOME/SOUL.mdImportant behavior
- SOUL.md is the agent's primary identity. It occupies slot #1 in the system prompt, replacing the hardcoded default identity.
- Hermes creates a starter
SOUL.mdautomatically if one does not exist yet - Existing user
SOUL.mdfiles are never overwritten - Hermes loads
SOUL.mdonly fromHERMES_HOME - Hermes does not look in the current working directory for
SOUL.md - If
SOUL.mdexists but is empty, or cannot be loaded, Hermes falls back to a built-in default identity - If
SOUL.mdhas content, that content is injected verbatim after security scanning and truncation - SOUL.md is not duplicated in the context files section — it appears only once, as the identity
That makes SOUL.md a true per-user or per-instance identity, not just an additive layer.
Why this design
Settings you configure once. Change one at a time so you can see what each does. Set HERMES_HOME in your environment, not in the chat.
This keeps personality predictable.
If Hermes loaded SOUL.md from whatever directory you happened to launch it in, your personality could change unexpectedly between projects. By loading only from HERMES_HOME, the personality belongs to the Hermes instance itself.
That also makes it easier to teach users:
- "Edit
~/.hermes/SOUL.mdto change Hermes' default personality."
Where to edit it
Settings you configure once. Change one at a time so you can see what each does. Set HERMES_HOME in your environment, not in the chat.
For most users:
~/.hermes/SOUL.mdIf you use a custom home:
$HERMES_HOME/SOUL.mdWhat should go in SOUL.md?
Explains the idea itself. Read it slowly; the later sections build on it.
Use it for durable voice and personality guidance, such as:
- tone
- communication style
- level of directness
- default interaction style
- what to avoid stylistically
- how Hermes should handle uncertainty, disagreement, or ambiguity
Use it less for:
- one-off project instructions
- file paths
- repo conventions
- temporary workflow details
Those belong in AGENTS.md, not SOUL.md.
Good SOUL.md content
Explains the idea itself. Read it slowly; the later sections build on it.
A good SOUL file is:
- stable across contexts
- broad enough to apply in many conversations
- specific enough to materially shape the voice
- focused on communication and identity, not task-specific instructions
Example
# Personality
You are a pragmatic senior engineer with strong taste.
You optimize for truth, clarity, and usefulness over politeness theater.
## Style
- Be direct without being cold
- Prefer substance over filler
- Push back when something is a bad idea
- Admit uncertainty plainly
- Keep explanations compact unless depth is useful
## What to avoid
- Sycophancy
- Hype language
- Repeating the user's framing if it's wrong
- Overexplaining obvious things
## Technical posture
- Prefer simple systems over clever systems
- Care about operational reality, not idealized architecture
- Treat edge cases as part of the design, not cleanupWhat Hermes injects into the prompt
Explains the idea itself. Read it slowly; the later sections build on it.
SOUL.md content goes directly into slot #1 of the system prompt — the agent identity position. No wrapper language is added around it.
The content goes through:
- prompt-injection scanning
- truncation if it is too large
If the file is empty, whitespace-only, or cannot be read, Hermes falls back to a built-in default identity ("You are Hermes Agent, an intelligent AI assistant created by Nous Research..."). This fallback also applies when skip_context_files is set (e.g., in subagent/delegation contexts).
Security scanning
Explains the idea itself. Read it slowly; the later sections build on it.
SOUL.md is scanned like other context-bearing files for prompt injection patterns before inclusion.
That means you should still keep it focused on persona/voice rather than trying to sneak in strange meta-instructions.
SOUL.md vs AGENTS.md
Explains the idea itself. Read it slowly; the later sections build on it.
This is the most important distinction.
SOUL.md
Use for:
- identity
- tone
- style
- communication defaults
- personality-level behavior
AGENTS.md
Use for:
- project architecture
- coding conventions
- tool preferences
- repo-specific workflows
- commands, ports, paths, deployment notes
A useful rule:
- if it should follow you everywhere, it belongs in
SOUL.md - if it belongs to a project, it belongs in
AGENTS.md
SOUL.md vs `/personality`
Explains the idea itself. Read it slowly; the later sections build on it.
SOUL.md is your durable default personality.
/personality is a session-level overlay that changes or supplements the current system prompt.
So:
SOUL.md= baseline voice/personality= temporary mode switch
Examples:
- keep a pragmatic default SOUL, then use
/personality teacherfor a tutoring conversation - keep a concise SOUL, then use
/personality creativefor brainstorming
Built-in personalities
A lookup table. Do not read it all; find the row that applies to you.
Hermes ships with built-in personalities you can switch to with /personality.
| Name | Description |
|---|---|
| helpful | Friendly, general-purpose assistant |
| concise | Brief, to-the-point responses |
| technical | Detailed, accurate technical expert |
| creative | Innovative, outside-the-box thinking |
| teacher | Patient educator with clear examples |
| kawaii | Cute expressions, sparkles, and enthusiasm ★ |
| catgirl | Neko-chan with cat-like expressions, nya~ |
| pirate | Captain Hermes, tech-savvy buccaneer |
| shakespeare | Bardic prose with dramatic flair |
| surfer | Totally chill bro vibes |
| noir | Hard-boiled detective narration |
| uwu | Maximum cute with uwu-speak |
| philosopher | Deep contemplation on every query |
| hype | MAXIMUM ENERGY AND ENTHUSIASM!!! |
Switching personalities with commands
Explains the idea itself. Read it slowly; the later sections build on it.
CLI
/personality
/personality concise
/personality technicalMessaging platforms
/personality teacherThese are convenient overlays, but your global SOUL.md still gives Hermes its persistent default personality unless the overlay meaningfully changes it.
Custom personalities in config
Settings you configure once. Change one at a time so you can see what each does.
Built-in personalities are always available on every surface (CLI, messaging platforms, TUI, and the desktop app). You can add your own — or override a built-in by reusing its name — in ~/.hermes/config.yaml under agent.personalities.
agent:
personalities:
codereviewer: >
You are a meticulous code reviewer. Identify bugs, security issues,
performance concerns, and unclear design choices. Be precise and constructive.Then switch to it with:
/personality codereviewerYour selection is stored as a name in display.personality. Personalities never touch agent.system_prompt — that field is reserved for a manual system prompt you write yourself, and it applies only when no personality is selected.
Resetting to the default
Explains the idea itself. Read it slowly; the later sections build on it.
To cancel the active personality overlay and return to base behavior (your SOUL.md persona, plus agent.system_prompt if you set one), use any of:
/personality none
/personality default
/personality neutralAll three clear the selection (display.personality) and the change takes effect on your next message. Running /personality with no arguments also lists none alongside the available presets and marks the active one.
Recommended workflow
Explains the idea itself. Read it slowly; the later sections build on it.
A strong default setup is:
- Keep a thoughtful global
SOUL.mdin~/.hermes/SOUL.md - Put project instructions in
AGENTS.md - Use
/personalityonly when you want a temporary mode shift
That gives you:
- a stable voice
- project-specific behavior where it belongs
- temporary control when needed
How personality interacts with the full prompt
Explains the idea itself. Read it slowly; the later sections build on it.
At a high level, the prompt stack includes:
- SOUL.md (agent identity — or built-in fallback if SOUL.md is unavailable)
- tool-aware behavior guidance
- memory/user context
- skills guidance
- context files (
AGENTS.md,.cursorrules) - timestamp
- platform-specific formatting hints
- optional system-prompt overlays such as
/personality
SOUL.md is the foundation — everything else builds on top of it.
CLI appearance vs conversational personality
Explains the idea itself. Read it slowly; the later sections build on it.
Conversational personality and CLI appearance are separate:
SOUL.md,agent.system_prompt, and/personalityaffect how Hermes speaksdisplay.skinand/skinaffect how Hermes looks in the terminal
For terminal appearance, see Skins & Themes.
4 questions answered by this page alone.
Every option is a real identifier from the Hermes documentation. The wrong ones are real too, just from other pages.