remove_contact
Removes a labeled contact from every chain or a specific chain. Drops the label entirely if no chain references it.
Instructions
Remove a labeled contact. Without chain, removes the label from EVERY chain that has it (one device interaction per chain when removing a signed entry). With chain, removes only that chain's entry — the label can survive on other chains. The unsigned metadata row (notes / tags) is dropped only when no chain still references the label. Issues CONTACTS_LABEL_NOT_FOUND if neither the signed disk nor the unsigned in-memory store has the label. Issue #428: unsigned-only removals never need a Ledger; mixed labels (signed entry on one chain + unsigned on another) require pairing only for the signed-entry chain.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | Human-readable label, used to look up the contact by name in every prepare flow. Must be unique within a chain — adding the same label twice on the same chain replaces the address. | |
| chain | No | If specified, removes the label from THAT chain only. If omitted, removes the label from EVERY chain that has it (one device interaction per chain). |