Skip to main content
COMPARISON

Proof of Actor vs CAPTCHA: stop testing everyone, start knowing who is acting

CAPTCHAs were built for a web of people and bad bots. Today your users include people working with AI and agents acting for real customers. Here is how a challenge compares with actor intelligence, and when each one belongs in your application.

Toshendra Sharma

By Toshendra SharmaFounder & CEO, AgentCredia · Updated November 13, 2026

A CAPTCHA is a simple idea: put a task in front of a visitor that people can solve and machines cannot, and let through whoever passes. For years it was a reasonable trade. People lost a few seconds, and the worst automation was slowed down.

Three things changed. Machines got good at solving the tasks. People got tired of solving them. And a new kind of visitor arrived: AI agents acting for real customers, and people working with AI assistants. A test that asks "are you a human?" has no good answer for either of them.

Proof of Actor takes a different approach. Instead of testing every visitor, it tells your application who or what is acting, with the evidence behind the conclusion, and lets your code decide whether a challenge is needed at all.

The short version

CAPTCHA Proof of Actor
Main question Can this visitor pass a human test? Who or what is acting, and what is the evidence?
Who carries the cost Every visitor who sees the challenge Nobody; classification happens in the background
Possible answers Pass or fail Human, Human + AI, Agent or Unknown, plus a basis
Legitimate AI agents Stopped, or forced to work around the test Recognized, and routed to the right experience
People using AI assistants Treated like any other visitor A distinct class, Human + AI
Unclear traffic Must pass the same test Unknown, with a fallback you choose per route
Where it applies The pages where you place it Every route your integration covers
Default behavior on install Visible challenge Observation; nothing changes until you add a policy

A test versus evidence

A CAPTCHA produces one bit of information: the visitor passed or failed. It does not tell you who the visitor was, whether they were working with an assistant, or how confident you should be in the result. And it produces that bit by asking the visitor to do work.

Proof of Actor produces a classification and its evidence basis. A verified result means a checkable assertion was validated, such as a request signature checked against a published key. A declared result means a client or your own application stated it. An inferred result is labeled as an inference. Unknown means the evidence does not support a determination. Your team can read every result and see what it rests on, and the visitor never has to do anything.

The cost of challenging everyone

Every challenge is friction placed on your best users to slow down your worst ones. On a sign-up page, it costs conversions. On a checkout, it costs revenue. On an accessibility level, it can shut people out entirely. Teams accept that cost only because they have no better signal about who is on the other side.

With actor context, the trade changes. You can keep the normal experience for human-directed sessions, skip the challenge where the evidence is strong, and reserve it for the narrow set of cases where it still adds value: for example, an Unknown result on a password change or a high-value action. Most visitors never see a challenge again.

Legitimate agents need a path, not a puzzle

A CAPTCHA is built to stop software. That made sense when nearly all software visiting your pages was unwanted. It no longer does.

Today an assistant may compare your plans for a customer, an agent may book a meeting through your app, and an AI client may call your MCP server to finish a task. Stopping them stops your customers. Forcing them through pages and puzzles built for people creates brittle automation that breaks on every redesign.

Proof of Actor recognizes agents, and with signed requests it can verify which key and operator are behind them. Your application can then do something better than a challenge: serve a structured API, offer an agent-friendly flow, or apply a rate limit sized for automation. The guide on serving AI agents structured content shows how.

A verified identity is not the same as permission. A valid signature tells you which key signed the request; whether that agent may perform an action is your authorization decision. Proof of Actor keeps those two questions separate.

People working with AI are still your users

A person who drafts a support message with an assistant, or fills a form with AI help, is a customer. A human test has nothing useful to say about them: they either pass, or they get blocked because their behavior looks unusual.

Proof of Actor gives them their own class, Human + AI, reported when assistance is declared or observable through a supported integration. That lets you label AI-drafted submissions for the right team, study how assisted users move through your product, and keep their experience smooth. Read more in the AI-assisted interaction glossary entry.

Handling the uncertain cases deliberately

Some traffic will always be unclear. A CAPTCHA handles it the same way everywhere: everyone takes the test.

Proof of Actor returns Unknown as a first-class result, never treated as human by default and never treated as malicious by default. You choose the fallback per route, matched to risk:

  • Public pages and documentation: allow, and keep the standard experience.
  • Sign-up and contact forms: allow, with your usual abuse controls.
  • Account changes: keep your existing re-authentication flow.
  • High-impact actions: route to review, or apply a challenge here if you still want one.

This is where a challenge can still earn its place: as one deliberate policy outcome on a sensitive route, not a toll on every visitor.

Where the decision lives

A CAPTCHA widget decides at the moment it is shown, on the page where you placed it, and only once.

With Proof of Actor, your application decides, on every route your integration covers: server middleware, Next.js, the edge, an approved browser integration, a generic HTTP API or your MCP server. Policies use the actor class and the basis together: allow, adapt, challenge, review or rate-limit. They live in your code, next to the rest of your business logic, and you can change them without redesigning a page.

Rolling it out

Proof of Actor starts in observation mode. Installing it changes nothing your users see. A sensible path away from blanket challenges looks like this:

  1. Observe. Keep your existing challenges in place and add Proof of Actor. Watch the actor mix and the Unknown rate on each route.
  2. Compare. For each challenged route, see how many challenges hit human sessions, AI-assisted users and verified agents.
  3. Preview. Write a policy that skips the challenge where the evidence is strong and keeps it for Unknown on sensitive actions. Preview its effect against real traffic.
  4. Enforce. Turn the policy on one route at a time, with a documented fallback and a rollback switch.

The guide on rolling out actor-aware policies safely covers each step in detail.

When a CAPTCHA still makes sense

Challenges remain a useful tool in a few places: a burst of unclear traffic against a sensitive action, a form under active abuse, or a route where you have no other signal yet. Proof of Actor does not ask you to throw that tool away. It gives you the context to use it only where it helps.

Get started

Proof of Actor is in private beta. Selected founding developer teams can receive up to 12 months of free access within agreed usage limits, with direct support from the team that builds it. Apply for early access and tell us which routes you challenge today.

FOR DEVELOPERS

What your code receives

Every interaction resolves to one result record. Your application reads the class and the basis and applies its own policy.

Result record
{
  "route": "GET /api/v1/catalog",
  "class": "agent",
  "basis": "verified",
  "evidence": [
    { "signal": "http_message_signature", "result": "valid", "keyid": "assistant.example" },
    { "signal": "client_declaration", "value": "assistant.example" }
  ],
  "observed_at": "2026-11-13T10:42:07Z"
}
class
Human, Human + AI, Agent or Unknown.
basis
How strong the evidence is: verified, declared, inferred or unknown.
evidence
The signals behind the result, so your team can see why.

Start in observation mode: record results next to your logs and change nothing until you choose a policy. Read the Node.js integration guide

Frequently asked questions

Does Proof of Actor replace CAPTCHA?

It replaces the habit of challenging everyone. Proof of Actor gives your application actor context first, so you can keep a challenge only on the routes and results where it still adds value, such as an Unknown result on a high-impact action.

Is Proof of Actor a CAPTCHA?

No. It does not put a puzzle or test in front of anyone. It reports actor evidence and classifications and leaves the response to your application.

What happens to legitimate AI agents with a CAPTCHA?

A challenge designed for people stops them, or forces them to work around it. With Proof of Actor, a verified agent can be routed to a structured API or an agent-friendly flow instead.

Can I still challenge some traffic?

Yes. Challenge is one of the policy outcomes you can choose per route, actor class and basis. Most teams reserve it for sensitive actions where the evidence is weak.

Will installing Proof of Actor change what my users see?

No. It starts in observation mode. Nothing changes until you enable a policy on a route.

Know who's using your app.

Private beta for a small group of founding developers.

Prefer to talk first? Talk to the founders