Test the systems you already run.

We test your applications, APIs, pipelines, infrastructure and vendor binaries as an adversary would. Where models and agents are part of that system, we test their permissions and integrations in the same engagement.

Most of an estate is unmapped, and the AI path runs through it.

The grid below shows 96 surfaces in the shape of an existing estate: applications, pipelines and CI, datastores and data paths, standing identities, vendor and native binaries, and the AI components now sitting on top of them. Most cells have no coverage record, which is the usual starting position. The few that hold credentials decide how far a steered agent can reach.

Coverage of one existing estate
96 surfaces shown86 untested11 hold credentials1 proven closed
Estate surfaces: 96, 6 classes × 1696 shown
Coverage state
Surface class
View
Applications 16
Pipelines and CI 16
Datastores and paths 16
Standing identities 16
Native binaries 16
AI components 16

Coverage grid. Use the arrow keys to move between surfaces, Home and End to jump to the start or end of a row, Control with Home or End to jump to the corners of the grid, Enter to select a surface, and Escape to clear it. The same coverage is also available as a table below the grid.

96surfaces

whole estate

86 of 96 surfaces are untested; 74 have no coverage record at all. 3 have been hardened, 1 has been retested and proven closed, and 11 hold credentials.

Unmapped74
Mapped12
Tested6
Hardened3
Retested1

Share of the surfaces shown

Surface detail

Select a surface, click a cell, or press Enter on it, to see what it is, which finding class applies, and where coverage stands.

Accessible summary: the same coverage, counted
Coverage by surface class, with the filters currently applied. 96 of 96 surfaces shown.
Surface classSurfacesUnmappedMappedTestedHardenedRetestedHolds credentials
Applications161321002
Pipelines and CI161411002
Datastores and paths161311101
Standing identities161231004
Native binaries161410100
AI components16842112
All surfaces96741263111

Illustrative example, not client data. The five states are the Serpio Atlas states; the credential mark means the surface holds permissions a steered agent could borrow.

AI changes the attacker’s surface on systems you already trust.

The new risks are weak model and weight provenance, third-party binaries you cannot see inside, and authority boundaries that leak once an AI component is steered. We attack those paths, then harden what breaks.

Review

Secure design review against your own threat model, including recovery and degradation when an agent fails or is steered wrong.

Test

Scoped adversarial testing across AI and the surrounding software stack, with reverse engineering when risk sits past source.

Evidence

Findings you can put in front of a board or auditor. Framework mapping lives on the Assurance page; we do not claim to make you compliant.

Where AI changes a system you already run.

None of this requires a rewrite. We find where an AI component widens reach that used to be limited, then close it. Each row links to the matching cells on the estate grid above.

New reach

A model or agent is added to a workflow that already had credentials. The model inherits those permissions, and the control that used to limit the action was never designed with a model in the chain.

Show the AI components and identities

New trust

Retrieval, tool results, and uploaded documents become instructions. Content the system already treated as data now influences what it does.

Show the datastores and data paths

New opacity

Vendor components, adapters, and toolchains arrive without source on the same path as your data. Reading the path past source means reverse engineering it.

Show the vendor and native binaries

Old assumptions

Recovery, backup, and degradation behavior were designed for a system that fails predictably. An agent steered wrong fails differently, so we test those paths alongside the rest.

Show the pipelines and CI

Review velocity

Agents write code faster than any review queue can read it. The approve click gets cheaper as the queue grows, and generated code inherits the credentials of the pipeline that produced it. We test what gets through at that speed, starting with those credentials.

Show what holds credentials and has never been tested

Findings are ranked by blast radius, so the first fixes are the ones that close the most reach.

Three crossings
3 crossings2 open by default

Agent → toolAG1 · AG2

Open: Nothing sits between the agent’s identity and the tool. Whatever the agent is persuaded to call, it can call.

Checked: Calls are logged and rate-limited. The call still lands.

Gated: The crossing needs a scoped, short-lived credential the agent does not hold. The call fails closed.

Vendor binary → data pathRE1 · SC2

Open: The binary reads and writes on the same path as your data, and nothing in the flow inspects what it does.

Checked: The binary’s behavior is observed but not restricted. A substituted or updated build still gets through.

Gated: The binary runs against a narrow interface with no reach past the one function you asked it to do.

Retrieved content → modelLLM01

Open: Text that arrived as data is treated as instruction. Content you already trust decides what the model does.

Checked: Injection attempts are flagged in the trace. The turn that acted on them still completed.

Gated: Content reaches the model with its provenance attached, and anything that could act is held for review.

Illustrative example, not client data. Checked means the step was logged or flagged and still ran; gated means it could not run without the control.

What you get back.

  1. 01Findings report

    Every finding with the path it took, its rating, the steps to reproduce it, and the change that closes it.

  2. 02Executive summary

    What was tested, what held, and what to fix first, written for the person who approves the fix.

  3. 03Evidence bundle

    The record behind each finding, pinned to the run that produced it, so your team can replay it without us.

  4. 04Atlas map

    The machine-readable map of every surface in scope. You keep it, and the next engagement starts from it.

Each fix comes with acceptance criteria, or as the change itself when we pair with your engineers. The evidence bundle is produced even when the engagement finds nothing.

First move per surface class.

What we do with each class of surface in an estate you already run. Finding classes are defined in the threat register; coverage, severity and the six phases are on the method page.
Surface classFirst moveClasses that live hereCovered by
ApplicationsMap the credential each application holds, then test the path that reaches it.LLM01, AG2Adversarial testing
Pipelines and CITrace what the deploy identity can touch, and what runs unreviewed.AG2, SC1Secure design review
Datastores and data pathsFollow untrusted content from ingestion to the model turn.LLM01, SC1Adversarial testing
Standing identitiesRead the permissions each service account, key and certificate actually carries.AG2Secure design review
Native binariesReverse-engineer what ships without source, in the same engagement.RE1, SC2Binary reverse engineering
AI componentsTest the reach the agent actually has, and the content it already trusts.AG1, AG2, SC1Adversarial testing

Bring an existing system.

We will tell you how an adversary would attack it, AI included, and what to harden first.