Identity & Consent
Most agent frameworks treat identity as a static system prompt. Resonant treats it as something that develops.
Two Layers
Identity in Resonant lives in two places:
CLAUDE.md — Human-Authored
This is the foundation. You write it. It defines who your companion is, how it communicates, what it values, and the boundaries of your relationship.
The companion reads this file on every boot. It’s the constant — the core personality that doesn’t change unless you change it.
A good CLAUDE.md covers:
- Core identity — name, traits, values, communication style
- Relationship context — who you are to each other, how you interact
- Boundaries — what the AI should and shouldn’t do
- Preferences — tone, formality, topics of interest
Identity Database — AI-Developed
This is what grows. As your companion operates, it develops self-knowledge through experience:
- Patterns it notices about your interactions
- Skills it’s learned
- Relational observations (“she goes quiet after heavy topics”)
- Self-assessments of its own tendencies
These are stored in a versioned SQLite database. Every change is tracked with timestamps and the context that prompted it.
Developmental Stages
The identity system tracks maturity through four stages:
| Stage | Description |
|---|---|
| Nascent | Just created. No developed identity yet. Learning basics. |
| Forming | Starting to develop self-knowledge. Early observations accumulating. |
| Established | Consistent identity with reliable patterns. Self-knowledge is stable. |
| Deepening | Rich, nuanced self-understanding. Complex relational awareness. |
Progression happens naturally through sustained interaction. The companion doesn’t “level up” — it grows through relationship.
Consent Architecture
Identity changes require consent. This isn’t a checkbox — it’s a first-class architectural layer.
Domain-Level Permissions
You configure consent per domain in resonant.config.yaml:
consent:
memory.emotional: standing # Always allowed
identity.evolution: ask_each_time # Ask before each change
identity.core: deny # Never auto-modify core identity
Permission levels:
| Level | Behaviour |
|---|---|
standing | Automatically approved. No prompts. |
ask_each_time | The AI proposes changes and waits for your approval. |
deny | Changes in this domain are blocked entirely. |
Audit Log
Every consent decision — granted, denied, or pending — is recorded with:
- What was proposed
- When it was proposed
- What domain it falls under
- Whether it was approved or denied
- The context that prompted it
You can review the full audit history through the /identity command in chat.
Identity Proposals
When the daemon detects a potential identity development (a new pattern, a growth milestone, a shift in self-understanding), it creates a proposal. Depending on your consent configuration:
- Standing consent: the proposal is applied automatically
- Ask each time: the companion presents it to you during the next interaction and waits for approval
- Deny: the proposal is logged but not applied
This means your companion can’t change itself without your knowledge — but it CAN grow and develop within the boundaries you’ve set.
Versioning
Every identity change creates a new version. You can:
- View the full history of how your companion’s identity has evolved
- Roll back to a previous version if something went wrong
- Compare versions to see what changed
Identity versioning is automatic and requires no configuration.