No. 8 Wednesday 21 October Game dev, software and AI

Browsers already block the leaked certificate keys. Your servers might not

Eight certificate authority keys anyone can recover, and the fix that has to reach every container and runtime, not just Chrome. Also: TypeScript gets faster twice, curl opens its bug queue, and a game that ships its own bot army.

The short version

  • Games and software The private keys of eight eMudhra intermediate certificates can be recovered by anyone. Browsers blocked them; servers, containers and runtimes need their own updates, and Node.js and Bun were still pending.
  • Software and AI TypeScript 7.1 beta type-checks up to 1.9x faster than 7.0 on the team's test projects, and Cloudflare showed an experimental Rust port it says is up to 8x faster again.
  • Software and AI curl will take low and medium security reports in public from October 26, to cope with a flood of AI-found reports. Two critical PHP fixes land today at 14:00 UTC.
  • Game dev About 36% of Steam Next Fest demos now disclose generative AI, up from nearly 20% in June. GameDiscoverCo argues most studios should still keep their demos up.
  • Game dev A solo developer ran 37,800 bot playthroughs in 154 seconds inside the shipping build of a new Steam game, and found six ways to print money.
Games and software Do this

Eight leaked certificate keys: patch more than your browser

A certificate authority made eight of its signing keys so badly that anyone can work them out, letting an attacker fake a secure connection to any website. Browsers were patched fast; much other software was not.

ContexteMudhra is an Indian certificate authority whose certificates chain up to roots trusted by Mozilla, Microsoft, Apple and Google.

Who still accepts a certificate forged with a recovered key depends on which trust bundle does the checking. Status as listed on the incident page on October 20.

On October 17 a researcher showed that the private keys of eight eMudhra intermediate certificates, created in April 2025, can be recovered from the certificates themselves. The proof was a message signed with every one of them. With such a key, anyone can issue a valid-looking certificate for any domain.

Firefox and Chrome blocked the certificates the same day, Apple on October 19 and Microsoft on October 20, and eMudhra has revoked them. No certificates from these intermediates appear in the public logs browsers require, so browsers were probably never exposed. Nobody knows whether attackers used the keys against other clients.

Those other clients are the problem. Servers, scripts, mobile apps and containers often check certificates against a bundle shipped with the operating system, the language runtime or a library, and many never check revocation. Each of those bundles has to be updated, and every container image rebuilt.

8intermediate certificates whose private keys anyone can recover

Technical details

Fixed versions listed by the incident page: Go 1.27.3 and 1.26.10; Python certifi 2026.10.19, pip 26.2.2, uv 0.13.4; rustls-webpki 0.103.16 and webpki-roots 1.0.10; Electron 44.9.1, 43.8.1, 42.11.16; NSS 3.131.1; the curl CA bundle of 2026-10-20; Composer ca-bundle 1.4.16 and 1.6.0; Alpine ca-certificates 20261020-r0; Debian 20250419+deb13u1 and 20250419~deb12u2; Ubuntu 20260816ubuntu0.24.04.1 (and siblings); Homebrew ca-certificates 2026-09-25_1; cloudflared 2026.10.2. Pending: Node.js, Bun and FreeBSD ca_root_nss.

Test hosts: https://dv-g3b-emudhra.we-have-a-problem.com/ and https://dv-g3b-aaa-emudhra.we-have-a-problem.com/. A certificate error means the client no longer trusts the compromised intermediates; a page that loads means it still does. The affected roots are Comodo AAA Services and emSign ECC Root CA - G3.

Cloudflare's advice: update the HTTP library, runtime and OS trust store underneath your SDK, not just the SDK; rebuild images and restart services; never fix new certificate errors by turning verification off; and test through the application's real connection path, because a passing browser or curl test does not prove a background service is protected.

Why it mattersMost production traffic between services never touches a browser. Until each runtime, base image and app bundle is updated, a forged certificate from these intermediates could pass as real there.

For youRebuild the Docker images behind the SaaS backends and CI, and keep an eye on Node.js: it is the runtime the Supabase edge and Node services depend on, and its fix was still pending. Flutter apps that pin their own bundle need the same check.

certificate authority
An organisation trusted to vouch that a website really is who it says, by signing its certificate.
intermediate certificates
Certificates a certificate authority uses for day-to-day signing, themselves signed by a more carefully guarded root.
private keys
The secret half of a key pair; whoever holds it can sign things that others will trust.
revocation
Marking a certificate as no longer valid before it expires, so clients that check will reject it.
bundle
The list of trusted root and intermediate certificates a program uses to decide which connections are genuine.

Sources eMudhra intermediate CA compromise (incident page)Cloudflare: 8 eMudhra certificates are compromisedSimon Willison: eMudhra intermediate CA compromise

More like this Less like this

Patch, check, lock down

Security work that cannot wait, and a safer way to let agents watch production.

Software and AI News

curl moves minor security reports into the open

The team behind curl, a networking tool inside billions of devices, is drowning in security reports, many found by AI. From October 26 it will handle the less serious ones in public instead of in private.

We aim to not drown.

Daniel Stenberg, curl's lead developer

From October 26, reports rated low or medium go to public GitHub issues; only high and critical stay private. Stenberg says over 90% of recent reports could quickly be rated below high.

Why it mattersOpen source projects are rewriting their security process around a flood of AI-generated reports. Expect a faster, noisier stream of curl advisories in the base images you ship.

For youIf you ever publish a security policy for the plugins, this is a template: keep only the serious tier private.

curl
A widely used tool and library for fetching things over the internet, built into countless apps and devices.

Sources Daniel Stenberg: do minor curl vulnerabilities in the open

More like this Less like this

Software and AI Release

GitHub puts a firewall between your agents and npm

GitHub is testing a filter that sits between the machines that install packages (build servers, coding agents) and the npm registry, and blocks downloads that look malicious or are too new to trust.

Install-time malware steals credentials the moment a package is installed, and agents install packages unattended. The firewall checks every request on the way through.

The flow described in GitHub's changelog. Blocked packages can be released through an exception request.
Technical details

Public preview for all GitHub Enterprise Cloud customers, including data residency; free during the preview, metered billing like Actions at general availability. Endpoints have to be configured to route package requests through the firewall.

Why it mattersA cooldown on brand-new package versions is the cheapest defence against the poisoned-update attacks that keep hitting npm, and it matters more when an agent runs the install.

For youThis is Enterprise Cloud only, so not directly usable on a personal account; the cooldown idea is the part to copy into your own install habits for agent sessions.

npm
The main package registry and installer for JavaScript and TypeScript code.
cooldown
A waiting period during which newly published package versions are not installed, giving time for malware to be spotted.
attestation downgrades
A package version that suddenly arrives without the signed build proof its earlier versions had, a sign of tampering.

Sources GitHub changelog: package firewall in public preview

More like this Less like this

Software and AI Do this

Two critical PHP fixes land today

PHP's security team warned that it will release fixes for two critical vulnerabilities today, so anyone running PHP should be ready to update this afternoon.

14:00UTC today, October 21: release time

9.2severity of each flaw (CVSS 4.0, out of 10)

The announcement names no affected versions or bug ids yet, and says the release may come early if details leak or attacks start. A claim on Hacker News of two 10.0 flaws does not match the official notice.

Why it mattersWordPress sites, marketing pages and old admin tools run on PHP even in stacks that are otherwise Node or Go. Find them before the details go public.

For youCheck whether any landing page or Composer tooling still runs PHP; the core stack does not.

CVSS
A standard 0 to 10 score for how dangerous a security flaw is.

Sources php.announce: upcoming critical security release

More like this Less like this

Software and AI Release For practitioners

Supabase hands your coding agent a read-only view of production

Supabase published ready-made prompts and tools that let a coding agent check a live project's health, security and speed on a schedule, without being able to change anything.

Show the details

Connect Supabase's MCP server to one project in read-only mode, then install the updated agent skill:

claude mcp add --scope project --transport http supabase "https://mcp.supabase.com/mcp?project_ref=abc123&read_only=true"
npx skills add supabase/agent-skills

Replace abc123 with your project ref, then authenticate under /mcp. With read_only=true every query runs as a read-only Postgres user, and a new query_logs tool reads up to 24 hours of logs per call.

Four prompts come with suggested schedules: health and performance hourly, security and resource growth daily. Scheduled runs cannot stop for approval, so pre-approve only the read-only tools, and run each prompt once by hand first.

Technical details

Also shipped: a Health tab in Advisors and a Database Connections page in the dashboard (on for every project, including self-hosted; it can cancel queries, so it is not read-only). The prompts tell the agent to ignore instructions found inside logs or query results. To report only new or worsening findings, the agent tool has to keep alert state between runs. For small projects Supabase suggests one prompt on a daily or weekly schedule.

Why it mattersIt is a ready-made pattern for letting an agent watch production: read-only credentials, narrow prompts, and reports that list only new problems.

For youThis drops straight into a routine for the Supabase-backed SaaS products: start with the daily security prompt on one project.

MCP
Model Context Protocol: a standard way to give an AI agent tools, such as querying a database.
Postgres
The open-source database Supabase is built on.

Sources Supabase: check production with your coding agent

More like this Less like this

Faster tools

TypeScript gets quicker from two directions, and Claude Code fixes a gateway bug.

Software and AI Release

TypeScript 7.1 beta checks big projects up to twice as fast

The TypeScript team's next version finds type errors faster than the one released this summer, with the biggest gains on the largest projects in its tests.

Speedup over TypeScript 7.0 when checking types only, with four checker threads, as measured by the TypeScript team.

Vendor-reported. mui-docs went from 22.2 s to 11.9 s; memory use fell 16% to 50% across the five projects.

Technical details

Install with npm install -D typescript@beta. New: --target es2026 is stable, import source declarations, Promise.allKeyed, Iterator.zip and Iterator.prototype.chunks under --lib esnext, new typescript/sync, typescript/fs and typescript/ast API entry points, and content mappers for Vue, Svelte and MDX. Breaking: a regenerated DOM lib.d.ts and stricter checks on distributive type parameters.

Why it mattersType checking is the cheapest test a coding agent can run on its own changes. Faster checks mean tighter agent loops and shorter CI runs.

For youTry the beta on one of the React or Node repos and time tsc --noEmit before and after; read the breaking changes first.

type errors
Mistakes such as passing text where a number is expected, which TypeScript catches before the code runs.

Sources Announcing TypeScript 7.1 Beta

More like this Less like this

Software and AI News

Cloudflare ports the TypeScript compiler to Rust

Cloudflare and VoidZero built an experimental Rust version of the TypeScript checker that they say runs much faster than the official one.

8xfaster than TypeScript 7.0, same thread count (vendor)

-70%memory use (vendor)

Called tsrs, it is not a fork: the TypeScript team still decides the language. Output still differs from the original in places. Cloudflare plans to keep it in step with agents that track upstream changes and propose fixes.

Why it mattersLarge ports that took teams years now take months, and keeping them in sync is becoming an agent's job.

For youNot ready to depend on; worth watching for the agent-driven upstream sync, which is a pattern for keeping a plugin fork current with engine releases.

fork
A copy of a project that goes its own way, with its own decisions about features.

Sources Cloudflare: tsrs, a port of TypeScript to Rust

More like this Less like this

Software and AI Release For practitioners

Claude Code 2.1.305 and 2.1.306: the changes worth knowing

Two Claude Code updates fix a bug that broke every request behind some company gateways, stop resumed workflows redoing finished work, and quietly change which managed MCP servers load.

Show the details

Version 2.1.305 is a large release; 2.1.306 followed with two fixes. Update to 2.1.306.

Why it mattersIf you run Claude Code through a cloud provider or a company gateway, 2.1.304 could stop it working; and the MCP allowlist change can load a server you meant to keep off.

For youCheck managed-mcp.json after updating, and the Chromium sandbox setting is what Playwright tests for the three.js games need inside the sandbox.

gateway
A proxy a company puts between its staff and an AI provider to control access and costs.
compaction
When an agent summarises its earlier conversation to free up room in its context.

Sources Claude Code v2.1.305 release notesClaude Code v2.1.306 release notes

More like this Less like this

Next Fest, clones and ratings

How much of the demo festival uses AI, whether cloners should change your plans, and a new age rating rule.

Game dev Lesson

Should you pull your demo because of AI cloners? Usually not

After two well-wishlisted games pulled public demos over fears of AI-assisted cloning, the games market analyst GameDiscoverCo set out when that fear is justified and when it is not.

Drunken Goddess Reflux, with an estimated 570,000 wishlists, cancelled its public demo, and ReVamp, with about 250,000, swapped its Steam playtest for a closed one. GameDiscoverCo's view: most clones are made by hand, are not popular and do not scale, so they are not worth losing a demo over.

  • Complex game, some momentum, distinctive name: keep the demo and playtests.
  • Simple, casual, meme-able idea with a searchable name: shorten the gap from reveal to launch instead.
  • Ignore unpopular fast-follow clones.
  • If a decompiled copy of your code takes off, document it and report it to Steam as copyright infringement.
Technical details

GameDiscoverCo cites the needle-in-a-haystack micro-genre as the clone case: a simple concept shown in videos in late August, with no playable version, was copied quickly because the idea was simple and the name searchable. The same post notes Next Fest had about 7,100 playable demos against about 5,000 predicted by the trend line.

Why it mattersDemos remain one of the strongest wishlist drivers on Steam. Pulling one out of fear costs real players for a risk that mostly hits simple, copyable ideas.

For youPlugin-based action RPGs are hard to clone from a demo; the risk applies more to a small, searchable browser game concept.

wishlists
Players saving a game on Steam to be told when it launches; the main early sign of demand.
decompiled
Turned from a shipped program back into readable source code.

Sources GameDiscoverCo: should your discovery plans change due to AI?

More like this Less like this

Game dev Trend

More than a third of Next Fest demos now disclose AI

The share of games in Steam's demo festival that say they used generative AI has nearly doubled since June, and players are asking for a way to hide them.

36%2,593 of 7,145 Next Fest games (SteamDB)

~20%in June's Next Fest

Valve has not commented and offers no official filter. Disclosures are self-reported and not checked.

Why it mattersOn a crowded store page an AI label is now a visible signal players react to, for better or worse.

For youKnow exactly what your disclosure says and why before a launch; AI used only for code does not need one.

generative AI
AI that produces new content such as images, text, voices or music.

Sources PC Guide: Next Fest has even more generative AI

More like this Less like this

Game dev News

Games with loot boxes are being re-rated 16 in Europe

Games already on sale that let players pay for random rewards are getting a PEGI 16 age rating, not just new releases.

PEGI's paid random items rule, from criteria to re-rating:

  1. New criteria announced: paid random items mean a PEGI 16 rating.

  2. Applied to new games submitted for a rating.

  3. Existing digital games re-rated, including through IARC on mobile stores; Pokémon TCG Pocket and Fire Emblem Heroes among them.

Why it mattersA 16 rating hides a game from younger players and family settings on stores across Europe, so random paid rewards now carry a reach cost.

For youAny gacha or crate monetisation in a mobile game would now cost the under-16 audience in Europe.

PEGI
The age rating system used for games across most of Europe.
IARC
A shared questionnaire that gives digital games age ratings on stores such as Google Play.

Sources PocketGamer.biz: loot box games get PEGI 16

More like this Less like this

Let bots playtest

A solo developer shipped a game with its own bot army, and it found six ways to print money.

Game dev Lesson

37,800 bot runs in 154 seconds, inside the shipping game

A solo developer built a balance-testing harness into the actual build of a new Steam trading game: bots of three skill levels play thousands of seeded runs, and the numbers show which loops break the economy.

O'BLOCK screenshot: a pixel-art Chicago block at night, with lit apartment towers, a glowing corner shop and a few people on the street.
Image: O'BLOCK, Steam store

O'BLOCK, a free sneaker-flipping game, launched on Steam on October 20. Its developer says Claude Code wrote most of its 40,000 lines, while they designed the game, set the rules and decided what was fun.

  1. Put the harness in the real build

    One environment variable skips the window, plays headless bot runs and writes a report, so the tests run against exactly what players get.

  2. Write three kinds of player

    A random button-masher, a sensible player who reads prices, and an exploit seeker that hunts for loops. All see only what a human sees and obey the same limits.

  3. Run many seeds per mode

    300 seeds per cell across four modes: 37,800 full runs in 154 seconds on two threads, each replayable from its seed.

  4. Check invariants

    No negative cash, no NaN money, no empty stacks. The run found zero violations.

  5. Compare the bots

    In the open-ended mode the seeker's 90th percentile net worth was about 16 times the sensible player's, which pointed to six money printers, such as same-day buy and resell.

Technical details

Bots are a Policy enum in the game's Rust code: Random, Reader and Seeker. In the billion-dollar mode, Random was evicted every time, Reader won 81% (median day 43) and Seeker won only 7%. In the 90-day tycoon mode, p90 net worth was $21.48B for Random, $914.62B for Reader and $14,460.33B for Seeker. Exploits measured per dollar in: top-rung mark multiplier 27.1x, stacked angles 12x, lot slicing 6.55x, connects 6.34x, relisted outlet pallets 2.49x, and same-day resale returning 1,763.8% across 9,812 sales. Seeker runs past the sane bound fell from 493 of 4,200 on October 6 to 73 after four passes of fixes; the launch build measured 82.

The developer also notes an AI-written report that listed three exploits as live after the CSV showed them fixed: check generated summaries against the raw data.

Why it mattersAgents now write game code fast enough that balance and economy bugs pile up faster than people can playtest. Bots that play the real build turn balance into a number you can track.

For youThe inventory and combat plugins could ship a headless harness like this as a feature: a simulated player per policy, run in CI, with a per-bot table in the report.

headless
Running a program without a window or screen, so it can run fast on a server.
seeds
Starting numbers for the random generator; the same seed replays the same game exactly.
invariants
Rules that must always be true in a program, such as cash never going below zero.
90th percentile
The value that 90% of results fall below; a way to look at the best runs without the single luckiest one.

Sources Matt Busel: 37,800 bots crashed my vibe-coded gameO'BLOCK on Steam

More like this Less like this

Learn one thing

What is a chain of trust, and why can one bad link break it?

When your app connects securely to a server, the server shows a certificate, signed by an intermediate, signed in turn by a root your system already trusts. Your app accepts the server only if every signature in that chain checks out.

Think of it like thisLike a passport: a border officer trusts it because a government issued it, and trusts the government's stamp because it is on a short list they already hold. Steal the stamp and you can print passports anyone will accept.

Roots are kept offline and used rarely, so certificate authorities do daily signing with intermediates. That makes an intermediate's private key as powerful as the root for anyone who gets it: they can sign a certificate for any domain, and clients will follow the chain up to a root they trust.

Two things limit the damage. Revocation lets clients learn that a certificate should no longer be trusted, and certificate transparency logs make every issued certificate public, so browsers that require a log entry refuse certificates nobody has seen. Many non-browser clients do neither, which is why today's leaked keys need fixes in every trust bundle.

Each layer vouches for the one below. A client trusts the server only if every signature leads to a root in its own trust bundle.
root
A top-level certificate that operating systems and browsers ship with and trust without question.
certificate transparency
Public, append-only logs of every certificate issued, so misissued ones can be spotted.

Try this today

Game dev 45 minutes For practitioners

Give your game three bots and let them play overnight

A small headless harness with a random, a sensible and an exploit-hunting player turns game balance into a table of numbers you can compare after every change.

You needA game or gameplay system whose rules can run without rendering, such as an economy, a crafting loop or a combat simulation.

  1. Add a headless switch

    Behind an environment variable or command-line flag, skip the window and run the game loop as fast as it will go, writing results to a file.

  2. Write three policies

    Random picks any legal action. Sensible follows the obvious good play. Seeker repeats whichever action gained the most last time. Give them only what a player can see.

  3. Seed every run

    Run a few hundred seeds per bot and record the seed with each result, so any odd run can be replayed exactly.

  4. Assert your invariants

    After every step, check the rules that must hold: no negative money, no impossible counts. Fail the run with its seed when one breaks.

  5. Print a per-bot table

    Median and 90th percentile of your main score for each bot. Put it in CI, so a balance change shows up as a number in the build log.

You know it worked whenRandom loses, sensible wins most runs, and the seeker does not beat the sensible player by a wide margin. If it does, replay its best seed to see which loop it found.

For youStart with the inventory plugin's crafting and trading loop as a commandlet that runs headless in the editor build.

policies
The rules a bot uses to choose its next move.

Sparks

What is catching on right now, and the idea worth borrowing from each.

The lab

Research from the front line, in plain words: what it solves, how, and what you could do with it.

Software and AI PreprintarXiv preprint

Squeeze a coding agent's old tool output, and it uses a third fewer tokens with no loss of success.

TraceLite: Efficient Trace Reduction for SWE Agents via Optical Compression and Redundancy RemovalJingyu Xiao, Qianxi Liu, Yintong Huo et al. (Chinese University of Hong Kong, Dalian University of Technology, Singapore Management University)

TraceLite overview: an agent loop; older observations turned into compact images while recent ones stay as text; overlapping lines removed and history cleared after an edit.
Image: Xiao et al., arXiv
The problem
A coding agent's context grows with every command it runs, and most of the old output is stale or repeated, which costs money and attention.
The idea
Keep the three newest observations as text, render older ones as images at four times compression, strip lines repeated between observations, and clear old file dumps after an edit. No training and no extra model calls.
The result
On 400 SWE-bench Verified tasks it solved 78.25% against 78.00% with the full trace, with 33% fewer input tokens. It beat AgentDiet, SWE-Pruner and LLMLingua2 on solve rate; LongCodeZip cut more tokens but solved 13.75 points fewer.
Use it
The cheap half works without vision: dedupe repeated lines in tool output and drop stale pre-edit file contents, then compare tokens per task on a few of your usual jobs.

For youA PostToolUse hook that trims repeated test and build output is the experiment to try.

More like this Less like this

  1. Idea
  2. Prototype
  3. Code released
  4. Shipping

ReadarXiv: TraceLiteCode on GitHub

Software and AI PreprintarXiv preprint

Nearly two thirds of coding-agent pull requests change code without touching any documentation.

Documentation Drift in AI-Generated Pull RequestsWill De Michele, Kla Tantithamthavorn (Monash University)

Bar chart of documentation co-change rate by pull request type: feat 44.8%, chore 43.9%, docs 43.2% down to ci 12.7% and style 11.2%; overall 36.8%.
Image: De Michele and Tantithamthavorn, arXiv
The problem
Agents now open many pull requests on public repositories. Nobody had measured whether they keep the docs in step with the code.
The idea
Check 29,669 agent pull requests from 2,585 repositories for whether code changes came with a documentation change, by agent and by kind of task, and follow the files for 90 days.
The result
63.2% changed code with no doc update: 55.2% of feature work and 77.5% of refactors. Claude Code had the lowest rate at 48.1%, Devin the highest at 72.8%. Files changed without docs were re-documented within 90 days 24% of the time, against 48% for documented ones.
Use it
Add a check to your agent's review step that flags code changes with no matching README, docs or changelog edit when behaviour changes.

For youPlugin buyers read the docs; a doc co-change check in the plugin repos' review skill is cheap.

More like this Less like this

  1. Idea
  2. Prototype
  3. Code released
  4. Shipping

ReadarXiv: Documentation Drift in AI-Generated PRs

Also moving

This week on Toa Radar

Read the weekly summary: The week agents got fences and rulebooks
Tune mode is on in this browser. Turn it off