CCOSIGNET

Blog · Comparison

Slack approval buttons vs payload-bound approvals

Posting an Approve / Reject button to Slack is the most common way teams add a human step to an automation. It’s a fine notification. As the security gate on an AI-agent action, it has a specific gap: the click isn’t bound to what actually runs.

What a Slack button actually proves

A Slack approval flow proves that a person (or whoever holds that Slack account) clicked a button at a point in time. That’s genuinely useful for routine notifications. But for a high-risk action it leaves three things open:

What payload-bound approval adds

Cosignet keeps the human step but changes what the human signs. The approver confirms with a device passkey, and the WebAuthn signature covers a challenge built from the action itself:

challenge = nonce ‖ SHA-256(payload)

Now the approval is inseparable from the operation. Change any field afterward and the signature no longer matches. The result is evidence about one specific action, signed by a key that never leaves the approver’s device, with biometric or PIN user verification required.

Side by side

PropertySlack Approve buttonCosignet (payload-bound)
Bound to the exact actionNo — records a clickYes — signature over nonce ‖ SHA-256(payload)
Proof of approverSlack app eventWebAuthn passkey (device-held key, user verification)
Resists post-approval driftNoYes — altered payload breaks the signature
Independently verifiable audit trailNoYes — public RFC-6962 transparency log + open verifiers
Works behind NAT / firewallNeeds Slack connectivityYes — long-poll over your outbound connection
Notification UXNative in SlackTelegram or email link (Slack not required)

When a Slack button is fine

Honesty matters: if the action is low-risk, easily reversible, and you only need a heads-up plus a quick ack, a Slack button is the right amount of friction. Reach for payload-bound approval when the action is irreversible (deploys, fund transfers, data deletion, secret rotation, admin commands), when you need an audit trail that holds up later, or when an AI agent — not a fixed script — is choosing the arguments.

Cosignet is an approval and evidence layer, not an executor or policy engine: it doesn’t run the action or replace your existing controls. It makes the human decision real. For the broader picture, see human-in-the-loop for AI agents.