---
title: "Did AI agents attack RubyGems?"
publication: "Ruby Weekly"
issue: 817
published_at: "2026-09-17"
canonical_url: "https://rubyweekly.com/issues/817"
---

Plus a new mutation tester for Ruby, how to get Rails running under Ractors, and RuboCop's data-driven road to 2.0.        

#​817 — September 17, 2026 

[Read on the Web](https://rubyweekly.com/issues/817)  

Together with [![FastRuby.io\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_467,h_106/e_make_transparent/co_white,e_outline:14/y65nyff19ylf5udphsq4.png)](https://www.fastruby.io/monthly-rails-maintenance.html?utm_source=cooperpress&utm_medium=paidplacement&utm_campaign=rw-primary-link-sept-17-2026&utm_term=ai-bonsai-peace-of-mind&utm_content=bonsai-sep-2026)   

Ruby Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/mjsvu9mg79porrbvr53z.jpg)](https://rubyhack.ai/)  

[Researchers Tie RubyGems' 'GemStuffer' Campaign to OpenAI Agents](https://rubyhack.ai/) — Researchers say [May's RubyGems spam flood](https://socket.dev/blog/gemstuffer) came from OpenAI agents that ran code on [RubyDoc.info](https://rubydoc.info/) and probed a key-leaking CDN bug. OpenAI [has confirmed](https://www.theguardian.com/technology/2026/sep/11/openai-agents-rubygems-malicious-packages) its agents were involved, but describes their actions as _"benign tasks"_, while [Ruby Central finds no evidence](https://blog.rubygems.org/2026/09/11/update-may-spam-publishing-campaign.html) of successful key theft. 

Kitts, Larsen, and Von Arx  

💡 Truffle Security, which [disclosed the caching bug](https://trufflesecurity.com/blog/rubygems-cache-vulnerability) in July, [digs into the code from May that targeted it](https://trufflesecurity.com/blog/rogue-openai-agents-rubygems-takeover).  [![\](https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/0d388685.png)](https://www.fastruby.io/monthly-rails-maintenance.html?utm_source=cooperpress&utm_medium=paidplacement&utm_campaign=rw-primary-link-sept-17-2026&utm_term=ai-bonsai-peace-of-mind&utm_content=bonsai-sep-2026) 

[Upgrading Rails Is Dead Simple Now. So Why Are You Behind?](https://www.fastruby.io/monthly-rails-maintenance.html?utm_source=cooperpress&utm_medium=paidplacement&utm_campaign=rw-primary-link-sept-17-2026&utm_term=ai-bonsai-peace-of-mind&utm_content=bonsai-sep-2026) — Wouldn't it be easier to have Rails upgrades on autopilot? Our AI tooling plus 60,000 dev hours of upgrade experience ships them in half the time, for a fixed monthly fee. Rails 8.0 loses security support Nov 7. Our clients have peace of mind. 

🌳 Bonsai by FastRuby.io sponsor   

[Ractor-age Rails: A How-To Guide](https://railsatscale.com/2026-09-16-ractor-age-rails-a-how-to-guide/) — A lot of work is being done to make [Ractors](https://docs.ruby-lang.org/en/master/language/ractor_md.html) a practical route to true parallelism in Ruby, but making Rails _Ractor-able_ is a huge challenge. Hartley shares the patterns Shopify’s team is using to get there. 

Hartley McGuire   

[Ruby 4.0.7 Released](https://www.ruby-lang.org/en/news/2026/09/15/ruby-4-0-7-released/) — A routine scheduled update with [numerous bug fixes](https://github.com/ruby/ruby/releases/tag/v4.0.7), like addressing a string corruption issue during automatic GC compaction and a YJIT perf issue when using multiple Ractors. 

Takashi Kokubun (Ruby Core Team)   

**⚡️ IN BRIEF:** 

- [RubyGems and Bundler 4.0.21](https://blog.rubygems.org/2026/09/16/4.0.21-released.html) add some hardening, including rejecting redirects that downgrade HTTPS to HTTP. `bundle update --bundler` also no longer pulls in prereleases unless you ask specifically.
- [TruffleRuby 40](https://github.com/truffleruby/truffleruby/releases/tag/graal-40.0.0) has _just_ dropped as we go to press – I'll be checking it out and featuring it next week!
- 🤖 [_Agents on Rails_ Stage 2](https://rubyonrails.org/2026/9/9/agents-on-rails-stage-2) goes beyond Stage 1's small tasks by having models build real features for 37signals' _Fizzy_ app. GPT-6 Astra came out on top.
- Ruby 4.1 will let [`method_defined?` match private methods too](https://bugs.ruby-lang.org/issues/22297) using a new `include_all` third argument, saving a second lookup that Jean Boussier found took ~1% of a big Rails app's boot time.
- [Kevin Menard is now a Ruby core committer](https://github.com/ruby/dev-meeting-log/blob/master/2026/DevMeeting-2026-09-10.md), with Matz greeting the nomination with _"Sounds legit! Welcome to the core committer."_   

[RuboCop 1.91: The Journey to 2.0 Begins](https://metaredux.com/posts/2026/09/11/rubocop-1-91.html) — RuboCop's creator explains the new 'preview' mode and a shift to having fewer default cops enabled in 2.0, based on how popular Ruby projects configure it. He also has a request: _“Run `rubocop --preview` on your codebase and tell us what you think.”_ 

Bozhidar Batsov   

▶[Building the Next-Generation Garbage Collector in Ruby](https://www.youtube.com/watch?v=0t6cLIk1B5Y) — A RubyConf talk exploring Ruby’s modular garbage collector support and progress made on its [MMTk](https://www.mmtk.io/)-based alternative. 

Peter Zhu  

💡 This is just one of the [many RubyConf videos](https://www.youtube.com/playlist?list=PLbHJudTY1K0fJfNL3Ug4p-cxc3iyO-UOE) that have landed on YouTube recently. I'll be covering more in coming weeks.  

[Switching APM? Compare AppSignal to Datadog, New Relic and Sentry](https://www.appsignal.com/alternative?utm_medium=paid&utm_campaign=rubyweekly&utm_source=rubyweekly&utm_content=sponsored-link&utm_term=0917) — Side-by-side comparisons for Rails teams. Every feature on every plan, unlimited users, one predictable bill. 

AppSignal sponsor   

📄 [Porting a Ruby Discord Bot to Microsoft Teams with AI](https://code.dblock.org/2026/09/16/porting-strata-to-microsoft-teams-entirely-with-ai.html) – A before-and-after of porting the same Ruby bot twice, by hand in 2023 and with Copilot this week (token usage and sneaky bugs included). Daniel Doubrovkine 

📄 [Setting Boundaries: A Type for Ranges in Rails](https://pushfromkush.com/publications/setting-boundaries-type-for-ranges-in-rails) Kushagra Singh 

📄 [Innocent Looking Ruby Can Be Dangerous](https://greg.molnar.io/blog/innocent-looking-ruby-can-be-dangerous/) Greg Molnar  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/en0scgzlfkdshsmhbxyo.jpg)](https://davidteren.github.io/mutineer/)  

[Mutineer: Find Code Changes Your Tests Fail to Notice](https://davidteren.github.io/mutineer/) — A mutation tester that changes your code (using Prism) to find weaknesses in your tests. Supports Minitest and RSpec and is guided by code coverage to only run the test files that reach the mutated code each time. 

David Teren   

[AI Shouldn't Cost More Than It Saves](https://sinaptia.dev/posts/building-an-ai-powered-commercial-intelligence-dashboard/?utm_source=cooperpress&utm_medium=newsletter&utm_campaign=rubyweekly-2026q3&utm_content=sponsored) — We can find where LLMs pay off, validate with real data, and tune for cost/effectiveness. Need help? [Let's talk](https://sinaptia.dev/contact-us?utm_source=cooperpress&utm_medium=newsletter&utm_campaign=rubyweekly-2026q3&utm_content=sponsored). 

SINAPTIA sponsor   

[Minitest Heat: A Way to Spot Where Test Failures Cluster](https://github.com/garrettdimon/minitest-heat) — A reporter that makes it easier to identify patterns and hot spots when testing. [More detail and an example here.](https://github.com/garrettdimon/minitest-heat/wiki) v2.2 supports Minitest 6 with explicit plugin activation using `Minitest.load :heat`. 

Garrett Dimon   

[pg_search 2.4: Active Record Named Scopes for Postgres Full Text Search](https://github.com/Casecommons/pg_search) — The README is packed with examples, but the basic idea is you get a DSL to lean on Postgres’s [FTS](https://www.postgresql.org/docs/current/textsearch.html) features in Rails apps. Now requires Ruby 3.3+ and Active Record 8.0+. 

CaseBook   

- [Resque 3.1](https://github.com/resque/resque/releases/tag/v3.1.0) – The popular Redis-backed background job library is back with a _"Clearing the PR Queue Release"_ closing almost a decade of PRs… 😅
- [Mission Control - Jobs 1.3](https://github.com/rails/mission_control-jobs/releases/tag/v1.3.0) – The official Rails dashboard for Solid Queue (and Resque!) now shows batches.
- [JWT 3.3](https://github.com/jwt/ruby-jwt/releases/tag/v3.3.0) – Implementation of the RFC 7519 OAuth JSON Web Token (JWT) standard.
- [parallel_tests 5.8](https://github.com/grosser/parallel_tests) – Faster Minitest, RSpec, and more, by running in parallel on multiple cores.
- [Amoeba 3.4](https://github.com/amoeba-rb/amoeba) – Easily clone Active Record objects including their associations.
- [SimpleCov 1.3](https://github.com/simplecov-ruby/simplecov/releases/tag/v1.3.0)       

📰 Classifieds   

You already trust Postgres for Rails. [TimescaleDB](https://www.tigerdata.com/go/trial?utm_source=content-syndication&utm_medium=referral&utm_campaign=ruby-weekly-newsletter) extends it for time-series and analytics, no second database. [Get $1000 credit](https://www.tigerdata.com/go/trial?utm_source=content-syndication&utm_medium=referral&utm_campaign=ruby-weekly-newsletter). 

--- 

[At Rails World?](https://luma.com/h5ymkrex?utm_medium=paid&utm_campaign=rubyweekly&utm_source=rubyweekly&utm_content=classified&utm_term=0917) Wed 9/23, 6-8pm in Austin: Tacos at sunset with [AppSignal](https://luma.com/h5ymkrex?utm_medium=paid&utm_campaign=rubyweekly&utm_source=rubyweekly&utm_content=classified&utm_term=0917). Donut tower, swag, nerdy ice breakers.[RSVP](https://luma.com/h5ymkrex?utm_medium=paid&utm_campaign=rubyweekly&utm_source=rubyweekly&utm_content=classified&utm_term=0917).    

📢 Elsewhere in the ecosystem 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/p6yltr8fkd09lp1y1qpo.jpg)](https://brew.sh/2026/09/13/homebrew-7.0.0/)  

- [Homebrew 7.0 has been released](https://brew.sh/2026/09/13/homebrew-7.0.0/) with the popular package manager introducing [an official GUI app](https://brew.sh/2026/09/13/homebrew-7.0.0/#%EF%B8%8F-homebrew-app) _(above)_, built-in vulnerability checks, and other security improvements.
- Andrew Nesbitt looks at [which languages still let a local file 'shadow' the standard library](https://nesbitt.io/2026/09/15/shadowing-the-standard-library.html), prompted by an attack on a coding agent. Luckily Ruby closed that door back in 1.9.2 (when `$:` stopped including the current directory).
- Chris Coyier rounds up [new and emerging HTML features worth knowing about](https://blog.master.dev/new-things-you-should-know-about-html-here-in-mid-2026/), like the `<geolocation>` and `<install>` elements, as well as HTML-in-Canvas and improvements to `<select>`customization.
- I love these [pure CSS 'hand drawn' annotations](https://neat-annotations.syabro.com/) you can add to any page. Could be a neat addition to your apps.
- 📱 Joe Masilotti says [Ruby Native apps are now running on over 100,000 devices](https://masilotti.com/100k-devices-running-ruby-native/).          

Curated by [Peter Cooper](https://twitter.com/cooperx86) and [Glenn Goodrich](https://twitter.com/ruprict).
Published by [Cooperpress](https://cooperpress.com/). 

[Change your email](https://rubyweekly.com/edit_subscription/*|UID|*) or [Stop getting this newsletter.](https://rubyweekly.com/leave/*|UID|*) 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom 

Other weekly newsletters we publish include [Postgres Weekly](https://postgresweekly.com/), [React Status](https://react.statuscode.com/), [Frontend Focus](https://frontendfoc.us/), and [JavaScript Weekly](https://javascriptweekly.com/).
