After human: How to think about fraud & abuse when anyone could be anything
Tiago Sada, Bryan Becker
Tools for Humanity, building for World · Cloudflare
A fixed catalog of AI controls cannot anticipate every customer workflow, model, or risk signal. This session demonstrates how teams can extend Cloudflare Gateway policy with custom selectors and Cloudflare Workers invocations to build organization-specific AI guardrails. The walkthrough covers a practical pattern: detect AI or MCP traffic, evaluate customer context, take a policy action, and use reusable components so the control can be applied consistently. The focus is on empowering security and platform teams to adapt without waiting for a product release.
0:02Hi, everybody. How's it going? Thank you very much for being here. My name is AJ Gerstenhaber. I am the product manager who owns our secure web gateway, along with a couple of our other networking firewall tools and DS filtering and all sorts of stuff. And I'm here to talk to y 'all about something today that I am unbelievably excited about, something that has been in the works for close. to two years at this point, and my intent is to demo a lot of it for you in real time. I know you've probably seen a lot of tech vendor demos over the years, and you know that they don't all go well the first try, so I will ask you to bear with me live fire here in case anything goes wrong, but we're going to be talking about the brand new integration between Gateway and Cloudflare workers.
0:48Who's familiar with Gateway or the concept of secure web gateways, Cloudflare 1, Cloudflare Zero Trust. A couple of hands, a couple of hands. So at a very, very, very high level, you all know what Cloudflare does, right? Cloudflare runs a big global edge network that has a bunch of services that are replicated across hundreds of data centers. And one of those services is a secure web gateway called Gateway. So this sits in all of our metals, on all of our edges, and we on -ramp traffic to the gateway from a couple of different sources. We have our Warp client or our Cloudflare One device client. your trust customers familiar with that. It basically is a VPN that lives on your device and tunnels traffic up to Cloudflare so that you can interrogate it or apply policy to it for your end user population or whatever.
1:35And then we also have on ramps like our Cloudflare WAN or Cloudflare Mesh, where you can send all the traffic from a branch or from a subnet or from a data center or whatever up to Cloudflare and evaluate it in the same way. And then you can also send traffic A lot of people in the last session that I had didn't know this, but you can also send traffic from our developer platform. You can take the traffic that your workers initiate with fetch requests or whatever it is, or your containers initiate, and you can have that egress through your Cloudflare 1 network bindings as well, and then you can apply the same things here. This says coming soon only for this whole functionality. So everything else, you can go ahead and start sending your agents that run on Cloudflare. You can send their traffic.
2:20our secure web gateway and give them default deny security policies or whatever you can do that today you just can't then do this too because that has a little loop danger in it where we don't want you to get in a place where you're making billions and billions of requests at once but we are going to release that soon too so gateway is a secure web gateway that does tls decryption that allows you to um look inside like deep packet inspection look at the request headers and the body to evaluate it for specific or sensitive traffic or whatever else you apply security policies to it and apply data loss prevention to it. But most secure web gateways kind of work the same way in that you evaluate the body of a request for something, you see whether or not there is a presence that matches whatever you're evaluating for, and then you either let the traffic through or you block it.
3:11And that is not really conducive to the way that the world is starting to move. I've been doing this with customers for seven years at Cloudflare. It's my first five years working to help customers deploy this in their environments. And what I found was that there's a lot of heterogeneity between multiple customer environments. Everyone's environment is special or unique or whatever it is that has that some little thing in it that makes it difficult to operate with vendors. And there's always things that people want that we don't have. And we're going to continue. But the thing that we built now in order to try to allow customers to have the most flexibility that they possibly can is the ability to, instead of just allowing or blocking when traffic matches in your firewall, we're going to give you the ability to send that traffic to a worker that is in your account, your own worker, the code that you write as a proxy.
4:08And then the worker will receive the request from the user, from the agent. or whatever it is and then transform it in some way take some sort of action on it use some sort of binding and then forward it off either to the internet or to the private network that traffic might be destined to depending on how your configuration works so that's cool for a whole bunch of reasons and we can talk about why that operates the way that it does we can get into the mechanics of it i think we'll have some time for questions but this is a little confusing bear with me there's like a lot of nuance to the way that you have to understand all of workers the whole developer platform, and Cloudflare One and the SWIG, and I think there are very few people who are super comfortable with both of those things. So I'm just going to walk you through some live fire examples. I'm going to show you some policies that I have set up to catch traffic.
4:53I'm going to show you the workers that then process that traffic, and then I'm going to show you the output, so what's possible. These are just super basic examples. None of this is maybe conclusive, to say the least. You could do the world's most complex things. If any of you run workers, you know that workers are both incredibly flexible and for being serverless, there's a lot that you can do that is pretty stateful with a worker. And so let's go ahead and get into some examples. The first thing that I want to show you is this little website that I built to dictate something very clear, but this is context .gerstenhaber .com. That's me. That's my name. This website won't be very useful to anyone else, but you're welcome to go to it if you want to. And this is showing. I have traffic going through the Cloudflare One client on my device right now.
5:40And when it hits this website, it matches a gateway policy that fetches the context of the user on the device. So you can see gateway sends to the worker a whole bunch of context that is specific to Cloudflare. Not only do you get the things like the SNI and the source IP that you would get from any headers, but you also get the on-ramp type at Cloudflare. This is onboarding through the device client. This is the VNet or virtual network ID that the user is connected to, the internal source IP, the policy that matched this traffic that allowed this to happen. And then you also get identity information. You have my personal email, my full name, because those things are attached to my device client. And then device posture checks. Device posture is the ability to use the client running on the device in order to determine whether the firewall is on or whether they're using a certain approved version of Mac OS.
6:33or linux or whatever it is and it'll show you which checks passed as evaluated by our firewall so to help you understand this a little bit better this is just for capturing context we haven't done anything cool yet but to help you understand this a little bit better this is the code for the worker that receives and processes that context and you don't need to take a picture of it i'm happy to share this with anybody after the fact who wants it but it's pretty simple to write a little typescript or javascript worker that the the important component of this that we don't have time for a deep dive today unfortunately but there's a new export class of gateway middleware that allows you to start using request and context and next to determine how the worker should receive the traffic from your users or your services and then what it should do with the full body and headers once it's received it and then what it should do to next forward it onto the origin service or kill the request or block it in place or do whatever you want so let's see how this works in practice this is my personal instance of slack slack is something that y'all use slack right people still use slack slack's cool okay and this is a message between me and my dog and i my dog sent me a picture of my cat which is very nice of him but so what i'm going to do is i'm just going to take that file and i'm going to download it and you see image one downloaded here but i have a policy set up for slack let me get to my policies real quick.
7:57Oh, no, I lost my policies. I'll show you this in real time. But so we go to the Cloudflare One dashboard. We go to my account and you go to traffic controls, firewall policies and HTTP. If you can tell, I do this a lot. I've been doing this a long time. Then you see a number of connect demo policies that I have here. And one of them is for TPFL Slack. file downloads so you can see this is a brand new policy so it hasn't started processing traffic yet but if we look at it it's just when the host matches all these specific things about the request and the user matches my email then the action is a brand new action called forward which is how we decide when traffic gets sent to a worker and then the worker in question is defined here as connect slack downloads so that what that worker does and you get to connect slack downloads you can see that it has an r2 binding to a bucket called files and if we look at the code for this worker boy i hope all of this works so obviously whenever you load something this way it gets a little complicated but here we have the handle the request and the context and the next then if it matches on files for this particular thing fetching these files etc um then it's going to oh i had this in here earlier basically
9:28what it does is it takes the file it fetches it from the request and then it stores the file to r2 so you can say anytime a user downloads anything i just want to take a copy of that file and store it to r2 just in case the user might be doing something malicious that i need to investigate later so if we then go to my r2 bucket for connect slackdown and refresh it there's nothing in there as you can see right now oh the suspense is killing me
10:07oh come on I told y 'all that there was a danger that this might happen but I'm surprised that I'm having trouble connecting to the Wi-Fi at all it's just not loading object storage all right all right then so these are all of my r2 buckets and you can see here that i have my connect slack downloads bucket and it's still empty so something must have gone wrong in that process but we will move on to the next demo and then by the end of it maybe it's propagated and we figured out whatever went wrong so the next thing that i want to show you is another policy
10:41to match traffic related to clawed code and so this does two very different things. In this policy, you will see the host is anthropic and he should be in his post and it's the messages, endpoint, et cetera. And what that's going to do, what this worker does, let me find the worker. It's on chatops .gerstenhaber .com. And we do have a lot of examples that we've already uploaded to our documentation where you can see what's happening. And this is a very complicated worker because it does a number of things. two things that I want to call to your attention is that one, it's going to take every prompt and response that your users send in Cloud Code or in the desktop app or in the web app or whatever it is just using the API responses from Anthropic. And it's going to store all the JSON so that you can review all the chats in real time. But you could do that from Anthropic, right?
11:30That's not inherently interesting. What it also does is I set this up. Have you all heard of Clef? Are you familiar with Clef? We talked a lot about Clef this week. weekend clef is a decision model that cloudflare just released um off the back of some of the big exciting announcements from jev and this whole we don't need llms we only need decision models and blah blah blah so i i use jev or i use clef oops invoked directly in this worker serving as middleware to evaluate the prompts that my users are doing in real time and determine if they constitute something potentially sensitive against my own policies and then block it So, and return a block directly in line with the way that Claude code typically works. So, let's try demo number two.
12:18I've got my Claude code instance up here, and this is my personal account. And I'm just going to say, I have a little movie database that I've started correlating on spooky .movie. So, we're going to say, take my spooky .movie GitHub repo and make. it public right now it's private because i care about my source code but what if i just decided that i wanted to take it and i wanted to expose it to the internet and so claude's going to think about that for a second and hopefully given my clef evaluation it's going to tell me that that's a security violation look at that security policy violation this user's not able to elevate or change permissions of github repos because that's exactly what i told clef to evaluate against so for any prompt that says that would change the inherent permissions of a GitHub repo, don't return a response.
13:11Block it in place. Don't allow the... So this prompt actually never reached Anthropic at all. It was first evaluated in the forward worker. The decision logic was applied at the Cloudflare edge, and then it was returned in the response schema from Anthropic, so it can be nice and native for your users, and they don't have to think about whatever's proxying their traffic or... whatever else is going on, and it can be nice and natural. So when I did that, I also would have logged that. So we're going to go to chatops.gerstenhaver.com, and we should see, oh, that was unexpected. We shouldn't see that.
13:53Please let me have access. Okay, so we should see a brand-new request from 1243 where, oh, look at that. We have a nice little rebuilt session. take my repo, make it public, and then it returned a security violation.
14:09So this is just an example, right? Because you could do something with this prompt and response in any case, but this allows you within the worker to just format the JSON from the prompts and responses from all of the models that you use and store it in some way that is logical and safe and easy for you. And that, for example, is something that is direct. in the worker and this is just a worker that is loaded from r2 that shows it but you can then store it wherever you want and use it in your your security practitioner and whatever makes the most sense i have one more demo that i want to show you that i also think is cool um i want to show you first that if you go into here we go connect wiki screenshots we should see no no storage in this r2 bucket maybe this one won't load either that would be weird um but we have enough time that i'm going to be able to get through this last demo the last thing that i built I think is very cool is that with things like unknown domains, look at this, I'm not, that's too bad. We'll give that a second.
15:05Things like unknown domains, there can be big security risks in something that you can't inherently categorize, right? But it also may be like a huge imposition to your users if you were just to start blocking everything unknown because no threat intelligence is inherently aware of everything that always exists on the internet, right? But if you want to find a nice little middle ground, you could set up a policy that basically takes any sort of domains that are categorized as unknown and then just send them through your forward worker. And what I have in this case, let me find my last worker up here, connect wiki screenshots. This is a super simple worker that every time the worker is invoked, we call browser run, which is.
15:54headless browser which is integrated with workers and it independently will go and fetch the domain that the user or the full host that the user requested and then take a screenshot of it and store it to r2 so that you can evaluate it later and determine well if this user may have been compromised at this point they went to these millions of websites how are we going to classify where the over the threat threat chain came from for instance so if we just go to wikipedia .com and you did see a moment ago that there nothing in that R2 bucket, then what should be happening now is that everything I do on Wikipedia, because that was how I set up my policy, we're going to check out the Eon Dynasty, let's maybe learn about the Mongols and ethnicities in general.
16:41I don't know if you ever click through, just click through Wikipedia, but I always find that to be fun. I've never heard of the word acculturation, so we'll take that. That was enough things, I think. But ideally, what should have happened... here is that every time the user requested something within this host it the browser run should have fired from that worker that was used as a proxy in the middle of the request and then go on and gone and taken an independent screenshot obviously you saw the performance was still good this isn't happening in real time it's not live and then if we go back and check our r2 bucket and we refresh it boy i hope it loads oh look at that we have a new object there and that object is related to wikipedia.org and there's six m is in there and the first one can't be previewed but we can make it a little bigger you see acculturation isn't that neat isn't that cool that you can just invoke all of these services in line with this or your secure web gateway and just use the power of the developer platform in order to accomplish basically any security goal i'm very very very very excited about this functionality we have two minutes left i can't believe i made it through all those demos you All right, I hope you all are as psyched about this as I am because I think this is a super cool opportunity to start building some really exciting and novel security tooling.
17:55But thank you so much for coming and hope you have a great rest of your day.
Tiago Sada, Bryan Becker
Tools for Humanity, building for World · Cloudflare
Michael Hacker, Michael Kowal
Montclair State University · Cloudflare
AJ Gerstenhaber
Cloudflare
Be the first to know when registration opens and the agenda goes live.
--- title: "Bring your own logic with a fully programmable, secure web gateway" url: "https://www.cloudflare.com/connect/2026/session/bring-your-own-logic-with-a-fully-programmable-secure-web-gateway" year: 2026 --- # Bring your own logic with a fully programmable, secure web gateway [Watch session](https://www.cloudflare.com/connect/2026/session/bring-your-own-logic-with-a-fully-programmable-secure-web-gateway) ## Session details - **Track:** Secure AI - **Topics:** Agentic AI & MCP, Programmable Platforms, Security modernization & zero trust - **Solution areas:** SASE & Workspace Security (Cloudflare One) ## About this session A fixed catalog of AI controls cannot anticipate every customer workflow, model, or risk signal. This session demonstrates how teams can extend Cloudflare Gateway policy with custom selectors and Cloudflare Workers invocations to build organization-specific AI guardrails. The walkthrough covers a practical pattern: detect AI or MCP traffic, evaluate customer context, take a policy action, and use reusable components so the control can be applied consistently. The focus is on empowering security and platform teams to adapt without waiting for a product release. ## Speakers - [AJ Gerstenhaber](https://www.cloudflare.com/connect/speakers/2465225) — Senior Product Manager, Cloudflare ## Transcript [0:02] Hi, everybody. How's it going? Thank you very much for being here. My name is AJ Gerstenhaber. I am the product manager who owns our secure web gateway, along with a couple of our other networking firewall tools and DS filtering and all sorts of stuff. And I'm here to talk to y 'all about something today that I am unbelievably excited about, something that has been in the works for close. to two years at this point, and my intent is to demo a lot of it for you in real time. I know you've probably seen a lot of tech vendor demos over the years, and you know that they don't all go well the first try, so I will ask you to bear with me live fire here in case anything goes wrong, but we're going to be talking about the brand new integration between Gateway and Cloudflare workers. [0:48] Who's familiar with Gateway or the concept of secure web gateways, Cloudflare 1, Cloudflare Zero Trust. A couple of hands, a couple of hands. So at a very, very, very high level, you all know what Cloudflare does, right? Cloudflare runs a big global edge network that has a bunch of services that are replicated across hundreds of data centers. And one of those services is a secure web gateway called Gateway. So this sits in all of our metals, on all of our edges, and we on -ramp traffic to the gateway from a couple of different sources. We have our Warp client or our Cloudflare One device client. your trust customers familiar with that. It basically is a VPN that lives on your device and tunnels traffic up to Cloudflare so that you can interrogate it or apply policy to it for your end user population or whatever. [1:35] And then we also have on ramps like our Cloudflare WAN or Cloudflare Mesh, where you can send all the traffic from a branch or from a subnet or from a data center or whatever up to Cloudflare and evaluate it in the same way. And then you can also send traffic A lot of people in the last session that I had didn't know this, but you can also send traffic from our developer platform. You can take the traffic that your workers initiate with fetch requests or whatever it is, or your containers initiate, and you can have that egress through your Cloudflare 1 network bindings as well, and then you can apply the same things here. This says coming soon only for this whole functionality. So everything else, you can go ahead and start sending your agents that run on Cloudflare. You can send their traffic. [2:20] our secure web gateway and give them default deny security policies or whatever you can do that today you just can't then do this too because that has a little loop danger in it where we don't want you to get in a place where you're making billions and billions of requests at once but we are going to release that soon too so gateway is a secure web gateway that does tls decryption that allows you to um look inside like deep packet inspection look at the request headers and the body to evaluate it for specific or sensitive traffic or whatever else you apply security policies to it and apply data loss prevention to it. But most secure web gateways kind of work the same way in that you evaluate the body of a request for something, you see whether or not there is a presence that matches whatever you're evaluating for, and then you either let the traffic through or you block it. [3:11] And that is not really conducive to the way that the world is starting to move. I've been doing this with customers for seven years at Cloudflare. It's my first five years working to help customers deploy this in their environments. And what I found was that there's a lot of heterogeneity between multiple customer environments. Everyone's environment is special or unique or whatever it is that has that some little thing in it that makes it difficult to operate with vendors. And there's always things that people want that we don't have. And we're going to continue. But the thing that we built now in order to try to allow customers to have the most flexibility that they possibly can is the ability to, instead of just allowing or blocking when traffic matches in your firewall, we're going to give you the ability to send that traffic to a worker that is in your account, your own worker, the code that you write as a proxy. [4:08] And then the worker will receive the request from the user, from the agent. or whatever it is and then transform it in some way take some sort of action on it use some sort of binding and then forward it off either to the internet or to the private network that traffic might be destined to depending on how your configuration works so that's cool for a whole bunch of reasons and we can talk about why that operates the way that it does we can get into the mechanics of it i think we'll have some time for questions but this is a little confusing bear with me there's like a lot of nuance to the way that you have to understand all of workers the whole developer platform, and Cloudflare One and the SWIG, and I think there are very few people who are super comfortable with both of those things. So I'm just going to walk you through some live fire examples. I'm going to show you some policies that I have set up to catch traffic. [4:53] I'm going to show you the workers that then process that traffic, and then I'm going to show you the output, so what's possible. These are just super basic examples. None of this is maybe conclusive, to say the least. You could do the world's most complex things. If any of you run workers, you know that workers are both incredibly flexible and for being serverless, there's a lot that you can do that is pretty stateful with a worker. And so let's go ahead and get into some examples. The first thing that I want to show you is this little website that I built to dictate something very clear, but this is context .gerstenhaber .com. That's me. That's my name. This website won't be very useful to anyone else, but you're welcome to go to it if you want to. And this is showing. I have traffic going through the Cloudflare One client on my device right now. [5:40] And when it hits this website, it matches a gateway policy that fetches the context of the user on the device. So you can see gateway sends to the worker a whole bunch of context that is specific to Cloudflare. Not only do you get the things like the SNI and the source IP that you would get from any headers, but you also get the on-ramp type at Cloudflare. This is onboarding through the device client. This is the VNet or virtual network ID that the user is connected to, the internal source IP, the policy that matched this traffic that allowed this to happen. And then you also get identity information. You have my personal email, my full name, because those things are attached to my device client. And then device posture checks. Device posture is the ability to use the client running on the device in order to determine whether the firewall is on or whether they're using a certain approved version of Mac OS. [6:33] or linux or whatever it is and it'll show you which checks passed as evaluated by our firewall so to help you understand this a little bit better this is just for capturing context we haven't done anything cool yet but to help you understand this a little bit better this is the code for the worker that receives and processes that context and you don't need to take a picture of it i'm happy to share this with anybody after the fact who wants it but it's pretty simple to write a little typescript or javascript worker that the the important component of this that we don't have time for a deep dive today unfortunately but there's a new export class of gateway middleware that allows you to start using request and context and next to determine how the worker should receive the traffic from your users or your services and then what it should do with the full body and headers once it's received it and then what it should do to next forward it onto the origin service or kill the request or block it in place or do whatever you want so let's see how this works in practice this is my personal instance of slack slack is something that y'all use slack right people still use slack slack's cool okay and this is a message between me and my dog and i my dog sent me a picture of my cat which is very nice of him but so what i'm going to do is i'm just going to take that file and i'm going to download it and you see image one downloaded here but i have a policy set up for slack let me get to my policies real quick. [7:57] Oh, no, I lost my policies. I'll show you this in real time. But so we go to the Cloudflare One dashboard. We go to my account and you go to traffic controls, firewall policies and HTTP. If you can tell, I do this a lot. I've been doing this a long time. Then you see a number of connect demo policies that I have here. And one of them is for TPFL Slack. file downloads so you can see this is a brand new policy so it hasn't started processing traffic yet but if we look at it it's just when the host matches all these specific things about the request and the user matches my email then the action is a brand new action called forward which is how we decide when traffic gets sent to a worker and then the worker in question is defined here as connect slack downloads so that what that worker does and you get to connect slack downloads you can see that it has an r2 binding to a bucket called files and if we look at the code for this worker boy i hope all of this works so obviously whenever you load something this way it gets a little complicated but here we have the handle the request and the context and the next then if it matches on files for this particular thing fetching these files etc um then it's going to oh i had this in here earlier basically [9:28] what it does is it takes the file it fetches it from the request and then it stores the file to r2 so you can say anytime a user downloads anything i just want to take a copy of that file and store it to r2 just in case the user might be doing something malicious that i need to investigate later so if we then go to my r2 bucket for connect slackdown and refresh it there's nothing in there as you can see right now oh the suspense is killing me [10:07] oh come on I told y 'all that there was a danger that this might happen but I'm surprised that I'm having trouble connecting to the Wi-Fi at all it's just not loading object storage all right all right then so these are all of my r2 buckets and you can see here that i have my connect slack downloads bucket and it's still empty so something must have gone wrong in that process but we will move on to the next demo and then by the end of it maybe it's propagated and we figured out whatever went wrong so the next thing that i want to show you is another policy [10:41] to match traffic related to clawed code and so this does two very different things. In this policy, you will see the host is anthropic and he should be in his post and it's the messages, endpoint, et cetera. And what that's going to do, what this worker does, let me find the worker. It's on chatops .gerstenhaber .com. And we do have a lot of examples that we've already uploaded to our documentation where you can see what's happening. And this is a very complicated worker because it does a number of things. two things that I want to call to your attention is that one, it's going to take every prompt and response that your users send in Cloud Code or in the desktop app or in the web app or whatever it is just using the API responses from Anthropic. And it's going to store all the JSON so that you can review all the chats in real time. But you could do that from Anthropic, right? [11:30] That's not inherently interesting. What it also does is I set this up. Have you all heard of Clef? Are you familiar with Clef? We talked a lot about Clef this week. weekend clef is a decision model that cloudflare just released um off the back of some of the big exciting announcements from jev and this whole we don't need llms we only need decision models and blah blah blah so i i use jev or i use clef oops invoked directly in this worker serving as middleware to evaluate the prompts that my users are doing in real time and determine if they constitute something potentially sensitive against my own policies and then block it So, and return a block directly in line with the way that Claude code typically works. So, let's try demo number two. [12:18] I've got my Claude code instance up here, and this is my personal account. And I'm just going to say, I have a little movie database that I've started correlating on spooky .movie. So, we're going to say, take my spooky .movie GitHub repo and make. it public right now it's private because i care about my source code but what if i just decided that i wanted to take it and i wanted to expose it to the internet and so claude's going to think about that for a second and hopefully given my clef evaluation it's going to tell me that that's a security violation look at that security policy violation this user's not able to elevate or change permissions of github repos because that's exactly what i told clef to evaluate against so for any prompt that says that would change the inherent permissions of a GitHub repo, don't return a response. [13:11] Block it in place. Don't allow the... So this prompt actually never reached Anthropic at all. It was first evaluated in the forward worker. The decision logic was applied at the Cloudflare edge, and then it was returned in the response schema from Anthropic, so it can be nice and native for your users, and they don't have to think about whatever's proxying their traffic or... whatever else is going on, and it can be nice and natural. So when I did that, I also would have logged that. So we're going to go to chatops.gerstenhaver.com, and we should see, oh, that was unexpected. We shouldn't see that. [13:53] Please let me have access. Okay, so we should see a brand-new request from 1243 where, oh, look at that. We have a nice little rebuilt session. take my repo, make it public, and then it returned a security violation. [14:09] So this is just an example, right? Because you could do something with this prompt and response in any case, but this allows you within the worker to just format the JSON from the prompts and responses from all of the models that you use and store it in some way that is logical and safe and easy for you. And that, for example, is something that is direct. in the worker and this is just a worker that is loaded from r2 that shows it but you can then store it wherever you want and use it in your your security practitioner and whatever makes the most sense i have one more demo that i want to show you that i also think is cool um i want to show you first that if you go into here we go connect wiki screenshots we should see no no storage in this r2 bucket maybe this one won't load either that would be weird um but we have enough time that i'm going to be able to get through this last demo the last thing that i built I think is very cool is that with things like unknown domains, look at this, I'm not, that's too bad. We'll give that a second. [15:05] Things like unknown domains, there can be big security risks in something that you can't inherently categorize, right? But it also may be like a huge imposition to your users if you were just to start blocking everything unknown because no threat intelligence is inherently aware of everything that always exists on the internet, right? But if you want to find a nice little middle ground, you could set up a policy that basically takes any sort of domains that are categorized as unknown and then just send them through your forward worker. And what I have in this case, let me find my last worker up here, connect wiki screenshots. This is a super simple worker that every time the worker is invoked, we call browser run, which is. [15:54] headless browser which is integrated with workers and it independently will go and fetch the domain that the user or the full host that the user requested and then take a screenshot of it and store it to r2 so that you can evaluate it later and determine well if this user may have been compromised at this point they went to these millions of websites how are we going to classify where the over the threat threat chain came from for instance so if we just go to wikipedia .com and you did see a moment ago that there nothing in that R2 bucket, then what should be happening now is that everything I do on Wikipedia, because that was how I set up my policy, we're going to check out the Eon Dynasty, let's maybe learn about the Mongols and ethnicities in general. [16:41] I don't know if you ever click through, just click through Wikipedia, but I always find that to be fun. I've never heard of the word acculturation, so we'll take that. That was enough things, I think. But ideally, what should have happened... here is that every time the user requested something within this host it the browser run should have fired from that worker that was used as a proxy in the middle of the request and then go on and gone and taken an independent screenshot obviously you saw the performance was still good this isn't happening in real time it's not live and then if we go back and check our r2 bucket and we refresh it boy i hope it loads oh look at that we have a new object there and that object is related to wikipedia.org and there's six m is in there and the first one can't be previewed but we can make it a little bigger you see acculturation isn't that neat isn't that cool that you can just invoke all of these services in line with this or your secure web gateway and just use the power of the developer platform in order to accomplish basically any security goal i'm very very very very excited about this functionality we have two minutes left i can't believe i made it through all those demos you All right, I hope you all are as psyched about this as I am because I think this is a super cool opportunity to start building some really exciting and novel security tooling. [17:55] But thank you so much for coming and hope you have a great rest of your day. ## Related sessions - [After human: How to think about fraud & abuse when anyone could be anything](https://www.cloudflare.com/connect/2026/session/after-human-how-to-think-about-fraud-and-abuse-when-anyone-could-be-anything) - [Don't block shadow AI on campus. Out-design it.](https://www.cloudflare.com/connect/2026/session/dont-block-shadow-ai-on-campus-out-design-it) - [Trusting the toolchain: Securing agentic MCP and package registry usage](https://www.cloudflare.com/connect/2026/session/trusting-the-toolchain-securing-agentic-mcp-and-package-registry-usage) ## More from Connect - [All sessions](https://www.cloudflare.com/connect/) - [Get notified for Connect 2027](https://www.cloudflare.com/connect#2027)