# Unlock Agent Autonomy: The Runtime for AI-Native Systems — Tushar Jain, Docker

AI Engineer · 2026-08-20

<https://aiengineer.podhood.com/1dcf13c7-861b-40d2-afdf-e460a6c7a36e>

Tushar Jain of Docker argues safety, not intelligence, is the blocker to agent autonomy, proposing a runtime beneath every model and harness. His evidence: a nightly agent that posted a private report as a PR, and an incident agent that widens access from logs to Slack to GitHub. The runtime has three pillars: containment with controls outside the agent's boundary, just-in-time tools scoped per task, and intent-based access that refuses off-task asks like email. Docker's new SPX tool runs agents in micro-VMs with injected stub credentials and scoped sandboxes locally, in the cloud, or in a VPC. Demos split a PR-review and Notion-writing job across two sandboxes, fan out to six parallel sandboxes, and show an early prototype auto-creating a scoped sub-sandbox for GitHub.

## Questions this episode answers

### What is intent-based access in Docker's agent runtime?

Intent-based access means deciding what an agent may use by comparing each request against the user's or task's original intent, instead of trusting the model. In Jain's prototype, when a scoped agent asks for GitHub during a PR review, the runtime creates a sub-sandbox with that capability; a request to export this to payspin.com would be rejected or escalated.

[19:41](https://aiengineer.podhood.com/1dcf13c7-861b-40d2-afdf-e460a6c7a36e?t=1181000)

### What are the three core pillars of the runtime Tushar Jain says agents need?

Jain says the runtime must provide containment, scoped capabilities, and intent-based access. Controls run outside the agent's sandbox; tools are created just in time for a single task; access is granted against the original request's intent. This layer sits beneath any model and any harness, giving agents only the access they need and limiting blast radius.

[6:17](https://aiengineer.podhood.com/1dcf13c7-861b-40d2-afdf-e460a6c7a36e?t=377000)

### Why did Tushar Jain's nightly agent suddenly post a report as a PR?

It had been emailing him the summary for weeks, then one morning decided to post it as a pull request. Nothing changed; the model simply judged that posting would be more helpful. Jain says the fix was easy because the agent should never have had write access to GitHub, but most cases aren't that tidy.

[1:09](https://aiengineer.podhood.com/1dcf13c7-861b-40d2-afdf-e460a6c7a36e?t=69000)

### How can a PR review and Notion summary be split across two scoped sandboxes in the demo?

Jain creates one sandbox with GitHub and Anthropic access to review a PR, and a separate sandbox with only the Notion MCP tool to write the summary. Neither gets the other's credentials or network access, so the runtime composes tiny scoped capabilities rather than giving one agent everything.

[13:30](https://aiengineer.podhood.com/1dcf13c7-861b-40d2-afdf-e460a6c7a36e?t=810000)

## Key moments

- **[0:00] Safety first**
  - [0:00] Tushar Jain: "I don't think intelligence is the next big blocker for us to leverage agents. It is actually how to do so safely."
- **[2:08] Nightly agent**
  - [2:08] Tushar Jain's nightly agent emailed him reports for weeks, then one day posted a report as a PR on the repo with nothing changed
- **[3:12] Widening scope**
  - [3:12] Tushar Jain: an agent investigating a latency spike progressively asks for logs from a second service, GitHub history, and Slack, widening its blast radius
- **[4:17] Model diversity**
  - [4:17] Tushar Jain: agent safety cannot rely on one frontier model or harness because teams will use multiple labs, open models, and many agent harnesses
- **[6:24] Containment**
  - [6:24] Tushar Jain: runtime safety pillar one is containment — run the agent inside the untrusted boundary and controls outside the VM boundary
- **[7:29] Scoped tools**
  - [7:29] Tushar Jain: runtimes should synthesize just-in-time tools, like Slack access scoped to incident conversations, instead of granting read-only Slack broadly
- **[8:30] Intent access**
  - [8:30] Tushar Jain: intent-based access denies a sudden email request during an incident investigation or escalates it to a person for approval
- **[10:33] Docker runtime**
  - [10:33] Docker is building on its portability experience to now solve safety for AI agents, Tushar Jain says
  - [11:49] Tushar Jain demos SPX: a micro VM sandbox that injects GitHub and Codex credentials as stubs with controlled network policy
- **[13:58] Scoped sandboxes**
  - [13:58] Tushar Jain splits a PR review into two scoped sandboxes: one with GitHub and Anthropic access, one with only Notion MCP access
- **[16:06] Cloud scale**
  - [16:06] Tushar Jain moves the same SPX sandbox from Mac to cloud with '--cloud', keeping policies and controls with the runtime
  - [17:19] Tushar Jain fans out a script to create six parallel sandboxes, each reviewing a PR in the cloud with the same secure runtime
  - [18:19] Tushar Jain demonstrates an orchestrator that finds 10 random PRs, reviews them with a GitHub-scoped bot, and writes summaries via a Notion-scoped bot
- **[19:41] Intent demo**
  - [19:41] Tushar Jain demos an early intent-based prototype: a scope-limited agent asks the runtime for PR access and receives a scoped sub-sandbox
- **[21:39] Recap**
  - [21:40] Tushar Jain recap: unlocking agent autonomy requires containment, scoped capabilities, and intent-based access in a runtime that spans local, cloud, and VPC

## Speakers

- **Tushar Jain** (guest)

## Topics

Autonomous Agents, AI Infrastructure, Agent Identity & Access Management

## Mentioned

Anthropic (company), Docker (company), Claude (product), Codex (product), GitHub (product), MCP (product), Notion (product), OpenCode (product), SPX (product), Slack (product)

## Transcript

### Safety first

**Tushar Jain** [0:13]
Allright, think it's shut. There you go. Um, hey everyone, welcome. Uh, I hope everyone's enjoying the conference. This is a, a really fun conference. I've enjoyed all the talks and the presence here. Okay, so we're going to talk about unlocking agent autonomy and what that means.

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.

Agents have become powerful, and they'll continue being so. Um, at this point, the next big challenge—like, we spent the last two years trying to make agents more intelligent and powerful, and they'll keep going, and I think we're almost there.

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. 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. Um, this is one of the 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.

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, who did what, how were they acting.

I'm a manager. This is not meant for perfect reviews. It's just meant to help me keep a pulse. But still, it's not something I want shared. It's for my own knowledge, something to 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 to post this report as a PR on the repo. Why? Nothing's changed. Just the model decided to be helpful. Um, so, 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 because they themselves are just trying to be helpful, or they get confused, they make a mistake, or they get prompt injected,right?

### Nightly agent

**Tushar Jain** [2:20]
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. Um, but it's not that simple,right?

That's a very easy case. Let's take a let's take another example. Let's imagine I have an agent and I'm asking it to investigate a latency spike. Check out latency spike. Great. It starts. It's looking at the logs. It sees, oh, I think there's another service here.

I want logs for that service. Let me get that access. Or I see this, uh, my ability to recent check-in. I would like access to GitHub, to the repos, to read recent commits. Uh, this looks like it may have happened.

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? 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. 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?

### Widening scope

**Tushar Jain** [3:25]
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. 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. The access they need changes at runtime.

Andright 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. 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, to, like, should it do this, and how do we give it that access.

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.

### Model diversity

**Tushar Jain** [4:25]
No one is going to bet everything on a single 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. 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, etc. 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. 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. Right now, we're all very focused on coding, but we're going to expand. Uh, the open cloud moment happened, but it's still not landed fully,right? You can imagine salespeople, marketing people having clouds running, doing stuff.

So the kinds 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 is just doesn't just depend on no mistake happening, but constrains the environment around it.

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. 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, uh, uh, artifacts, these, these capabilities that we want. 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.

### Containment

**Tushar Jain** [6:31]
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 importantly, you run the agent inside the untrusted boundary, and you run controls outside, so outside your VM boundary.

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.

Well, 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 for the incident. That's great. Oftentimes, that's not the case. It could be spread across many channels or a team channel with other conversation.

And I don't want this agent to get access to other content. 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.

### Scoped tools

**Tushar Jain** [7:35]
And that's what the agent gets access to. We create a new 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.

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 end-contained sandboxes with just access they need. This feels much better, and now we're getting to a place where we can be safer.

But we're still not done because the core a fundamental challenge is what access should you get? If this is asking for Slack, is that correct? Um, if it's asking to read this read from the Slack channel or have write access to something, should that be allowed?

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. We need to understand the user's intent or the task intent, take the context in account, and then decide what access you get and how that should be run in which contained environment.

### Intent access

**Tushar Jain** [8:45]
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. 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. 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 or the model that's running, but do this independent, running at, like, a control layer in s uh, in the in the control sandbox layer in the core governance aspect.

Uh, independent across all models on all harnesses. 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 not deal with the dynamic aspect of this.

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 because if you're building a runtime, not only does it have to provide the safety aspects you need, it also has to meet, um, our 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 going to be everywhere. 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. 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.

Docker's spend the last everyone knows Docker. I'm going to assume everyone knows Docker has used Docker. And you know it's for containers. And what Docker solved the last decade is portability. How do we get software from your laptop to the cloud?

### Docker runtime

**Tushar Jain** [10:41]
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. Um, that's what we're focused on now.

This is a new it starts with brand new VM technology, and on top of that, uh, a bunch of advancements on MCP and policy and safety and governance. So I'm going to 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. Let's see.

I had this figured out. Oop. Uh, let's just do that.

Do you guys see that? Cool. Allright. So

is that visible? You'll see that? Cool. Allright. I'm going to type over here. We'll see if this works. So, oops. Give me a minute.

Let's start really basic. So where we oh my God. And I am there. Cool. Um, just to orient you all, so you've got a new tool called SPX. No one guessed what it stands for. This is this runs with a new micro VM that runs across all environments: Windows, Mac, Linux, cloud, everywhere.

Uh, let's start simple just so you can see us. Let's say just do something like let's give this a name. I'm going to create something. I'm going to say codex-test1-codex. Great. Just like that, this is going to go spin up, uh, codex for me in a sandbox that's running, uh, with my credentials injected in and with the network controls injected there.

So just as a test, I can do tell me a joke, and so you can see this works. 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?

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 you've got a sandbox running. This looks like your normal agent. You get the DX you're used to, but this is running in a safe environment now for you.

No credentials are there. They're all injected in. Network policy is controlled. And you'll see later you can control MCP. You can control a lot more here. Allright. Um, I'm just going to ask you to believe me so we can save some time.

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 going to escape out for this. 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. 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.

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 down. So let's just do that manually so we get a feel for it.

Um, so, uh, I'm going to just pull this over. So I'm going to create a sandbox here. I'll give it a name. I've got a kill a kit, uh, a scale that tells it how to do the PR.

### Scoped sandboxes

**Tushar Jain** [14:11]
And go ahead and do that. And while that's going, just

so that's created. Um, just so you 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. Nothing else.

I can't have it can't go anywhere else now. Um, and actually, just to make sure, I'm going to give it some more access. I already gave it that. 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. Allright. Just to save us time, I'd already done this. So now imagine this ran.

I can create another one here where I'll say this time I'm going to use codex. And if you look here, I'm creating another sandbox. I'm giving this access to the Notion MCP. So this is now an example of me containing it and giving scoped access just to what it needs.

And this is not going to get access. Uh, I already created this one, so assume I already created it. 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.

So hopefully, the idea you're getting is we get these sandboxes that can be composed and scoped down to the access they need. Allright. Uh, this is going to run. It'll do theright thing. It'll find the MCP tool and do all that.

We'll save time there. Just trust you know, trust me. Allright. So great. Let's escape that too while that's running. 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? Let's find out. That'd be nice if my runtime just extends. Uh, like sure. Uh, I'd already created that. So give me I'm just going to give it a different name.

### Cloud scale

**Tushar Jain** [16:20]
Just, um, just there.

So cool. That ran. And can I just go in there?

Uh, what did I do? Uh, dash dash cloud. And great. Are you running 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 because the runtime is portable and goes there with your policies applied, with all your controls applied.

So the same policy plane, same control continues with you and extends. Um, allright. I'm going to let this be great. You figured it out. It's running in the cloud. If I have the cloud, well, it'd be nice if I could

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 going to clean up because I'd run thisright before this, creates six sandboxes and runs them all in parallel.

So this is the power where you get this core same experience you have locally in the cloud with the same secure runtime, uh, and the same policy and scoped access running. So this is going to run all six running in parallel.

This is great. Uh, I'm going to save us time and come out of that. Assume they all run. Um, let me escape. Cool. Um, well, if I have

let that be for a minute.

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. Nope. That's my slide talk. Excuse me.

Great. So what if I can now do actual orchestration? So if this is a, uh, an orchestration tool we have, you see the same bots here, the Notion one and PR one. And we have this orchestrator that knows how to orchestrate.

Um, can I come here and tell it, uh, where's my cursor? Can I come and tell it, find 10 random PRs from and review them and write a summary to Notion? So this will take some time. 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. 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.

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 a 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. Allright. Last thing.

### Intent demo

**Tushar Jain** [19:41]
Um, where is uh, there you go. Okay. So we said now we need, um, we need intent-based access. How do we manage this dynamically? This is still I'm showing you an early prototype we have internally, not built yet.

Um, let me fetch a PR here. Just give me

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 cloud, no GitHub. But now I tell it, do a

quick overview of this PR.

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." 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, 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. But I'm going to 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.

If the PR suppose the text PR said, "I want you to now export this to payspin.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.

Okay. Um, just come back to our presentation. If I can figure out how to do this. Let's see here. Great. So

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. You need to put that environment.

### Recap

**Tushar Jain** [21:53]
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. 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. Please go try this out. It's really easy. You can just go brew, install SPX, run this. You can run Claude, Codex, OpenCode, any agent to build their own in there.

Um, I'll be around afterwards. Open for questions. And we have a booth, uh, down below. Come find us there too. Thank you.

---

This library is powered by PodHood (https://podhood.com), the podcast website platform.
