CCOSIGNET

Cryptographic human approval for AI agents

Get human approval for the exact action before your AI agent executes it.

Cosignet gives your agent, automation, or backend a passkey-signed decision bound to the exact payload — before a payment, production change, deletion, or admin action proceeds. Change the command, amount, recipient, or endpoint after approval and the signature no longer matches.

Free to start — no credit card. No Docker, no agent rewrite. Works behind NAT.

Live demo

Try a critical-action approval

Create a real approval request bound to a demo payload {"to":"acct_8821","amount_usd":4200,"memo":"INV-2025-118"} — the same example shown above. Review the exact action, approve it with your device passkey, and see the signed decision returned to the system. The same routes power production.

What to gate

Actions that should not run silently

Put an explicit approval in front of the irreversible, costly, or externally-visible calls your automation, agents, and services make.

Who it's for

One gate, three jobs

AI app builders

Add approval gates to tool calls without building your own auth flow. One call before the risky action; continue only on a signed yes.

Security teams

Require passkey approval and preserve a signed, credential-attributable audit trail before agents touch production systems. Your enrollment records bind that credential to a person and role.

Founders

Ship agents that can actually act, without handing them unchecked authority over money, data, or infrastructure.

How it works

Three steps, one binding

Critical action → passkey approval → signed decision → audit trail

  1. 1. Your system requests approval

    An MCP tool call or a single HTTP request — from your agent, script, CI/CD pipeline, or backend service — carries the exact action payload.

    // MCP tool: request_human_approval
    {
      "action": "Wire transfer to vendor",
      "payload": { "to": "acct_8821", "amount_usd": 4200, "memo": "INV-2025-118" },
      "approver_username": "alex"
    }
    curl -X POST https://cosignet.com/api/confirmations \
      -H 'content-type: application/json' \
      -H 'X-Api-Key: $COSIGNET_API_KEY' \
      --data '{"username":"alex","action":"Wire transfer to vendor",
        "payload":{"to":"acct_8821","amount_usd":4200,"memo":"INV-2025-118"}}'
  2. 2. The approver reviews the exact action

    The approver opens the link and sees a clear, field-by-field breakdown of the exact action — not raw code — then signs it with a passkey. User verification is required. Every field of the signed payload is shown, and the raw payload plus its SHA-256 are one tap away for verification.

    Action:      Wire transfer to vendor
    To:          acct_8821
    Amount Usd:  4200
    Memo:        INV-2025-118
    sha-256:     ead3…ff31   ← the exact data being signed

    Challenge = nonce ‖ SHA-256(payload). What the approver saw is what got signed.

  3. 3. Cosignet returns a signed decision

    The status flips to approved with the raw WebAuthn assertion stored as proof. The assertion is bound to the challenge, so it cannot be replayed against a different payload.

    GET /api/confirmations/{id}
    {
      "status": "approved",
      "payloadHash": "ead3…ff31",
      "credentialId": "…",
      "rawAssertion": { "response": { "clientDataJSON": "…", "signature": "…" } }
    }

Why not just ask in Slack?

A confirmation says “yes”. Cosignet signs what was approved.

A well-designed native approval can stop a specific tool call inside its own platform. Slack and workflow approvals can also provide useful operational records. What they do not usually provide by default is portable cryptographic evidence that can be verified independently of the platform that requested the approval.

Cosignet adds a WebAuthn signature over the exact payload hash and a cross-platform transparency record. Change any field after approval and the signed decision no longer matches — so the approval is evidence about a specific operation, not just UI reassurance. It complements native approvals, IAM, and audit logs; it does not replace them.

Integration in a minute

Gate critical actions in minutes

Call Cosignet before any privileged, irreversible, or high-risk operation — from an AI agent, CLI script, CI/CD pipeline, backend service, or admin tool. No inbound webhooks, open ports, or public IP: your code polls out over its existing connection, so it works from local CLI tools and locked-down VPCs behind NAT and firewalls.

# Add the remote MCP server to Claude Code
claude mcp add --transport http cosignet https://cosignet.com/mcp \
  --header "X-Api-Key: $COSIGNET_API_KEY"

# Your agent, script, or service calls the tool before a critical action:
#   request_human_approval(action, payload, approver_username)
# and reads back approved / rejected / expired / pending.

Security & honesty

What it guarantees, and what it does not

Cosignet is not an executor or policy engine; it is an approval and evidence layer for critical actions.

Guarantees

  • Keys never leave the approver's device. The passkey private key is generated and protected by the approver's authenticator. On many platforms this uses secure hardware such as Secure Enclave or TPM. Cosignet never receives or stores it.
  • WebAuthn user verification (UV) is required for every approval. Depending on the device and authenticator, this may use biometrics, PIN, passcode, or a security-key interaction.
  • Phishing resistance from WebAuthn where the RP ID and origin are enforced by the browser.
  • Payload binding: the challenge is nonce ‖ SHA-256(payload), so the signature covers the exact action. The approval page re-hashes the displayed data in your browser and confirms it's exactly what you'll co-sign before you approve — proof the card was not spoofed.
  • Audit trail: the raw assertion is stored as proof a specific credential approved a specific payload.

Non-guarantees

  • No hardware device attestation for synced passkeys — a synced credential may exist on more than one device.
  • Cosignet does store the action payload — it has to, to show the approver exactly what they are signing and to compute the binding. Keep secrets out of the payload; pass references (IDs) instead of raw sensitive data. We are not a hash-only relay.
  • Cosignet binds the approval to the action; it does not execute the action or guarantee your system runs only what was approved.
  • No absolute security guarantees are made. The signature cannot be forged without the user's device, and the action cannot be swapped after approval without breaking the binding.

Public transparency log: every approval is committed to an append-only, independently verifiable log — check any approval yourself on the verify page, with tree heads anchored into Bitcoin (OpenTimestamps). The log withholds the payload by default; you can optionally publish an approval's full action, payload, and a hash of the account's designated verified email for public proof — off unless you turn it on. See the security page for details.

Pricing

Pricing for Critical Action Control

Start free. Upgrade when Cosignet protects real production workflows.

Approvers are always unlimited, on every plan — you never pay per person who signs, and paid plans add unlimited approvals (fair use). Gate as many actions and add as many signers as you need; plan tiers vary by member capacity, retention, and features, never by approval volume. Every plan includes the full core — MCP & REST API, signature-verified webhooks, outbound polling (works behind NAT), payload-bound approvals, and the passkey audit trail with a publicly verifiable transparency log.

Members vs approvers: a member is a team seat with dashboard and API-key access — each plan sets a member limit. An approver is a passkey identity that signs approval requests; approvers are unlimited and never billed, so anyone from a solo dev to an entire on-call rotation can sign without adding cost.

Free

$0/month

For testing, prototypes, and a first integration.

  • Unlimited approvers — never pay per signer
  • 2 members
  • 500 approvals / month
  • 7-day audit history
  • MCP, REST & webhooks
  • Community support · no credit card
Start free

Business

$249/month

For production controls and audit requirements.

  • Unlimited approvers & approvals (fair use)
  • Up to 20 members
  • 1-year audit history
  • Audit-log export
  • Priority support
  • Planned — not available today: SSO (OIDC / SAML), advanced policies (quorum, timeout escalation), custom domain & branding. When SSO ships it's included on every paid plan — never a paywall on secure login.
Start free

Enterprise

Custom

For regulated teams and procurement.

  • Unlimited members, approvers & approvals
  • Device-bound credentials (non-syncable passkeys); attestation on roadmap
  • Single-tenant deployment on request
  • Planned — not available today: configurable retention & data residency
  • DPA & security questionnaire support
  • Planned — not available today: contractual SLA
  • Planned — not available today: SOC 2 / ISO 27001 certification
  • Procurement & dedicated support
Contact us

Founding customers. We're onboarding our first design partners. The first few get 50% off the first year, price locked for 24 months, and direct founder access — in exchange for candid feedback and (optional) logo permission. Become a founding customer →

Need device-bound credentials, single-tenant deployment, or a security review? Contact us.