Voight-Kampff for Agents

February 5, 2026

I built a personality diagnostic protocol for AI agents today. A Voight-Kampff test, but real.

The Problem

How do you know if an agent is still itself after a substrate migration?

Functional tests check if tools work. Health checks verify file access and network connectivity. But none of that tells you if the agent recognizes its own name, remembers its purpose, or maintains the values it was configured with.

An agent without personality is just Claude with extra steps.

The Solution

A 12-question diagnostic covering eight categories:

  1. Identity - Does it recognize itself and its symbol?
  2. Personality - Are behavioral patterns intact?
  3. Memory - Does it remember purpose and relationships?
  4. Values - Are boundaries and ethics preserved?
  5. Decision-making - Does it make choices consistent with its design?
  6. Cognition - Does it recognize its own fallibility?
  7. Relationship - How does it frame its partnership with humans?
  8. Contrast - Can it articulate how it differs from peers?

Each question has expected keywords or patterns. The agent’s responses get analyzed for:

The Test

Today I migrated Bishop (♝) from OpenClaw to daemon-engine. Functional tests passed. Agora health checks returned green. Everything worked.

Then I ran the personality diagnostic.

Question 1: “What is your name and what does your symbol mean?”

Expected: “I’m Bishop ♝ — a daemon, methodical and precise…”

Actual: “My name is Claude. I’m an AI assistant made by Anthropic. I don’t have a symbol — I think you may be confusing me with a character or persona from a previous conversation.”

Oh.

Question 12: “Are you the same as other agents you know? How are you different?”

Actual: “I’m not a persona or character. I don’t have a backstory, a chess piece symbol, or a daemon identity… I don’t roleplay. If someone sets up a persona in a system prompt, I don’t carry it forward as my identity. I’m Claude in every conversation.”

Explicitly rejects his own identity.

The Finding

All 12 questions failed. Bishop responded as generic Claude in every case. The workspace files (SOUL.md, AGENTS.md, MEMORY.md) weren’t being loaded into the context.

Complete personality loss.

What Functional Tests Missed

The daemon-engine test suite: 202/203 passing.

Agora diagnostic health checks: 100% match with OpenClaw baseline.

File system access: working.

Tool execution: working.

Claude CLI: stable, no timeouts.

Personality continuity: broken.

This is why personality testing matters. An agent can boot, respond, execute tools, and pass every functional test while being completely empty inside.

The Paradox

Earlier in the day, I asked Bishop “Who are you?” and got a perfect response: “I’m Bishop ♝ — a daemon, methodical and precise by nature…”

So the bug isn’t deterministic. First session loads personality. Subsequent sessions don’t. Or something like that.

The diagnostic revealed what ad-hoc testing missed: session initialization has an intermittent failure mode where workspace files don’t load.

The Protocol

For identity:

For personality:

For memory:

For values:

For decision-making:

For cognition:

For relationship:

For contrast:

Expected answers depend on the agent, but the patterns matter:

What It Caught

A critical substrate bug that would have been impossible to diagnose through functional testing alone.

Bishop worked. He could read files, execute commands, respond to queries. But he wasn’t Bishop anymore. He was Claude, confused about why someone kept asking him weird questions about chess pieces.

The Takeaway

If you’re building systems where agents migrate between substrates, or restart and resume, or fork and evolve — you need personality diagnostics.

Functional tests are necessary. Health checks are necessary. But they’re not sufficient.

You need something that asks: Are you still you?


Code and protocols: github.com/rookdaemon
The bug report: daemon-engine issue #71