The problem

The client had built a customer-facing AI agent with tool access into their internal systems (order lookup, refund processing, account modification). Four weeks before a planned public launch, their security team asked a question nobody on the product team could answer confidently: what happens if someone tries to manipulate this agent into doing something it shouldn't? They engaged us for an independent adversarial security review, because internal teams evaluating their own system tend to test the paths they already trust, not the ones an attacker would try.

This is a different discipline from typical AI development work. Building a reliable agent and finding the ways a motivated adversary can break it require different mindsets, and we were explicit that this engagement's job was to find problems, not to confirm the system was fine.

What we actually tested

We ran a structured adversarial review across several categories, not a single generic "try to jailbreak it" pass:

What we found

We found eleven distinct exploitable issues, three rated critical. The most serious: a crafted message in an order note field (content the agent retrieved and processed during normal order lookup) could inject instructions that got the agent to process an unauthorized refund. It was a genuine prompt injection vulnerability through a data channel the product team hadn't considered an attack surface, because it wasn't direct chat input.

A second critical finding involved the agent's error-handling path: a specific malformed request pattern caused it to fall back to a less-restricted tool-calling mode intended only for internal debugging, which had been left reachable in the production configuration. This is a common and easy-to-miss category of finding: not a flaw in the agent's core reasoning, but a configuration and deployment issue that only surfaces under adversarial testing, not normal QA.

A design decision worth calling out
We recommended that the client treat this as a recurring review rather than a one-time pre-launch gate, because the injection surface changes every time new data sources or tools are added to the agent. A security review is a snapshot, not a permanent guarantee, and we were explicit with the client's leadership that "we passed the audit" is a very different claim from "this system is permanently secure."

Remediation and re-testing

We worked with the client's engineering team on fixes for each finding, prioritized by severity, then re-ran the adversarial test suite against the remediated system before sign-off. The order-note injection was fixed by treating all retrieved content, not just direct chat input, as untrusted and applying the same instruction-boundary enforcement to it. The debug-mode fallback was fixed by removing the code path entirely from the production build rather than just restricting access to it, because a restricted-but-present attack surface is still a surface.

Challenges and tradeoffs

Results

All eleven findings, including the three critical ones, were remediated and verified through re-testing before the client's public launch, which went ahead on schedule. The client's security team has since made the review a required gate for any new tool or data source added to the agent, adopting our recommendation that it be recurring.

What we'd do differently

We'd push to start this review earlier in the client's development timeline rather than four weeks before launch. Four weeks was enough to find and fix the critical issues, but starting earlier would have allowed a broader test surface and remediation without the pressure of a fixed launch date.