Platform Update30 September 2026

Microsoft and GitHub Sign-In Are Here, and Scans Are Now More Stable

Microsoft and GitHub Sign-In Are Here, and Scans Are Now More Stable

Microsoft and GitHub Sign-In Are Here, and Scans Are Now More Stable

This update has two halves: one you can see and one you mostly can't. The visible part is new ways to sign in. The rest is a set of stability and accuracy fixes, some of which came from a customer who took the time to send us detailed feedback.

Sign in with Microsoft or GitHub

Decloak sign-in used to mean Google, a passkey or an email magic link. Two more options are now live:

The full set is now Google, Microsoft, GitHub, passkeys and email magic link.

The reasoning is simple. Security teams and developers already live in Microsoft 365 or GitHub, and those accounts are usually protected with SSO and MFA. Signing in with an account you already protect is easier, and safer, than creating another password.

On privacy: Decloak never sees or keeps your password or the provider's token. The provider confirms who you are once, and then Decloak runs its own session. Every provider goes through the same callback flow, so team setup, redirecting you back to the page you came from and the MFA step all behave the same whichever button you click.

The browser crash that could take other scans down

This is the part we found most interesting, and it needs a bit of context.

The problem

Decloak drives a real browser with Playwright, an open-source automation library, to load pages the way a visitor would. There is a long-standing bug in Playwright itself: an internal "Assertion error" in its frame handling that fires during a race while a page is adding iframes. It has been open upstream for years, and the maintainers have never been able to reproduce it reliably.

The error is thrown from inside Playwright's own event handling, not from code we call, so no try/catch in our code can catch it. It surfaces as an unhandled error and takes down the whole process.

Why it mattered

Our background worker ran every job queue in one process: free scans, agent scans, pentests, webhooks and content jobs. So one bad page didn't only fail its own scan. It killed every other scan running at that moment, and those later showed up as confusing "stalled job" failures.

What set it off

Embedded video players, especially autoplaying ones. YouTube first, then Vimeo. They create and tear down iframes rapidly, which is exactly the race that trips the bug.

What we did

  1. Contain it. Global crash handlers now shut every queue down cleanly, alert us and let the worker restart. Before this we found out by reading raw logs.
  2. Reproduce it. We wrote a test harness that runs each attempt in its own child process, so a crash doesn't stop the test. With YouTube embeds blocked, we saw no crashes in all 32 test runs.
  3. Retry safely. Agent scans now retry automatically after a crash only if nothing had been saved yet. Otherwise they fail cleanly, so we never duplicate findings or waste AI spend.
  4. Block video players up front. YouTube, YouTube-nocookie, Vimeo and Wistia player iframes are now blocked on every scan, not just on retry. The request is logged before it is blocked, so the video host still appears in your third-party domain report. We only block embedded frames, so scanning youtube.com itself works as normal.

Reliability: retries, timeouts and headroom

Accuracy fixes that came from customer feedback

That last one matters most. A scanner that reports a clean score when it couldn't look is worse than one that says nothing.

Keep the feedback coming

Most of the accuracy work above exists because someone told us a result looked wrong. If a scan gives you something that doesn't add up, tell us. We would rather fix a false positive than have you learn to ignore the report.


Sign in with Google, Microsoft, GitHub, a passkey or a magic link, and run your first scan free. Try Decloak →