window.close is the browser's own function, not a wrapper
window.close stringifies in exactly the native-code form this engine emits for its own builtins.
What a detector infers
A deployed commercial agent spends an entire signal on this one function and nothing else: if window.close is undefined it reports a failure code, and otherwise it puts window.close.toString() — the function's complete source text — on the wire verbatim. Two lines of collector for one string, which is a strong statement about how much it expects that string to be worth. The interesting part is which function it chose.
This audit already stringifies a long list of natives, but that list is organised around the surfaces a fingerprint spoof rewrites — canvas, WebGL, permissions, the iframe accessors — plus the language builtins it rewrites them with, because those are where the effort goes. window.close belongs to neither group. Nothing about hardening a fingerprint suggests it needs attention, while automation harnesses, popup helpers and page-teardown shims wrap it as a matter of course.
That combination — routinely wrapped, never audited — is what makes it a good collector target. And because the value transmitted is the source text rather than a pass/fail bit, a wrapper is not something the server has to infer: it arrives written out, ready to read. The check uses the same engine-derived native template the rest of the integrity group relies on, so a bound or re-wrapped function is caught even when it still renders a native-code body.
How to resolve it
Leave window.close alone, or replace it somewhere that yields a genuine native binding rather than a JavaScript wrapper. It sits outside what a fingerprint profile normally hardens, which is the reason it is collected — and its whole source text travels, so any wrapper is legible in full rather than merely detectable.
Nearby checks in Native function integrity
- page-world natives that extensions commonly wrap
page-world-wrappersThis probe stringifies window.fetch and window.Request and asks whether each still renders as native code, then checks whether document… - nonexistent navigator properties return undefined
navigator-proxy-honeypotThis reads five navigator property names that exist on no browser — rml, ln, rnd, webdriverPatched and __clearcoteProbe — and additionally… - native methods enforce their C++ receiver check
native-brand-checksTwo native methods are invoked with their own bare prototype as the receiver… - iframe srcdoc/src/contentWindow live on the prototype
iframe-srcdoc-placementA fresh <iframe> is created with document.createElement and inspected for own property descriptors on srcdoc, src and contentWindow. - Element.attachShadow untampered (shape + closed/open behaviour)
shadow-dom-integrityThe check reads Element.prototype.attachShadow four ways and asserts they agree: its name is "attachShadow", its length (declared parameter… - Math.random / crypto.getRandomValues native and high-entropy
rng-integrityThe check verifies that Math.random is the engine's native generator and that its output is high-entropy. - the global object still has every global a fresh realm has, in the same order
window-globals-vs-realmThe audit builds a fresh same-origin iframe and enumerates the own properties of both global objects, then asserts two things a browser… - iframe.contentWindow really is a separate realm, and the one the browser says it is
contentwindow-realm-identityThis is the check that guards the others. A large part of this audit — the global property diff, all six capability surfaces, the brand…
Clearcote is a browser built for fingerprint coherence
It is a Chromium fork, maintained by the same people who wrote this reference. It ships as a compiled browser rather than as a stealth script injected into someone else's — which is a description of how it is built, and is not an argument about how it behaves on this check.
This audit takes no position on how Clearcote scores on Native function integrity checks, on this one, or anywhere else. It has no baseline corpus of other people's fingerprints to rank you against and no vendor scoreboard — nearly every check is self-referential, asking one browser the same question through two independent APIs and reporting whether both answers can be true at once. It runs identically on any browser, including ours. Run it on yours and read the result yourself.
See the other checks in Native function integrity — the family window-close-native-integrity belongs to.
