Data Handling

Summary

The Asqav cloud runs in hash-only mode by default. Your code computes a SHA-256 hash of each action locally and sends us the hash plus a small metadata bag. We sign the hash with ML-DSA and store the signature record. We never receive the prompts, tool arguments, or model outputs themselves.

That hash is unsalted by default. An unsalted hash of a predictable action can be guessed by anyone holding the hash, so read How the hash is computed before you decide what belongs in an action context.

If you self-host, nothing leaves your infrastructure unless you turn on cloud telemetry.

What we receive on cloud

How the hash is computed

The SDK canonicalizes the action context, hashes it with SHA-256, and sends the digest. No salt is applied unless you supply one, so two identical actions produce the same digest and a third party who holds the digest can test candidate values against it until one matches. For an action drawn from a small set of possibilities, such as an email address from a company directory, that search is cheap.

The SDK accepts an optional 32-byte salt through the org_salt parameter on asqav.init(). When you set it, the digest becomes HMAC-SHA-256 keyed by your salt, which defeats that guessing attack. Two things to know before you rely on it:

We are working toward making a salted digest the default and giving the wire format a way to say which construction was used. Both have to change together, because a digest labelled sha256 that is really an HMAC breaks the independent verification we ask people to rely on. We are not putting a date on it here.

Treat a digest as personal data when the action it covers relates to an identifiable person. The European Data Protection Board takes the position that a hash of personal data stays personal data, and that unsalted or unkeyed hashes are not on their own a sufficient confidentiality measure (Guidelines 02/2025 on blockchain technologies, version 2.0, adopted 07 July 2026, paragraph 52).

What we do not store

Full-payload mode is available on cloud only as an opt-in under a signed agreement. The default is hash-only.

Self-hosted

You operate the signer. You choose what to log, what to retain, and where signatures are stored. Asqav has no access. In this mode you remain both controller and operator.

What we do with signatures

Retention

Signature records are retained while your account is active. Account closure and data deletion requests are handled via info@asqav.com; see the Privacy Policy for retention details and backup windows.

When an organisation signs any receipt in compliance mode or declares a regime via the compliance_regimes array, the longest applicable retention floor governs:

Regime Floor Source
Compliance mode (any receipt signed with compliance_mode, no regime declared)184 daysbaseline floor for all of the organisation's signature records and activity logs
EU AI Act (Articles 12 + 26)184 days"at least six months"
Colorado AI Act SB 24-205184 daysparity with EU AI Act when high-risk
CIRCIA731 days (2 years)covered cyber incident records
SEC 17 CFR 240.17a-4(b)1096 days (3 years)broker-dealer subset
DORA Article 171827 days (5 years)ICT incident retention
NYDFS 23 NYCRR Part 5001827 days (5 years)500.6(b) audit-trail retention
HIPAA Security Rule2192 days (6 years)164.316(b)(2) policy/procedure retention
SEC 17 CFR 240.17a-4(a)2192 days (6 years)broker-dealer primary
Texas TRAIGA HB 1492192 days (6 years)longer of HIPAA 6yr or Texas-required
NIST AI RMFvoluntaryno retention floor change

Multiple regimes apply additively. The longest floor wins. The full list of bindings, with file:line evidence, lives at /docs/compliance.

Subject rights

Access, rectification, erasure, and portability requests go to info@asqav.com. For erasure of audit records we delete the linked metadata. The hash stays, because it is the anchor the signature covers. We treat that hash as personal data when it relates to an identifiable person, and we do not claim it is beyond recovery: an unsalted digest over a predictable action can be guessed. Setting a salt you hold, and destroying it, is what makes a digest unrecoverable. See How the hash is computed.

Hosting and transfers

Customer data is hosted exclusively in the EU (Hetzner, Falkenstein, Germany). Where data flows to a sub-processor outside the EEA, we rely on the Standard Contractual Clauses referenced in our DPA.

Sub-processors and DPA

The canonical sub-processor list is published at /security. The standard Data Processing Agreement is at /dpa. Contact info@asqav.com to execute a signed counterpart.

Compliance posture

Asqav is designed around GDPR Article 25 data minimization. Hash-only by default in cloud is how we implement it. We support your processor obligations under Article 28. We do not hold SOC 2 or ISO 27001 certifications and do not claim either.

Compliance Receipts emitted by Asqav follow the IETF Internet-Draft draft-marques-asqav-compliance-receipts, an Independent Submission profiling draft-farley-acta-signed-receipts for EU AI Act Articles 12 + 26, DORA Article 17, NYDFS 23 NYCRR Part 500, NIST AI RMF, Colorado AI Act SB 24-205, Texas TRAIGA HB 149, CIRCIA, HIPAA Security Rule, and SEC 17a-4. Per-regime mapping at /docs/compliance.

Reference docs

Privacy policy: /privacy. Data Processing Agreement: /dpa.