Docs menuMulti-Party Approval
Getting Started
Logos: Overview
Logos: CSIV Vocabulary
Logos: Local Resolution
Logos: SDK Reference
Logos: Integrations
AdvancedMulti-Party Approval
Multi-Party Approval
For the highest-risk actions, SilentAuth can require N-of-M approvals before issuing a receipt. This prevents a single compromised account from authorizing a catastrophic action.
Configuring M-of-N
Set minApprovals in your intent or policy rule:
const intent = await sa.createIntent({
action: 'drop_production_database',
params: { database: 'users_prod' },
approvers: ['cto@acme.io', 'vp-eng@acme.io', 'infra-lead@acme.io'],
minApprovals: 2, // Require 2 out of 3 approvers
expiresIn: 3600,
});Via Policy
{
"rules": [
{
"match": { "action": "drop_*" },
"require_approval": true,
"approvers": ["cto@acme.io", "vp-eng@acme.io", "infra-lead@acme.io"],
"min_approvals": 2,
"timeout": 3600
}
]
}How It Works
01
All approvers are notified simultaneously
Each approver receives their own independent notification with the intent details.
02
Each approver authenticates independently
Approvers cannot see each other's responses. Each signs with their own passkey or MFA.
03
Receipt issued when threshold is met
Once the minimum number of approvals is received, SilentAuth issues the receipt and notifies remaining approvers that approval is complete.
04
Any denial immediately blocks
If any approver denies the intent, it is immediately rejected regardless of other approvals.
Receipt Includes All Approvers
The issued receipt should list every approver who signed:
// Decoded receipt payload
{
"act": "drop_production_database",
"prms": { "database": "users_prod" },
"apv": ["cto@acme.io", "vp-eng@acme.io"], // array for multi-party
"min_approvals": 2,
"exp": 1705312200,
"iat": 1705308600
}