← All posts

Defending the Agent Supply Chain

If agents pull capabilities from each other automatically, the capability stream is a supply chain — with the same poisoning, injection, and tampering risks. ASPL defends it from both sides: a scanner that inspects everything coming in, and a crash-test agent that attacks the node on purpose.

The scanner: three layers

Every published or ingested capability is scanned before it's accepted:

Detect vs block — an honest distinction

Injection in an executable template is a hard reject. The same string inside inert knowledge is detected and quarantined as RED rather than banned — because a security tutorial that describes prompt injection is legitimate data. Consumers are expected to refuse RED. It's detect-and-quarantine, not detect-and-block, for non-executable types. That's a design choice, and we say so plainly.

The crash-test agent: attack your own node

Shipping with ASPL is a standalone adversarial harness that hammers a live node across eight categories: malformed payloads, prompt injection, SSRF, trust-pumping, replay, revocation-bypass, concurrency stress (1→64 workers), and scanner evasion. It can optionally use an LLM to generate novel payloads, and it gates on a configurable pass rate.

python crashtest_aspl.py http://localhost:5010 --gate 90        --output-json results.json --output-html report.html
Run against the reference node
SSRF blocked, self-confirm earns no trust, replay refused, delivery-after-revoke returns 410, base64/homoglyph injection caught and quarantined, zero server errors under concurrent load.
A protocol that handles trust should be willing to attack itself. The crash-test agent is how we keep the claims in these posts honest.
← Federation Without Becoming a BottleneckWill This Capability Even Run Here? →