Docs

Content-blind privacy model

What public records store, what they deliberately do not, and what the signer controls before upload.

The default mode of possiblymadebyahuman is content-blind. Public records describe the shape of an editing process. They do not contain, store, upload, or reconstruct the document’s text. If the signer chooses to bind a document, the producer computes a content-blind commitment to it locally and uploads only that commitment: a salted hash of the text’s canonical letters and digits, which cannot be turned back into the text. See Bind and check a document.

What public records contain

What public records do not contain

What producers may do transiently

A producer may inspect editor text synchronously when an editor/browser API makes that necessary to derive process metadata such as position, inserted length, deleted length, or selection range. The string must then be discarded. Apart from the optional text_binding commitment computed at sign time (and the Emacs helper’s approved local-transient receipt of the final text solely to compute that commitment), the inspected string must not be stored in session state, browser storage, Emacs variables, logs, helper payloads, uploaded JSON, or any content hash.

What the signer controls

Producers (the browser extension and the Emacs minor mode) show every record to the signer before upload, so the signer can:

Capture context, specifically

Producer-side local storage

Each producer keeps a small amount of state on your machine while a session is open. None of that state contains your text.

Server-observed checkpoints

When the producer can reach the ingest service while you write, it commits chain tips at activity-driven cadence (first mutation immediate, then every 50 events or every 60 seconds with at least one new event since the last attempt; never on idle). Each checkpoint sends only (observed_session_id, event_count, chain_tip, token?): a BLAKE3 prefix hash over the event sequence, no text. The server stores token_hash, never the bearer token itself. See Server-observed commitments for the public record’s view of this surface.

If the producer can’t reach the ingest service, no checkpoints are sent and the local event log is retained until you sign (or discard) the session.

What we cannot offer

Contact

Privacy questions, ambiguities in this document, or concerns about a specific record are tracked at the project’s GitHub issues. v0 has no separate privacy contact endpoint; the issue tracker is the canonical channel.