How long derived data is kept
Shield360 also creates data of its own from your telemetry and from the way people use it: Rex conversations, AI trace analyses, Openground runs and agent test transcripts. This page lists what each of these stores keeps and for how long.
By default, Shield360 doesn’t store content in these places. Content means prompts, responses and the other text your traces carry. A person can see content live, if they’re allowed to, but no copy is kept. Content that was stored before this default existed isn’t purged. It ages out under the periods below.
Retention periods
Section titled “Retention periods”| Store | What is kept | Kept for |
|---|---|---|
| Rex chat messages | What people typed and Rex’s answers. Query results are kept without content. | 90 days from when each message was written |
| Rex conversations | Title, model and running totals | 90 days after the conversation was last used |
| AI trace analyses | The run’s model, tokens, cost and worst severity. The findings are kept only when content storage is allowed. | 30 days |
| Openground runs | The person’s own test prompt and each provider’s response, with secrets removed | 90 days |
| Agent test transcripts | What the agent under test was asked and answered. The outcome, score and assertions stay after the transcript is emptied. | 90 days |
| Data gateway access records | Who read which fields of which table, for what purpose, and how many rows. Never a value. Records a legal hold covers are kept while it is active. | 365 days |
| Data export archives | The archive, encrypted at rest | 7 days |
The ClickHouse periods are set as table TTLs by the add-derived-store-ttl-v1 migration. Agent test transcripts are emptied by the agent-tests job, at most once an hour. Data gateway access records are deleted by the daily retention job; see Data retention.
Rex chat history
Section titled “Rex chat history”Rex can run SQL over your traces and logs, so a query result can contain prompts and responses. Before a result is saved to chat history:
- Content is withheld. Values in columns or attributes whose names mark them as content are replaced with
[CONTENT WITHHELD]. Examples includeprompt,completion,input,output,messages,content,body,arguments,result,query,statement, and keys such asgen_ai.input.messagesinsideSpanAttributesorLogAttributes. Counts and costs about content, such asprompt_tokens, are kept. - Results are bounded. At most 100 rows and 64 KB are kept for each result, and each value is cut to 2,000 characters.
- Secrets are removed. The patterns used at ingest replace API keys, tokens, private keys and credentials in URLs with
[REDACTED]. This applies to every message, including what people typed and what Rex wrote, and to conversation titles.
The person who asked still sees the full result in the chat while the conversation is open.
- Queries over content tables keep only metadata. If a query reads a table that holds content, the saved result keeps only numbers, true/false values, timestamps and short strings shaped like metadata. Those tables are
otel_traces,otel_logs, the span cache, Openground, trace analysis and chat history, and the list lives in one place in the code. A short string here means 64 characters or fewer with no spaces, such as an id, a model, service or tool name, or a status. Every other value is withheld, whatever the column is called, so an alias such asSELECT Body AS bdoesn’t get past it. Maps, arrays and JSON values from these queries are withheld too. Results whose query isn’t known are treated the same way. Queries that read only metadata tables are matched by column name, as above.
AI trace analyses
Section titled “AI trace analyses”A trace analysis is a model’s summary of a trace’s content. When content storage isn’t allowed, the analysis appears in full while it runs, but the saved run keeps only its model, tokens, cost and worst severity. When you open a saved run later, it says its findings weren’t kept.
Openground
Section titled “Openground”Openground is a playground for your own test prompts, so runs are kept whatever the content setting is. Secrets are removed from prompts, variables, responses and raw provider responses before they’re saved.
Legal holds
Section titled “Legal holds”Records under a legal hold are copied into their own table, which has no TTL. The copies stay while the hold is active and are removed when the hold is released. The TTLs on this page don’t apply to them.
Allowing content storage
Section titled “Allowing content storage”Content is kept in Rex chat history and trace analyses only when both of these allow it:
- The organisation’s setting. Store prompt and response content in Data retention, as it applies to the environment the data is written to. An environment can store less than its organisation, never more.
- The deployment. An operator allows content storage for the whole deployment by setting
SHIELD360_ALLOW_CONTENT_STORAGE=true. When it isn’t set, nothing is kept, whatever an organisation chose.
If Shield360 can’t tell which organisation the data belongs to, or can’t read its setting, the content isn’t kept. A change to the setting takes effect within 30 seconds. Content saved earlier stays until it ages out. Secret redaction, row limits and the retention periods still apply.