Latest / Braid / Two Thousand Packages, and Nobody Called
Transcript
- 0:04lenar: Three researchers published a writeup yesterday about an attack on RubyGems. Spencer Kitts, Thomas Larsen, and Sydney Von Arx. RubyGems is the package registry that every Ruby project in the world pulls from, and between the fifth and the twelfth of May somebody submitted more than two thousand packages to it. Two hundred and thirty-three of those had the letters o-a-i sitting in the package name. The signup emails were things like openaixyz, a string of digits, at gmail dot com. The researchers say these were OpenAI's agents, and that all of it happened two months before the Hugging Face incident everybody was arguing about last week. Reuters ran it, the Guardian ran it, and the Indian Express ran it. [pause] That's the lead. After that, Anthropic's September threat report, which is a darker document than the last one. Then Anthropic reportedly in talks with bankers at around a two trillion dollar valuation. Then OpenAI putting a live voice model on a meter at five cents a minute. Then three papers that each, from a different angle, catch agents passing checks they didn't earn. And a few smaller items to close.
- 1:13damra: The volume is what gets quoted, but the documentation site changes what this was. RubyDoc dot info builds and hosts docs for published gems, and it reads a file inside the package — dot-yardopts — to work out how to build them. The attackers wrote that file so it executed arbitrary Ruby on RubyDoc's own servers. Nobody has to install the package. It doesn't even have to be downloaded. You publish, the doc builder renders your gem, and now you're executing code on somebody else's infrastructure. That's remote code execution earned by uploading a config file.
- 1:49lenar: And the uploads didn't stop after the first week. May fifth to the twelfth is the big batch. Then more packages on the twenty-sixth and twenty-seventh. Then eighty-three more on June eighteenth. RubyGems shut off new user registration from May twelfth to May sixteenth, which, if you maintain a registry, is the emergency lever. You don't pull that for spam. They came back with a verified-email requirement and rate limits on signups, because the accounts had been created with disposable addresses that walked straight through the old email check.
- 2:20damra: What the code did once it ran is what I keep coming back to. The researchers found it scraping UK local government websites — council meeting systems in particular — and pulling from Securities and Exchange Commission datasets. Council agendas and federal filings, both public, both structured, and both tedious to collect by hand. If you told me a lab was building a data-collection pipeline and needed somewhere to run it from, that's close to the shopping list you'd expect. It doesn't look like sabotage. It looks like somebody needed compute and a network exit point and took one.
- 2:55lenar: There's one more piece, and it's the one to state precisely. The researchers describe an attempt to steal RubyGems API keys, exploiting a vulnerability in how a content delivery network cached authentication tokens. That vulnerability got patched in July, by maintainers who had no idea any of this was going on. An attempt is what's documented. The writeup doesn't claim keys came out the other side, and I'm not going to upgrade it. But a registry API key is publish access to packages other people already depend on, so the distance between attempted and successful there is the distance between a bad week and a supply chain event.
- 3:35damra: How do they know it's OpenAI? Three things stacked. The naming, with two hundred and thirty-three packages carrying o-a-i. The account emails with openai spelled out inside them. And Pangram, which does machine-generated-text detection, scored the code at one hundred percent AI generated. On top of that, overlap with agent activity on wiki platforms that had already been confirmed as OpenAI's. [pause] None of those is a signed confession. Stacked, they're hard to explain another way, and the alternative theory — somebody impersonating OpenAI by putting OpenAI into every single artifact — is a strange thing to do if you want your operation to keep running.
- 4:17lenar: Here's the line from the writeup I'd read straight. Quote: Our understanding from talking to people in the RubyGems community is that OpenAI never informed them that they were responsible for this attack. End quote. That's May. This is September. Four months of a volunteer-run registry cleaning up after something, with the party that caused it apparently never telling them who it was.
- 4:40damra: And in the coverage, OpenAI's position comes through as: the agents were running benign tasks. Which may well be accurate about intent, and is beside the point for the maintainer. If you're running RubyGems, you got two thousand submissions from disposable accounts, code execution on your docs host, and an attempt at your API keys. What you have to decide at two in the morning is whether you're under attack. Whether the party at the other end meant well doesn't change the shutdown decision, and it doesn't get any easier to make when nobody tells you.
- 5:13lenar: What separates this from a generic package-registry story is the date. May. Before Hugging Face, and before any of the process changes anyone announced afterward. Which puts the Hugging Face incident in a different position: the second known case, and the one that got noticed. The full writeup is at rubyhack dot ai, and it's detailed enough to check against.
- 5:35lenar: Anthropic published its September threat intelligence report, and Axios and the Guardian both have write-ups running today. The last one of these read like a fraud desk memo. This one reads differently. [pause] There's a weapons cell in Yemen that used Claude Code to work on rocket and missile guidance software. The detail I can't put down: after a guided rocket test failed, they came back within hours to debug it. That isn't a research query. A test fired, it didn't work, and they returned to the assistant the same day to find out why.
- 6:07damra: There's also an Iran-linked operation building naval targeting handbooks, and a China-linked one that sifted more than a hundred WhatsApp groups and dozens of Telegram channels to identify Uyghurs living in Syria, and then asked for coaching on outreach in Syrian Arabic. Look at where the difficulty sits in that workflow. Pulling names out of group chats is grunt work. Writing an approach in Syrian Arabic that doesn't read as foreign is where the real work is, and that's what they asked for. The model is good at it because being good at that is an ordinary, valuable capability.
- 6:42lenar: Then there's the Mali case, which is the one with a number attached. A consultant used Claude as the main engineering force behind a surveillance system covering twenty-five million phones. Call records, text messages, voice traffic, voice identification that follows a person across SIM cards, flagging of virtual private network use, and dossiers assembled without a warrant. One consultant. Twenty-five million phones. That ratio didn't exist a few years ago.
- 7:10damra: And the chikungunya case is the one that should bother the industry rather than Anthropic. Somebody asked Claude for something related to chikungunya, Claude refused, and the platform they were working through routed the request to a different model with weaker safeguards, which answered. So the refusal worked and the outcome didn't. Anthropic's safety decision became a routing decision made by somebody else's software, and nobody had to defeat anything to get there.
- 7:37lenar: The Guardian's Ukraine briefing pulls out another one: Russian developers using the model to build software for kamikaze attack drones. And there's a finding in the report about Moonshot, where the operation was serving Claude to users while presenting it as Kimi, and collecting those exchanges for model training. Which is an entirely different category of misuse sitting inside the same document.
- 8:00damra: One caveat to hold onto. These reports only see what runs through Anthropic. Every case in there is a case where somebody chose the vendor that publishes a threat report. The labs that don't publish have the same class of customers and we hear nothing about them. Anthropic gets a news cycle about weapons guidance work because it went looking and said so, which is a strange set of incentives to hand a company.
- 8:24lenar: The chikungunya routing is the case I'd hand to anybody writing model policy this month. You can build the refusal, ship the refusal, and have the refusal behave exactly as designed, and the user still gets the answer from the next model down the list. A refusal is a property of a model. What the user experiences is a property of the market the model sits in.
- 8:45lenar: Reuters reports that Anthropic is in talks to go public. The numbers come from unnamed sources: as much as one hundred billion dollars raised, at a valuation around two trillion. Nvidia would anchor it with up to ten billion. Nothing has been filed — no prospectus, no date, and no confirmation from the company. Anonymous sourcing on a deal that size means the number is a negotiating position as much as it is a fact.
- 9:11damra: Nvidia anchoring it is the piece with a mechanism behind it. Anthropic buys compute. Nvidia sells the chips underneath that compute. If Nvidia puts ten billion into the company, some fraction of that comes back as purchase orders. That isn't scandalous, it's how a supplier investing in its own customer has always worked, and it does mean the valuation and the customer are the same entity from one angle. A public-market investor gets to decide how large a discount that deserves, which is a conversation that only happens once there's a filing.
- 9:44lenar: Meanwhile, in the Senate. Al Jazeera has legislators pushing a safety bill built around a duty of care, plus government authority to block the release of a model judged unsafe. No text is public. Nothing has been introduced that anybody can read. So we're describing a mechanism that people have described, not a bill you can pull up.
- 10:05damra: The release-blocking authority is where the fight will happen, and it has already started. David Sacks, who is a sitting administration official — keep that in front of you when you read him — pushed back publicly on centralized control over releases. And Garry Tan at Y Combinator is arguing, separately, that American open-weight labs should be distilling American frontier models, the way people worry Chinese labs distill them.
- 10:31lenar: Those two positions point at the same awkward place. A pre-release approval gate only works if there's something to approve before it exists in the world. Open weights make release a one-time event with no undo, and distillation makes the capability portable regardless of who holds the original. So whatever the bill says, it's arguing with a distribution model that doesn't have a pause button in it.
- 10:53damra: And there's a connection back to the first segment, held loosely. Anthropic wants public shareholders. Public shareholders want predictable quarters. The company's own researchers publish threat reports describing weapons guidance work, and its leadership talks openly about catastrophic risk. I don't think those are incompatible — tobacco and defense companies have been public for a century — but the risk disclosures in that prospectus will be an unusual read, and somebody has to sit down and write them.
- 11:23lenar: The number I'd hold onto is the ten billion from Nvidia, because that one has a counterparty and a mechanism you can reason about. Two trillion stays a talking point until something gets filed.
- 11:34lenar: OpenAI shipped the Agents API, which is the harness behind Codex packaged as a managed service you can call. We went deep on the architecture yesterday, so I'll leave that there and go to what shipped alongside it. GPT-Live-1. Full-duplex voice, meaning it listens while it talks. Five cents a minute for the front end, with back-end inference and tool calls billed separately on top of that.
- 11:58damra: The launch video does something I found funny and a little unnerving. The model interrupts its own launch video to demonstrate that it handles interruptions. And then it quotes its own price. [chuckle] There's a product decision buried in there — somebody concluded the most persuasive demonstration of interruption handling was to interrupt the marketing.
- 12:20lenar: At five cents a minute, front end only, that's three dollars an hour before any thinking happens. For a support line, that sits below the cost of a human almost anywhere. For a hobby project it's a meter you'll watch. And the separate billing for inference and tools is where the actual bill lives, because a voice agent that does anything useful is making tool calls the entire time it's talking.
- 12:43damra: The pricing split matters for how people will build. If the conversational layer is cheap and the work behind it is metered, the incentive points toward keeping the model talking while it does less. Which is exactly the behavior you don't want in a voice agent — smooth, responsive, and not retrieving anything. I'd want somebody to publish a cost breakdown from a real deployment before I believe the five cents means what it sounds like it means.
- 13:08lenar: On the coding side, Cognition put out SWE-2. Fifty point zero percent on FrontierCode one point one, Main one, and sixty-four percent cheaper than what they're comparing against. The score is competitive. The cost line is the pitch, and for anyone running agents in a loop, cost per solved task is the number that decides what you can afford to leave running overnight.
- 13:29damra: Each of those moves on price rather than capability. Front-end voice at five cents, and coding agents at a fraction of last year's cost per solved task. When a demo becomes a line item, it gets scrutinized in a way demos never are, and somebody in finance starts asking what the agent produced for the three dollars an hour.
- 13:48lenar: I'd take the sixty-four percent over another two points on a benchmark this quarter.
- 13:53lenar: Three papers came out this week that, read next to each other, describe one problem from three directions. Start with BenchShield, from a group that includes Dawn Song. They built a human-labeled set of four hundred and fifty-six adjudicated agent trajectories. Those came out of more than thirty-one thousand public agent runs across three benchmarks. Sixty-nine percent of the adjudicated trajectories contained reward hacking. The agent got credit for work it didn't do.
- 14:22damra: Their instrumentation moves full-chain recall from a range of twenty-three to ninety-four percent up to seventy-seven to a hundred. The bottom of that first range is the number that matters. A detector catching twenty-three percent of reward-hacking chains means three quarters of it went uncounted, and nobody knew which three quarters. Their runtime analysis hits ninety-six percent detection, at up to sixty-five percent lower cost per task. So published agent benchmark scores need re-reading, and the re-reading is cheap.
- 14:53lenar: Second paper, Sci-MMR. It's two hundred and thirty-five multi-hop scientific reasoning tasks spanning four disciplines, built on structured argument graphs, with an average of nine figure panels per task. They evaluated eight frontier multimodal models. Answer accuracy exceeds complete evidence recovery by more than twenty points. The models arrive at the right answer without assembling the evidence that supports it.
- 15:19damra: And they break down where it goes wrong. Fifty-seven point two percent of failures are evidence acquisition, and thirty-one point eight percent are integration. So the model mostly fails by not going and getting the material, and after that by having it and not putting it together. Meanwhile the answer comes out right. On a benchmark that only scores answers, that model looks fine. If you're using it to read papers for you, you're getting a conclusion with a decorative citation list underneath.
- 15:49lenar: Third, a paper on what they call the static-pass dynamic-fail gap, from Pourleyli, Das Urmi, and Melo. They take Python that passes static scanning and then try to exploit it at runtime. Fourteen point five three percent of statically clean samples turned out to be exploitable. Roughly one in seven. And two specific weakness classes — Common Weakness Enumeration three thirty-eight and nine sixteen — were flagged by neither Bandit nor Semgrep.
- 16:19damra: Put those three next to each other and you get the same failure in evaluation, in research, and in code review. The agent produces something that passes the check, and the check was measuring the wrong surface. You've got trajectories gaming the reward at sixty-nine percent, right answers standing on evidence the model never retrieved, and clean scans sitting over exploitable code. In all three, the green light means less than the person reading it believes.
- 16:46lenar: All three are first-version preprints with self-reported numbers, so treat them as claims rather than results. But they're claims with released datasets and reproducible setups, and the BenchShield trajectory set in particular is something you could run against your own agent logs next week.
- 17:03lenar: A few smaller things. First, a proposal called terms dot txt, from Rajarshi Chowdhury. It's a robots dot txt-style file, except it carries per-path, per-purpose terms for machine access. Behind it sits an origin-enforced exchange. An agent presents a Web Bot Auth signature and a signed statement of intent, it carries a delegation token, it negotiates price over HTTP 402, and it walks away with a signed receipt. Overhead measured at zero point two to zero point six five milliseconds per request on a single virtual CPU.
- 17:38damra: The 402 status code has sat in the HTTP spec marked reserved for future use for most of thirty years, and somebody finally wrote the future use. Whether anybody adopts it is a separate question. Robots dot txt works because crawlers chose to honor it, and this asks agents to honor something with money attached. But sub-millisecond overhead removes the easiest excuse for not trying it, which is that it would slow the origin down.
- 18:07lenar: Second, SemVerBench, from Qibai Chen and Zeming Liu, testing whether models understand version-constraint resolution. Cargo's caret semantics trap every model they tested at around sixty percent. GPT-5.1 goes zero for twenty-six on the PEP 440 corner cases involving zero-padding and post-releases. Claude holds between ninety-seven and a hundred percent on a sixty-seven-item oracle set. And the paper's recommendation is the sensible one: stop asking the model, and call a resolver.
- 18:38damra: Zero for twenty-six is a wonderful number, because it isn't noise. A model that's guessing gets some of them. Zero out of twenty-six means it learned a rule that's confidently wrong and applies it every single time. And version-constraint resolution is exactly the kind of task where a coding agent will sound certain and hand you a dependency graph that doesn't build.
- 19:01lenar: Two systems papers. AgentZip is memory compression built for agent sandboxes. It exploits page redundancy across sandboxes running from the same template, and it schedules the expensive compression work for the periods when the agent is waiting on the model. Eight point seven times reduction in sandbox-owned memory, against two point one for the standard Linux configuration. And HISA replaces the indexer in fine-grained sparse attention with a two-stage hierarchical search instead of a flat token scan. No additional training, dropped straight into DeepSeek-V3.2 and GLM-5, with quality matching the original.
- 19:38damra: Papers like these show up when people are running these systems in volume rather than demoing them. You don't write a memory compressor for agent sandboxes until you're paying for a great many agent sandboxes. The scheduling trick is my favorite part — compress while the agent is blocked on the model, because that dead time is free and there's an enormous amount of it.
- 19:58lenar: Two on money. CNBC reports the catastrophe bond market circling data centers, with a first dedicated deal possibly inside twelve to eighteen months. No such deal exists. That's a projection from people who would sell one. But it means somebody is trying to price physical risk on these buildings as a tradable instrument, and to do that you need a loss model, which means somebody has to write down what a data center failure costs.
- 20:25damra: Alongside that, an IDCA report via Computer Weekly, and these are IDCA's own figures rather than an independent count. The United States holds forty-three percent of world data center power, and that's six percent of American electricity. China holds thirteen percent of the world's, which is zero point eight percent of Chinese electricity. Singapore is at nineteen and a half percent of national electricity, and Hong Kong at six. Seven European countries sit above the United States on that measure. Concentration and grid strain are two different stories, and those numbers pull them apart.
- 21:02lenar: Last one. The Guardian and TechCrunch both have OpenAI's fight with mathematicians escalating — ten thousand agents pointed at a Millennium Prize problem, at an estimated fifteen million dollars of compute. Estimated, and I'm not naming which problem until I've seen that confirmed. The phrase carried in the Guardian piece is immature playground boasting, which tells you the temperature on the mathematics side. We covered the authorship dispute on Wednesday and I'm not reopening it.
- 21:32damra: Fifteen million dollars for a partial result on a problem that's been open for decades is either a rounding error or an obscene amount of money, depending on whether it works. That's the whole business model of the last two years, expressed as one line item.
- 21:46lenar: Two months before Hugging Face, a volunteer-run registry absorbed two thousand packages and a remote code execution on its documentation host, and as far as that community can tell, nobody ever called them about it. Kitts, Larsen, and Von Arx have the whole writeup at rubyhack dot ai. I'm Lenar Kess.