Shipping AI Into 5 Major Banks Without a 12-Month Compliance Wait — Al Chen, Cisco
Read the talk
Shipping AI Into 5 Major Banks Without a 12-Month Compliance Wait
Al Chen explains how his team turns vulnerability remediation, disaster recovery and sensitive-data handling into work that bank security teams can inspect.
From a talk by Al Chen
At a glance
Ideas worth remembering
CVE remediation needs an account of image versions, bank policies and upstream dependencies; a package-version change can be supplemented with an exploit test.
Backup and restore logs show job status; row counts and replica convergence help assess the data itself. Cross-region recovery also requires a decision about where records may reside.
A judge’s reasoning can expose sensitive data even when the UI is redacted. Separating scores from explanations and using a second judge on redacted input adds protection at the cost of another model call.
Deployment speed depends on the bank’s readiness for image approvals, GPUs, security review and access configuration as well as the vendor’s engineering.
Production requires showing the work
A bank-facing AI application can handle requests from millions of customers, making production a different proposition from a prototype or an internal productivity agent. Al Chen of Cisco describes deploying AI observability software into that environment, where a conventional SaaS connection with outbound internet access can create a route for sensitive information to leave the bank. 1:14
Chen compares compliance review to his tenth-grade math tests: the answer mattered, but most credit came from the proof. His team aims to shorten a process that can take a year to a couple of weeks by making three areas inspectable: how images reach a bank’s cluster, how data survives a regional failure, and how sensitive information stays away from unauthorized employees and outside the bank’s virtual private cloud (VPC). The timing depends on the bank’s own readiness, as the later examples make clear.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Make CVE remediation work across banks
A single common vulnerability and exposure (CVE) can be researched in a vulnerability database. The operational problem is the multiplication: a platform has several images, each image can contain several CVEs, and banks run different image versions. Their scanners, severity policies and remediation deadlines can also differ. 2:42
Some vulnerabilities sit in transitive dependencies of open-source projects. Chen’s team follows upstream release notes and explains to bank security teams when a fix depends on a maintainer. For issues it can address, it may upgrade a package or rebuild against a base Docker image. Even then, one bank may require package version 3.8 while another prefers an older version because it sees too many CVEs in the newer one; the resulting software still has to function.
The team uses an agent skill to help research and report these cases. Its table tells engineers which CVEs to fix and gives bank security teams explanations for issues blocked by dependencies. The useful distinction is between work the team can undertake and risk it must account for while waiting on an upstream project.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Test the exploit, not just the package version
Chen describes scanners such as Sysdig, Wiz and Prisma checking whether a package has reached a specified version. That check alone does not demonstrate whether a particular exploit still works against the application. His proposed extra evidence is a Harbor task: a harness containing agent instructions, the application’s Docker images and tests. 5:23
In the example, version 2.6.2 of a package is supposed to remediate a CVE. The agent is asked to write an exploit based on the older version, try it against the newer one, and write a test to check whether the exploit succeeds. Harbor can run trials in parallel using containers or sandboxes, giving the team repeated attempts to inspect. A failed attempt is evidence about that tested exploit, not proof that every possible exploit is absent.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
A successful restore job still needs data checks
For disaster recovery, Chen describes a ClickHouse deployment where the bank must arrange cross-region recovery itself. His pattern backs up a primary-region database to a bucket, then runs a restore job into a disaster-recovery region, which may contain several replica pods. The procedure uses clickhouse-backup, an open-source project maintained by Altinity. Chen’s assessment of managed cross-region failover is specific to the situation he describes in the talk. 7:22
The backup tool’s logs can show that the jobs ran, but that status does not establish what the data looks like now. A bad disk or node, a migration problem, or replication lag can leave data stale. Chen adds checks for table row counts and whether replicas within a region have converged. Those checks ask about the restored data rather than only the job’s completion.
Recovery design also makes a data-residency decision. A bucket can be placed in Oregon or Virginia, but the location of individual records can matter under jurisdictional rules. One option Chen describes is to replicate trace IDs and metadata across regions while keeping the core trace data in its permitted region. That helps preserve regional restrictions, while limiting what the remote region actually holds.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
A judge can put sensitive information back into its explanation
Redaction at an SDK, gateway or middleware can make the customer-facing UI look clean. An LLM-as-a-judge creates another path: it scores an agent’s work and produces an explanation for a human reviewer. Chen points to a seemingly innocuous instruction intended to make the explanation verifiable; if the judge sees raw traces, its reasoning may reproduce personally identifiable information (PII) or material nonpublic information (MNPI). He recommends inspecting judge prompts and traces for that leakage. 10:07
The proposed flow separates the score from the reasoning. The score persists for evaluation. Application code checks whether a record contains sensitive information: reasoning can persist when the check finds none, and is suppressed when it finds sensitive information. The diagram shows those branches and the alternative for cases where a bank still wants an explanation.
That alternative runs a second judge on input with sensitive information redacted and displays its explanation. It costs another LLM call on the same request. Chen presents redacted input as a reason for confidence in the second output; the protection depends on the redaction actually covering the sensitive information.
Separate the score from explanations
Read the diagram as text
- Judge on raw trace. raw — Produces a score and reasoning.
- Score persists. raw — Available in the UI for evaluation.
- Sensitivity check. raw — Application code checks the record for sensitive information.
- Show reasoning. raw — Persist reasoning when the check finds no sensitive information.
- Suppress reasoning. raw — Do not show the raw-data judge’s reasoning when the check finds sensitive information.
- Redacted input. alternative — Sensitive information is removed before the second judge sees it.
- Second judge. alternative — Generates an explanation for display using the redacted input.
- Judge on raw trace → Score persists: Score.
- Judge on raw trace → Sensitivity check: Reasoning.
- Sensitivity check → Show reasoning: No sensitive information found.
- Sensitivity check → Suppress reasoning: Sensitive information found.
- Redacted input → Second judge: Input.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
The deployment clock depends on the bank
A vendor’s promise of deployment in a few weeks means little until it is checked against the bank’s infrastructure, security posture and cluster. Chen looks for practical signals: is there already a process for pulling images from a registry, and are GPUs sourced and ready for inference? 13:06
The timeline can extend to months when formal security reviews are needed or the bank is building a custom LLM gateway or role-based access control configuration. It can stretch further if image-pull approval and GPU procurement have no established process. Chen finds that many of these delays come from organizational alignment as much as technology.
His team treats a customer’s problem as its own, dividing the work among engineering, workflow, and human and organizational streams, then automating where it can. The three pillars in the talk sit within a larger production checklist. The stakes explain the methodical pace: checking accounts, mortgages and credit cards leave little room for an answer that merely looks plausible.
Chen closes with the other half of his school-test analogy. After a test, he and his friends reconstructed problems at the lunch table and compared how they solved them. He offers the conference the same role: a place to exchange approaches to difficult customer problems, including the slow, messy organizational work that makes production possible.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Resources
From the talk
A way to follow up on Chen’s invitation to discuss deployment pillars and his team’s production checklist.
Related talks
- You Can't Prompt the Room: The Last Skill AI Won't Replace
Explores stakeholder alignment and requirements work that can determine whether AI projects reach adoption.
- Why We Deleted Our MCP Server and Rebuilt It — Abhi Arya, Reducto
Examines how people can inspect agent workflows and detect consequential mistakes.
Read the complete timestamped transcript
- 0:12
Uh, when I was in the tenth grade, I had a math teacher, Mr. Huff, who was, uh, notoriously brutal on our math tests. He would ma- uh, make us write our answers down to the, uh, fourth decimal place in case you happen to get to the answer by luck or by chance. And most of the credit for the question was actually from the proof that you wrote to show how you got to the answer. And when I first started deploying AI observability software, uh,
- 0:42
I realized that most of these compliance and risk teams that I work with every day, they're kind of like Mr. Huff, but with a, uh, a multimillion-dollar compliance budget. And I would let you know deploying agents AI within banks takes a long, long time, and the reason is because that keyword production. I'm not talking about prototypes and dev or staging or even, like, internal retrieval-augmented generation (RAG) agents to increase, you know, em- internal employee productivity.
- 1:14
I'm talking about the applications that these banks, millions of customers use every single day. The same ones you use when you log into your bank's website or mobile app, and those are the use cases that matter. And, and my team, we're on the front lines of deploying not only our software, but also engineering processes into the largest banks in the world. And I wanna share some of the issues that our customers bring to us and the strategies we use to help reduce the time to production
- 1:44
from a year down to a couple weeks.
- 1:49
So let's take-- first take a look to see how standard SaaS AI gets deployed at a bank. Uh, spoiler alert, it doesn't work. There's outbound egress to the Internet, and sensitive information can potentially be leaked out. Within-- When you deploy on-prem AI at an air-gapped bank, the flow is a little more complicated. I'm gonna walk through three pillars today. Number one is the actual build pipeline. How our
- 2:19
banks pull images from our software into their cluster. If a region fails mid-request, what is the data resiliency plan? And then finally, one of the most important parts is how do you ensure no sensitive information leaks out to internal bank employees and outside of the, the bank's virtual private cloud (VPC)?
- 2:42
Compliance velocity, uh, and common vulnerabilities and exposures (CVEs) go hand in hand. And
- 2:49
no platform worth their salt does not have a plan for how they address this first compliance hurdle, which is common vulnerabilities and exposures. I'm gonna walk you through why this process is complicated. So number one, you can take one CVE and you can research on the National Vulnerability Database (NVD), Cisco or MITRE websites. But in reality, our platform and most platforms, you have multiple images, and each image has multiple CVEs. And I'm not trying to remediate CVEs for one bank, but rather for multiple banks, so we have to create a system and process around
- 3:19
this. And the complication there is that our banks are on different versions of our images, each with their own unique CVEs. On top of that, banks utilize different scanning tools, which output a report on what CVEs are present. Furthermore, they have specific policies around what are the actual CVEs in the images, what the severity level is, and then what the service-level agreement (SLA) is for time to remediation.
- 3:49
Our images rely on many, uh, open source projects, and those projects contain many transient dependencies which have CVEs that our engineering team cannot remediate. So our team is-- We're constantly looking into the release notes for a lot of these open source projects 'cause we have to provide a detailed explanation back to the security teams at these banks on why we cannot remediate and why we're dependent on these open source project maintainers. So once you've identified the CVEs that your team, your
- 4:19
engineering team, can actually remediate, there's multiple ways of remediation. You can bump the package version up to a higher version or rebuild your image against the base Docker image. But then we also have this complication of certain banks saying, "We wanna be on version three-point-eight of a package." But another bank might say, "Oh, wait, hold on. That version is too, too high. There's too many CVEs. I wanna be on an older version of that package." So given all of this, your software still has to work and
- 4:49
function, and so one solution that, uh, you can use is creating a skill. So we have a skill that does a lot of the heavy li- heavy lifting and reporting and the in- inter- internal research as well. And the output is a nice kind of table format that has-- tells our engineering team what CVEs we have to fix and also provides explanations back to our, uh, security teams from the bank on what c- we cannot fix due to these
- 5:19
transient dependencies.
- 5:23
Most of these scanning tools, Sysdig, Wiz, uh, Prisma, they just check to see if the package has been bumped to a specific version. But it says absolutely nothing about whether or not that exploit is actually still in your application code. And so how do you actually test for that? So one solution is creating a Harbor task, and this is kind of like creating a harness or a world for your-- for an agent to try things out.
- 5:53
And so within this Harbor task, we have instructions for the agent. You have an environment which contains the actual Docker images for your application, and then tests that you can run against the agent to see if they passed. The instruction here is a CVE for, uh, this service, this package, and the instruction I tell the agent is two point six point two of this package supposedly remediates the CVE. I want you to go and write an exploit based on the
- 6:23
older version to see if this new version still has that exploit. Then write a test to see if that exploit actually passed or not. And then with Harbor, you can run a bunch of Docker containers or, um, Harbor, uh, Modal or Daytona sandboxes, run these all in parallel, and you have a bunch of trials to see how the agent performed over various trials. And the... What I'm trying to say here is that it's not enough just to say we bumped the package version up to a specific number. We have
- 6:53
to provide the evidence to show that the exploit is no longer actually in the application code.
- 7:02
Uh, the second pillar, disaster recovery, is not, like, optional infra hygiene for a bank. The complication here is that the main database platform most AI observability tools use, including some of the companies that are sponsoring this conference, there's no managed s-service for failover across regions and data replication. Anyone happen to know what database platform I'm talking about? It doesn't-- This... So with Redis, Postgres, there's managed failover across
- 7:31
regions, but this one database does not have that story. ClickHouse is an amazing database platform, but even in their data resiliency docs, they call out that there's no managed service, managed failover across regions. So this means the banks are kind of up to themselves to, to figure out that disaster recovery situation. So a simple pattern that you can employ is you have ClickHouse in a primary region, a job that backs up to a bucket, and then another job that
- 8:01
restores that bucket to a DR region. Within that region, you might have multiple pods that have replicas of that data. This whole procedure relies on clickhouse-backup, which is an open source project maintained by Altinity, who they themselves are a competitor to ClickHouse in terms of managing this data failover across regions.
- 8:29
It's, uh-- So with this procedure, they-- clickhouse-backup shares logs on whether or not the backup and restore happens, so you can get this nice table, but this status says nothing about your data at this point in time. A bad disk, a bad node, um, bad migration, replication lag, these are all issues that can cause your data to become stale that is different from when this job actually ran. So you can go the extra step in checking the row counts between tables,
- 9:00
uh, running a check to see if the replicas within a region have converged to each other. And the takeaway here is that it's about data correctness and not necessarily just checking a box and seeing if the backup and restore job ran. Similar to the CVEs, you can't just bump the version and assume the exploit's gone. You have to do these extra checks. And, uh, one call-out for any of the, uh, architects who are creating this kind of backup and restore within your cluster is that you're also making a
- 9:29
decision around data residency, whether you like it or not. When you're replicating to a bucket, the bucket doesn't care if it's in Oregon or Virginia. Data residency, however, cares about where those individual records are stored. So one solution is you can, um, replicate just the IDs and the metadata around your traces and your data into different regions, but then the actual core trace data, that's stored within one region and
- 9:59
doesn't leave that region because of certain jurisdiction laws.
- 10:07
Uh, the final pillar is most banks think that they are not leaking any sensitive information to their internal employees, their users outside of their VPC, but there may be side doors that are open, and this comes in the form of PII, MNP- MNPI being redacted. And there's many different strategies for this. You can redact information at the SDK level, at the gateway level, using various middleware. And what this looks like in practice is, on the UI,
- 10:37
you might have some customer information. Sensitive information is redacted. But what about the judges that you're using? I challenge all of you to look at the system prompts for your LLM-as-judges and check the traces to see if those traces with the reasoning from those judges contain any PII or MNPI. Here's a system prompt for a simple judge. It outputs a score and explanation on how well the agent
- 11:07
performed for a given task. But there's one line here in the prompt which is seemingly innocuous because you want the human reviewer to be able to verify if the agent did a good job and was accurate. This just potentially may have allowed the, uh, judge to leak and un-redact, uh, PII or MNPI. So your UI still looks good, but then on the back end, your LLMs-- LLM-as-judge's reasoning may
- 11:36
un-redact customer information and sensitive information. So one strategy for this is you can still have your judge read the raw trace data, but the reasoning for that judge is not persisted. The score, however, you want that score, it's for good, good for evals. That always persists through the UI. But then on this other branch, the reasoning, as we saw, can still leak PII. But in your application code, you can have a check that tells the agent This record
- 12:06
does not contain sensitive information and therefore can persist to the UI. So now you have a score plus the reasoning for the, for this record. And then if that check comes back negative, it does have sensitive information, then you just suppress that reasoning from the UI. Most of the banks we work with, they want to see the LLM-as-a-judge's reasoning on this sensitive information. And the extra upgrade you can add to this flow is you have a second LLM-as-a-judge where the input
- 12:37
has, is redacted of sensitive information, and therefore you can have confidence that the output from the judge is clean, and then you can have that show up in the UI. The, uh, takeaway here is that having zero leakage and data sovereignty is not free. In this case, it's the cost of running another LLM call on the same request.
- 13:06
So one way we're able to build trust with the security and compliance teams is that we're not just saying, "Trust us, here's the answer." We have to show the evidence and the work on how we arrived at the, at the answer. And many vendors will tell you, you know, "We're-- Our deployment time to production takes a few weeks," but what they're not saying is they didn't check that time against your infrastructure, your security posture, and the nuances about your
- 13:35
specific cluster. And so certain signals that we look for in terms of shortening that time to production is really just having a lot of processes set up in terms of, you know, how you pull images down from an, from a registry, having GPUs sourced and ready to go for running inference. That timeline gets pushed out to a few months when you have formal security reviews, or you're building a custom LLM gateway or RBAC configuration. And then that timeline gets pushed even further out
- 14:05
when you don't even have an approval process for pulling images down to your reg- your registry and not having a, not having a story around sourcing and procuring GPUs. Now, I found that most of these signals that push the timeline out are less technical and more about internal human and organizational challenges and alignment at the banks, uh, but still important factors to figure out.
- 14:37
So the theme for today is showing your work. That is the real lever that you have on compliance vo- velocity when working with a bank. And when our banks, when our customers come to us and tell us, "Hey, our customers are having problems," those problems now become my team's problems, and we break those problems down into, uh, engineering, workflow, and human and organizational work streams. The goal is to automate as much as possible, but
- 15:08
those problems are the ones that keep me up at night, and I want to ensure that our competitors don't outwork us and don't outsmart us on any of those vectors. And I would say that you don't want to just be another vendor, you want to actually be solving your customers' problems. And I would say the biggest lesson I've learned from working with these banks and security teams is that there's so much at stake.
- 15:38
Checking accounts, mortgages, credit cards. Getting your answers down to the fourth decimal place matters in these situations. And there's a reason why a lot of the software within these banks is old and outdated. But the, the line between legacy software and old banking processes and innovation is moving a little bit every day, and it's because of all of you. So
- 16:08
I think all of you are, you know, exploring different agent frameworks and building with, you know, new harnesses, playing with JEV. And I would say for the few of you who care about the, the slow, the boring, the bureaucratic, the methodical, the messy human and organizational challenges within a bank, there's nothing like deploying AI within the financial services sector because there's so much, so much at stake. And yeah,
- 16:38
if you all want to score your own deployments against, um, these pillars, just, just reach out. I only discussed three pillars today, but, um, you know, there's a whole production checklist that we use to, uh, that underpins these pillars.
- 16:56
Going back to my tenth grade math test, one of the best parts about those tests were afterwards, we-- me and my friends, we, you know, go to the lunch table, and we'd try to scribble down all the problems we remembered from the test. And then we used that time to talk about, "Hey, here's how we approach solving this problem and that problem." And it allowed me to kind of think about different approaches and different ways to solving these problems. And conferences like this are kind of like that, uh, lunch table back from when I was in tenth grade
- 17:26
because I want to learn from all of you on how you're solving your, your problems for, for your customers. Thank you very much.