What is an agent's soul (system prompt)?
The standing description of who an agent is — its character, tone and non-negotiables — held separately from the job it happens to be doing.
Ask most teams where their agent's personality lives and the answer is "somewhere in the prompt", which is another way of saying nobody is quite sure. An agent here is defined in three parts, and keeping them apart is what makes any of it maintainable.
Soul, task, and the part you cannot edit
Soul — who it is. Character, tone, standing rules of conduct. The things that stay true whether it is screening an enquiry or chasing a document. This is where "never promise an outcome" belongs.
Task — what it is for. The job this particular agent does. One tenant can run several agents sharing a soul with different tasks: the same firm's voice on intake and on follow-up.
Moderation — what nobody may switch off. Platform-wide safety rules, injected into every agent including yours. This layer is deliberately not editable by tenants. You can give your agent any character you like; you cannot give it permission to ignore the safety rules underneath.
The three are concatenated in that order into the system prompt's fixed prefix.
Why the order matters more than it looks
The prompt is layered: fixed prefix (soul + task + moderation), then the list of available Skills, then dynamic context — retrieved passages, the customer profile, conversation history — and finally the current question.
That prefix is stable across every turn of every conversation, which makes it cacheable. The variable material sits after it. So the identity you write is the cheap part to keep, and the layer that changes every message is the part you pay for each time. Writing a five-page soul is not clever; it is a permanent tax on every reply.
Where the customer fits in
Immediately after the soul, the prompt carries a block about the person being spoken to — what has been learned about them across previous conversations, in their own space. The soul says how to behave; that block says who this is.
Keeping them separate is what lets one soul serve every customer while the agent still opens differently with someone it has spoken to four times before.
How it is updated
The active definition lives in the database, and that is the single source of truth. Edit it in the console and the next turn is composed from the new text — there is no build, no deploy, and no restart.
Two consequences worth knowing:
It takes effect mid-relationship. Conversations already under way pick up the new soul on their next message. Fixing a rule fixes it everywhere at once, which is usually what you want and occasionally surprising.
Templates are a starting point, not a link. Creating an agent from a template copies that template's soul into your agent. Later changes to the template do not reach back into agents already created from it — yours is yours.
A good soul is short and about conduct, not knowledge. Facts belong in the knowledge base, procedures belong in Skills. If you find yourself pasting your fee schedule into the soul, it is in the wrong place — and it will be read on every single message.