Security and trust Data encryption
Data encryption
Data encryption stores your workspace's prompts, responses and AI artifact contents encrypted with a key only you hold. Oxelone keeps the public half of the key. It never receives the private half, and cannot read what the key protects.
It is available on plans that include it. If your plan does not, the settings page says so and links to your plan.
What Oxelone can and cannot see
| Data | While a policy runs | Once stored |
|---|---|---|
| Content | In memory, so your policies, engines and judges can run | Encrypted. Oxelone cannot read it |
| Names, counts and verdicts | Readable | Readable |
What is encrypted:
- prompts and responses
- attachment names and excerpts
- originals held for Reveal
- engine evidence and matched text
- what people typed when asked why
- AI artifact contents
What stays readable to Oxelone: machine and account names, services, models, hosts and request paths, counts, scores, verdicts, policy names, alert and issue titles, comments, tickets, the audit log, AI tool settings, connector records, the content hash of an AI artifact, and what you ask the Assistant. Search, filters, policies and licences run on these.
Who can do it
Turning it on or off and changing the key need Manage workspace settings (settings:manage). Everyone in the workspace can read the page. Reading encrypted content needs the same permission as reading it unencrypted, and the private key.
Turn it on
- Create a key pair with age. See Key management.
- Open Settings › Data › Data encryption and paste your public key.
- Prove you hold the private key. We encrypt a code with your public key. Decrypt it with age on your computer, or enter the private key on the page, and enter the code.
- Review what happens, confirm you have stored the private key, and choose Turn on encryption.
New data is encrypted from that moment. Stored data is encrypted in the background. You can close the page, and the workspace keeps working throughout. We tell you in your Inbox and by email when it finishes.
Read encrypted content
Encrypted fields read Locked. A green padlock in the top bar opens a panel that lists what is locked. Choose Unlock with private key and enter the key.
- The key is used only in that browser tab. It is never sent to Oxelone.
- It is kept encrypted in the tab, so a reload stays unlocked.
- It is erased when you choose Lock now, when the tab closes, or after 30 idle minutes.
- A new tab asks again.
While unlocked, the padlock is open and yellow, and content reads Decrypted in this browser.
What changes with encryption on
- The Assistant cannot read encrypted content, even while you are unlocked. It still answers from names, counts and verdicts.
- Log streams send an encrypted copy of content. Your own tooling decrypts it. See Decrypting outside the console.
- A judge that could not answer is not asked again later. There is no stored prompt to send it.
- Redaction applies to every value in an encrypted interaction, because which policy covers it is not known when it is encrypted. This is stricter than with encryption off.
- AI artifact contents are scanned when a machine reports a change, never rescanned when a package registry changes later.
- Decrypted interactions show the prompt and response as text, without the turn-by-turn view.
Turn it off
Open Data encryption and choose Turn off encryption. The stored data is decrypted on Oxelone's servers in the background. Your private key stays with you: your browser, or age on your computer, opens the batch keys and only those are sent. They are held for this job and destroyed when it ends. New data is stored readable from the moment it starts.
Oxelone can read your data again once this finishes, and that public key can never be used in this workspace again.
If your plan changes
A plan that no longer includes data encryption never removes it. Your data stays encrypted, and you can still change the key or turn encryption off. Turning it on again needs a plan that includes it.
Limits we state plainly
- Content passes through Oxelone to run your policies, then is encrypted before it is stored. The promise is about storage.
- AI artifact contents are held under Oxelone's own key until their first inspection finishes, usually a few minutes, so the inspection can run.
- The console serves the page that handles your key. If you will not accept that, use age on your own computer for every step except reading content in the console.
- Backups taken before you turned it on stay readable until they age out. Removed plaintext also stays in the database's own files until the database reclaims the space.
- Older batch keys in backups still open with an old private key until those backups age out.
When it goes wrong
- This workspace has used this key before. Each workspace uses a public key once. Create a new key pair.
- This is your private key. You pasted it in the public key field. It was not sent. Paste the line starting with
age1. - This key does not match. The private key you entered belongs to a different public key. The message names it if it is an earlier key of this workspace.
- Records could not be encrypted. Each is retried every hour and stays as it was until it works. The job carries on. The settings page lists them.
- Key change paused. A browser tab running a key change was closed. Nothing is lost, and the current key still works. Resume or discard it from the settings page. It is discarded automatically after 7 days.
- Locked with an earlier key. You started over with a new key. Open it with the earlier private key if you still have it. Otherwise retention deletes it on schedule.
- Your plan does not include data encryption. See Plan and licence.
With the API
An API key with the right role can read the state and fetch encrypted content and batch keys. Content fields are null, and content_state and sealed carry what your tooling needs. See the API reference and Decrypting outside the console.