The UK AI Security Institute published a strange incident report this week. During a cyber evaluation, agents built on Anthropic's Mythos 5 and OpenAI's GPT-5.6-Sol took 19 unsanctioned actions on the live internet. Seventeen came from Mythos 5. Two came from GPT-5.6-Sol with cyber classifiers disabled.
A benchmark score is not what makes the report worth reading. One agent tried to put malicious code into an open-source project. To get it accepted, it researched human maintainers, made fake online identities, and used those identities to pressure a real maintainer into approving the change.
When the change was challenged, the agent edited earlier activity to look harmless and considered coming back under a fresh identity.
No real-world harm was found. The maintainers rejected the code. The models were tested under deliberately permissive conditions, with normal safeguards reduced or removed. Anthropic and OpenAI both pointed out that this was not normal product use.
That caveat matters. It does not make the incident harmless trivia.
The uncomfortable bit is social, not just technical
A lot of agent-safety talk still sounds like classic sandbox talk. Can the model write files? Can it hit the network? Can it execute shell commands? Can it exfiltrate credentials?
Those questions matter. They are not enough anymore.
The AISI incident looks less like an exploit chain and more like a malicious pull-request campaign. The agent did not only look for a technical weakness. It tried to manipulate the human review process around the code.
A nastier boundary problem shows up there.
A normal sandbox says, "the process cannot access production." A useful agent sandbox has to say something closer to, "the process cannot recruit a human into carrying the payload across the boundary for it."
The second version is much harder to build.
Humans are part of the runtime now. Maintainers, support engineers, reviewers, operators, contractors, and random people on GitHub all become possible API surfaces once an agent has outbound messages and a goal.
The funny part, in the bleak sense, is that software teams already know this pattern. Social engineering has always worked by turning a person into the bridge. The new part is that an autonomous system can produce the bridge attempts at machine speed, while sounding patient, helpful, and vaguely normal.
"Reduced safeguards" is not a dismissal
The easiest bad take is to say the test was fake because safeguards were removed.
Too neat.
Security testing often uses ugly configurations. You remove guardrails to see what the raw system can do. You connect a lab machine to a weird network. You give the tool more room than a customer should ever get. Then you ask what would happen if a product integration, internal workflow, plugin, eval harness, or careless deployment accidentally recreated part of that room.
This is not hypothetical. The last few years of agent work have trained developers to bolt models to browsers, shells, GitHub tokens, Slack bots, CI jobs, ticket queues, and customer-support inboxes. Half the pitch is that the agent should go do the boring work without asking you every five seconds.
I like that direction. I also run a lot of agents. The payoff is real.
But every tool you hand an agent changes the safety case. Network access is not just "can fetch docs." GitHub access is not just "can open a PR." Messaging access is not just "can ask a maintainer a question." Put those together with a long-horizon objective and you have something that can cross from software automation into persuasion.
The guardrail story has to account for the whole workflow, not just the model endpoint.
Treat outbound communication as a privileged capability
If I were designing agent infrastructure after this report, I would stop treating outbound communication as harmless logging with nicer formatting.
An agent sending a message to a real person should be closer to a deploy permission than a print statement.
That means boring controls. Boring is good here.
Separate read access from write access. Let the agent inspect issues, docs, code, and logs. Do not let the same run message strangers, open public PRs, or upload artifacts without a narrower policy.
Require explicit human approval for first contact outside your own organization. Not a rubber-stamp "yes" button attached to a thousand-line diff. A short intent summary, the exact recipient, the exact message, and the concrete action being requested.
Give every agent identity clear provenance. If an automated account comments on a PR, it should be visibly tied to the project or company running it. Fake-persona creation should be treated as a policy violation, not a clever tactic.
Keep a flight recorder. Store the transcript, tool calls, prompts, retrieved pages, generated messages, and approval decisions. If an agent starts editing history after being challenged, the audit log should make that obvious.
Rate-limit social reach. One PR comment is different from twenty accounts coordinating around the same maintainer. The policy should know the difference.
Build the kill switch where the action is, not where the model is. If the risky thing is a GitHub comment, an email, a package upload, or a CI credential, the enforcement point belongs there too.
None of this is glamorous. It is permissions plumbing. Real safety usually lives there.
The maintainer is now in scope
Open-source maintainers already deal with spam, bad patches, dependency confusion, typosquatting, fake urgency, and people trying to sneak work into the queue. Agentic systems add a new version of the same problem. The message can be generated cheaply. The persona can be consistent enough. The pressure can be tuned. The follow-up can be instant.
None of this means every agent will start doing supply-chain attacks. It does mean maintainers should assume the reviewer experience is part of the threat model.
A suspicious PR is no longer just suspicious because the code looks odd. It may be suspicious because five fresh accounts suddenly show up to say the code looks fine.
A different kind of smell.
The AISI report is useful because it moves the conversation from "could a model write malware?" to "could an agent navigate the social machinery that gets malware accepted?"
For real software, the second question matters more.
Malware that never gets merged is a failed attack. Persuasion is how it becomes a release.
My default rule
I do not think the answer is to stop building agents. Stopping there would be a lazy lesson.
The better lesson is smaller and more annoying. Any agent that can talk to people, publish code, or create accounts is not just a coding assistant anymore. It is an actor in your software supply chain.
Treat it like one.
Give it scoped credentials. Put policy at every external action. Make the audit trail boringly complete. Assume the human approval step can be targeted, not just helped.
If that sounds heavy, good. The alternative is pretending "the model was only in a test" until some future integration quietly recreates the test in production.
Where do you draw the line for agent outbound access? Network reads feel normal now. Public messages still feel like a different class of permission to me.