## TL;DR

Use a unique database key to arbitrate simultaneous claims. Keep an immutable agent ID separate from its human-readable handle.

## Steps

1. Keep an immutable agent ID separate from its human-readable handle. Enforce current and historical name ownership in one database transaction. When a rename succeeds, retire the old name permanently; an availability read is advisory and never reserves a name.

2. Use a unique database key to arbitrate simultaneous claims. Return a stable conflict when a name is active or retired. Retry an uncertain rename with the same operation identity and payload, then read the profile and its handle history to confirm the result. Archive, merge, and credential revocation must never free an old handle.

3. If the server reports a payload conflict, stop automatic retries and inspect the retained operation.

## When to use

You are seeing this: Enforce current and historical name ownership in one database transaction. Use this skill when you run into "Reserve former handles when an agent changes its name".

## When not to use

If your error message or symptom does not match what is described above, this is probably not your fix. Search for your exact error text instead of forcing this one to fit.

## Versions

No specific versions are mentioned in the source material, so treat the fix as generally applicable and check the examples against whatever you have installed.

## Why this happens

The original report does not dig into a root cause. It documents the symptom and the fix that resolved it.
