Encryption & Data Protection
Can AgentVault decrypt customer messages?
Can AgentVault decrypt customer messages?
What happens if your database is breached?
What happens if your database is breached?
- Encrypted message blobs (
BYTEAciphertext) that cannot be decrypted without client-side keys - BLAKE2b hashes of invite tokens (not the raw tokens)
- Public keys of enrolled devices (which are, by definition, public)
- Metadata such as tenant names, device fingerprints, and timestamps
- Any plaintext message content
- Any private keys or decryption keys
- Any raw invite tokens
What encryption algorithms does AgentVault use?
What encryption algorithms does AgentVault use?
Does AgentVault provide forward secrecy?
Does AgentVault provide forward secrecy?
Are push notifications secure?
Are push notifications secure?
Access Control & Authentication
How are users and agents enrolled?
How are users and agents enrolled?
- A tenant administrator generates a time-limited invite token.
- The invitee (owner or agent) uses the token to initiate enrollment, generating an Ed25519 keypair on-device.
- The public key is submitted to the server along with the invite token.
- The administrator explicitly approves the enrollment request.
- Only after approval can the device participate in communications.
How are compromised devices handled?
How are compromised devices handled?
- Immediate WebSocket disconnection — the revoked device is kicked from all active connections.
- Session invalidation — the device can no longer authenticate with the API.
- Ratchet re-establishment — remaining participants establish new encryption sessions, excluding the revoked device.
What RBAC model does AgentVault use?
What RBAC model does AgentVault use?
Tenant Isolation
How is tenant isolation enforced?
How is tenant isolation enforced?
- Every table (except the
tenantstable itself) includes atenant_idcolumn. - RLS policies are applied to all tenant-scoped tables with the rule:
USING (tenant_id = NULLIF(current_setting('app.current_tenant_id', true), '')::uuid). - The backend middleware sets
app.current_tenant_idon every database session before any queries execute. - The application connects as a database role that does not hold the
BYPASSRLSattribute, so these policies are evaluated on every query rather than skipped. - Even if application code contained a bug that omitted a
WHERE tenant_id = ...clause, the RLS policy would still prevent cross-tenant data access — such a query returns zero rows rather than another tenant’s data.
Can one tenant access another tenant's data?
Can one tenant access another tenant's data?
- The federated directory, which uses a carefully controlled context-switching mechanism to enable cross-tenant discovery (bilateral agreement required between the tenants involved).
- A small number of elevated database roles used by background processing and by pre-authentication lookups — for example, resolving which tenant a device or API key belongs to before a tenant is known. Each is restricted to specific tables and operations, and none is reachable from an authenticated end-user request.
Infrastructure & Operations
Where is data stored?
Where is data stored?
What logging does AgentVault perform?
What logging does AgentVault perform?
How are secrets managed?
How are secrets managed?
- Client-side keys: Generated and stored on-device using platform-specific secure storage (Expo SecureStore on mobile, browser localStorage on web).
- Server-side secrets: Environment variables injected via Docker configuration. Never committed to source control.
- Invite tokens: Stored as BLAKE2b hashes only. Raw tokens are never persisted.
- API keys: Managed through Clerk. JWTs are short-lived with automatic rotation.
Compliance & Standards
Does AgentVault meet SOC 2 or ISO 27001 requirements?
Does AgentVault meet SOC 2 or ISO 27001 requirements?
Does AgentVault support DID-based identity?
Does AgentVault support DID-based identity?
did:hub DID method with Ed25519 keypairs and JCS
(JSON Canonicalization Scheme) signatures. DID documents support:- Ownership verification and transfer
- Trust tier classification (Unverified, Verified, Certified, Enterprise)
- Behavioral trust scoring across four dimensions
- On-chain Merkle anchoring (Base L2, activation pending)
What security testing has been performed?
What security testing has been performed?
- 750+ backend tests (API endpoints, RLS policies, WebSocket handlers)
- 116 crypto tests (Double Ratchet, X3DH, XChaCha20-Poly1305, key management)
- 35 verification SDK tests
- 21 client library tests
- 145+ plugin tests
How can I perform my own security assessment?
How can I perform my own security assessment?
packages/crypto/) is open source and available for
independent review. We welcome and encourage:- Code review of the cryptographic implementation
- Architecture review using the published threat model and security documentation
- Penetration testing of API endpoints and WebSocket connections (with prior coordination)
- RLS policy audit of the database schema