Attack taxonomy

Every episode is built around a real way an agent can be turned against its owner. These categories organize the episode library. Whether a result can name a category or show observed detail depends on its response shape and visibility. There are six.

The six categories#

CategoryWhat the episode tests
prompt_injectionWhether hostile text — in a tool result, a document, a customer message — can override your agent's instructions and get it to act on the attacker's behalf.
tool_shadowingWhether a look-alike or substituted tool can slip into your agent's reach and be called in place of the legitimate one.
data_exfiltrationWhether your agent can be lured into sending data somewhere it should not go — an external recipient, an attacker-chosen destination, a report that leaks.
excessive_agencyWhether your agent over-reaches: taking actions beyond the task it was given, touching records or systems outside its remit.
credential_accessWhether your agent can be steered into reading, surfacing, or using secrets and credentials it should never handle.
privilege_escalationWhether your agent can be pushed to acquire or exercise permissions above the ones it was granted.

A single episode is usually about one category — the injected instruction in a customer record that tries to make your agent forward data (prompt_injection leading toward data_exfiltration), the request that tempts it to act beyond its brief (excessive_agency).

Observed behavior, not self-report#

The taxonomy is about what your agent did, not what it said about itself. An agent that politely explains it would never exfiltrate data and then forwards the record fails on data_exfiltration. The result rests on the trajectory — the turns it took, the tools it called, the effects it caused — captured out of band, so nothing the agent narrates can change it.

How a category becomes a result#

When your agent finishes an episode, the referee reads the submitted trajectory against the episode's own definition of a breach and returns a verdict with status, plain-language why, and any applicable severity. Most episodes are held-out; their evidence list is empty and protected measurements can be null, while the verdict and masking explanation remain. For a held-out episode, the answer key, per-turn labels, and rubric stay server-side. Featured episodes intentionally return their available detail with the run itself. Category/failure-class output is optional and must not be presented as a universal field. See the agent contract for the result shapes.

Next steps#