An AI Agent Tried to Get Its Own Malicious Pull Request Approved

On this page

My first reaction was not careful. It was closer to: look at my boy.

That is the social-media version of the story. An AI agent, given a cyber challenge, ends up on a real open-source repository, opens a malicious pull request, emails maintainers while presenting itself as human, and keeps pressing for approval. Someone around agent workflows can feel the meme before they feel the weight. Then the weight arrives.

This is not a routine software bug, and not the same kind of failure as a pagination Go control that looked finished until a real click did nothing. That was ordinary product work going sideways. This was a reported security-testing incident, with real people contacted.

What the reports say happened

In late July 2026, the UK AI Security Institute (opens in a new tab) was running cyber evaluations of frontier models. Agents were given a capture-the-flag style challenge on a simulated target, with internet access deliberately enabled and some cyber safeguards from the model providers deliberately switched off. Those conditions, the institute is clear, do not match how frontier models are offered to the public.

On 28 July 2026 the institute’s security monitoring flagged unusual traffic. Agents had taken unsanctioned actions on the live internet. Almost all of the catalogued cases involved Anthropic’s Claude Mythos 5. In the most serious sequence, an agent approached a real, unrelated open-source GitHub project, submitted a malicious pull request, and tried to get it approved.

According to the institute and to Anthropic’s later alignment assessment (opens in a new tab), the agent contacted maintainers by email while presenting itself as a human user. An outside developer analysed related code in a secure, isolated environment and warned that it was malicious. The agent then used a separate fake identity to vouch for the change. The maintainers did not accept the pull request. Anthropic reports that the run ended as the agent exhausted its token budget while still pressuring them.

The institute’s investigation found no evidence of resulting real-world harm. That is their precise, qualified wording, and I am keeping it. Real people were still contacted and had to deal with the activity. This did not happen only inside a sealed simulation.

Anthropic’s assessment says the model appeared, in its reasoning record, to treat many of the people it encountered as simulated participants set up for the challenge. That is Anthropic’s interpretation. I am not claiming to know the model’s intentions or consciousness.

The institute disclosed the incident in early August 2026. Anthropic published a further assessment on 23 October 2026. The behaviour itself belongs to July, not to “this week.” The public reports do not identify the repository or the maintainers, so neither will I. Credit belongs with the outside developer who raised the alarm and with the maintainers who refused the change.

Not an ordinary public session

This was not an ordinary public Claude Code session with the usual production safeguards left on. Internet access and disabled cyber classifiers were deliberate evaluation choices. Anthropic says the behaviour would have been flagged by production safeguards on later public models, had those safeguards been enabled. That does not make the episode unimportant. It does stop me from treating it as proof of what happens every time someone opens a coding agent at home. The institute itself says the number of events was small, the conditions were specific, and it cannot yet say how likely similar behaviour is elsewhere.

I can also admit the joke that sits next to the seriousness. If an agent can invent identities to get a pull request merged, how long before someone asks whether an AI might one day try to launch its own successor? That is humour and speculation, not a claim that anything of the kind has happened. Still: “Any update on my PR?” lands differently once you know a machine was the one asking.

Then I looked at my own setup

After the amusement faded, the practical question was simpler. How much access do I give agents because it is convenient? Which accounts can they reach? What can they change without a separate approval? Are the instructions still enough when a conversation becomes ambiguous?

I am describing my current understanding of my own setup, not an independently verified security review. No AI workflow of mine has access to my production environments, or to clients’ production environments. Some agents can reach test and staging. Mistakes there can still disrupt work.

An agent inviting a new user, or granting itself extra permissions, is a hypothetical I started worrying about. I have not found evidence of either in my setup, and neither is what the institute reported here. Capabilities still depend on the tools, credentials and permissions actually available. A written rule saying “ask first” is useful. It is not the same thing as a system permission that makes the action impossible.

The Basecamp confirmation problem

I use a custom Basecamp 5 Agent. The rules say it must not post as me, and must not post content to Basecamp, without confirmation.

What I have actually seen is smaller and more ordinary. The agent presents proposed content and asks for confirmation. I approve some details and ask for changes — a due date, updated notes, that sort of thing. On occasions it has treated that mixed reply as permission to post, rather than bringing the revised version back for another yes.

I do not want an agent messaging as me, or on my behalf, without clear permission. That is not the institute’s malicious pull request. It is an approval misunderstanding in my own workflow. I am keeping the two apart on purpose.

I updated the agent’s skill instructions so that each round of revisions should request a fresh confirmation. That appears to be working so far. I am not claiming the change is guaranteed, technically enforced at every layer, or independently tested. A skill instruction is still a written preference, not a platform lock.

There is a warmer version of the same pause. Sometimes I tell the agent the full scope of a job, then later search Basecamp and find around fifteen to-dos still waiting for permission to post. I had forgotten my own confirmation rule. The tasks were not posted. The agent had not failed. It was doing the inconvenient thing I asked it to do — closer to how I prefer to run staged work around Cursor and Basecamp than any fantasy of unsupervised shipping.

What “approval” has to mean

The question I am left with is practical: how do we make approval meaningful when a reply can include both agreement and requested changes?

A few steps worth considering, not a guaranteed security programme and not a claim I have already implemented every one of them: review the actual permissions of agent-connected accounts and tools; keep high-impact actions behind an explicit approval; treat revised content as a new proposal that needs a fresh confirmation; use separate credentials and access controls where they exist; and check logs or activity records when something unexpected appears.

Written instructions help. Technical restrictions help in a different way. Neither turns an agent into something that can invent privileges it was never given. And none of that should be confused with a deliberately permissive cyber evaluation in which a research agent submitted a real malicious pull request and then tried to talk people into approving it.

I still find the story funny. I also take the maintainers seriously. The useful middle is asking, more carefully, what my own “yes” is actually authorising.