the origin private file system works if it is exposed
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.
Nearby checks in Capability surfaces
- the permission descriptors this build accepts are the platform's, not a lookup table's
permission-name-support-setThe Permissions specification deliberately fixes no list of names. - form-factor-gated APIs match the form factor the client hints claim
platform-gated-apis-vs-form-factorSome Web APIs are not compiled for every platform, so their presence is a fact about the binary rather than about the user agent. - Web Bluetooth is present or absent as the claimed desktop platform requires
bluetooth-availability-vs-platformnavigator.bluetooth is part of Chrome's desktop surface on Windows, macOS and Linux, and it is provided by the platform layer rather than by… - the WebAuthn surface is as complete as the claimed platform's browser ships it
webauthn-surface-vs-platformWebAuthn reaches further down the stack than most web APIs: PublicKeyCredential is not a self-contained JavaScript object but the front door… - the deprecated and modern storage-quota APIs report the same origin quota
legacy-quota-surface-agreementnavigator.webkitTemporaryStorage.queryUsageAndQuota and navigator.storage.estimate() describe the same thing — this origin's storage quota… - the Storage Buckets API reports the same origin quota as navigator.storage
storage-buckets-quota-agreementThere are three ways to ask this origin how much storage it may use, and they all describe one number. navigator.storage.estimate() is the… - SharedArrayBuffer exposure agrees with the reported cross-origin isolation
sharedarraybuffer-vs-isolationAsking whether SharedArrayBuffer exists would measure the wrong machine: its exposure is gated by the COOP and COEP headers THIS site sends… - navigator.cookieEnabled agrees with whether a cookie can actually be stored
cookie-enabled-vs-actual-writenavigator.cookieEnabled is a claim; writing a cookie and reading it back is a measurement.
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.
