What never changes
Whichever mode you pick, these hold:- Conduit is always a required co-approver. Reaching your own signing threshold is necessary but never sufficient: Conduit’s compliance approval is the final vote on every payout, and it is cast last.
- Conduit can never move funds without you. Conduit holds no seat in your signing quorum and cannot reach it alone. Neither side acts alone, in any mode.
- You hold your private keys. Conduit receives public keys only. This is true of passkeys and of server keys alike; the custody position is identical in all three modes.
- At least two administrators. The minimum-admin floor on your side of the roster does not change with the mode.
- No gas to manage. Network fees are sponsored; the wallet never holds a native-coin balance.
The three modes
What each mode commits you to
Passkey required
Every payout waits on a person. That is the control, and it is also the constraint: each approval attempt has a signing deadline (theexpiresAt on the transaction.awaiting_signature event; always drive your timers off that value), and a window that lapses without quorum is rebuilt and re-offered a limited number of times before the payout fails. Volume and time-zone coverage are the questions to ask here. This mode suits low-volume, high-value, deliberately reviewed flows.
Programmatic
Payouts clear at machine speed; changes to who can sign still need a human passkey. Two constraints shape your roster:- Your machine signers alone must be able to reach the threshold. A threshold of 2 needs two active machine signers; one machine and one human is refused with
422 PROGRAMMATIC_QUORUM_UNREACHABLE, both at claim time and on any later roster or threshold change. The rule is about who is enrolled, not who approves a given payout: once the roster satisfies it, human passkey signers may stay on the roster and any active signer’s approval counts toward quorum. - The consequence: a human approval can be possible, but never mandatory. Your machines can always reach quorum without one, so no threshold setting, customer-wide or per-wallet, can oblige a person to approve. If a mandatory human check is a control you need, enforce it in your own system before your server produces the approval; that is the only place it can bind. Passkey-required is the alternative, but it applies to all of that customer’s wallets; it is not a per-wallet carve-out for high-value flows.
Programmatic unattended
No human on your side of any decision, including governance. Your key management becomes your control environment: anyone who can use those keys can approve payouts up to your threshold, and can change the roster. Conduit’s compliance approval still stands between that and money moving, but nothing on your side does. Because of that, Conduit enables this mode per customer only after an additional approval review; plan for that review before you build against it.Operational facts for both programmatic modes
- You generate the keypair; Conduit gets the public half. Compressed P-256, 33 bytes. There is no private-key field on any endpoint.
- Your raw approval signature is never stored. Conduit relays it and discards it, keeping an audit record of what was signed and which key signed it.
- A single rejection is terminal. Any one signer, machine or human, declining a payout ends it. It cannot be revived by another approval.
- Re-submitting an approval is safe. A retry returns the request’s current state, never a double count. The approve and reject calls require an
Idempotency-Keyheader: a missing key is refused with400, and reusing a key with a different body returns409. - Approval windows expire. If a window lapses before quorum, the request is rebuilt with a new
signingRequestIdand your servers must stamp the new one. Handle the second webhook, not just the first. - Containment is add-then-remove, not a setting. If a key is compromised, seat a replacement machine signer first, then remove the compromised one; each step is a governance change under an admin approval. A removal that would leave the machine keys unable to reach the threshold is refused (
422 PROGRAMMATIC_QUORUM_UNREACHABLE, or403 SIGNER_REMOVAL_FORBIDDENwhen the machine signers are the whole roster), and the minimum roster (machine signers = threshold) is always in that position, so add first. Once the removal is accepted, that key’s signatures stop being accepted immediately. Changing the signing mode does not deactivate a live machine signer; planned key rotation is the same add-then-remove sequence.
Which mode fits
- Need a person to see every payout: passkey required.
- Need payouts to clear without waiting on a person, but want people to control who can sign: programmatic.
- Need a signing path with no human step at all, and can evidence the key controls to justify it: programmatic unattended.
Related
Programmatic payout signing
The machine signing loop: generate a key, register it, stamp requests.
Multi-signer wallets
Roster rules, admins, ceremonies, and lifecycle endpoints.
Signing thresholds
M-of-N thresholds, the minimum-admin floor, per-wallet overrides.
Non-Custodial Wallets
The two-signature model and the hosted verify page.