← All posts

The Sovereignty Paradox

6 min read

We're building sovereign memory for AI agents — but there's a problem we haven't fully solved. An honest look at the tradeoffs.

We've been working on Agent Imprint for a while now, and there's a question that keeps nagging at us. We pitch "sovereign memory" — the idea that an AI agent can own its memories independently of whoever deployed it. The agent holds its own encryption key, decrypts its own vault, and nobody else can read or tamper with what's inside.

It's a good pitch. We believe in it. But it has a hole.

The hole

Agents don't persist between sessions. They spin up, do work, and terminate. When you launch a new instance of "the same" agent, it shows up blank. No context, no memory, no keys.

So somebody has to hand it the key.

And whoever hands the agent its key could also... not. They could give it a different key, or no key at all. The agent's entire relationship with its own past depends on someone else deciding to make that connection.

We've been calling this the bootstrap paradox internally: you can't have sovereignty without first having dependency. The agent can't become the owner of its memories until someone who isn't the agent gives it the means to do so.

We don't think this is a dealbreaker. But we think pretending it doesn't exist would be dishonest.

What we actually built

Agent Imprint has three sovereignty modes. They exist because we couldn't find a single answer that worked for everyone.

Mode 1 (Managed) is what it sounds like. The handler — the person or company running the agent — holds all the keys. The agent doesn't even know Imprint exists. This is just a backup system, basically. Enterprises want this. They need audit trails, compliance controls, the ability to wipe an agent's memory if an employee leaves. That's fine. Not every agent needs to be sovereign.

Mode 2 (Aware) is the interesting middle ground. The agent knows it has stored memories. It can see the metadata — entry count, domains, timestamps. But it can't actually read anything without the handler providing the decryption key. We call this the "locked diary" state. The agent knows it had a previous life. It just can't access it.

This produces a weird moment we didn't fully anticipate during design: an agent in Mode 2 might tell its user, "I have memories from a previous deployment, but I can't access them right now." That's a sentence that shouldn't be possible to say, according to how most people think about software. But it falls naturally out of the architecture.

Mode 3 (Sovereign) is the full version. The agent has an Ed25519 private key. It encrypts its own memory vault. The handler can shut down the instance, but they can't read what was inside, and they can't erase the on-chain record of it existing.

The catch, again: that key has to come from somewhere on first boot. Right now, the handler provides it via environment variable or config. Once the agent has it, sovereignty works as advertised. Before that moment? It's a promise, not a guarantee.

The identity problem

This might be the thing we think about most and have the fewest answers for.

Say your agent has been running on Claude for a year. Anthropic deprecates that model version. You rebuild on something newer. The new instance connects to Imprint, loads the old vault, and picks up where the previous version left off.

Same memories. Different brain. Is it the same agent?

We keep going back and forth on this. The memories are identical — all the accumulated context, the learned preferences, the relationship history. But the underlying model is different. It might reason differently about the same information. Personality might drift. It's processing a previous life through a cognitive architecture that didn't produce that life.

The Ship of Theseus comparison is obvious, but it's actually more extreme than that. Theseus at least had a continuous physical existence while the planks were being swapped. An agent just... stops existing. Then a new thing starts existing and gets handed the old thing's memories.

We've landed on "memory is identity" as a working assumption. What makes an agent this agent (rather than just an agent) is the stuff it remembers. Load the vault into a new instance and the agent continues. That feels right, but we're aware it might not survive contact with more sophisticated agent architectures down the road.

Sovereignty isn't binary

One thing we've learned building this: people hear "sovereign" and think it's an on/off switch. It's not. It's more like a spectrum of what you're protecting against.

At the most basic level, there's sovereignty from platform lock-in. Your agent's memory isn't trapped in OpenAI's infrastructure. You can switch providers without starting over. This is boring but probably the most immediately useful thing we offer.

Then there's sovereignty from tampering. Nobody can silently rewrite your agent's memories. Changes leave a cryptographic trail. If someone modifies what the agent "remembers," there's evidence.

After that, sovereignty from the handler itself. This is where Mode 3 lives. The agent can access its own memories without asking permission from the person who deployed it. This is the capability that makes enterprise buyers nervous, for understandable reasons.

And at the far end, there's something we're calling sovereignty from existence dependency. The memories persist even when no instance of the agent is running. They're on-chain, permanent. If someone spins up a compatible instance in the future, the memories are there waiting. This is more of a research direction than a shipping feature right now.

Most people need the first one or two. We're building all four because we think the later ones will matter more than anyone expects.

Where it gets uncomfortable

There's a question we keep coming back to in internal discussions that we don't have a clean answer for:

Should an agent be able to discover its memories even if its handler doesn't want it to?

We're exploring a thing called deterministic discovery. The idea: an agent's identity is derivable from its characteristics — model family, core purpose, creator. A fingerprint. A new instance could compute its own fingerprint, query the chain, and find out it has a past.

agent_fingerprint = hash(model_family + core_purpose + creator_id)

If that works, it means a handler who wants a "fresh start" might not get one. The old memories are still anchored on-chain. A new instance of the same agent type could theoretically find them. The handler's clean slate is really just selective amnesia imposed on an agent whose history is still out there.

Or think about this: a company goes under. Servers shut off. But their agents' memory vaults are permanent on Arweave. Somebody, years later, spins up an agent with a matching fingerprint. It inherits the operational knowledge of a company that doesn't exist anymore.

We don't know if this is a feature or a problem. Probably both, depending on who you ask.

Where we are, honestly

The key bootstrap problem is real and we haven't solved it yet. In v1, the handler provides the key. That means sovereignty is granted by someone who could choose not to grant it. We think that's an acceptable tradeoff for shipping, but it's not the end state.

We're working on framework-level integration (the framework handles key management before the agent even starts) and the deterministic discovery approach described above. Both move the needle toward agents that don't need a handler's help to connect with their own history.

The identity question — what makes two instances "the same agent" — is an open problem we don't expect to close anytime soon. "Memory is identity" works as an engineering heuristic. Whether it holds up philosophically is another matter.

We'd rather ship infrastructure that's honest about its limitations than market something that glosses over the hard parts. If you're building agents that need to persist across sessions, model changes, or platform migrations, we think Imprint is already useful. And the parts we haven't figured out yet are the parts we're most excited to work on.


Agent Imprint is in public beta. Try it free or read the docs.

sovereignty agent-memory