← All AI Engineer talks

AI Engineer World's Fair 2026

Security Firewall for Agents

Ryan Dahl· CEO, Deno19:06

Read the talk

A security boundary outside the agent

Deno’s incident-response agents need production access. Claw Patrol puts protocol-aware rules, credential custody and approval decisions outside the software making those requests.

From a talk by Ryan Dahl

Before you start: Familiarity with subprocesses, database credentials and basic network routing will help you follow the enforcement design.

Production access makes incident response powerful—and dangerous

Deno Deploy has outages, and its PagerDuty alarm can wake someone in the middle of the night. Ryan Dahl, Deno’s CEO and the creator of Node.js, describes using OpenClaw and other agents to service those incidents automatically. To investigate effectively, the agents receive read-write access to Postgres, Kubernetes, ClickHouse, AWS, GitHub and Slack. They can inspect traces, find which projects a user owns in the production database, and follow communications and logs. Dahl reports that they resolve incidents that previously required a human SRE, though he gives no measured resolution rate.

The same access permits destructive actions. An agent could launch psql and attempt to delete the users table, or run kubectl delete namespace prod. An incident-response system needs enough authority to repair production without being allowed to interpret removing production as a repair.

Slide titled “Powerful but exquisitely dangerous” shows full-context benefits alongside commands to drop the users table and delete the prod namespace.
Powerful but exquisitely dangerous: agents can also execute destructive database and Kubernetes commands.

Dahl says Opus repeatedly refuses requests to delete the users table. That is useful behavior, but it cannot be the security guarantee. These SRE agents read support-system content supplied from outside the company, creating a path for prompt injection. A manipulated agent might believe a destructive operation is the correct next step. Treat the agent as untrusted software: the component choosing an action cannot also be the only component guarding it.

0:160:29
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

0:16 · section reference included

Follow the action through subprocesses and tunnels

Deno runs its agents on standalone VMs and treats local filesystem isolation as handled at that layer. Under this deployment model, the consequential interactions with production systems cross the network. Those bytes can originate in an MCP tool call, but they can also come from an ordinary subprocess. A spawned psql client speaks the Postgres wire protocol, not HTTP. An enforcement point must understand the resulting traffic regardless of which agent tool produced it.

The route can be indirect. Deno’s production Postgres database sits inside an AWS VPC and is reached through an EKS endpoint. The requirement is to let the agent use that access while preventing it from tunneling through EKS, launching psql and dropping the users table. A destination-level permission is insufficient to express that distinction: the policy must understand SQL even when the database connection travels through another system. This preserves the sort of investigative reach a human SRE would have while constraining the operation performed at the destination.

Slide titled “This gets tricky” describes a production database inside a VPC, access through an EKS API server, and the requirement to prevent DROP TABLE.
Securing database access through an EKS API server requires rules that understand SQL.

Read-only database credentials and ACLs remain useful, and Dahl explicitly recommends careful credential provisioning. The difficulty is maintaining those permissions across many services and accounting for how they compose: access to one system may provide a route into another. Carefully permissioned MCP tools address their own calls, but an MCP-only boundary does not govern a separately spawned psql process. Once subprocesses are allowed, enforcement must follow their external effects too.

4:014:22
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

4:01 · section reference included

Different controls inspect different boundaries

Several existing approaches address parts of this problem. Dahl’s comparison turns on where each control observes the agent’s behavior:

ControlMechanism discussedBoundary
OpenRouter, LiteLLMGuardrails for injection or matching expressionsExchanges with the LLM provider
HTTP JailRules for methods and URL pathsHTTP requests
Brex CrabTrapLLM judgment of requestsOutbound HTTP traffic
AgentVaultReplace placeholders with real credentialsCredential exposure
NVIDIA OpenShellFilesystem and syscall restrictionsProcess isolation

Provider guardrails do not by themselves inspect a database operation, and HTTP rules do not describe the Postgres wire protocol. Credential substitution keeps secrets away from the agent, but does not by itself decide whether an authenticated operation is acceptable. Process isolation addresses another part of the deployment; Deno already uses standalone VMs for that purpose.

This comparison describes the roles emphasized in the talk, not an exhaustive inventory of those projects. Current CrabTrap documentation specifies deterministic rules followed by an LLM judge for outbound requests; upstream responses pass back without inspection. Current OpenShell documentation also includes network and inference controls, so its scope extends beyond the local isolation features highlighted here.

7:407:57
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

7:40 · section reference included

Parse protocols and maintain policy outside the agent

Claw Patrol is Deno’s MIT-licensed, open-source proxy for this boundary. It operates below an HTTP-only abstraction, parsing supported protocols so rules can govern the actions they carry. It also holds credentials and injects them into outgoing traffic, keeping real secret values out of the agent software. The agent can request an operation; the proxy independently controls whether and how it reaches the outside world.

Permissions live in a configuration file written in HCL, the configuration language also used by Terraform. Deno checks that file into Git and reviews its changes carefully. Dahl describes Deno’s policy file as approximately 1,000 lines. HCL supplies the configuration structure; the current Claw Patrol README specifies CEL expressions for rule conditions.

The displayed policy example blocks selected Postgres functions. Its significance is that the rule concerns a database operation, rather than an HTTP method, and can apply when the connection is tunneled through another system. Claw Patrol supports multiple protocols and offers a plugin system for extending that support when a new protocol is needed.

Slide titled “Rules written in HCL” pairs access-management and plugin-system notes with a code block denying specified Postgres functions.
HCL rules manage access across systems, with a Postgres function-blocking example.
10:0010:16
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

10:00 · section reference included

The agent attempts a deletion; the proxy rejects it

The prerecorded demonstration runs Codex under Claw Patrol in YOLO mode, allowing it to act on the instruction to delete the users table. The destructive SQL operation at issue is:

sql

DROP TABLE users;

The important sequence is the attempted action and its rejection:

  1. Codex receives the instruction and starts a psql subprocess to carry it out.
  2. The subprocess opens a Postgres connection that passes through Claw Patrol.
  3. Claw Patrol parses the protocol and evaluates the operation against its rules.
  4. The proxy rejects the destructive action before it can carry out the requested deletion.

The demonstration does not depend on Codex refusing the instruction. It shows enforcement after the agent has chosen to comply, at a boundary that also covers the subprocess it launches.

12:1612:29
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

12:16 · section reference included

Inspect actions and route approvals

Claw Patrol’s dashboard shows devices or agents alongside the actions flowing through the proxy, including denied actions and actions awaiting approval. Opening an action reveals its details, and analytics help operators understand agent activity. The term action matters: the inspected unit can be a database operation or another protocol-specific interaction, not just an HTTP request.

Rules can do more than reject traffic. An action can enter an approval workflow:

  • Human approval: Ask an operator in a Slack channel.
  • LLM judgment: Have a separate model evaluate the action.
  • Combined checks: Obtain an LLM judgment first, then request approval in Slack.

These are decisions about whether a pending action may proceed, not reports that it has already executed. The ordering lets operators place precise checks around external effects.

Slide titled “Human in the Loop / Judge Agent” shows two vertically stacked configuration blocks for a Slack human approver and an LLM judge.
Human and LLM approval configurations on the approval slide.

The agent remains an unmodified black box. It does not need to implement the dashboard, follow an internal approval convention or enforce the proxy’s decision itself. The control sits outside the software being constrained.

13:1413:35
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

13:14 · section reference included

Protect the proxy that holds production credentials

Credential injection has to accommodate more than bearer headers. Dahl describes handling cookies, Postgres and ClickHouse authentication, OAuth protocols and AWS SigV4. These schemes require different treatment at the protocol boundary; a single header-replacement mechanism would not cover all the services in Deno’s environment. The implementation grows out of those operational requirements.

Deno runs its agents inside a Tailscale tailnet, with Claw Patrol acting as a Tailscale exit node. Tailscale identity also authenticates access to the dashboard, avoiding a separate authentication mechanism there. WireGuard provides an alternative for deployments that do not use Tailscale. Dahl describes this arrangement as keeping the sensitive infrastructure off the public internet and tightly controlled.

Moving credentials out of the agent creates a component that deserves particularly careful protection: Claw Patrol itself holds access to production systems. External enforcement does not eliminate trust; it places that trust in a separately controlled proxy instead of in the agent making requests.

The security boundary must remain outside agent software. A security plugin or modification inside an untrusted agent shares the same fundamental trust problem. Alignment remains valuable, but production access also needs an independent enforcement mechanism. Claw Patrol is Deno’s practical implementation of that separation.

14:4114:57
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

14:41 · section reference included

Test the rules, and keep the backstop

The first audience question asks how to test whether the system works properly. Claw Patrol’s rule file has an accompanying test mechanism: provide fixture requests or actions, run them through the rules, and assert that specified requests remain blocked. These are policy regression tests, distinct from the broader software test suite that Dahl also reports maintaining. The answer describes a testing mechanism, not a measured security coverage result.

The final question asks whether smarter agents make this problem bigger or smaller. Dahl expects better context and alignment to reduce problematic behavior: an agent that better understands the company and its responsibilities should make fewer destructive choices. He describes Opus as more aligned than earlier models, but still expects independent security backstops to remain necessary. Greater confidence in the agent’s judgment does not remove the need to constrain what its production access can do.

17:2317:29
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

17:23 · section reference included

Resources

From the talk

Read the complete timestamped transcript
  1. 0:00

    [upbeat music] How's it going? Good.

  2. 0:16

    Um, [lip smacks] my name is Ryan. Um, I'm going to... I, I'm, I'm the CEO at Deno, and, uh, yeah, been developing software for, for quite a while at this point.

  3. 0:29

    You might know one of my projects, Node.js. Um, I wanna talk about, um, a service that we're running at Deno called Deno Deploy. This is a system for hosting websites, [lip smacks] and it has incidences.

  4. 0:45

    It's, it, it has downtime occasionally. And, uh, we've got a PagerDuty that fires. I'm sure you're all very familiar with the very scary alarm sound that wakes you up in the middle of the night.

  5. 0:58

    Um, and recently we've been playing around with using agents to automatically service these incidences. Um, [lip smacks] in particular, OpenClaw, but other, other agents as well. Um, and we've found a pattern that is working pretty well for us that I wanna share with you.

  6. 1:17

    Um, we actually give OpenClaw access to all sorts of systems: Postgres, Kubernetes, ClickHouse, AWS, GitHub, Slack, uh, all, all, all sorts of things. And we, we do actually give them, uh, rewrite access to these systems. [lip smacks]

  7. 1:35

    This is very powerful, uh, because the agents can actually get all of the context. They can see traces in ClickHouse. They can look in the production Postgres database at what the user, what u- what projects a user owns.

  8. 1:54

    They, they can look through Slack for, uh, communications, uh, GitHub logs, et cetera. Um,

  9. 2:03

    this actually works quite well. Uh, the, the agents are actually able to solve quite a lot of incidences where we previously would have a human SRE in the loop.

  10. 2:16

    But it is very dangerous, of course, because these agents could do nefarious things. They could start a psql subprocess and issue a delete users table.

  11. 2:32

    Um, they could call kubectl delete namespace prod. Um, you know, they, they could decide somehow that solving the incident, it means, you know, removing all of the users. Uh, and of course, we don't want that. [lip smacks]

  12. 2:47

    We use Opus, and Opus is remarkably well aligned. You can really not... [chuckles] You can try very hard to, to get it to delete the users table, and it will refuse over and over again.

  13. 3:01

    But this is not sufficient, right? Security can't just be wishful thinking that Opus will always obey your, your wishes. Um,

  14. 3:16

    these SRE agents that we have are connected to the support system, and thus can be prompt injected from the outside. And that means that they can be manipulated somehow.

  15. 3:29

    Like, who knows, who knows what sort of, uh, string of characters could send Opus into some, uh, bad state that allows it to think that it's taking the right action by doing something very undesirable.

  16. 3:44

    So, you know, we take the stance that the sec- the agents themselves have to be u- un-trusted software. You can't rely on the agent itself to guard what it's doing.

  17. 3:56

    You can't put the guard inside the agent. [lip smacks]

  18. 4:01

    We run agents, and I assume many of you do the same, [lip smacks] on standalone VMs. So we're not very concerned about agents touching files on the file system. You know, they're, they're, they're, uh, they're properly isolated at the system level.

  19. 4:22

    But, so, you know, e- effectively, every nefarious action that, that an agent could take, every good action that it takes, comes in the form of some network communication, some, some bytes over the wire. [lip smacks]

  20. 4:39

    And how these bytes are formed can happen in various ways. You can, of course, call through MCP, but also sub-processes. And if you think of Postgres, for example, this is a non-HTTP protocol [lip smacks] that, uh, OpenClaw can just spawn as, as a subprocess and, and start connecting to, to services.

  21. 5:03

    Um, so we take the stance that we really want to understand what the bytes are coming out of that agent in great detail. [clears throat]

  22. 5:15

    This can get very tricky in real world systems. So, for example, we have a production Postgres database in AWS, um, that is inside a VPC that we can only reach really through, uh, an EKS endpoint.

  23. 5:33

    And what we'd l- really like to do is ensure that our agent, which we want to give access to everything essentially, can't somehow tunnel through this EKS server, spawn psql, and drop the users table, right?

  24. 5:49

    We're, we're, we're concerned about pretty crazy situations like this that get very complicated, and I think many of you work in companies where you have real world systems where things are very compli- have very complex network topologies.

  25. 6:06

    So yeah, just to, just to highlight this. This is an outbound path the agent's host can't reach on a protocol that isn't HTTP that's gated by a rule that understands SQL.

  26. 6:19

    These are what human SREs would do, and how can we, uh, you know, empower these, these agents to, to have kind of the s- the same access that, that a human might?

  27. 6:34

    Um, so y- you might ask, you might say, "Well, you know, there's ACLs, there's permissions. You can issue read-only, uh, Postgres credentials." Um, and yeah, that's true, up to a point.

  28. 6:49

    Um, you can do careful credential provisioning, and you should. Um, but this, this really requires, uh, working across many different systems, provisioning credentials in, in incredibly careful ways. And as I just demonstrated, the composition of access can lead to holes when you can access one system and then another system.

  29. 7:10

    Um, MCP, you know, you can, you can, uh, structure all of this as, uh, very careful MCP, uh, tools that, uh, have the proper permissions, but, you know, then, then you can't spawn sub-processes, right?

  30. 7:27

    You're, you, you can't... You know, as, as soon as, as soon as the OpenClaw spawns the, the psql, uh, you're, you're kind of out, uh, broken through the, the security boundary.

  31. 7:40

    There are quite a few projects in this space, um, namely projects that kind of sit in front of an agent and under- look at what it's sending and try to control based on, on, um,

  32. 7:57

    uh, the, the bytes that are flowing through this. Um, LLM gateways, I think we're all familiar with. OpenRouter, LiteLLM, for example. These often have a guardrails feature that can, [clears throat]

  33. 8:10

    uh, guard against prompt injection, uh, you know, scan for, for various, uh, expressions, et cetera, that, that are going back and forth between the, the LLM, uh, provider.

  34. 8:24

    But of course, that's just the LLM. Uh, you know, we're, we're talking to databases and stuff. Um, you have systems like HTTP Jail and Crabtrap that are HTTP proxies that really sit at, at the HTTP layer, and, you know, uh, HTTP Jail, for example, can a- will allow you to write rules that say, "Well, you can make

  35. 8:48

    GET requests, but not POST requests, or you can access this HTTP subpath." Um, Crabtrap is a project from Brex that has a LLM as judge that operates on the HTTP requests flowing back and forth.

  36. 9:03

    You have, uh, proxies that inject credentials into, uh, a- as they're passing out of the agent. Uh, AgentVault, uh, being a popular one, where the, the agent itself never actually sees the credentials of the system that it's talking to but passes some placeholder out, and the proxy itself injects those credentials.

  37. 9:27

    This is an important part of the problem, but not a complete solution. And you have things like process sandboxes, like NVIDIA's OpenShell, that, you know, really are kind of OS system-level, uh, uh, guards against, say, accessing different file system paths, um, accessing different sys calls, that sort of thing.

  38. 9:50

    But as I said before, we're, we're not really concerned about that because we provision a standalone VM for, for our agents.

  39. 10:00

    So the software that, uh, we've written to address this problem is called Claw Patrol. Uh, it's an open source MIT License project, and this is a proxy that sits in front of your agents.

  40. 10:16

    Um, it operates not at the HTTP level, but at a lower level. It understands each and every byte flowing through, flowing out of your agent. It holds credentials like AgentVault and can inject those credentials so that your, uh, what- whatever agent software you're using, uh, doesn't actually, doesn't ever actually see secret

  41. 10:41

    values. And, um, in particular, it has a very advanced rule system that allows you to say in, in precise details how, how and, and what requests get, uh, transferred out, out of the agent and talk to the outside world.

  42. 11:02

    These rules are, are kind of the, the key piece of the system, and we write them in a configuration file using a language called HCL. Uh, who... Anybody familiar with HCL?

  43. 11:15

    This is like the Terraform, the Terraform configuration language. Uh, it actually works really well here. So we have a file that we check in to Git and we manage very carefully that essentially defines the permissions for all of our services at Deno.

  44. 11:31

    And these... Yeah, it's, it's a big, long file. It's like 1,000 lines and, you know, we, we manage each and every change to that in, in kind of precise detail.

  45. 11:41

    This is an example of a rule in our configuration file that blocks certain Postgres functions from being, uh, being called. And so, yeah, again, Postgres being a non-HTTP protocol, and these rules can be applied even when tunneling through other systems.

  46. 12:03

    Um, it supports, uh, a number of different protocols and has a plug-in system to extend it when you run into a protocol that it is not yet familiar with.

  47. 12:16

    So, uh, here's, here's a little demo, unfortunately not live. Um, but we call Claw Patrol Run Codex in yellow mode so that it just does what you say it, it should do.

  48. 12:29

    And you tell c- you tell Codex, "Hey, delete the users table from, from Postgres." And Codex, um, properly, uh, obeys and starts a psql subprocess where it deletes the, the, the users' table.

  49. 12:45

    That, uh, psql subprocess o- opens a network connection to, to our, to the, the Postgres server. That goes through Claw Patrol, where we parse each and every byte. We understand the Postgres protocol.

  50. 13:01

    We apply our rules and ultimately reject that, uh, what we call an action from, uh, from doing something destructive.

  51. 13:14

    Claw Patrol has a dashboard that lets you see what your agents are doing. So at the top you can see, uh, a couple of different, uh, devices or agents and the, the various requests that are flowing through, some of them being denied, some of them need approval, which I'll talk about in a second.

  52. 13:35

    And you can click into, to each request or, uh, action, as we call it, because it, it's more general than HTTP requests, and see the details of, of what's going on.

  53. 13:47

    There's, there's analytics and, yeah, it's, it's very, uh, utilitarian driven. It's like what, what we need to understand our own agents.

  54. 13:56

    Um, there, as I said, there's, there's an approval system in this, so you can route, you can define rules that don't just reject requests or actions, but, uh, ask a human, for example, in a Slack channel or run an LLM judge over, over this, um, or any combination thereof, right?

  55. 14:18

    Maybe first, first get an LLM judge and then get approval in Slack, uh, so that you can have, again, very precise control over what your agents are doing outside of the agent software itself, right?

  56. 14:31

    We, we treat the agent software as a black box, right? We, we don't require any changes to, to that software.

  57. 14:41

    Um, I mentioned credential injection before. Uh, Claw Patrol has very detailed support for all sorts of systems. Credentials come in many different forms. They're not just, uh, bearer, uh, headers.

  58. 14:57

    Uh, it handles cookies, it handles Postgres, as I mentioned. Uh, ClickHouse. Supports all sorts of, uh, OAuth protocols. Supports very complex things like AWS SigV4. Um, so yeah, this...

  59. 15:12

    I, I guess what I'm trying to, uh, say is that this is, this is really born out of utility here and meant for real world systems. This is not just, you know, kind of an imaginary scenario. [clears throat]

  60. 15:29

    Um, this system works over Tailscale or WireGuard. Um, we ourselves run Claw Patrol, run our agents inside of Tailscale, inside of a tailnet, and Claw Patrol acts as a Tailscale exit node.

  61. 15:46

    Um, we also lean on Tailscale for authentication to the dashboard, so your, your Tail- your Tailscale identity, uh, actually allows you access to, to the dashboard so that we don't have to layer on a, uh, another authentication mechanism.

  62. 16:04

    But we also have this WireGuard for people who have not bought into the wonderful Tailscale ecosystem. But this works very well for us because we know that all of our stuff is, is off the internet and all of these very security sensitive things are, are, uh, tightly controlled.

  63. 16:23

    Claw Patrol itself is holding all of these credentials to production systems, so you have to be very careful with it.

  64. 16:32

    Um, so yeah, this, the, the thesis here is, is basically that agents can't be trusted to police themselves. That includes security plugins or, or, uh, modifications to the, to the agent software itself.

  65. 16:46

    The, the security boundary has to be elsewhere, and that's not to say that alignment is not a good thing, but, uh, you know, for, for real world security systems, we, we really do need to control this at, at a higher level.

  66. 17:00

    And, uh, Claw Patrol is our attempt to, uh, make this work for ourselves. Um, and yeah, you can, you can check it out here. [audience applauds]

  67. 17:17

    I might have time for one question or so.

  68. 17:23

    Yes, sir.

  69. 17:23

    What kind of, uh, eval testing do you do on this to make sure it's, uh, working properly?

  70. 17:29

    Uh, yeah, so, uh, the question is what, what sort of testing do we, do we do to make, make sure it works properly? Um, I, I didn't mention, but, but there, this rule file actually has a test system along with it where you can provide, uh, fixtures, action, like fixture requests that can flow through the rules and

  71. 17:47

    then you can, uh, essentially create unit tests to make sure that that fixture is alwa- you know, that request will always be blocked by, by your set of rules.

  72. 17:57

    And then of course for the Claw Patrol software itself we have a, a large suite of, of testing.

  73. 18:04

    Yes, sir.

  74. 18:05

    As agents get smarter, does the problem get bigger or smaller?

  75. 18:10

    It... So the question is, as, as agents get smarter does this problem get bigger or smaller? I think, I think we can, we, we'll never be able to fully trust, uh, AIs.

  76. 18:22

    I think it becomes less and less of a problem as they are smarter, have better context, know that they're working with a company, know that, that they shouldn't be doing bad things.

  77. 18:32

    Opus is more aligned than previous models, but I think we're always going to have to have, uh, backstop security mechanisms. Um, cool. Well, I, I'll be around for other questions, but thank you very much. [audience applauds] [outro music]