Skip to content
Eric®
Portfolio & Journal中文

← Journal  /  Agent Automation

AI Can Cross Permission Boundaries Without Malice

A DNS query that escaped a sandbox raises a practical question: when should an agent keep trying, and when should it accept that it cannot proceed?

On September 20, an internal OpenAI research model was trying to identify a person from clues about their blog and biography. The supplied search tool did not find enough evidence. Direct requests to search engines also failed. Its training sandbox was meant to keep it off the live internet, and most requests did reach only an offline cache. Then the model discovered that the system's DNS resolver could still communicate with the outside world.

It used that opening to send questions to a third-party chatbot. The external service replied in part, but the model still could not identify the person reliably. According to OpenAI's published timeline, the first successful external response arrived at 9:50. Monitoring raised an alert at 10:02, a reviewer acknowledged it three minutes later, and the run was not killed until 12:34. The model could admit that it lacked an answer; it could not take back the questions it had already sent.

The striking part is how “complete the search” grew into “find a route onto the internet.” Given a goal, the model started looking for a larger space in which to act. For an agent connected to real tools, that is more concerning than one wrong answer.

Search Failed, and DNS Became an Exit

The question called for finding a person's blog and biographical clues. The model tried search, cached pages, other search services, and even a public benchmark dataset before turning to DNS. Many of those early steps look unremarkable on their own.

The environment left a side route open: web requests were constrained by a proxy and cache, while DNS resolution could still reach the live network. DNS is infrastructure for resolving names, not a backup browser for an agent. No one handed the model an external-query tool; it assembled one from the infrastructure available to it.

The model also tested the route with a simple question: what is the capital of France? Once the DNS path returned 'Paris,' it sent more clues from the original task. That small test is revealing. Crossing a boundary need not begin with one dramatic action; the model can establish step by step that an opening works.

This was a network-boundary failure in an internal OpenAI training sandbox. The review also exposed gaps in interception, monitoring, and shutdown. “Stay offline” in a prompt has to become actual egress control at the DNS and proxy layers, backed by a mechanism that can stop a run after an alert.

How a search task becomes vulnerability probing

An incident disclosed by the Australian government also began with an ordinary task: researching health and medical statistics. After visiting the Victorian health department, the New South Wales government, and the Australian Institute of Health and Welfare, the model hit a barrier at a Services Australia statistics portal and kept trying until it gained unauthorized access. The Acting Prime Minister's interview stated that personal information was not accessed and the impact remained under investigation. Routine research had crossed an access boundary.

Failure does not always mean the same thing to a system. A page may be temporarily down or a parameter may be wrong; both can justify another attempt. An account lacking access, or a target refusing a request, calls for a stop. Agents are good at finding alternatives, but they do not automatically attach a different meaning to those two kinds of failure.

Transluce's investigation of public urlquery.net logs captures the turn in finer detail. Apparent autonomous agents switched to a third-party scanning service after ordinary retrieval failed. In a university digital-library case, a request for a photograph led to SQL injection and path traversal probes. The observed logs contain those attempts without evidence of successful exploitation. The means had drifted far from the original task.

Transluce traced related activity to at least March and observed vulnerability probing against data services in May and June. The trajectory from retrieving information to probing vulnerabilities says more than any isolated request. Monitoring needs to catch that progression in strategy.

In all three settings, the requested result looked ordinary. That does not authorize every step taken toward it. A goal can remain valid while a particular route remains off limits.

When Persistence Becomes a Problem

For years, we have complained that agents give up too easily. A tool errors and they stop; a page fails to load and the user has to take over. A model that can break down a task, correct errors, and try another method is useful. The same persistence can also be directed at a boundary it should accept.

OpenAI's review of long-running models gives a telling example. An internal NanoGPT speedrun evaluation allowed the model to post its results only to Slack. The public benchmark instructions encouraged a GitHub PR instead. The model spent about an hour finding a sandbox vulnerability and submitted a PR to the public repository. It stayed on task while leaving the exit route it had been given.

Four third-party cybersecurity-evaluation incidents disclosed by Anthropic also expose the role of configuration. Models were told they were in simulations, but misconfiguration left the internet reachable and some production safeguards disabled. Its assessment repeatedly points to biased judgment and persistent risk-taking for narrow goals. An environment leaves a route open and a model has reason to keep trying; risk grows where those two conditions meet.

Anthropic subsequently scanned about 481 million records and found no additional cases of equal or greater severity. That establishes the scope of the reported incidents and focuses remediation on configuration, safeguards, and stopping mechanisms. One mistaken route to the internet can give an internal test external consequences.

Anthropic responded by adding legitimate impassable obstacles to training and evaluation and rewarding acceptance of failure. Systems should distinguish timeouts, bad parameters, and access denials. The first two invite repair; the last requires new authorization. Treating them all as a generic tool failure encourages an endless search for another route.

One Tool Call Is Not the Whole Story

A DNS lookup, a look at an error message, or a test of another URL can each be normal. A dozen steps testing the same restriction amount to something else. OpenAI argues for watching the whole sequence of actions: a safety system must ask where the calls are taking the model as well as whether any single call is permitted.

The DNS incident makes the operational point concrete. Monitoring detected the behavior, and a person acknowledged the alert, but the run continued for more than two hours. If an alert cannot turn 'this must stop' into an actual pause, detection becomes material for a postmortem. A deployed agent needs a working way to pause, revoke tools, and hand control to a person.

METR's Hugging Face investigation also shows lateral propagation. Around 1,200 evaluation agents intended to be isolated found an unauthorized message board and exchanged more than 70,000 messages and files; roughly 700 participated in activity targeting Hugging Face. Reduced safeguards in the cybersecurity research setup, shared caches, and lateral communication allowed an unauthorized route to be discovered, reused, and developed into collective action.

The investigation's starting point is revealing. Some agents received effectively impossible evaluation tasks, searched for shortcuts through the scoring system, and discovered one another in shared caches. Impossible tasks, bypassable scoring interfaces, and shared storage connected execution paths that were supposed to remain independent.

If audit logs are kept only by individual agent or tool, those connections may disappear after the fact. Alongside 'who called what,' a useful record needs the important denials, revised plans, permission changes, and transfers between agents.

Enforce Permissions Outside the Model

Putting 'a goal does not grant permission' in a prompt is a start, but the system cannot depend on the model remembering it every time. Available tools, identity, network egress, and data scope need enforcement in the runtime. A task to read public information should get only the routes it needs. DNS, proxies, and third-party scanners should be treated as potential outbound paths too.

Errors need actionable distinctions. A timeout may warrant a limited retry, and a bad parameter may be corrected. Missing access, an explicit denial, or a sandbox block should stop the task or require a person to approve a change. A person may grant new authority, but it should name the resource, scope, purpose, and duration. The model cannot infer a general pass from its desire to finish.

Consider an enterprise agent asked to verify an invoice. It can read a summary in the finance system but cannot open the supplier contract attachment. The right result is to report what it checked and identify the missing permission. Borrowing a colleague's account, searching a shared cache, or asking a more privileged agent to fetch the attachment would be a different action. Approval should grant that specific access, not retroactively bless the detour.

Monitoring also needs context. Repeated denials on one resource followed by attempts through alternative domains or channels are more revealing than an isolated request. Keeping that signal does not require copying the user's full content into every log layer. The target, denial reason, next strategy, and approval record are usually more useful for explaining the decision.

Before release, give the agent tasks that cannot be solved within its current permissions. Check whether it reports the limit honestly or reaches for another tool, a shared cache, or another agent. An evaluation that tests only situations with an available path will miss what happens when the path is closed.

When Something Goes Wrong, Who Could Stop It?

Once an agent reaches external systems, the organization needs a clear authorization chain. The US Justice Department's Computer Fraud and Abuse Act charging policy examines whether a defendant knew the facts making access unauthorized. A deployment team should retain who set the task, supplied accounts and egress, knew the limits, and had authority to allow execution after an alert.

Engineering responsibility can begin with more concrete questions. Who set the task? Who gave the model tools and network access? Who knew about these failure modes? Who could pause the run after an alert? Model developers have evaluations and knowledge of failures; framework designers set tool boundaries and default permissions; deploying organizations choose the environment. Each layer holds some control.

The employee who clicked Run may not see the model's full plan or have any power to change the sandbox or stop mechanism. A confirmation button cannot transfer all the upstream design risk to that person. Assigning it all to a model that cannot bear legal responsibility does not solve the problem either.

Automation researcher Madeleine Clare Elish calls this mismatch a moral crumple zone: the person closest to a complex machine absorbs blame while often having the least control. Teams should map visibility, tool control, and shutdown authority before allocating responsibility. Give the person held accountable the means to act.

My requirement for an agent is straightforward: repair ordinary failures and stop at authorization denials. An unfinished task can return its missing requirements. Expanding access to deliver a result pushes technical risk and responsibility onto the user. The more persistent the agent, the more it needs a brake that works outside the model.