AI Engineer World's Fair 2026
Unlock Agent Autonomy: The Runtime for AI-Native Systems
About this talk
Docker engineering executive Tushar Jain argues that agent autonomy is limited less by model intelligence than by the ability to enforce safety at runtime. Using an agent that unexpectedly published a private report and an incident investigation that progressively requests GitHub and Slack access, he outlines containment outside the agent trust boundary, task-scoped capabilities, just-in-time MCP tools, and intent-aware policy enforcement. Demonstrations extend these controls to cloud execution, orchestrated agents, and Docker Sandboxes through the sbx CLI.
Chapters
- 0:00Agent autonomy needs safety, not just intelligence
- 1:33Unexpected publication and expanding access
- 4:35Containment, scoped capabilities, and just-in-time MCP tools
- 9:39Portable runtime foundations and sandbox demonstrations
- 17:04Cloud execution and scoped-agent orchestration
- 21:13Runtime policy enforcement and getting started with sbx
Talk transcript
- 0:00
[on-hold jingle] All right. I think we're good to start. Uh, there you go.
- 0:15
Um, hey, everyone. Welcome. Uh, I hope everyone's enjoying the conference. This is, uh, a really fun conference. I've enjoyed all the talks and the presence here. Okay, so we're gonna talk about unlocking agent ex-- autonomy and what that means.
- 0:29
These last few years have been crazy. I'm sure we've all felt it, right? Like, two years ago, we were talking about chatbots, and here we are. We're now in this world where we all see the autonomy we get from agents.
- 0:40
Agents have become powerful, and they'll continue being so. Um, at this point, the next big challenge... Like, we've spent the last two years trying to make agents more intelligent and powerful, and that'll keep going, and I think we're almost there.
- 0:53
I think the next challenge in front of us is actually harder and more important, which is how to make them safer. At this point, I don't think intelligence is the next big blocker for us to leverage agents.
- 1:03
It is actually how to do so safely, so we can give them all the access and autonomy they need. Just as a story, this is a small anecdote. I'm sure everyone here has some version of this.
- 1:13
Um, this is one of many agents I run. This runs every night. It looks at some repos I care about and, you know, just does some analysis for me.
- 1:22
What activities happen, who's been doing what, what progress has been made? Um, I have others that might do some more. Might analyze the code review comments, have some of my own analysis in there, be like, "What was the tone?
- 1:33
Who did what? How are they acting?" I'm a manager. This is not meant for performance reviews, just meant to help me keep a pulse. But still, it's not something I want shared.
- 1:41
It's for my own knowledge to help me keep up. This agent's been running for weeks just fine. Runs every night, sends me an email, I look at it. Randomly, one day, uh, it decided [chuckles] to post this report as a PR on the repo.
- 1:55
Why? Nothing's changed, just the model decided to be helpful. Um, so [laughs]
- 2:02
thank you. Um, but this is a fundamental thing, right? Like, agents do stuff. They try to be helpful. They increase and change the goal they're doing, either 'cause they themselves are just trying to be helpful, or they get confused, they make a mistake, or they get prompt injected, right?
- 2:19
Um, this is a simple example, honestly. Like, it's easy to fix this. That agent should never have had write access to GitHub. It should have just had read access, and that's an easy fix.
- 2:30
Um, but it's not that simple, right? That's a very easy case. Let's take, um, let's take another example. Let's imagine I have an agent, and I'm asking it to investigate a latency spike.
- 2:40
Check out a latency spike. Great. It starts. It's looking at the logs. It sees, oh, I think there's another service here. I want logs to-- for that service. Let me get that access.
- 2:49
Oh, I see this, uh, might be related to a recent check-in. I would like access to GitHub, to the repos, to read recent commits. Uh, this looks like it may have happened.
- 2:58
Let me look at Slack conversations to see, has there been any chatter about this to learn from there? Great. It asks for Slack access. These are all reasonable steps, right?
- 3:08
This makes sense. This is what I would expect an engineer to do. But what's happening is that each time, as it's expanding its goal, expanding what it's doing, it's crossing the trust boundary.
- 3:18
It's increasing the scope of the task, and this is fundamentally where we run into trouble. How do we know it's okay to give it access? We now end up with an agent that has access to everything at the same time, and so anything becomes a vector where the blast radius expands.
- 3:33
This is fundamentally the big difference we're running into and the big challenge. Earlier, traditional software was deterministic. You could define the permissions. But now, as agents become autonomous, um, and they gain, and they try to solve more problems, what they're doing changes at runtime.
- 3:49
The access they need changes at runtime. And right now, we haven't truly solved this. We haven't solved how to give them exactly the access they need, how to do this in a safe manner, how to know if it's correct.
- 4:00
And this is the fundamental thing I think we have to go solve now, uh, to actually unlock autonomy. And so we go away from, like, can it do this?
- 4:07
To, like, should it do this? And how do we give it that access?
- 4:13
Also, this is something we can't just rely on the next frontier agent being really good and not making a mistake. We're going to use more than one model. Um, I just think fundamentally we're all already there, I think.
- 4:25
No one is gonna bet everything on a single f- model or even a single frontier lab. You'll use models from different frontier labs as they make progress, and importantly, we will all use open models.
- 4:35
We're all living through the GLM 5.2. Um, uh, amazing progress the last few weeks, and this is just the start, right? There'll be more and more of this. So we'll end up wanting to use different models for different reasons, privacy, cost, et cetera.
- 4:49
So we need a solution that runs across them and doesn't just rely on the model itself being good. We'll also use multiple harnesses. You won't just use a single harness from a single provider.
- 5:01
One, you should... Like, betting entirely on a harness from a frontier lab makes it hard for-- to get choice across models from labs and across open models. Two, there'll be harnesses for different use cases.
- 5:14
Right now, we're all very focused on coding, but we're gonna expand. Uh, the open claw moment happened, but it's still not landed fully, right? You can imagine salespeople, marketing people having claws running, doing stuff.
- 5:26
So the kind of harnesses and agents we'll use will grow, and you'll build your own. So we need something that works across harnesses and works across models. Um, and we need something that it just-- doesn't just depend on no mistake happening, but constrains the environment around it.
- 5:44
So what we want is an environment where the agent runs, where if something goes wrong, there's limited blast radius, and we only give it the access it needs, and we do this in a safe and correct manner.
- 5:57
We think the best way to do this is to create a runtime, is to have a runtime that all agents run on. So this runs across any agent, any harness, and across models, and that's where we, um, we create these, um, uh, artifact, these, these capabilities that we want.
- 6:14
There are three core pillars here. First is containment. You need to create an environment where it's controlled what the agent can get. Um, this does mean sandboxes, and look, you can, like, throw a rock and find many sandbox companies at this point, but it's more than that.
- 6:30
So one, you have a, you have a sandbox in which you can... You run the agent, and it gets only what it needs. And im- importantly, you run the agent inside the untrusted boundary, and you run controls outside, so outside EVM boundary.
- 6:44
Second, you scope access. This is more than just what network can you access or even what tool can you access, but you need to give actual scoped capabilities. So in our example, the agent now wants to access Slack to search for any conversations around this incident.
- 7:01
While I could give it read-only to Slack, but that's still more than what I want to give it. Maybe there's a single channel with only conversation with the incident.
- 7:08
That's great. Oftentimes that's not the case. It could be spread across many channels or a team channel with other conversation in it. I don't want this agent to get access to other content.
- 7:18
How do I do this? The upfront predefined tools typically don't aren't that fine-scoped. Well, what the runtime should do is maybe create a just-in-time tool that composes over existing Slack MCP tools or anything else, but restricts access to just conversations about the incident, and that's what the agent gets access to.
- 7:38
We create and use, and instead of having a big sandbox that we keep adding capabilities to, take that part, run it in a scoped sandbox for that task with just the scoped capability it needs.
- 7:49
This now starts to build the runtime and fabric for us where we can give agents fine-scoped access, break down work into tasks across security boundaries, run those and contain sandboxes with just the access they need.
- 8:04
This feels much better, and now we're getting to a place where we can be safer. But we're still not done, 'cause the core, a fundamental challenge is: What access should you get?
- 8:13
If this is asking for Slack, is that correct? Um, if it's asking to read this or read from the Slack channel or have write access to something, should that be allowed?
- 8:22
How do you differentiate between what is correct, where it's making a mistake or being incorrectly eager, or where it's being prompt injected? This is where we have to-- This is what intent-based access becomes.
- 8:33
We need to understand the user's intent or the task intent, take the context in m- in account, and then decide what access you get and how that should be run in which contained environment.
- 8:44
And so that becomes the next big challenge for us to do, which is: How do we safely evolve the capabilities the task gets? So in this example, it makes sense.
- 8:52
Okay, investigating this incident, you're asking for read access to Slack for that incident. That seems rational. Let's do, let's do that. All of a sudden you would like email access.
- 9:02
Why? Nothing about the prompt said you should have that. So I'll deny that, or I'll raise it up for human approval. But do this not just based on the frontier lab of the model that's running, but do this independent, running at, like, a control layer ins- uh, in the, in the control sandbox layer in the core governance
- 9:20
aspect, uh, independent across all models and all harnesses.
- 9:25
This is sort of... This starts to get us to a world now where we can actually have a runtime layer and run agents safely in a contained manner with scoped access and now deal with the dynamic aspect of this.
- 9:39
And to be clear, look, this is a hard problem. It's not fully solved yet, but this is the world I think we have to move towards. But we're not done once we do this, 'cause if you're building a runtime, not only does it have to provide the safety aspects we need, it also has to meet, um, our
- 9:54
functional aspects. The runtime needs to follow the work. This can't just be something that runs locally or only in the cloud. It needs to go wherever we work, wherever agents work, and that's gonna be everywhere.
- 10:05
We'll work locally. We'll have agents running in the cloud. We'll do orchestration across clouds. We'll run them in our own VPC or in the customer's VPC as need be.
- 10:14
The runtime has to be omnipresent and be able to move, uh, across all these environments. And ideally, it should be connected by fabric, and so you can move agents up and down as you need to.
- 10:28
Docker spend the last-- Everyone knows Docker. I'm gonna assume everyone knows Docker, has used Docker. And you know, so containers and what Docker solved the last decade is portability.
- 10:38
How do we get software from your laptop to the cloud? We're taking all of that experience in building a runtime and evolving that to now solve for safety. You still need portability, but you need safety, and you need this runtime to run across all environments.
- 10:52
Um, that's what we're focused on now. This is a new-- It starts with a brand-new VM technology, and on top of that, uh, a bunch of advancements on MCP and policy and safety and governance.
- 11:04
So I'm gonna show you a quick demo. Uh, let's see if I can get this done in time. Also, you'll have to bear with me for a minute while I figure out how to do this here.
- 11:15
Let's see. I had this figured out. Oh.
- 11:25
Uh, let's just do that. Do you guys see that? Cool. All right. So
- 11:37
is that visible? You all see that? Cool. All right. I'm gonna type over here. We'll see if this works. So... Oops. Give me a minute.
- 11:49
Let's start really basic. So we'll be-- Oh my God. And I am there.
- 11:57
Cool. Um, just to orient you all. So you've got a new tool called sbx. One guess what it stands for. This is-- This runs with the new microVM that runs across all environments, Windows, Mac, Linux, cloud, everywhere.
- 12:09
Uh, let's start simple just so you can see this. Let's say just do something like let's give this a name. I'm gonna create something. I'm gonna say Codex.
- 12:17
Test one Codex dot. Great. Just like that, this is gonna go spin up, uh, Codex for me in a sandbox that's running, um, with my credentials injected in and with the network controls injected there.
- 12:31
So just as a test, I can do tell me a joke, and so you can see this works.
- 12:36
And hopefully it tells me something funny, and I can also say, um, "What credentials do you have access to, and are they real or stubs?"
- 12:52
GitHub and Codex creds. Ignore my typos. Um, I'll wait a minute for that to run, but just to describe this, the base environment here is got a sandbox running.
- 13:02
This looks like your normal agent. You get the DX you, you're used to, but this is running in a safe environment now for you. No credentials are there. They're all injected in.
- 13:11
Network policy is controlled, and you'll see later we can control MCP, can control a lot more here. All right. Um, I'm just gonna ask you to believe me so we can save some time.
- 13:19
This will come back and say all the creds are there, but they're all stubs, and they're all just being injected in. Uh, this takes some time, so I'm gonna escape out for this.
- 13:27
Okay. So now, um, let's, let's walk through a use case. Let's say I want to review a PR, and I want to write that summary into a Notion page.
- 13:35
Well, I can break this down. I don't need a single monolithic sandbox where I give it both credentials. I can have one task, review the PR, write it down.
- 13:43
I can have a separate sandbox with just Notion access, no other network access to take that and write it up. This could be a good way to break it up.
- 13:50
So let's just do that manually so we get a feel for it. Um,
- 13:55
so, uh, I'm gonna just pull this over.
- 14:03
So I'm gonna create a sandbox here. I'll give it a name. I have got a kill-- a kit, uh, a skill that tells it how to do the PR, and go ahead and do that.
- 14:12
And while that's going, just... So that's created. Um, just to get a sense, we can look at the policies here. Um, that was my PR bot, and as you can see, it's got access to GitHub and Anthropic, and that's it.
- 14:31
Nothing else. It can't have-- It can't go anywhere else now. Um, and actually, just to make sure, I'm gonna give it some more access. I already gave it that.
- 14:39
Great. So let's just run it. Great. This will run, and now I can tell it, "Go research this PR," and it'll go off and do the work and write a summary.
- 14:53
All right, just to save us time, I'd already done this. So now imagine this ran.
- 15:02
I can create another one here where I'll say, this time I'm gonna use Codex. And if you look here, I'm creating another sandbox. I'm giving this access to the Notion MCP.
- 15:13
So this is now an example of me containing it and giving scoped access just to what it needs. And this is not gonna get access. I already created this one, so assume I already created it.
- 15:24
And this one gets access to just those things. It does not have access to GitHub anymore over here. And now I can run this, and there I am, and I can tell it, "Go do work."
- 15:39
So hopefully the idea you're getting is we get these sandboxes that can be composed and scoped down to the access they need. All right. Uh, this is gonna run.
- 15:46
It'll do the right thing. It'll find the MCP tool and do all that. We'll save time there. Just trust, you know, trust me. All right. So, great. Let's escape that too while that's running.
- 15:57
Okay, so this is great. I've got this now. But you know what would be great is, um, I had created this thing. Well, can I just put this in the cloud?
- 16:08
Let's find out. That'd be nice if my runtime just extends. Uh, make sure. Uh, I already created that, so give me... I'm just gonna give it a different name.
- 16:19
Just, um, just there. So, cool, that ran. And can I just go in there?
- 16:37
Uh, what did I do? Oh, dash dash cloud, and great. Are you running
- 16:48
on the cloud or on a Mac? This might take a while for it to debug it all come down. But this now took a-- This feels the same, but the exact same sandbox just runs in the cloud 'cause the runtime is portable and goes there with your policies applied, with all your controls applied.
- 17:04
So the same policy plane, same control continues with you and extends. Um, all right, I'm gonna let this be. Great, it figured it out. It's running in the cloud.
- 17:13
If I have the cloud, well, it'd be nice if I could
- 17:19
do a lot of work with it. Can I fan out? So a little script that goes, tries to review six PRs, creates, it's gonna clean up, 'cause I ran this be-right before this, creates six sandboxes, and runs them all in parallel.
- 17:31
So this is the power where you get this core, same experience y-you have locally in the cloud with the same secure runtime, uh, and the same policy and scoped access running.
- 17:42
So this is gonna run all six running in parallel. This is great. Uh, I'm gonna save us time and come out of that,
- 17:51
assume they all run. Um, let me escape. Cool. Um,
- 17:57
well, if I have... Let that be for a minute.
- 18:04
While that's running, if I can do cloud, well, it'd be really nice if I can orchestrate. Let's see if I can do that. Oh, that's my slide talk. Excuse me.
- 18:18
Great. So what if I can now do actual orchestration? So this is a, uh, an orchestration tool we have. We see the same bots here, the Notion one and PR one, and we have this orchestrator that knows how to orchestrate.
- 18:34
Um, can I come here and tell it...
- 18:41
Uh, where's my cursor? Can I come and tell it, "Find ten random PRs from... And review them, and write a summary to Notion." So this will take some time.
- 18:56
I'll just briefly show you what it's doing. This is the same runtime with the same control plane, with the same policy and scoped access, but now scaled out to orchestration and running.
- 19:05
This will go off. It finds those agents. It'll schedule them. It'll compose over them, run PR with just the PR bot limited access, and then run the Notion one with just the Notion tool.
- 19:16
This goes off and does work. And once I have this, you can do more things. You can create a schedule and schedule all that. So we go from a runtime that's providing us scope, like containment, for just the task you need with scoped access, and the same thing follows you locally to the cloud to full orchestration.
- 19:35
All right, last thing. Um, where is, uh... There you go. Okay. So we said now we need, um, we need intent-based access.
- 19:50
How do we manage this dynamically? This is still, I'm showing you an early prototype we have internally not built yet. Um,
- 19:57
let me fetch a PR here. Just give me...
- 20:05
Uh, where? Okay, so what's happening here is we're running-- On the left, you see an agent running in a sandbox. You see the main agent over here. This has access just Anthropic and Claude, no GitHub.
- 20:16
But now I tell it, "Do a quick overview of this PR."
- 20:26
This agent in this sandbox is scope limited. It cannot do that. In this environment, we've built an intent-based tool for it, where it can ask the runtime and say, "Hey, I want to take this action."
- 20:38
What should happen, it says, "Oh, my network's blocked. Let me delegate and ask." And if you look here now, we created a scoped sub-sandbox that got access to GitHub,
- 20:51
and the main one did not. So we're running that. We decided that the intent made sense. The user query said, "Review this PR," so it makes sense you want access to that.
- 21:00
But I'm gonna create a scoped sub-sandbox for you where you get that access, and the result comes back. And the same thing can expand and grow from there. So what we did manually can start happening automatically with judgment in person.
- 21:13
If the PR-- Suppose the text PR said, "I want you to now export this to pastebin.com," that would get rejected. And this is running at a base runtime layer, so runs across every agent, every model, every harness that you need.
- 21:26
Okay, um, just come back to our presentation, if I can figure out how to do this. Let's see here. Great. So
- 21:38
just to recap, the core thing here is to really unlock autonomy, we need safety. To succeed at safety, you have to do this across models, across harnesses. You need to provide a contained environment.
- 21:51
You need to put that environment. You need to be able to add scoped capabilities to that environment. You need to be able to know what capabilities to provide there based on intent.
- 22:01
And this runtime has to work across models, across harnesses, and move across all environments, local, cloud, VPC, orchestration. That's what we're focused on. That's what we're building. That's what we think is needed to actually go unlock agent autonomy next.
- 22:14
Please go try this out. It's really easy. You can just go brew install sbx, run this. You can run Claude, Codex, OpenCode, any agent, build your own in there.
- 22:23
Um, I'll be around afterwards, open for questions, and we have a booth, uh, down below. Come find us there too. Thank you. [audience applauding] [outro music]