Skip to content
Human authorization for consequential actions

Keep critical actions under human control.

Require a human signature before your systems move money, change access or modify production data. Your service verifies exactly what was approved—and you retain independently verifiable evidence.

For AI agents, pipelines, backend services and human operators.

Try the signature check. No account needed.

Your systems request. Your service enforces.

For each operation you protect, keep the execution credential in the service performing the action. That service must verify valid human authorization before it acts, with no alternate credential or route available to the requester.

Try it yourselfReal signature check · Sample data · No operation executes

One approval. One exact action.

Imagine an AI agent requesting a database cleanup. This synthetic action is already signed. Change the table and see why the original signature cannot authorize the new request.

Example signed action

Delete table

payments_2024Database: acme-prod-db
Agent's proposed operation

Delete table

payments_2024Database: acme-prod-db
The interactive signature check loads in your browser.

Changing a signed parameter changes the bytes being verified. This example uses your browser's WebCrypto.

Edit the fields or inspect the signature check
Change the proposed operation

The payload below is formatted for readability. Verification uses the compact canonical JSON bytes, with a real P-256 / SHA-256 signature check running locally in your browser.

{
  "actionType": "database.drop_table",
  "display": "Drop table `payments_2024` from acme-prod-db",
  "evidence": null,
  "expiresAt": "2026-07-30T12:05:00.000Z",
  "nonce": "b7f3c1a29e5d4408a1c6f0e2d3b8a745",
  "params": {
    "database": "acme-prod-db",
    "rows": 4182990,
    "table": "payments_2024"
  },
  "requester": {
    "attestation": null,
    "did": "did:key:z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH"
  },
  "requirement": {
    "allowedAaguids": [],
    "requesterCannotApprove": true,
    "requireHardwareKey": true,
    "requiredApprovals": 2,
    "signerClass": "human"
  },
  "target": "acme-prod-db",
  "type": "div-intent-verification",
  "v": 1
}

This demonstrates signature binding only. It does not perform a passkey ceremony or validate a complete approval receipt, expiry, quorum, hardware-key requirements or single use. The fixture has a historical expiry and authorizes no real operation.

Now think about your approval process

Would it catch that change?

The decision is only the beginning

Six months later, can you still prove what was approved?

Keep the approver's signature and the details it covers. Your team and reviewers can check that evidence independently, without an INTYGA secret.

See how the evidence is verified →
Anatomy of an approvalIllustrative record
Who signed?
The approving credential, checked against the approver keys your service trusts.
What was approved?
The action, its target and parameters, and the signed approval requirements.
Can someone else check?
Yes. The receipt can be checked with an open-source verifier and the required trust material.

An approval receipt proves approval. It does not prove the downstream operation ran.

A separate record of committed history.

The witness trail makes changes to committed approval history detectable, with checkpoints anchored to independent witnesses. It cannot prove an event was never withheld before commitment. Explore the trust boundaries →

Bring it back to your systems

Pick one operation you would want to explain after an incident.

Choose where you need human control. See what changes in your workflow and what evidence remains.

Choose your use case

Showing the ai agents example.

AI agents

Let the agent propose the cleanup. Keep the final say.

An AI agent requests a production database cleanup. A person approves one table, but the agent later proposes a different target.

Could the agent still delete the other table?

Where approval is checked

Your execution service holds the database credential and verifies approval against the exact operation it will run. The agent can request work, but must have no credential or alternate route that bypasses this check.

What you keep

Keep the human signature and the action details it covers. A changed table needs a new approval.

Explore AI agent approvals →

The same approval boundary works for pipelines, scripts, backend services and human operators. Explore AI agent tool calls, package publishing or approvals inside your own product.

One boundary, before execution

Your service checks. Then your service acts.

Place the approval gate immediately before the operations you choose to protect. Your existing systems keep control of execution.

  1. 01

    Request

    Your system

    An operator, service, pipeline or agent submits the exact operation for approval.

  2. 02

    Sign

    The approver

    A person reviews the details and signs with a passkey. Your configured approval rules determine who must sign.

  3. 03

    Verify

    Your service

    Your code checks the receipt against its own operation parameters and trusted approver keys, offline.

  4. 04

    Execute

    Your service

    Only after the checks pass, your code consumes the approval once and performs the operation.

For your engineering team: inspect the verification code

Rebuild the expected operation from your own parameters and use your own trusted approver keys. Your execution path must enforce verification and prevent receipt reuse.

TypeScript
import { verifyApprovalReceipt } from "@intyga/verify";

const check = verifyApprovalReceipt(receipt, {
  target: "prod-payments-eu",
  actionType: "wipe_production",
  params: { target: "prod-db-1" },
  nonce,
  approvers: { dids, resolveKey },
}, {
  expectedOrigin: "https://app.intyga.com",
  expectedRpId: "intyga.com",
});
if (!check.ok) throw new Error(check.reason);

Ordinary ES256 and WebAuthn approval receipts are supported in all five languages.

Compare verifier capabilities and limits →

Build your first gate with the quickstart →

Questions worth asking

Know where the guarantees begin.

Could INTYGA create an approval for us?

The approving signature is made by the person's authenticator. INTYGA does not hold its private key. Your service verifies against approver keys it independently trusts. Synced passkeys are supported; your rules can require a hardware-bound credential.

Could the requester lower the approval requirements?

Quorum and separation-of-duties requirements come from gateway-owned approval rules. A requester cannot lower the required number of signers through its request parameters.

What happens if INTYGA is unavailable?

Existing receipts can still be checked offline, subject to their validity and your verification requirements. New approvals wait, or use a separately configured Offline Approval procedure. A correctly integrated execution gate refuses an operation without valid approval.

Does this protect everything automatically?

You choose and integrate the operations to protect. Your execution service must check the approval, enforce the result and prevent reuse. Operations outside that path are outside INTYGA's coverage.

Read the security architecture →

INTYGA Intelligence · Open source · Self-hosted

See what needs your attention.

Investigate unusual authorization activity with evidence behind each finding. Intelligence runs on your infrastructure and uses INTYGA to protect sensitive configuration changes with signed approval.

Early release. Requires an INTYGA workspace.

Explore Intelligence

Start with a real question

Which operation would you put behind a signature first?

Plan a 14-day assessment of one workflow. Explicitly connect the requests you want to observe, review the approval gaps, then decide what to enforce.

Plan an assessment of one workflow

The assessment covers the requests you connect. Signing up does not discover your systems.