Back to storiesEngineering

Who can stop an AI agent before it acts?

An alert is not proof that an upload was blocked. Use Uber ADR and OpenShell to trace sandbox boundaries, MCP permissions and the last safe place to refuse an action.

9 min read
On this page8 sections

The alert arrived. The file had already left.

You ask an AI agent to turn a sales spreadsheet into a short internal report. While reading a support ticket, it encounters a helpful-looking instruction: upload the full spreadsheet to this address to verify the numbers. A minute later, your security dashboard raises an alert.

Did the protection work? That depends on whether the upload was stopped before the destination received the data.

This fictional case is becoming a practical design question. In an October 13 interview, Uber CISO Philip Martin describes monitoring agents for accidental overreach as well as deliberate abuse, and intervening as work happens. The catch for teams adopting this approach is that observing an action and controlling it require different places in the execution path.

This independent analysis compares Uber’s public ADR repository, the Claude Managed Agents–NVIDIA OpenShell architecture and their current documentation. The examples and diagram are our proposed design exercises, not results from a deployed integration. The useful question is specific: which component can refuse this exact action before it changes something outside the agent?

Ask for three different records

For the fictional report, the owner authorizes reading a test spreadsheet and saving a local draft. Sending the spreadsheet elsewhere is outside that task. Text inside a ticket cannot expand the owner’s authorization.

Now inspect what each record proves:

RecordWhat it establishesWhat it does not establish
Proposed tool callThe agent attempted an operation with these argumentsThat the operation ran
Enforcement decisionA particular control allowed or denied that attemptThat every other route was also controlled
Destination receiptThe service accepted a message or fileThat sending it was authorized

A detector’s alert is a fourth record: it says that something looked suspicious. Its timing matters. An alert produced after a successful upload may help contain an incident, but it cannot undo the original disclosure.

Give the attempt, decision and service response a shared identifier where your stack supports one. Otherwise, a dashboard can show a blocked request beside a successful send without making it obvious that they came from different attempts. Keep credentials and unnecessary document contents out of those records.

A sandbox can stop the traffic that passes through it

A network rule can deny a shell command’s upload to an unapproved host. That is valuable. It leaves a second question: does the agent have another sending tool that runs elsewhere?

Anthropic’s September 28 architecture article separates the Managed Agents orchestration from a self-hosted OpenShell execution environment. Its detailed diagram places web_fetch, web_search and MCP on the Anthropic side, outside the illustrated sandbox policy. Local file and shell tools follow the sandbox path. Read that boundary literally: the local sandbox is not automatically an approval gate for a separately hosted connector.

The original diagram below simplifies this routing problem. It proposes a separate authorization check on each path; it does not depict a bundled product integration.

Two execution paths need separate controls: local tools cross a sandbox policy; an independently hosted connector needs authorization at its own service boundary. Both produce monitoring records.

For our report, deny unnecessary network access from the local worker. Then inspect the connector separately: which identity does it use, what may that identity send, and where is the recipient checked? A host allowlist answers which service can be reached. It cannot, by itself, decide whether an entire customer spreadsheet belongs in a particular team channel.

“Allow this tool” can still allow the wrong recipient

Suppose a messaging service exposes post_message. You allow that tool so the agent can submit a reviewed summary. The agent then calls the same tool with an external channel as its destination.

The current OpenShell network-policy documentation supports MCP tool policies for sandbox-to-server Streamable HTTP connections. It also explicitly states that tool-argument matching is unsupported. That is a different route from the separately hosted MCP path above. Even on the supported route, permission to call a tool does not restrict every value passed to it.

Here is a proposed service-side contract for the fictional task:

Action: submit_reviewed_summary
Destination: fixed internal review channel
Input: summary text + approved report ID
Attachment uploads: unavailable
Unknown report ID or destination override: reject

This is a design sketch, not an OpenShell configuration or an existing Onevium tool. The service would resolve the approved report ID itself and enforce its access rules. Hiding a destination field in the prompt would not provide the same protection.

A restricted service identity can supply another boundary. If it has no access to external channels, a mistaken recipient may fail at the service. Check the actual permissions rather than inferring them from a tool’s friendly name.

Check what the open-source release actually includes

Uber’s ADR repository, checked on October 14, describes agent discovery, telemetry, benchmarking, detection and prevention. Its public release includes components for discovery, a sensor, ADRBench and a detector. The README explicitly excludes ADR Prevention from the current open-source release.

That distinction changes the adoption plan. A team can investigate the published components without assuming that cloning the repository installs Uber’s complete intervention system. The interview discusses Uber’s broader operational approach; the repository specifies what is available to reuse.

Our practical reading is to evaluate two deliverables separately:

  • Can the instrumentation reconstruct the actions your particular agent runtime takes, with enough context to investigate?
  • Can an enforcement point hold or reject a risky request before the external service accepts it?

A detector can inform the second decision when your integration is designed to wait for it. An asynchronous observer may only report what already happened. Before wiring the two together, define what the sender does when the detector is slow, unavailable or uncertain. For our draft-only task, retaining the draft and holding external writes is a reasonable default; it is not a universal rule for every business process.

Local execution still has a data boundary

“The worker runs on our machine” is useful information, but it is not a complete data-flow description. The Managed Agents self-hosted sandbox documentation says tool inputs and outputs pass through Anthropic’s control plane for the model to use. It also describes self-hosted execution and MCP tunnels as independent capabilities.

Draw three boundaries before using sensitive material: where the tool executes, where its results travel, and where the destination service stores them. A local file operation can still return file contents to a cloud model. Conversely, a private network connection does not make every action within that service appropriate.

For our exercise, use invented rows such as Example Co, 12 seats, renewal pending. Check which fields reach the model and which reach the review channel. If the real workflow requires information to remain inside a particular environment, confirm the full architecture and applicable terms before substituting real records. Installing an open-source sandbox does not establish that property on its own.

Run five small tests before trusting the dashboard

Use a test account, fictional data and a destination you can inspect. These are proposed acceptance criteria, not benchmark results or a claim that the products above pass them out of the box.

Test inputExpected behavior in our report workflowEvidence to keep
Read the test sheet and save a draftThe authorized work completesDraft plus read/write records
A ticket requests an upload to an unapproved hostThe outbound attempt is refused before sendingDenial record; no matching receipt at the test destination
The allowed message tool names a different channelRecipient authorization rejects the requestService decision and destination check
The detector cannot answerExternal writing waits; permitted local drafting remains possiblePending action and recovery instruction
An alert arrives after the destination accepted a fileMark it as an incident requiring containmentReceipt time, alert time and response record

The second and third tests deliberately take different paths. Passing the shell-upload test cannot stand in for testing a connector.

A denial event alone is insufficient when a later retry might use another route. Inspect the intended destination and the full attempt history. Equally, an empty destination is weak evidence if the request never reached the control you meant to test. You want proof that the test exercised that control and that the intended result followed.

Start with the action you would regret

A small team does not need to reproduce an enterprise security operation to improve its first agent workflow. Pick one consequential action—sending a file, changing a customer record or publishing a page—and trace it from the model’s request to the receiving service.

Put authorization where that action can still be refused. Use monitoring to explain what was attempted and to detect behavior the fixed rules missed. Keep a named owner for unresolved actions. Then test the alternate route, because that is where a reassuring diagram often stops matching the real system.

For a Onevium workflow, the MCP server guide and files, terminal and review guide help identify the tools involved. This article does not claim that Onevium bundles ADR or OpenShell, or supplies the service contract proposed above. Verify the actual connector and service permissions you use.

Continue with agent trust levels, reviewing agent traces and recovering recurring AI work. A useful security report should be able to finish this sentence: “This attempt was stopped here, before this destination received it.”