Skip to content

Sensitive data inspection

Sensitive Data scans the prompts and responses your deployment already stores for data that shouldn’t be there: personal data, payment cards and credentials. The Scanner looks at code in a repository. Sensitive Data looks at content: what people and agents actually wrote.

Inspection reads content that SDKs and coding agents already recorded in traces when content capture was on. Nothing new is collected to make it work. If a deployment captures no content, a scan finds nothing. That’s the correct answer, not a reason to start capturing.

Only these span attributes are read. The list is fixed, so turning inspection on can’t quietly start reading a field that was never meant to be read:

AttributeContains
gen_ai.input.messagesMessages sent to a model
gen_ai.output.messagesMessages a model returned
gen_ai.promptPrompt (older semantic conventions)
gen_ai.completionCompletion (older semantic conventions)
coding_agent.user.promptWhat a developer typed to a coding agent
coding_agent.llm.thought.textA coding agent’s reasoning text

Open Sensitive Data in the sidebar, choose a time range, and run a scan. A scan reads up to 2,000 spans in the range and up to 256 KB of text per span. Findings are listed most severe first, with counts by kind.

Open a finding to see:

  • Where it was found: the source, the field and the span.
  • How far it reached: other places the same value appears (“this card number appears in eleven places”), matched by salted hash.
  • A redacted excerpt.

If the originating span is past its retention period, the finding says so.

A findings table full of the card numbers it found would be a second breach. Every finding stores:

  • the kind of entity found (for example payment_card or api_key),
  • its location (source, field, span),
  • a salted hash of the value, so repeats can be linked without keeping the value,
  • a redacted sample,

and never the matched text itself.

POST /api/inspection/scan # run a scan over a time window
POST /api/inspection/findings # summary by kind and severity
POST /api/inspection/findings/detail # individual findings, most severe first
POST /api/inspection/findings/context # one finding: where the same value reached, and its span