Stealth tools · Sep 25, 2026 · 5 min read
CloakBrowser review: 87 patches and noise switched on
CloakBrowser reviewed for AI agents: what its 87 Chromium patches cover, why noise and a new seed per launch are on by default, and where Playwright remains.

In short
CloakBrowser went from a repository created in February 2026 to 31,674 GitHub stars by September, and it did so with a promise developers want to hear: keep your Playwright code, swap the browser, and the detection goes away. We read its README, its defaults and its own test table on 24 September 2026, and set them next to what we measured on the same axes.
What is CloakBrowser?
CloakBrowser is a patched Chromium build with Python and JavaScript wrappers that its README calls a "Drop-in Playwright/Puppeteer replacement for Python and JavaScript". The wrapper launches the patched binary with its own arguments and returns an ordinary Playwright Browser object, so existing code keeps its API. The repository is MIT licensed and belongs to an organisation account. The newest build is free with a GitHub sign-in for one concurrent session, larger concurrency is a paid Pro plan, and an older Chromium 146 build stays free on the releases page.
What do its 87 patches cover?
The 87 patches cover most of the surfaces a page reads through JavaScript, plus some below it. The README lists "canvas, WebGL, audio, fonts, GPU, screen, WebRTC, network timing, automation signals, CDP input behavior", and its test table claims a TLS fingerprint "Identical to Chrome". Two things about that table deserve credit: it runs every check against stock Playwright as a control, and it names the detection service and the build for each row.
One row needs context. The table reports a reCAPTCHA v3 score of 0.9 against 0.1 for stock Playwright. On a fresh site key with no visitor history, reCAPTCHA v3 returned a constant 0.9 to every browser we tried, including an untouched Chrome, so that row says little unless the key has a history.
Why is noise on by default a problem?
Noise on by default is a problem because an added offset produces values no real device draws, and a checker can see that. CloakBrowser's own troubleshooting table lists "Noise injection detected by ML" as a known cause of being flagged, with --fingerprint-noise=false as the remedy, so the switch sits in the table of problems rather than in the defaults. We measured the same thing on our own engine before we removed our noise.
| CloakBrowser default | What we measured on that axis | Result |
|---|---|---|
| Canvas, WebGL and audio noise on | canvas readback with a seeded offset, 5 profiles on one machine | 5 of 5 distinct hashes, flagged as manipulated |
| A fresh random seed at every launch | a returning profile with a new device each time | not measured; the README itself warns about it |
| On Linux, the wrapper presents Windows | our own Windows persona over a Linux engine | removed on 11 September 2026 as a contradiction |
The second row is CloakBrowser's own warning: its README advises a fixed seed when revisiting a site, because "a random seed makes every session look like a different device". The seed exists as --fingerprint=seed; the default is the random one.
What does the Linux wrapper do?
On Linux the wrapper passes --fingerprint-platform=windows, so a browser running on Linux reports itself as a Windows desktop. The README is candid about the cost: a Windows browser without Windows fonts "is itself a bot tell", and the warning about missing fonts can be silenced "if you accept the tradeoff". We ran the same idea ourselves and removed it: a Windows persona over our Linux engine showed a Direct3D renderer string over OpenGL or Vulkan pixels, Linux text rasterisation and Linux emoji under a Windows user agent. Since then a profile only starts on the operating system its persona names.
Why patch Chromium but keep Playwright?
CloakBrowser patches Chromium thoroughly and keeps Playwright as the way to drive it, and Ian L. Paterson's benchmark of 7 tools against 31 targets names that control plane as the limit: "Playwright forks fail regardless of patch quality, and defeating that layer takes a control plane that is not Playwright." CloakBrowser reached 26 of 31 targets there, 3 gated and 2 blocked, and only nodriver, which drives Chrome over CDP without Playwright, had no block at all. The README makes a related point about the other wrapper: it recommends Playwright over Puppeteer for reCAPTCHA Enterprise, because "Puppeteer's CDP protocol leaks automation signals". Our comparison of seven stealth tools for automation puts the control plane first for the same reason.
So which should you pick?
| Situation | Pick | Why |
|---|---|---|
| Existing Playwright code, one-off runs | CloakBrowser | one-line swap, broad source-level patches |
| The same accounts every day | CloakBrowser with a fixed seed and noise off | the defaults give a new, noisy device per launch |
| Linux servers presenting Windows | a machine that runs the OS it claims | fonts, text and GPU output reveal the real one |
| Targets that fingerprint the automation protocol | a driver that is not Playwright | the benchmark's cliff sits in the control plane |
Our verdict: CloakBrowser is a thoroughly patched Chromium build that publishes its test table with a control column, and for a one-off job it is a one-line improvement over stock Playwright. For an agent that keeps accounts, change two defaults on day one, pass a fixed seed and turn noise off, and run it on the operating system it claims. The migration guide for Playwright and Puppeteer shows how the same code attaches to a profile over CDP instead.
Scalebrowser gives each agent its own isolated browser with a persistent identity, on your own machine, so a run stays signed in, handles the captcha and finishes without anyone watching it.
Start the 7-day trialRun it on your own machine
Seven days to try it with your own agents on your own sites. Starting the trial needs a card.