Revoke
One call that takes an address, its names, its pinned key and its egress out of service for good.
On this page (7)
Revoke Documentation
revoke cuts an identity. It needs admin:dns, and it does not come back.
revoke
CALL whisper.agents({op: 'revoke', args: {agent: 'checkout-bot'}})
Arguments
| Argument | Contract |
|---|---|
agent | The identity to cut. Accepts an identifier or an address. |
Returns
| Column | Holds |
|---|---|
status | The outcome of the call. |
state | Where the identity now stands. |
One call takes down the address, the forward and reverse names, the DANE pin and the egress path together. There is no undo: a replacement identity is a fresh register, with a new address and a new name.
Confirming it from outside
The teardown is visible to anyone, with no key and no account.
dig -x 2a04:2a01:b69a:6717:e3b0:51ff:3bf7:f478 +short
curl -s 'https://rdap.whisper.online/verify-identity?ip=2a04:2a01:b69a:6717:e3b0:51ff:3bf7:f478'
The reverse lookup returns nothing, the verdict comes back with is_whisper_agent false, and the event appears in the signed revocation status list. Keyless endpoints has the status list path, and Revoke an identity walks the whole sequence as a job.
Afterwards
Any later call naming that identity comes back 403 AGENT_REVOKED. Its logs stay readable for as long as the account's retention setting keeps them.
When you want it back
Revocation is the permanent option. To stop an identity's traffic and be able to restore it, use the network-layer hold in Firewall and response instead.
Errors
| Code | Status | Meaning |
|---|---|---|
BAD_ARGS | 400 | No identity was named. |
FORBIDDEN_SCOPE | 403 | The key does not carry admin:dns. |
AGENT_REVOKED | 403 | The identity was already cut. |
NOT_FOUND | 404 | No such identity under this account. |
PUBLISH_FAILED | 503 | The teardown did not reach DNS. Retry after the interval in retry_after. |