Halton Meter Docs
Docs /Halton Meter Cloud /Consent
HALTON METER CLOUD Stable

Consent

The two consent records Cloud keeps: a checkout/legal consent row at subscribe time, and an append-only ledger of every teammate prompt-body view.

macOS · Linux · Windows ·4 min read ·Updated Jun 8, 2026

Two consent mechanisms, two records, kept separate.

Halton Meter Cloud writes two distinct consent records, and they do not share a code path. The first is checkout consent: a legal record taken on the /subscribe page before a subscription starts. The second is prompt-content viewing consent: an audit record written every time one member views another member's stored prompt body. This page documents the mechanism of each. The verbatim legal language is regulated copy and is stubbed below pending counsel.

When a user subscribes on the dashboard /subscribe page, the page renders two ConsentGate tickboxes. Both must be ticked before Clerk's checkout drawer opens. On confirmation the dashboard calls POST /v1/consent/checkout, which persists one checkout_consent_records row. This row is the evidence that consent was given for that plan, at that price period, against that exact wording.

The persisted columns are:

ColumnWhat it holds
user_idThe subscribing user.
planThe plan being purchased (for example Solo or Team).
periodThe billing period (monthly or annual).
wording_hashSHA-256 of the verbatim user-facing consent strings, versioned in the dashboard consent-gate.tsx.
ipThe request IP.
user_agentThe client user agent, truncated to 512 characters.
timestampWhen consent was recorded.

The wording_hash is the integrity link: because it is a SHA-256 of the exact strings shown to the user, the stored row proves which version of the copy the user agreed to. If the wording changes, the hash changes, and old consents stay tied to the old text.

The two tickboxes cover (1) agreement to the Terms, Privacy, and Refund policy, and (2) an express request for immediate performance plus acknowledgement that the 14-day cooling-off right is lost on delivery, citing UK CCR 2013 reg. 37. The second tickbox is what evidences the cooling-off waiver if a charge is later disputed.

The exact strings are regulated legal copy. Their text is not reproduced here.

A stored prompt body is sensitive. Reading another member's body is gated, and every read that does happen is logged.

Who can read a body

A trace body is fetched at GET /v1/traces/{request_id}/body. The body is readable only by the user who made the original request, or by a workspace or organisation admin. Any other caller gets an opaque 403. The 403 never reveals whether a body exists, so a non-authorised member cannot probe for the presence of a teammate's data. This is a plain role check on the read path.

The append-only view ledger

When an authorised member views a teammate's prompt body through the dashboard, that view is recorded by POST /v1/audit/prompt-views. The ledger is append-only. Each row holds:

FieldWhat it holds
workspace_idThe workspace the view happened in.
request_idThe trace whose body was viewed.
viewer_user_idWho viewed it.
subject_user_idWhose body was viewed.
consent_grant_idOptional reference to a consent grant, if one applies.
reasonFree-text reason for the view (1 to 2000 characters).
viewed_atWhen the view happened.
client_ipThe viewer's request IP.
user_agentThe viewer's client user agent.

Writing a view row is gated at the Team tier and above. Reading the ledger back at GET /v1/workspaces/{ws}/audit/prompt-views is gated at Business+ and above. So a Team workspace records its views, and a Business+ workspace can review them.

The privacy and employee-monitoring wording around teammate prompt visibility is regulated copy. It is not reproduced here.

See also