Proof of Action
Get a person's signed yes before anything irreversible happens.
Proof of Action is live today, one of 4 live proofs. Each answer is a signed proof anyone can check, even offline.
What it proves
Proof of Action puts a human decision in front of any irreversible step. An agent or system requests approval, the designated person approves or denies on their own device — end-to-end encrypted — and the decision is recorded as a signed proof token: who approved what, when, over which channel.
Without Proof of Action
“OK, send it” in a WhatsApp thread — sign-off nobody can prove later.
With Proof of Action
Before an irreversible step — a payment, a deploy, a deletion — your system or AI agent asks a named person to approve it in Telegram or WhatsApp, or any other channel on request. Their yes or no is recorded as a signed proof.
How it works
- 1Set up an approval: who approves, and on which channel.
- 2Before the action runs, your code asks for approval.
- 3The person approves or denies — the decision itself is a signed proof.
Start in minutes
import { Proof } from '@proof-holdings/sdk';
const proof = new Proof('pk_live_...');
// A HITL config created in the dashboard, which also generates its keypair
const hitlId = 'YOUR_HITL_CONFIG_ID';
// createAndWait encrypts the sentence for the config's key before sending it:
// the server stores ciphertext, the human decrypts in their browser. It builds a v1
// (owner-only) envelope — a config with enrolled approvers needs a v2 one, via
// encryptMessageV2 + getApproverKeys, or the call is refused.
const decision = await proof.confirmations.createAndWait(
hitlId,
'Deploy v2.1.0 to production?',
{ throwOnDenial: false },
);
// Human taps Approve or Deny — the decision is a signed proof token