Security
How kaibo protects tenant data, and how to report a problem. Draft pending legal review.
updated 2026-11-12
draft. lawyer review is required before this page is relied on.
Draft. This describes controls that exist in the code today. It is not a certification.
Tenant isolation
Every record belongs to an organization. The organization is taken from your verified sign-in token or from the API key record, never from a request field. An automated test lists every public function and fails the build if one is missing from the cross-tenant test matrix.
API keys
Keys look like kaibo_<id>.<secret>. We store a SHA-256 hash, compare in constant time, and show the full key once. Scopes limit what a key can do (read, write, forget, admin), and a key can only grant scopes it holds. Failed attempts are rate limited per source, and every valid key has its own limit.
Data integrity
Events are stored in an append-only hash chain. Anyone with read access can recompute it. Deletions go through a hash-chained ledger and return a receipt you can verify.
Webhooks
Deliveries are signed with HMAC-SHA256 over the timestamp and body, expire after five minutes, never follow redirects, and carry ids only. Endpoints must be public https hosts.
Untrusted memory
Text returned by recall is data. The MCP server wraps it in delimiters with a random value per response so stored text cannot close the block early. This lowers risk and does not remove it.
Reporting
Send reports to [security contact email]. We will acknowledge within [timeframe]. Please do not test against other customers' data.