Skip to content
All fingerprint checks
Capability surfaces

the origin private file system works if it is exposed

Pim· Clearcote Research 2 min readCheck id opfs-surface-vs-platform

Where getDirectory is exposed in a secure context, it returns a working handle: a file can be created, reports kind 'file', and can be removed.

What a detector infers

The Origin Private File System is the newest of this origin's several storage doors, and a persona reaches it last if at all — the same argument that earned the StorageBuckets quota row its place in this audit. It appears in a deployed collector's inventory as an OPFS handle read.

The assertion is deliberately behavioural rather than a presence bit, because presence is the easy half: a build can add getDirectory to the shape of navigator.storage without the storage backend underneath it, and a detector's cheapest way to tell a stubbed surface from a real one is simply to use it.

So the check creates a file through the handle, confirms it comes back as a file, and removes it again — on the failure path too, because an audit that leaves an entry behind in the visitor's origin storage has changed the thing it was measuring.

How to resolve it

OPFS is backed by the real storage layer and is not a value to report. If the API is exposed it has to work — an inert surface is a stub, and using it is the first thing a collector does.

How automation gets caught, layer by layer

Nearby checks in Capability surfaces

See all 20 checks in Capability surfaces
Who builds this test

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 Capability surfaces 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 Capability surfaces — the family opfs-surface-vs-platform belongs to.