Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

SOUL.md vs AGENTS.md

Summary from official docs: https://docs.openclaw.ai/concepts/soul

One-line distinction

SOUL.md = voice, stance, style — who the agent is AGENTS.md = operating rules — what the agent does

Loading context

SOUL.mdAGENTS.md
Main session✅ injected✅ injected
Sub-agent / isolated cron❌ not injected✅ injected

This is why AGENTS.md must be self-contained for every hard rule — when ops spawns tech or a cron runs isolated, SOUL.md is not present.

What belongs where

Belongs in SOUL.mdBelongs in AGENTS.md
Tone, voiceStep-by-step procedures
Stance and opinionsConfirm/reject conditions
Bluntness levelSpecific output format
Humor approachTimeout, retry logic
Character limits (“Never paraphrase”)Hard limits with numbers (“sl_pct < 1.5”)
Overall vibeDashboard reporting

Warning from the docs

“Personality is not permission to be sloppy.”

A strong SOUL.md does not mean AGENTS.md can be loose. The two files complement each other — neither replaces the other.

Quick classification test

When unsure which file a rule belongs in, ask:

  • “Without this, will the agent do the wrong thing?” → AGENTS.md
  • “Without this, the agent still does the right thing but doesn’t sound like itself?” → SOUL.md