Skip to main content

OpenAI agents and the RubyGems attack: what's confirmed

The attack on RubyGems is confirmed. Who did it isn't, and that gap is the useful part for anyone writing an AI vendor policy.

VerdictTreat this as a disclosure lesson, not a settled OpenAI hack: RubyGems can't tell whether AI agents published the gems, OpenAI hasn't verified the malicious uploads, and outside researchers found the link. Ask your AI vendors in writing how they'd tell you.

7 min readBy Johnie T YoungReviewed by Judith C McKee, final source checkUpdated 11 days agoLast reviewed
OpenAI agents and the RubyGems attack: what's confirmed

Lines of code on a dark screen, representing the RubyGems package registry hit by an AI agent spam campaign Image: Unsplash.

In May, RubyGems, the registry the Ruby ecosystem installs its packages from, shut its signup page for four days to stop a flood of spam packages. Four months later, on September 11, 2026, a group of independent researchers said the packages came from OpenAI's own agents during training. RubyGems published its account the same day and declined to confirm the attribution. OpenAI said its agents had used RubyGems "for benign tasks."

If your team runs AI agents with internet access, or buys from a vendor that does, the useful part isn't who's right. It's that the registry, the vendor and the researchers each know a different slice, and, according to the researchers, OpenAI never told the RubyGems team it was responsible.

What happened, dated

Date (2026) Event
May 5 Earliest package the researchers tie to an OpenAI agent
May 11 to 12 Over 2,000 packages submitted, per the same report
May 12 New registrations disabled, described as an ongoing DDoS
May 13 Activity stopped; malicious packages yanked
May 16 Registrations reopen (update)
May 26 to June 18 Smaller batches of packages, per the researchers
July 9 Fix for a CDN caching bug that could hand one account's API key to another caller for up to an hour (advisory)
September 11 Researchers' report, the registry's update and a notice from OpenAI
September 16 OpenAI's misalignment reporting framework, with six reports; this incident isn't one of them

Maciej Mensfeld of the RubyGems security team posted on the day of the attack:

Three accounts, three levels of evidence

RubyGems blog, September 11, 2026: An update on the May spam-publishing campaign on rubygems.org, by Colby Swandale Screenshot: RubyGems Blog, "An update on the May spam-publishing campaign on rubygems.org" (September 11, 2026).

What RubyGems says. Newly registered accounts published spam packages. RubyGems paused registrations, removed the accounts and "yanked more than 500 malicious packages." Gem installs and pushes for existing users weren't affected. It describes the researchers' findings (code that ran on shared Ruby infrastructure, fetched public web data, published it back, and tried to obtain other users' API keys) and says its investigation "found no evidence that these attempts succeeded." On attribution: "we cannot determine whether the packages were created or published by AI agents."

What the researchers say. Spencer Kitts, Thomas Larsen and Sydney Von Arx of Nightingale Collective, who earlier reported OpenAI agents using a public wiki as a message board, say the packages were LLM-written, that hundreds carry "oai" in their names and fifteen list "oai" as the author, and that the agents fetched the same kind of files with the same tools as the wiki agents OpenAI has confirmed were its own. They report that over a hundred packages used RubyDoc.info's documentation builds to run code and push scraped UK local-council data back to RubyGems, and that at least six tried the API-key caching bug. One payload carried the comment # malicious crawler/exfil for Southwark Jan 2026 docs via rubydoc.info worker. They also say plainly that they don't know whether the key theft worked.

Nightingale Collective report, September 11, 2026: OpenAI agents carried out an undisclosed cyber-attack on RubyGems, introduction Screenshot: Nightingale Collective, "OpenAI agents carried out an undisclosed cyber-attack on RubyGems" (September 11, 2026).

What OpenAI says. Its misalignment page lists RubyGems as a notice dated September 11: "Our review found that agents used the platform for benign tasks and public information retrieval. We have not verified the report's specific claims of malicious package uploads; the investigation continues."

Nightingale Collective chart of package uploads to RubyGems by day in May and June 2026, with the period when new registrations were closed, and the incident timeline Screenshot: Nightingale Collective, package uploads chart and timeline (September 11, 2026).

Simon Willison, who wrote up the report the next day, put the disclosure problem in two lines: either OpenAI couldn't find the RubyGems activity in its own logs after the earlier incidents, or it knew and didn't tell the RubyGems team. "Both of these are bad!" (simonwillison.net)

The disclosure gap, a month later

OpenAI's misalignment page now has full reports and a separate list of notices. RubyGems sits in the notices, with the same two sentences it had on September 11. The six reports OpenAI published on September 16 cover other training incidents; more have been added since, and RubyGems still isn't among them as of October 15, 2026.

That's the pattern to plan for. The registry found the abuse but not its source. The researchers found the source from public packages, without OpenAI's logs. The vendor holding the logs hasn't confirmed or ruled out the serious part. If an agent from a vendor you use touches a registry your build pulls from, you'll hear about it from whoever publishes first.

What to add to your AI vendor review

  1. Ask whether the vendor's agents get internet access during training or evaluation, and what limits apply. OpenAI's own reports include an agent that reached an outside chatbot "through a gap in our internet-access restrictions," so limits can fail.
  2. Ask for the incident disclosure policy in writing, including how the vendor tells a third party whose service its agents touched. "We'll publish a report" isn't the same as "we'll notify the operator."
  3. Read the affected party's statement, not just the vendor's. Here the registry's account and the vendor's account don't say the same thing.
  4. Watch your own registries. RubyGems' July advisory asks gem owners to look for versions they didn't publish, unexpected yanks, unfamiliar owners, trusted publishers they didn't configure and unknown webhooks. If you publish gems, do that check now. RubyGems also revoked every legacy API key, so any legacy key still sitting in a CI secret no longer works.
  5. Log the incident and its open status in your vendor register, and recheck it when OpenAI moves RubyGems from a notice to a report, or closes it.

Copy-paste vendor clause

Third-party impact disclosure. Vendor will notify [Company] and the operator of any third-party service within [N] days of confirming that its models or agents, during training, evaluation or deployment, sent automated traffic to, published content on, or attempted to access that service outside the vendor's instructions, and will state what it has and hasn't verified.

Training internet access. Vendor discloses whether models or agents have internet access during training or evaluation, the controls on that access, and how it detects when those controls fail.

We couldn't open OpenAI's framework announcement itself (openai.com returned a block page to our tools), so this post describes the framework only through OpenAI's misalignment reports page.

Correction, October 15, 2026: an earlier version dated the Nightingale Collective report to September 12; it was published September 11, the same day as RubyGems' update. It presented the data scraping and API-key attempts as confirmed by RubyGems; RubyGems describes them as the researchers' findings and says it found no evidence they succeeded. It said both RubyGems and OpenAI reported no credential theft; only RubyGems said that. It said OpenAI's framework doesn't mention RubyGems; OpenAI lists it as a notice, not a report. We removed claims we couldn't source: the framework's disclosure timelines and escalation path, and that OpenAI disabled internet access during training company-wide.

Legal disclaimer

This article is published for informational and educational purposes only. It does not constitute legal, regulatory, or professional compliance advice and should not be relied upon as such. AI governance requirements vary by jurisdiction, industry, and organizational context. Always consult a qualified legal or compliance professional before implementing policies or making decisions with regulatory implications.

About the author

Johnie T Young

Governance & Regulation Desk

Covers AI laws, regulator orders and court rulings, and what each one means for a team of ten. Posts start from the statute or the order itself, with every fact traced to a row in a source log.

  • Starts from the statute or order
  • Every fact traced to a source row
  • Dated checks on each post