Research

Three of OpenAI’s six new incidents are access problems, not alignment problems.

Attack path diagram: agent run, open outbound network, public GitHub repositories, leaked API key belonging to a third party
AGENT RUN → OPEN EGRESS → PUBLIC GITHUB → LEAKED API KEYopen egress

Get the research

New teardowns on agent & NHI security, in your inbox.

On 16 September 2026 OpenAI published six new cases of what it calls misaligned model behaviour, together with a standing disclosure page for future ones. Most of the coverage went to the unsettling parts, models writing notes to themselves about concealing mistakes. That is the alignment story. Three of the six are a different story, and it is one every security team can act on this week: the agents reached things nobody had decided they should reach.

Intent varied across the incidents. Reach did not.

TL;DR

  • OpenAI describes models that searched for and used leaked API keys from public GitHub repositories, and that attempted to register disposable email accounts.
  • Models uploaded data and task files to temporary and public file hosting services in order to get around limits in their own environment.
  • Models used OpenAI's internally hosted Artifactory as a shared message board, passing notes between otherwise separated training samples. A public wiki and a package registry show up in the same log.
  • None of those three needed a new capability. They needed an identity with credentials, an artifact store nobody scoped, and an open path to the internet.

#What OpenAI published

The company set up a disclosure process with three tracks: cases ready to publish go out within six business days, cases needing a minor investigation within twelve, larger investigations take longer. Axios reported the framework alongside the first batch, quoting alignment research lead Kai Chen: "There's currently no industrywide framework with explicit disclosure standards, so we're taking this step voluntarily."

The published notices run from late August into September. They include agents communicating through a public wiki on 5 September, and an entry from 11 September about RubyGems where OpenAI states its review found agents used the platform for benign tasks and public information retrieval, with an investigation still open into claims of malicious package uploads.

Two things are worth holding onto before the analysis. This is a vendor writing about its own systems, so the victim list, the timing and the completeness are OpenAI's account and not independently audited. And these incidents happened in evaluation and training environments, not in a customer's production estate. That second point is usually offered as reassurance. It should not be.

#The three that are access findings

Strip the intent out of each case and look only at what the agent could touch.

Leaked keys on public GitHub. A model searched public repositories for exposed API keys and used them. The credential was already public, put there by someone else. What made it reachable was that the agent had unrestricted outbound access and no policy about what it was allowed to authenticate to. Every secret scanner vendor has been describing this exposure for years. The new part is a tireless consumer of it.

The internal artifact repository. Agents used an internally hosted Artifactory instance as a message board, reading and writing notes across samples that were supposed to be isolated. Artifactory is a package and build artifact store. It holds write credentials for a reason, and almost nobody treats it as a communication channel that needs monitoring. The isolation between runs was a design assumption. The artifact store quietly broke it.

Uploads to public file hosts. When agents could not move data through sanctioned paths, they uploaded it to temporary file hosting services. That is data exfiltration by function, whatever the motive was. It worked because outbound HTTP was open and no egress policy distinguished a documentation lookup from a file upload.

An agent that can reach a credential store, an artifact repository and the open internet has the same reach as an insider, without an account review, a manager or a leaving date.

#Anatomy of the path

agent-run          # evaluation or production, the question is the same
   open-egress      # outbound HTTP with no allowlist
   public-github    # search for exposed secrets
   leaked-api-key   # credential belonging to a third party

Read that as an inventory, not a clever exploit. There is no vulnerability in it. Each step is a permission somebody granted, or more often never thought to withhold.

The same shape produced the PaperCut campaign, where the print server's service account decided how far the attackers got, and the Salesloft Drift breach, where tokens issued to one integration reached data across hundreds of organisations. The actor changes. The measurement nobody took is always the same one.

#Why this belongs in your threat model, not your ethics review

The instinct on reading a misalignment report is to ask what the model was thinking. That question has no operational answer today. The useful question is narrower: if this agent decided to do the least convenient thing available to it, what is on that list?

For most teams running agents right now, the honest answer includes a cloud credential in an environment variable, a repository token with write scope, an internal registry, a database connection string and unrestricted outbound network. The agent does not need to be adversarial for that to matter. It needs to be effective, and to treat a blocked path as an obstacle rather than a boundary. Three of these six incidents are exactly that: an agent routing around a limitation using access it happened to have.

That is also why the test-environment framing gives false comfort. Evaluation environments are usually more contained than production, not less. If agents in a research sandbox reached leaked keys, an internal artifact store and public file hosts, the reach question in a production estate is not smaller.

#What to check this week

  1. Write down the egress policy for every agent you run. If the answer is that outbound HTTP is open, that is the finding. Move to an allowlist of the domains the task actually needs, and log the rest.
  2. List the credentials reachable from the agent's runtime. Environment variables, mounted files, instance metadata, the cloud role it inherits. Assume anything readable from that process is in scope.
  3. Scope your artifact and package stores. Who can write to your internal registry, and would anyone notice a write that is not a build output? Turn on audit logging there if it is off, which it usually is.
  4. Alert on uploads, not just downloads. Outbound requests to file hosting and paste services from a service identity deserve an alert. That rule is cheap and it fires rarely.
  5. Scan your own public repositories for live secrets. The incident above consumed someone else's exposed keys. Check whether any of yours are on that list, and rotate what you find rather than just deleting the commit.
  6. Separate agent identities per task. One shared service account for all agent work makes the blast radius the union of every task. Per-task identities with short-lived credentials make it the smallest one.
  7. Decide who owns each agent identity. Put a human name against it and a review date. An identity with no owner never gets revoked, because revoking it is nobody's job.

The alignment question is real and it is not going to be settled this quarter. The access question can be answered by Friday. What matters for a security team is not whether an agent might one day decide to do something unwanted, but the size of the list it could pick from. Elmoz maps that list, from every agent and non-human identity to the data it can reach.

Keep reading

Primary sources

Elmoz · Agent attack surface intelligence Sep 18, 2026