What gets detected
Three detectors run over your entries, plus any policy rules you define.Secrets and credentials
Pattern and entropy matching for the kinds of strings that should never be at rest in memory.Personal data
Email addresses (info), IPv4 addresses (info), US Social Security numbers (high), and credit card numbers validated with a Luhn check (high).Memory poisoning
Poisoning detection is what a general-purpose secret scanner cannot do, because it needs version history and authorship. It only considers edits made by a different agent than the original author.Contamination
Flags low-trust memory that is spreading. When an entry with confidence at or below 0.4 has been read by several agents, it is shaping decisions it was never reliable enough to shape. Reads by five or more agents raise the severity.Severity and verification are separate
A finding carries two independent ratings, and conflating them is the fastest way to drown in false positives. Severity — critical, high, medium, low, info — is how bad it would be if real. Verification is how sure we are that it is real:
The dashboard splits findings into two lanes on this basis. Confirmed holds
the confirmed and structural findings — start here. Potential holds the
heuristic ones, which are worth a look but include the guesses.
Liveness checking of discovered secrets is off by default. Turning it on means
SenseLab makes an outbound request to the issuing vendor (GitHub, OpenAI,
Stripe, Slack) to see whether a key still works. Enable it under
Security → Settings.
Triaging findings
Each finding moves throughopen → triaged → resolved, or is closed as
false_positive or suppressed. Findings are deduplicated on a fingerprint, so
re-detecting the same problem updates the existing record rather than making a
new one. A finding that stops appearing in a scan resolves itself.
For any finding you can inspect the redacted entry and its version history, and
view its blast radius — which agents read the entry and what they did next.
For contamination this is the important view, because it tells you how far a bad
entry travelled.
Remediation
Two actions are available, both of which write a new version rather than erasing anything: Quarantine writes a new version with confidence set to zero and sharing turned off. The entry stops appearing in recall and briefings but remains in history. Revert restores the previous version’s value and confidence — the fix for a poisoned entry, where a good value already exists further back in the timeline. Both are attributed to thesecurity-remediation agent, so the change is
visible in provenance.
Policy rules
Beyond the built-in detectors, you can write rules for what your organisation considers a problem — an internal hostname convention, a project codename that should never be in shared memory. Four kinds of rule are available:regex, keyword, entropy, and
condition. A condition rule is a structured predicate over entry metadata,
supporting eq, ne, lt, lte, gt, gte, and contains against fields
like confidence, memory_type, recall_count, agent_id, entity_path,
key, shared, and value.
Every rule can be scoped to an entity path glob, and previewed before you save
it — the preview reports how many entries would match and shows redacted
samples, without storing anything.
Rules raise findings. A rule cannot yet block or auto-quarantine on match, so
treat them as detection rather than enforcement.
Allowlisting
Some paths are noisy by design — a test fixture full of fake credentials, for instance. Add an entity path glob to the allowlist and matching findings are dropped before they are stored, with existing open findings on those paths resolving on the next scan.Forwarding to your SIEM
Findings can be pushed to where you already watch alerts:
Each integration has its own minimum severity, defaulting to high. By default
only confirmed and structural findings are forwarded, so heuristic guesses do
not page anyone. You can send a sample finding to test the connection before
relying on it.
Running a scan
Scanning is on-demand: open Security in the dashboard and the overview triggers a scan, or call the API directly.Access
Security is gated by role, not plan. A user needs thesecurity or admin
role to see any of it; members without that role cannot reach the pages or the
API. Admins grant the role under Security → Access.
What this does not do
Worth being clear about the boundary, because the name invites assumptions. It does not block writes. The scanner runs after the fact. An agent writing a live AWS key will succeed, and the key sits in memory until a scan finds it. There is a write-time safety gate in SenseLab, but it currently guards decision trace capture and the LLM proxy — notamfs_write.
It does not scan documents. Room documents are not covered by these
detectors.
It is not a substitute for secret hygiene. The right fix for a leaked
credential is rotating it at the source. Quarantining the memory entry stops it
spreading to your agents; it does nothing about the key itself.