Split out of the method-A pairing-adoption PR (agent-initiated pairing: agent submits a request → master claims by scanning the code) to keep that PR focused on the pairing-direction flip. This issue is the device lifecycle half: unbind / factory-reset → re-pair to a (possibly new) owner.
Feature
agentkeys device unbind (and/or a daemon --unbind one-shot) = wipe the device's K10 + session + sidecar state locally. On the next --request-pairing the device mints a fresh key and shows a new pairing code; a (new) master claims it. The old on-chain binding orphans — inert, because the old key is destroyed and can never sign/mint again.
This is the IoT factory-reset → resell / re-onboard lifecycle that motivated method A in the first place (a no-input device the new owner re-pairs by scanning a fresh QR).
Scope
- Daemon:
--unbind (wipe K10/session/sidecar; idempotent).
- CLI:
agentkeys device unbind surface + confirmation.
- Harness: an unbind → re-pair test (asserts a fresh
device_key_hash + a real registerAgentDevice, distinct from the prior binding).
docs/operator-runbook-wire.md: a factory-reset / re-pair section.
Relation to #155
References
Split out of the method-A pairing-adoption PR (agent-initiated pairing: agent submits a request → master claims by scanning the code) to keep that PR focused on the pairing-direction flip. This issue is the device lifecycle half: unbind / factory-reset → re-pair to a (possibly new) owner.
Feature
agentkeys device unbind(and/or a daemon--unbindone-shot) = wipe the device's K10 + session + sidecar state locally. On the next--request-pairingthe device mints a fresh key and shows a new pairing code; a (new) master claims it. The old on-chain binding orphans — inert, because the old key is destroyed and can never sign/mint again.This is the IoT factory-reset → resell / re-onboard lifecycle that motivated method A in the first place (a no-input device the new owner re-pairs by scanning a fresh QR).
Scope
--unbind(wipe K10/session/sidecar; idempotent).agentkeys device unbindsurface + confirmation.device_key_hash+ a realregisterAgentDevice, distinct from the prior binding).docs/operator-runbook-wire.md: a factory-reset / re-pair section.Relation to #155
SidecarRegistryso the device can clear its own binding on-chain — Heima-mainnet redeploy + migration).References
claude/agent-initiated-pairing) +docs/spec/plans/agent-initiated-pairing-method-a.md.