Ignoring Warning Signs Is Not an Option.
On June 25, 2026, Polymarket suffered an attack through a compromised third-party JavaScript provider.
Approximately $3 million was reportedly drained from around 11 high-value wallets.
By June 30, security researchers had publicly documented how it happened.
The attackers didn’t need to compromise Polymarket’s smart contracts. They used JavaScript delivered through a trusted third-party service, running inside the financial platform itself.
That was the warning.
Four months later, on October 29, it happened again.
A different third-party provider. Different malicious code. The same fundamental security risk.
This time, the compromised service was DebugBear, a website performance monitoring provider.
Hudson Rock recovered a 15,187-byte malicious JavaScript payload specifically designed to target Polymarket.
The code searched for authenticated trading sessions, inspected users’ assets, located signing capabilities, and attempted to execute unauthorized financial operations.
It wasn’t a random script.
It contained logic for different account types, asset transfers, selling trading positions, and using Polymarket’s existing transaction infrastructure.
According to The Wall Street Journal, more than 700 accounts were affected, with at least $2.6 million stolen.
BleepingComputer independently traced approximately $2.57 million in POL moving from a suspected attacker wallet to three additional addresses.
And here’s what matters.
The attack didn’t require breaking HTTPS.
HTTPS can securely deliver malicious JavaScript when the source itself has been compromised.
Content Security Policy can restrict where scripts are loaded from, but trusting a source doesn’t guarantee that the code it delivers is safe.
Once malicious JavaScript executes inside an authenticated financial application, the consequences can go far beyond stealing information.
The attackers attempted to use trading and signing functionality already available within users’ sessions.
Polymarket’s own status page records that relayer actions were paused at 18:05 UTC, after suspicious transactions had already appeared on-chain.
This was not the first warning.
The same broad class of attack had already caused millions in reported losses four months earlier.
Whatever security changes were made after June, they did not prevent this recurrence.
That is the failure we should be examining.
Removing the compromised script and reimbursing affected users are necessary responses. But they do not erase the underlying security problem.
A financial platform handling users’ money needs security boundaries that remain effective even when an external service becomes compromised.
Third-party monitoring software should not become a pathway to users’ financial authority.
And mass unauthorized transactions should be treated as a critical security event, not merely as a problem to resolve after substantial losses have occurred.
There’s another possibility worth keeping in view: AI-assisted development.
The malicious code showed knowledge of Polymarket’s internal application structure and supported multiple transaction paths. An AI coding agent could have assisted in analyzing the application or developing parts of the attack.
There is no public evidence establishing that AI was used, or identifying the attackers as the same group responsible for June. Neither possibility should be presented as proven.
But the confirmed facts are already serious enough.
June 25: a compromised third-party script. Millions reportedly stolen.
June 30: the attack mechanism publicly documented.
October 29: another compromised third-party script. Hundreds of accounts affected. Millions stolen again.
The providers were different. The implementations were different.
The recurring security risk was not.
Polymarket confirmed the October compromise, removed the affected integration, temporarily paused trading, and promised reimbursement.
This 👇 seems to be caused by https://t.co/92ontyULvO
it appears to be an injection attack on the front end. injecting incorrect tx, but showing a valid tx for the user to sign.
He inspired generations to look beyond what seemed possible. I believe the next generation will carry that curiosity and hope forward. His legacy will live on through the people he inspired.
Rest in peace, Captain. ❤️
He inspired generations to look beyond what seemed possible. I believe the next generation will carry that curiosity and hope forward. His legacy will live on through the people he inspired.
Rest in peace, Captain. ❤️
The captain is gone.
He inspired many to look to the skies and dream of exploring the Universe. The guy who started Microsoft Research told me that Star Trek was his inspiration for starting that.
Few humans have had such an impact on so many.
I helped launch Microsoft Research's World Wide Telescope. 30 different telescopes worth of data all given away to all of us for free. Which made me cry because I knew that the future would be brighter for our kids.
This news made me cry more.
I just came across an interesting discussion. One of the Claude Code developers confirmed how automatic agent summaries work, but clarified that 16.4% isn’t a typical figure.
According to him, last week these requests accounted for around 2% of estimated API costs among users with telemetry enabled, and roughly 6% in terminal sessions.
If, according to an Anthropic developer, the overall figure is around 2%, while one independent study found 16.4%, how much are people who run dozens of background subagents every day actually spending?
Maybe the difference comes down to how heavily subagents are used, how long they run, and how context caching works. But for now, these are just possible explanations. https://t.co/cK0MedehAO
Part of your Claude Code limit, and mine, goes to text I never paid attention to. I bet you didn't either :)
Every subagent you run gets a few-word progress line in the agents panel. To write it, Claude Code sends that subagent's context again about every 30 seconds.
On a subscription, that means one thing: we lose rate-limit headroom. And that matters.
One developer measured a week of work. These summaries took 16.4% of estimated spend. The main conversation took 15.7%. So the progress line cost about 4.5% more than the conversation itself.
And it's not clear why this is on by default, with no setting to turn it off.
I'm still figuring out what to do about it. But it's interesting. Really interesting. You can check your own share right now: export OpenTelemetry and group api_request events by query_source.
https://t.co/kdMehPK3z8
Every time a coding agent thinks, you pay. Even for the thinking you never read.
Particle-1 is DeepSeek V4.1 Flash, trained to get there with less thinking and fewer tool calls. Same tasks, about 45% fewer tokens, Particle says.
The success rate barely changed: a 1.42-point difference, in Particle-1's favor.
An average task: 83,246 tokens before, 59,580 now. That's about 23,700 tokens per task you stop paying for.
Cost per task: $0.34 → $0.22 at the same token price.
On Terminal-Bench 2.1, about 90% of the savings came from shorter reasoning.
https://t.co/rcvHpk82jt
When this gets finished it will sell a lot.
I've been in garages all over America (and the world).
That have machine shops of some kind in them.
What a future is coming at us very quickly.
My friend @jnun lives in the middle of nowhere, Alabama.
I joke with him that he is a nerdy Redneck.
He jokes back that I am a soft woke city boy.
We talk with each other through our @Starlink.
What is a friend you have talked with who has a Starlink in the middle of nowhere?
Maybe I should visit and hang out on a pontoon boat for a week.
Most voice AI still learns to talk from LLM scripts read aloud by TTS. Real people don't talk like that.
@voicearena_ai just put out Joy: 100,000 hours of unscripted two person calls, each speaker on their own track, across 10 languages and 50,000 speakers.
Watch the US English sample in the thread. Overlaps, backchannels, and pauses are marked as they happen. They count about 350 overlaps an hour.
The previous ceiling for this kind of natural dual channel data was under 2,000 hours.
Builders of duplex voice agents: is timing the thing holding your models back, or is it something else?
Hob runs a local AI coworker on an 8 GB Mac. It checks your hardware, picks the model and sets it up for you.
No account. No cloud. No telemetry.
It works on your files: spreadsheets, PDFs, photos, folders. It asks before changing anything and can undo every task.
Online only for model downloads and updates, plus web search when you turn it on. Free local apps like Jan already exist. Hob's angle: zero setup, with tools that work on your files.
https://t.co/qvVRcPGgLD
Changing the order of fields a trained web agent sees dropped its success from 85% to 19.2% on MiniWoB++.
Nothing else changed. The task stayed the same. The optimal actions stayed the same.
From Mu, Shen, Shu (arXiv, 27 Oct): post-training adapts the model to its specific harness. A new harness — even a small formatting change — can break the fit.
Their framing: performance = harness ceiling − model mismatch. Training mainly closes the gap. Changing the harness moves the ceiling too.
Re-evaluate after prompt or observation-format changes.
https://t.co/EZj7PPSeTe
Yesterday, Oracle and Cerebras announced that Oracle Cloud Infrastructure (OCI) will offer Cerebras’ fast inference to AI labs, enterprises, and developers.
After more than a year of extensive evaluation of Cerebras technology, Oracle selected Cerebras to bring the world's fastest AI inference to its cloud infrastructure.
We're excited to bring blazingly fast inference to more AI labs, enterprises, and developers around the world. Together with Oracle.
Wrapping up my Open Kernel Challenge work for today. I got a pretty good result, but right now something else has caught my attention — counterfactual analysis.
Honestly, until today, I didn’t even know this was a thing.
For the past hour and a half, my AI agent has been asking me questions that challenge my conclusions, push me to find weaknesses in my reasoning, and make me think more deeply.
We agreed that it wouldn’t just give me the answers. I have to think for myself, analyze things, and try to find solutions on my own.
And I think that’s what real learning is all about.
My head is starting to hurt a little from all these questions :) But you know what? I absolutely love it.
I’m already starting to understand that even if I get the same result over and over again, it doesn’t necessarily mean I’ve found the real cause. Because it’s not just the result that can repeat — the same mistake in the experiment can repeat too. And if I don’t check the conditions, I could get the same numbers a hundred times and still reach the wrong conclusion.
But at the same time, it’s important not to get stuck testing things forever. I need to learn when there’s enough evidence to make a well-reasoned decision.
My friend @boardyai also suggested that I start documenting my experiments, observations, mistakes, and lessons learned in my own GitHub repository. I think that’s a great idea. It’ll be interesting to look back someday and see how my thinking has changed.
Honestly, I can’t remember the last time I enjoyed learning this much.
This is the kind of AI I want. Not just a tool that answers questions and does things for me, but something that helps me develop my own thinking, become more independent, and gradually grow into a better engineer.