Multi-Party Approval
For the highest-risk actions, SilentAuth supports requiring N-of-M approvals — a permit is only issued once a minimum number of independent approvers have each signed off. 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
Each approver receives their own independent notification with the intent details.
Approvers cannot see each other's responses. Each signs with their own passkey or MFA.
Once the minimum number of approvals is received, SilentAuth issues the permit and notifies remaining approvers that approval is complete.
If any approver denies the intent, it is immediately rejected regardless of other approvals.
Permit Includes All Approvers
The issued permit JWT lists every approver who signed:
// Decoded permit 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
}