AI Engineer Europe 2026
Your coding agent doesn't always follow your rules
About this talk
Talha Sheikh of Checkout.com explains why coding agents can claim completion while missing requirements, leaving humans to enforce correctness. He introduces Vector Harness, which uses Claude Code hooks and deterministic checks to verify agent output, and discusses multi-agent workflows, asynchronous checks, LLM-as-a-judge evaluations, code-review feedback loops, and the broader shift toward harness engineering.
Chapters
- 0:00Why coding agents still need human enforcement
- 1:57Vector and deterministic Claude Code hooks
- 4:02Verification across multi-agent and asynchronous workflows
- 7:09Harness engineering and verification feedback loops
- 9:08Audience question about Vector Harness availability
Talk transcript
- 0:00
[upbeat music] Hello, hello.
- 0:16
Um, have you ever given a task to Claude Code? And, uh, you give it a feature, and you be like, "Okay, cool. Uh, can you build this for me?"
- 0:24
And Claude Code starts putting it out into subtasks, and you see it where, okay, this is pretty cool. You see it running on multiple sub-agents. And you're like, "All right, this is really cool."
- 0:33
And you can see, like, ripping through all of your tasks, sub-agents being completed, and it gives you, like, a final output, "Task completed." Like, amazing. Great. But when you actually try to run it, and you'd be like, "Oh, well, it's, it's not.
- 0:45
Something has failed. Hey, Claude, can you fix this a little bit?" thing. Oh, well, let's try it again. Okay, it's fixed. Everything should be working. Oh, no. Actually, just this tiny little thing is just missing.
- 0:54
So... And that's, and that's what my talk is about. All I want to do is play Cyberpunk, uh, on my Xbox while have Claude Code do, do some work for me.
- 1:04
And what I'd realized was the problem is, the problem is that I kept on, uh, telling Claude like, "Hey, fix this, fix that, fix this, fix that," even though if I give it a spec, if I give it some instructions, if I give it little to no instructions, every time there is something that I need to tell
- 1:17
it. So what that means is, like, I am the enforcement. I am the enforcement layer. I have to tell Claude on what exactly you need to do and how exactly this needs to be enforced.
- 1:30
So the agent says it's done, and but you have to check it anyway because there is nothing else that can check it for you.
- 1:38
So what I wanted was something to be very deterministic. So when an agent says it's completed, have this enforcement layer deterministically check something like whether it's actually been done or not.
- 1:48
Actually, the way I wanted it to be done because it says it is done, but is it the way that I want it? So I needed some way, deterministic way to do that.
- 1:57
So I tried it. I built my own Vector. I called it my own product called Vector V1, and it deterministically checks Claude's output. And the way it did that is through using Claude Hooks.
- 2:07
So that way, whenever Claude finishes its, a session, it automatically, the hook calls my Vector product or program, and it checks it for me. Cool, and this is how it essentially looks.
- 2:17
So I basically give it a config file, define all of my testing over here, like what I need it to be checked, and if it fails, it can actually keep on telling Claude like, "Hey, look, this is failing.
- 2:26
Try again, try again, try again." Sorry if it's a little bit
- 2:31
little. So you can see one of the test outputs over here. So it's like, okay, first the test, test passed, first failed, then it retries again, then all of the things pass.
- 2:39
Okay, cool. So what that means is it's not about whether Claude can actually do the task. It's about trust. Can I trust Claude to actually do everything for me?
- 2:48
And by the way, when I say Claude, I'm just talking in general about LLM agents in general. Is when I give a task to a coding agent, does it actually complete it?
- 2:56
So yeah. So and they-- That's something that... And, and what I started doing was s-started telling this about to people about and going to different events, and it was, it was really cool.
- 3:06
Like, "Hey, look, what about this verification feature that I built?" It was so good. It was so amazing. And then I met one of the, uh, Anthropic engineers, and, um, he, and, and they just told me that we're not gonna need this anymore.
- 3:18
Like, we'll have, like, another agent or another model that it will be so smart that you won't need enforcement. Okay.
- 3:27
Um, so crisis mode. Did I just waste my time? What-- Did I just... Like, what was, what was the point of all of this stuff? But let's dig in a little bit deeper.
- 3:37
And then also they released this Project Glasswing that shows Project Mythos, which is supposed to be so good that it will solve everything for us.
- 3:45
So what I-- So when I started thinking about it like, okay, what is it that is actually happening? When a new model comes out, does it, it increases in capability, but that's not necessarily the same thing as reliability.
- 3:56
Sure, the models may become, may become a little more capable, but are they more reliable?
- 4:02
The other thing is, like, another ar-argument is like, "Oh, well, I can have the best spec. I can have the best MCP servers. I can have the best sub-agents.
- 4:09
I can get all the right context to it." Amazing. We should do that. But instr-- giving Claude instructions is not the same thing as giving it verification. So you can give as much instructions as you want, very good instructions, very little instructions, but you still will need to verify.
- 4:24
And what I'd realized was that be-- just-- What I realized that having these small guardrails or having as many guardrails as you want, technically you can use a smaller model like a Haiku or even like an open source models.
- 4:37
Because it's got these guardrails on, it'll most likely be succinct and get you to the output that you want. So in theory, what it means is that if you use a frontier model like an Opus, uh, Opus model that can get you a task, okay, cool, that will be the most expensive one.
- 4:50
You can have Vector with a little bit of guardrails, but it gives you a little bit cheaper. But if you put on more guardrails, that means invest a little bit more time in the harness itself, like you can reduce the cost drastically, or maybe even use like async tasks as well.
- 5:04
So, okay, I was feeling, I was feeling good, and I started talking about, about Vector again at two different events. And as, as I spoke to more and more people, um,
- 5:16
what it-- There is missing, something missing here. What it-- When I spoke to more people, what I'd realized was everybody's building their own stuff. Anthropic is building their own stuff.
- 5:25
My company is building their own stuff about enforcement. Facebook is building their own stuff. Meta is-- Ev-every company is building their own thing. So if I have built, if I build something that is specific to me, then I can't really share it with others because everybody has their own way of doing it.
- 5:40
And what I enforce ne-ne-doesn't necessarily mean that somebody else would enforce the same thing. So what that meant was, what I realized was, okay, so it's actually a pattern.
- 5:50
So it has to be a pattern that is applicable to everyone. So what that means is that we can-- it has to be language agnostic. It has to be something that, uh, can be shared by everybody else, and everybody can bring their own version of enforcement to it.
- 6:03
And that's-- And, and it should run on every level. So it should start, start off with in conversation when a conversation ends. You can have checks when, uh, before committing.
- 6:12
You can have checks when you're pa- as part of a multi-agent workflow. You can have it, uh, on checks on asynchronous operation or asynchronous agents. And as well as you can have a check that non-deterministically calls like, um, LLM and LLM-as-a-judge sort of a thing.
- 6:26
And it can run on any, any different language on any different code. As long as there's a capability to run it deterministically, we sh- we can have that. So what, what I realized was, what we needed was essentially a contract that just says like, "Hey, given this task, I want you to fulfill this."
- 6:42
What is in the middle that you can-- the developers themselves can define.
- 6:47
So this idea is really cool, and it was like, okay, so we're moving towards w- we want verification always. All right, cool. Um, so a lot of different companies have actually started doing this as well.
- 6:58
So Claude Co-- uh, Anthropic has r- recently released their new thing called Executor Advisor pattern, where you've got one agent that actually does all the code, all the code work, and then there's advisor that, you know, feeds in...
- 7:09
essentially creates a feedback loop, or in other words, verify. Anthropic, uh, sorry, uh, OpenAI build their own Harness engineering, and it's the same idea. Like, you give an agent a lot of, a lot of things to do, but how do you verify it to work?
- 7:22
You give it different tools. You give it different contexts, and that's essentially what a harness is for OpenAI. There are companies like Kudo, who are, who are over here, that provide a very comprehensive code reviews.
- 7:33
And again, it's the same thing. The, the agent has done all of its work, but do you trust it? No. So what do we do? You do a very me- comprehensive PR review with all the different issues and findings and create this feedback loop.
- 7:46
Some, um, something from today as well from WorkOS. So it says, "Enforce, don't instruct." So it is all about, like, running these checks deterministically. When I say checks, it's just about the verification.
- 8:00
Another one, which is my favorite, is, uh, one of the favorites, like you still have to go slow. And the reason for that is not because the cl- the agent themselves are not able to produce code as fast as they want, but it's because the verification layer.
- 8:11
You need to verify that everything is working or not.
- 8:14
And my favorite [laughs] is, is this one in, in our keynote, is to slow the, slow the hell down. [laughs]
- 8:22
So, so what is the shift that we're seeing here?
- 8:25
Well, initially what we thought was, like, the value is in the code that we create. But it's actually now, in reality, is, uh, what we're seeing here is the verification that we design.
- 8:35
So it's not about can you code, but can you verify?
- 8:41
So TLDR is, uh, work on the harness and not on the code. So you work on the verification system, and that produces a little bit better, better in outputs.
- 8:51
And that's it. Thank you. [clapping] Any questions? I've got 40 seconds. [laughs]
- 9:07
Yep.
- 9:08
Does it exist? Is it public? Can we use it?
- 9:10
Yeah. [laughs] Yeah, yeah, yes, it is public. Um, it's called Vector Harness, but if you, if you send me a message on LinkedIn, I can share that with you.
- 9:17
Can you put the LinkedIn back up?
- 9:19
Oh, there you go.
- 9:20
Thanks.
- 9:25
Cool. Yeah.
- 9:29
You mentioned that adding the verification layer allows you to use smaller models. Uh, what do you say to the allegations that you're a top token spender at your company? [laughs] [laughs]
- 9:40
I need, uh, I need those tokens to build a verification layer. [laughs]
- 9:46
Cool. Um, I think that's it.
- 9:53
Whoo. [clapping] [outro jingle]