Security and privacy

What we do today to protect your data and your customers’ data, in detail, and what we haven’t done yet.

Secrets and keys

Secrets encrypted with AES-256-GCM

Model provider keys, tool secrets and webhook secrets use envelope encryption: each value gets its own data key, bound to its project, table and row. If decryption fails, the request stops; we never fall back to plaintext. Values are write-only and never shown again after you save them.

API keys stored as hashes

We store only a SHA-256 hash of each key and its last four characters; the full key is shown once, when you create it. The kt_sk_ and kt_pk_ prefixes help secret scanners. Every key has scopes, can be limited to specific agents, and can be revoked or rolled at any time.

End-user identity

Users verified by your server

An end user’s identity comes from your server: through your secret key, or through a short-lived client token you issue for up to 60 minutes. The model never decides who the user is, and neither does the browser. Tools that read a customer’s records only run for a verified user.

The widget is locked to your domains

A publishable widget key only works from the origins you allow, and only on the widget routes. Anonymous visitors are rate limited per IP address and per device.

Network and outbound requests

SSRF protection

Every request to a URL you configure (HTTP tools, webhooks, knowledge feeds, custom model endpoints) goes through one guarded client. It blocks private, loopback and cloud-metadata addresses, follows no redirects, allows HTTPS only on ports 443 and 8443, and rejects responses over 1 MiB.

Signed requests

Webhooks and HTTP tool calls are signed with Standard Webhooks, so your server can verify they really came from us.

Audit log

Every change is recorded

An append-only log of every change to settings, keys, members, webhooks, tools, secrets and model credentials, and of every publish and rollback: who did it, when, and from where. We record which fields changed, never their values.

Retention and erasure

Retention you set

Each project has a retention period (365 days by default), enforced nightly on conversations and runs. Run events are deleted after 7 days and webhook delivery logs after 30.

Erase an end user in one call

DELETE /v1/end_users/{id} removes that user’s conversations, runs and events in a single transaction, so you can answer data-subject requests under Saudi Arabia’s Personal Data Protection Law (PDPL). A one-shot ask with store:false keeps no text at all.

Logs without content

Our technical logs never contain message text, keys or request bodies. Backups are kept for 7 days, then deleted.

Your data and AI models

No training on your data

We never use your data or your customers’ conversations to train models.

Where data is processed

Your settings and conversations are stored in our database on our server. To write a reply, the conversation text is sent to the model provider you choose, such as OpenAI, Anthropic or DeepSeek, which processes it outside the Kingdom under its contract and data-processing terms. With your own key, your account’s terms with that provider apply.

Dashboard and browser

Protected sessions

The dashboard runs on its own host with an HttpOnly, Secure, SameSite=Strict cookie, CSRF protection and a strict content security policy that blocks scripts from anywhere but us.

No HTML from untrusted text

Customer messages and tool results are always shown as text and never turned into HTML, in the dashboard and in the widget.

What we haven’t done yet

We would rather say it plainly: these are on our roadmap and not available today.

  • Data residency tiers

    Standard, Gulf and sovereign options, including in-Kingdom hosting for data and models.

  • ISO 27001 certification

    We build our controls around it, but we are not certified yet.

  • Database-level isolation

    Row-level security (RLS) policies on top of today’s per-project isolation in the application.

Report a vulnerability

If you find a security issue, email info@kerneltics.com before publishing it. We will reply and work on a fix.

info@kerneltics.com