October 14, 2026Main stage5 min read

Trusting Agents in Policy-Driven Workflows

A regulated workflow can move forward through fixed approval stages while agents iterate inside each stage. Evan Kormos explains how to choose those stages, evaluate the work, and reduce supervision only when measured confidence supports it.

Evan KormosCoinbaseEngineering Manager

From the conference livestream · 0:52:04–1:09:16 on YouTube. The player starts and stops at this session’s boundaries.

0:52:04 ↗

Separate the policy from the running system

A policy says a change must be approved before release, or a customer must be verified before an account opens. The organization then has a running system that is supposed to carry out that rule. Keeping the two distinct is Evan Kormos's starting point for deciding where an agent belongs.

Policies change at particular moments. The operating system keeps moving: people process requests, products evolve, and technology changes around them. Kormos describes policy as institutional intent, often expressed through words such as must, may, and should. RFC 2119, one of his closing references, provides a familiar vocabulary for those requirement levels.

Agents cut across people, process, and technology. They work alongside employees, perform parts of a process, and depend on technical systems. The useful unit for this discussion is the process: what work an agent receives, what conditions must be satisfied before that work advances, and how anyone knows its output is good enough.

Mapping the workflow makes those questions concrete. Some steps have to occur in sequence; others can run independently. Agents can make parallel reviews economical where coordinating them used to cost too much. The opportunity is to add that capacity while retaining the checks required before work proceeds.

0:55:57 ↗

A forward-moving workflow can contain an iterative agent

A directed acyclic graph, or DAG, represents steps and dependencies without a path looping back on itself. Apache Airflow is Kormos's example of a tool that expresses these workflows in Python. The same idea can describe commercial lending, listing a token in a region, or delivering software through regulated controls.

Inside one of those steps, the work may need to repeat. Consider code review. Someone drafts a change, checks it, and uses the feedback to refine it until the result can move on. That inner process contains a cycle even though the outer workflow progresses forward.

Coinbase talk slide shows a draft entering a check, a failed check returning through refinement, and a passed check exiting the loop.

The inner review loop at 58:20. The check decides whether to leave the loop. More iterations are useful only if that check reliably distinguishes work that can pass from work that needs repair.

Kormos calls the inner structure a directed cyclic graph and points to LangGraph as a tool for managing its state. People and agents can collaborate inside that loop. The surrounding process still determines which checks are required before the next stage begins.

Exceptions need a route too. A change might be canceled or fail a security requirement. The workflow should make that outcome visible without requiring its designer to predict every possible failure in advance.

0:59:34 ↗

Faster review can move the queue somewhere else

Improving one step changes the load on the others. If agents review code faster, design or security scanning may become the slow part. A team needs to observe the whole process to see where the queue moved.

The software-delivery example makes those dependencies visible: a change request fans out into code review and a security scan, then the work joins at release approval. Exceptions have a separate route.

Workflow slide shows a change request branching into code review and a security scan, both feeding release approval, with an exception path between them.

Source frame at 1:00:00. Adding more agent capacity to the review loop cannot remove the requirement for the security result. It may instead make that requirement's waiting time more obvious.

Kormos puts operational visibility ahead of the convenience of authoring a workflow. Metrics across the process show where additional parallel capacity would help and whether the required controls still hold as volume changes.

Input quality also affects the inner loop's cost. An agent needs trusted context, including where its work sits in the larger DAG. Giving it the workflow state helps connect the current task with the process around it. Longer-horizon goals make this context and the cost of repeated attempts more consequential.

1:02:30 ↗

The check needs a standard of good work

The hard part of the loop is deciding what good enough means. Repeating draft, check, and refine does not guarantee improvement if the check cannot recognize it.

Traditional software already has confidence mechanisms such as unit tests run during delivery. They catch cases where a change breaks known behavior. Agents add a different evaluation problem: the same request may produce different answers, and more than one answer may be acceptable. Comparing output strings alone cannot capture that quality.

Kormos proposes representative datasets, explicit standards, and repeated evaluations. Looking at many outputs reveals behavior that a single pleasing example cannot. Traces record what happened during execution; evaluations assess whether the resulting work meets the standard. Together they complement the tests around the deterministic software.

Domain experts help define and refine that standard. An AI engineer can build the pipeline, but deciding whether a credit memo or risk review is good enough also requires the people who understand the work. The evaluation must reflect their judgment before its score can justify handing over more responsibility.

1:05:05 ↗

Choose a node, then earn the reduction in supervision

Return to commercial lending. Customer verification and financial analysis can run in parallel before a credit memo, risk review, and decision. Each stage offers a different opportunity for agent assistance. Letting an agent drive the stage requires a stronger case.

Kormos asks four practical questions:

  • Can policy check the result? There must be a usable standard for deciding whether the output complies.
  • Can the work run in a bounded loop? Iteration needs limits rather than an open-ended instruction to keep trying.
  • Can the execution be traced? The organization needs to inspect how the result was produced.
  • Can a human take over? An exception needs a path to someone who can resolve it.

A node that satisfies those conditions is a better candidate for automation. Agent assistance can still be useful elsewhere. In his lending example, the final decision remains human-driven because it checks the work against policy.

The rollout begins with supervision. People verify outputs, subject-matter experts refine the dataset, and the team checks whether its evaluation captures the right quality standard. Only after measured confidence reaches the policy's threshold does Kormos move toward sampling: people review a slice while systematic evaluation covers what they do not see.

Rollout slide shows confidence rising over time as human review moves from every output to sampled outputs and then exceptions only.

Source frame at 1:07:10. The threshold on this explanatory slide illustrates a policy decision; it is not a universal score at which an agent becomes safe to operate.

After a further confidence threshold, people can concentrate on exceptions while continuing to improve the dataset and assess quality. Their role changes instead of disappearing. Fixed requirements govern the outer workflow, adaptive work happens inside its stages, and evidence determines how much supervision each stage needs.

Further reading

  • Apache Airflow ↗

    The workflow tool Kormos references for expressing tasks and dependencies as DAGs.

  • LangGraph ↗

    The stateful agent-workflow library referenced for iterative work inside a process step.

  • RFC 2119 ↗

    Requirement-level vocabulary included among the talk’s references.

Full transcript 232 timestamped passages

Machine transcription with reviewed terminology and names. Some recognition errors may remain. Timestamps refer to the original livestream.

0:52:04Hi, everyone.

0:52:05My name is Evan Kormos.

0:52:07I've been delivering, designing, building software for 20 years, the last 15 enterprise

0:52:13financial services.

0:52:15I am a player coach at Coinbase.

0:52:19and we're here today to talk about trusting agents and policy-driven workflows.

0:52:30So let's start with the policy, and it's pretty boring.

0:52:34I'm going to go over here for my notes.

0:52:38So our starting point centers around the policy,

0:52:41and this sets the rules for how work gets done within the organization.

0:52:47and including especially risk and compliance.

0:52:52Think of policy as the original institutional intent

0:52:56or the original system prompt.

0:52:59ideally we have this written down.

0:53:01It's a little bit boring, so stick with me.

0:53:05Using language like must, may, and should.

0:53:09And again, these help define the rules and decisions

0:53:12about how the system operates in the organization.

0:53:17Separate from policy, we have the actual running system.

0:53:23So the first thing we're going to do is separate these two, both the build state and the run state, at two different moments in time.

0:53:33So typically we're either defining or changing our policy, but the system is constantly running and it's constantly moving and changing.

0:53:45So we could then sort of imagine a compilation event that, oops, sorry, I'm skipping ahead.

0:53:52It's constantly changing.

0:53:57So it's evolving quickly with these product-driven changes.

0:54:00Everything is expected to still be roughly bound by the policy, but ultimately we separate

0:54:06this from the run state and the build state.

0:54:11So inside the system, what does it look like?

0:54:15We have a familiar model,

0:54:17if we have any enterprise folks in the room here.

0:54:21People, process, and technology.

0:54:24But where really do agents fit into this mold?

0:54:29So I see them as an operational model

0:54:32cutting across all three.

0:54:34They work with people,

0:54:36execute parts of the process,

0:54:39themselves, and they use and are made up of technology.

0:54:44So for our talk today, we're going to be focusing here where agents meet process,

0:54:51what work we give them, what boundaries we set, and how we build trust in their outputs.

0:55:03So let's dive into your workflow.

0:55:07And it's high level and seems basic, but if you haven't, there are good reasons to map this out.

0:55:15So maybe a change has to be approved before it goes live, or a customer has to go through verification before their account is opened.

0:55:24We expect work to flow in a specific and gated direction.

0:55:31So I believe it makes, agents make it worth revisiting what we can do in parallel.

0:55:41Previously, some work used to cost too much or be too complex to coordinate in this way.

0:55:46But now we can run independent reviews alongside each other, bring the results together, but

0:55:52keep the required checks in place.

0:55:57So this is a directed acyclic graph, or a DAG.

0:56:01It is a way to represent this workflow or process,

0:56:04the steps, the dependencies,

0:56:07for a flow that moves forward without looping back on itself.

0:56:12Apache Airflow, if you're familiar,

0:56:14is an example of open-source software

0:56:16that represents workflows,

0:56:19dependencies as DAGs in Python code.

0:56:31So, this Python code, these DAGs can be used to define and manage a number of policy-driven

0:56:38processes like, for example, commercial lending. We could also use a DAG to represent the workflow

0:56:48flow to list a token on the exchange in a specific region, if you're into that. Or we

0:56:56could use a DAG to represent a regulated flow of delivering software, which is a hot topic.

0:57:02One we'll spend a little bit of time on, I think that we've seen a lot of adoption within

0:57:08agents, within software delivery, and ultimately we're looking to leverage that same efficiency

0:57:14and scale in other areas of the business

0:57:16and close the adoption gap.

0:57:22So let's stick with the software delivery example

0:57:26for a little bit.

0:57:28What happens inside one of these nodes of the process?

0:57:32And I'll give you a hint.

0:57:34It's a loop.

0:57:44oversimplified, but we have a basic version

0:57:46of what's happening within the,

0:57:48let's say this is the code review process, right?

0:57:53So we're going to essentially do a number of steps,

0:57:57and essentially once we realize the work,

0:58:00we recognize that the work is good enough,

0:58:02we're going to allow it to pass on to the next step.

0:58:05And that's essentially the function of the code review node.

0:58:11The work doesn't always end up okay.

0:58:14So sometimes we have to take the feedback from the code review

0:58:17and iterate on it until the work is good enough to pass.

0:58:28So this is a representation of a directed cyclic graph, or DCG.

0:58:34So, as far as open source software, something like LangChain, LangGraph would be what I would

0:58:42say is helpful to manage the state of DCGs.

0:58:48And this is an oversimplification.

0:58:51These graphs can be very complex.

0:58:56So zooming back out, the inner flow of the node, we have people and agents working together.

0:59:02together, on the outer flow, we have a policy boundary.

0:59:08But not everything goes to plan.

0:59:11So we have to handle exception flows.

0:59:13We don't want the work to get stuck and we don't want to design for every edge case either.

0:59:19The exception flows will monitor and see kind of what happens if you're shipping code that

0:59:25gets cancelled or doesn't meet security standards.

0:59:29that's something you should want to know about.

0:59:34Volume shifts across the flow once we start to add agents into the mix.

0:59:39And we've seen this with software delivery,

0:59:42and we'll see it in other processes as we bring agents into those processes as well,

0:59:46where now all of a sudden if you're reviewing code faster,

0:59:50you need to design it quicker, or you need to do the security scan faster.

0:59:55So we see the volume shift across the flow.

1:00:00And this is where it's really important that we have visibility into the process overall from a metric standpoint.

1:00:06Because as we start to supercharge and parallelize and add more efficiency to the process, we start to develop more and more bottlenecks.

1:00:15And so the operational visibility of the process is extremely important.

1:00:20Much more important than the authoring and the building of your workflow tool.

1:00:25so we want to visualize the process

1:00:30so we want to add parallel capacity

1:00:32by still keeping the controls

1:00:33and so this is where we'll add more additional capacity

1:00:43okay

1:00:43so we're doing some work

1:00:46we're checking it

1:00:47we're using the feedback again to refine it

1:00:49until the work is good enough to move on

1:00:51but why is that hard?

1:00:53That seems like a pretty easy thing to do.

1:00:55But as I mentioned before, these graphs get actually pretty complex,

1:01:01and we'll dive a little bit more into why this is difficult.

1:01:06And if you're familiar, one challenge with AI engineering

1:01:09is the variability of inputs and outputs.

1:01:12And I believe that higher quality inputs

1:01:17will result in better outputs at a lower compute cost.

1:01:23but what are quality inputs?

1:01:34So we'll generally speak to it as context model, maybe.

1:01:38We can nitpick that.

1:01:39But this isn't our area of focus today.

1:01:42We're going to focus more on outputs.

1:01:44But we can't really talk about quality of outputs

1:01:47without talking about the quality of inputs.

1:01:53So ideally, we've established a trusted context for our agent,

1:01:57and there's some references on that.

1:02:00But one thing we can do in this model is inject the DAG state into our agent

1:02:06and let it know kind of where it fits into the bigger picture.

1:02:12Okay, so now we've added even long time horizon goals,

1:02:18and that emphasizes the need to optimize the cost and efficiency of this loop.

1:02:30So the check is where we decide whether the work is good enough to move forward.

1:02:35We need to define what good looks like.

1:02:37That's the hard part.

1:02:39And we need to have a reliable way to evaluate it.

1:02:43Otherwise, more passes don't necessarily mean better results.

1:02:48the loop is really only as trustworthy as the check.

1:02:51So if we want to talk about quality,

1:02:53let's talk about the check and let's talk about quality.

1:02:58Okay, I think building with AI is an opportunity

1:03:03to improve product quality overall.

1:03:05I like some of the conversation about durable software.

1:03:10So I'm a believer in quality.

1:03:12And in traditional software,

1:03:16we've built confidence mechanisms in place

1:03:19to give us confidence that the software is of high quality.

1:03:24And that's done with a variety of mechanisms,

1:03:27but primarily systematically with test cases, unit tests,

1:03:32checking these as a part of our delivery flow

1:03:34to ensure that when we make code changes,

1:03:37mistakes aren't made that break other things.

1:03:39So this is a confidence mechanism that we've put in place

1:03:42with traditional software.

1:03:46The agents are probabilistic, and so the same request can produce different answers.

1:03:54than one answer may be acceptable.

1:03:58And we still need evidence, but exact output comparisons alone really aren't good enough.

1:04:05need to build representative data sets and evaluate them and define what good looks

1:04:12like.

1:04:12we need to run these evaluations in repeated series,

1:04:19and this is a statistical analysis, right,

1:04:22where we actually look at the outputs in volume

1:04:26and not just as a direct comparison.

1:04:31So combining with evals as sort of your runtime logs

1:04:34of what happened, or sorry, traces,

1:04:36which are sort of your runtime logs of what happens,

1:04:40we've built this confidence mechanism

1:04:42to complement traditional software.

1:04:49And ultimately, this is what we're going to be talking about

1:04:52a little bit more in terms of driving confidence in the output,

1:04:55not only putting this mechanism in place,

1:04:57but how do we begin to turn it on.

1:05:05So where does the agent belong?

1:05:07Back to the lending example.

1:05:09we can do KYC

1:05:11financials in parallel and sequence

1:05:13like credit memo, risk review

1:05:15documentation, decision, all these things

1:05:17in our DAG

1:05:19looking at each node we want to ask

1:05:21some certain questions like how valuable

1:05:23would it be to have an agent

1:05:26drive this node

1:05:27versus a human drive this node

1:05:29and we can sort of look

1:05:31at some of these basic questions like

1:05:33can we check it against the policy easily

1:05:35can it run in a bounded loop

1:05:36Can we trace it?

1:05:38Can we fall back to a human?

1:05:40If we can answer yes to these type of questions,

1:05:43we can kind of have a good idea going in

1:05:46that this particular node may be better suited for automation.

1:05:49But throughout the DAG, we should look to drive agent assistance.

1:05:54So what we're really talking about is not whether or not AI is involved,

1:05:57but whether or not AI we expect to take over at some point.

1:06:06on the decision you would probably agree that we probably need that to be human driven this is

1:06:11essentially the check against the policy um so this is going to be a little bit more difficult

1:06:17i think to hill climb but what do we mean by hill climb all right how do we turn this on

1:06:28So day one, we start supervised.

1:06:31And as we have agents and humans working together as a part of the process, we can manually verify the output to ensure that it is of high quality.

1:06:44This is where we refine our data sets and ensure that we have the right confidence mechanisms in place.

1:06:50We've defined what good looks like with the domain subject matter experts.

1:06:53and that they're beginning to verify it.

1:06:59When measured confidence reaches a policy threshold,

1:07:02we can move towards sampling.

1:07:04And what that means is humans are looking at a slice of the output

1:07:08and not necessarily all of it.

1:07:10We begin more systematic evaluation through traces

1:07:15in order to ensure that what the humans aren't seeing

1:07:18is still meeting the quality bar.

1:07:23And then finally, once we clear the confidence threshold, humans handle more of the exceptions of the process, but still act as participants in refining the data sets and ensuring the quality outputs.

1:07:40Okay, so a few takeaways from this.

1:07:45DAG and DCG.

1:07:47Basic graph theory.

1:07:48but ultimately how do we build these processes that exist today

1:07:52and where people are working them and bring agents into the mix?

1:07:56And the recipe really is to keep it deterministic on the outside

1:08:00and make it adaptive on the inside.

1:08:09The next is quality through evaluation.

1:08:12And this is really establishing a complementary confidence mechanism.

1:08:18So it's not a feeling about a model. We can actually provide research and statistics

1:08:25about the quality of our agents.

1:08:31So this builds confidence and inherently trusts output.

1:08:38Quality is a team sport. AI engineers own the pipeline to taking product signals

1:08:45from all directions

1:08:48and deliver applications that are well-built

1:08:51and utilize ML operations behind the scenes.

1:08:58Finally, agents accelerate across the operating model.

1:09:07I've included some references on the final slide,

1:09:10things that I've spoken about today.

1:09:13This concludes my presentation.

1:09:15Thank you very much.