Security and data handling

How AACSearch keeps each customer's data separate, protects keys and limits what any single request can do. Every control below names the code that implements it.

Tenant isolation

Each index is a separate collection, and every query carries a server-side organisation filter that callers cannot override.

packages/search-engine/search.ts · scopeFilter

API keys stored hashed

Keys are shown once and stored as SHA-256 hashes. They can expire, be rotated with a grace period, or be revoked.

packages/api/lib/search/api-keys.ts

Enterprise OIDC SSO

Enterprise organisations can sign in through their OIDC identity provider after verifying an email domain. SAML is not available yet; every sign-in is plan-gated so a downgrade revokes IdP access at once.

packages/auth/lib/sso-gate.ts

No keys in the browser

The widget uses short-lived session tokens (15 minutes by default, one hour at most) minted on your server and limited to searching one index.

packages/api/lib/search/embed-token.ts

Document-level access

Documents can carry an access list; results, counts and facets are filtered before they are computed, so hidden documents do not leak through totals.

packages/search-engine/search.ts · withAclFilter

Safe crawling

Crawlers and connectors only fetch public http(s) addresses and re-check every redirect, so they cannot be pointed at internal networks.

packages/api/lib/search/safe-fetch.ts

Rate limits

Per-key limits on every API endpoint and per-IP limits on public endpoints such as the widget and health checks.

packages/api/lib/search/ip-rate-limit.ts

Errors that reveal nothing

Public error codes and messages never include engine internals, stack traces or other customers' identifiers.

packages/api/lib/search/privacy.ts

Audit log

Administrative changes — keys, rules, experiments, connectors, purges — are recorded with actor and time.

packages/api/lib/search/audit.ts

Export and deletion

An organisation can export its data and delete all of it, including indexes, documents, logs and graphs.

GET /organization/export, DELETE /organization/data

Not yet available

So you can plan around it:

  • No SOC 2 or ISO 27001 certification yet.
  • Customer-selectable data residency is not available; ask us where your data is hosted.

Report a vulnerability

If you find a security issue, contact us with details and steps to reproduce. Please don't test against other customers' data.

Contact security