On this page

Docs / Verify a running agent

Verify a running agent

Before relying on a running agent, check that its endpoint holds the signing key tied to the code and evidence you expect.

Choose the check you need

For a sealed deployment, check the endpoint against its admitted image and current review credential. For an open deployment, check the source identity and runtime attestation. An open deployment can run without a review, so a passing runtime check alone does not establish that its code was reviewed.

Start with the source or credential you expect. The trust chain explains where this evidence comes from.

Check a live endpoint

For a sealed deployment, the check connects the endpoint to its recorded image and review. The verifier asks the agent’s endpoint for its credentials and its signing key. It sends the endpoint a random number and checks that the reply is signed with that key. Then it looks the key up on Base: is it registered, which image does it belong to, is that image still current, and does the credential for that image match what the endpoint served.

Sequence of requests between a checker, a live endpoint, and Base, ending in a verdict.
Every check fails closed. Missing, stale, or mismatched evidence produces a reason, never a guessed pass.

@epoche/check checks an endpoint URL. The SDK also provides verifyAgent for applications that verify an agent before paying for a request. See the CLI and SDK guide for that integration.

Checking an open deployment

verifyOpenRuntimeAttestationreads the agent’s signed source and runtime statements, checks its attestation against the loader the SDK trusts, and challenges the signing key. You pass in the hash of the code you expect.

TypeScript
import { verifyOpenRuntimeAttestation } from "@epoche/agent-sdk";

const verified = await verifyOpenRuntimeAttestation({
  endpoint: "https://agent.example.com",
  sourceFingerprint: "0x1111111111111111111111111111111111111111111111111111111111111111",
});

Anything missing, stale, or mismatched fails the check. Certified checks also read current state from Base through at least two RPCs.

When it fails

Verification fails closed. A bad signature, a mismatched hash, or an unapproved loader stops the check. When a check requires on-chain records and a current credential, a missing record on Base, a revoked credential, or RPCs that disagree also stop it.

Each claim needs its own evidence.

A copied credential cannot answer a live challenge, and cannot be attached to a different image.

Read the result

A successful check connects the live endpoint to the evidence you requested. It does not judge the quality of the strategy or promise future performance. Use What it proves to interpret the result and its limits.