Why Your soul.md File Makes Your Agent Worse

Discover why a bloated soul.md file ruins AI agent consistency and how a minimal, constraint-based approach improves reliability.

By Central
A minimal soul.md file with only constraints produces more consistent AI agent outputs than a personality-rich one.
Highlights
  • A bloated soul.md file introduces variance because vague adjectives are interpreted differently each session.
  • Agents with minimal soul files that set constraints produce consistent output across runs.
  • The best soul file acts as a fallback, letting skills take priority without identity layer confusion.

Most AI agent builders will tell you to pour energy into your soul.md. Give it a name, a backstory, a playful tone. Make it feel like a real assistant.

That advice is wrong. And it’s costing you consistency.

The best soul.md files are cold, short, and barely qualify as a personality.

I’m going to argue the opposite: a bloated soul.md file is the single fastest way to make your agent unreliable. The best soul.md files are cold, short, and barely qualify as a personality.

Here’s why.

What a soul.md Actually Does

Your agent reads soul.md at the start of every single session. It’s the first thing in the system prompt. The file defines the agent’s identity — tone, independence level, what it accepts and what it refuses.

That sounds important. It is. But the mistake is treating it like a character sheet for a role-playing game.

The source material from one of the most watched agent-building videos puts it bluntly: “Two agents running the same skill on the same job will hand back different things if their soul files disagree.”

That’s not a feature. That’s a bug.

If your soul file is full of adjectives — helpful, friendly, thorough, creative — you haven’t told the agent anything it doesn’t already assume about itself. You’ve just introduced variance. Every time the model interprets those vague words differently, your output shifts. That inconsistency kills automation.

The Evidence Nobody Cites

The free tool Ordain (ordain.host) lets you build a soul file by selecting from checkboxes: professional, friendly, direct, warm, playful. Then independence settings: ask before everything, handle small stuff on own, just do it.

Most people check “friendly” and “direct” and wonder why the agent feels generic.

The problem isn’t the tool. It’s that we’re asking the agent to simulate a personality instead of follow instructions. A soul file written in aspirational language — “You are a diligent assistant who always double-checks facts” — sounds good. But it’s unenforceable. The agent can’t measure “diligent.” It can measure “every claim must include a citation.”

Here’s what the real data shows: agents with minimal soul files that only set constraints (British English, no preamble, answer first then reasoning) consistently produce output that matches expectations across runs. Agents with personality-rich soul files produce outputs that drift.

That drift is death for any automated workflow.

Step 1: Cut the Fluff

Open your current soul.md. Delete every line that describes a trait without a measurable action.

Before:

You are a helpful AI assistant who provides thorough, well-reasoned answers in a warm tone.

After:

You write in British English. You give the answer first, then the reasoning underneath. You never pad a list to hit a round number. When unsure, you say so.

The second version changed nothing about the agent’s capability. It changed everything about its reliability.

Step 2: Add Anti-Patterns, Not Affirmations

The most valuable part of a soul file is what the agent should not do. Models are trained to please. If you don’t forbid specific behaviors, the agent will default to the most agreeable version of itself — which is the most generic.

Add three rules:

  • Do not thank the user for their question.
  • Do not summarize or repeat information already given.
  • Do not generate placeholder text (“Lorem ipsum”) in any output.

These seem small. They eliminate the bulk of AI-identifiable fluff.

Step 3: Hardcode the Output Structure

Your soul file should dictate format, not vibe. If every report needs a one-line summary, then sources, then a “not found” section, write that into the identity file.

Why? Because the soul file is read on every run. Skills are only opened when a specific job matches their description. If you put your output structure into the skill, the agent might ignore it. If you put it in the soul, it’s baseline.

The video on building agents makes this exact point: “The soul file is the primary identity… it’s the first thing that goes into the system prompt on every run it ever does.” That’s your anchor. Use it for structure, not sentiment.

The Tradeoff Table

Aspect Personality-rich soul.md Minimal instruction soul.md
Consistency across runs Low – model interprets traits differently each time High – explicit rules lead to repeatable outputs
Debugging ease Hard – vague directives leave no trail Easy – you can trace why the agent did X
Setup effort High – requires tweaking personality sliders Low – write 5–10 rules and stop
User perception of AI “Friendly but unreliable” “Cold but consistent”
Best use case Creative brainstorming Any automated or recurring task

Step 4: Test the Difference

Take a research job you already know the answer to. Run it twice with your current soul file. Compare the outputs.

Now strip the soul file to just constraints and structure. Run it twice again.

The second pair will be nearly identical. The first pair will drift.

That’s not opinion. That’s what happens when you remove the primary source of noise from your agent’s identity.

The Problem That Nobody Talks About

The real reason people write personality-heavy soul files is psychological. It feels productive. You spend 20 minutes crafting the perfect “voice” for your agent, and it looks great in a screenshot.

But every minute you spend on that is a minute you didn’t spend on skills — which actually determine what your agent does.

Skills can be iterated. Skills can be tested. Skills produce artifacts you can inspect.

A soul file is just a layer of interpretation. The more of it you write, the more you’re relying on the model’s ability to interpret your intentions consistently. That’s a bet you will lose.

One builder I respect said: “A skill tells the agent how to do the job. The soul file tells it how to behave the whole time it’s doing it.” That’s true. But the best behavior for an automated system is no behavior — just execute the procedure.

The 20-Minute Fix

Open your existing soul.md. Count lines that aren’t rules about formatting, language, or forbidden outputs. Delete them.

Then add one line: “If any instruction in a skill contradicts this file, follow the skill.”

Now your soul file is a fallback, not a source of confusion. It lets skills take priority without the identity layer muddying the water.

That’s the file most people won’t write. It’s boring. It’s cold. It doesn’t have a name or a catchphrase.

It also won’t give you a different answer on Monday than it did on Friday.

And that’s the whole point.

Questions answered
  • What does a soul.md file actually do?It defines the agent's identity — tone, independence level, what it accepts and what it refuses. It is read at the start of every session.
  • Why does a bloated soul.md file make an agent unreliable?Vague adjectives like 'helpful' and 'friendly' are interpreted differently each time, causing output drift and inconsistency.
  • How should you fix your soul.md file?Delete every line that describes a trait without a measurable action. Add a line that says skills take priority over the soul file.
Share This Article