WASViking AI Guardian
AI exposure monitoring on employee endpoints. Detects sensitive data sent to public AI tools, enforces organization policy at paste time, and reports activity per user, device, and AI application.
WASViking® AI Guardian is an AI exposure intelligence layer for the endpoint. It observes how employees interact with public AI tools (ChatGPT, Claude, Gemini, Copilot, Perplexity, and others), classifies the content they are about to send, and enforces the policies your security team configures in the portal.
It is not a DLP proxy, a man in the middle, an SSL inspector, or a keylogger. The browser sensor reads the composer text only at submit or paste time and the agent processes it in memory.
Coverage maps to insider risk, data minimization (GDPR, LGPD), PCI DSS masking, and HIPAA confidentiality of PHI.
What it detects
The agent classifies content with a deterministic engine that combines high precision detectors with a context layer. The catalog covers Brazilian and global identifiers, protected health information, financial data, special category data under LGPD and GDPR, cloud credentials, names and addresses, and structural signals.
Personal data (PII)
- Brazilian identifiers: CPF, CNPJ, RG (São Paulo state checksum unlabeled, every state when labeled), CNH (Denatran dual mod-11 check digits), PIS, PASEP, NIS, NIT, passport, and PIX keys in all four shapes (CPF, CNPJ, email, phone, and the random UUID form).
- Global identifiers: email, phone, SSN, credit card validated by
Luhn, and full names introduced by an honorific (
Sr.,Dr.,Mr.,Mrs.,Prof., including the Portuguese connectivesda,de,dos) or a labeled field (Name:,Patient:,Cliente:). - Postal addresses: Brazilian forms anchored by
Rua,Av.,Travessa,Praça,Rodovia, and English forms anchored byStreet,Avenue,Boulevard,Highway. - Dates of birth in labeled contexts (
DOB:,Date of birth:,Nascimento:,Data de nascimento:). Evidence is masked to year only (••/••/1985) so the age stays recoverable while the exact birthday does not leave the endpoint.
Re-identification risk (quasi-identifier cluster)
Even when no single field is PII, three or more quasi-identifiers in
the same prompt re-identify a person with high probability
(Sweeney 2000). The agent fires a quasi_identifier_cluster
classification when three or more of the following co-occur in a
single prompt: gender, age, US ZIP, Brazilian CEP, city or state,
marital status, occupation, employer, nationality, or an inline date
of birth. The evidence row shows the matched categories rather than
the raw values, so the analyst sees why the cluster fired without any
single quasi-identifier leaving the host.
Protected health information (PHI)
Clinical vocabulary in English and Portuguese, ICD-10 codes, common medication and laboratory test names (RxNorm and LOINC subsets), Brazilian professional registries (CRM, CRO, COREN), and health insurance carriers (Unimed, Amil, Bradesco Saúde, Hapvida, and others). These are treated as health topics on their own and only escalate to a real PHI finding when a patient identifier (MRN, CNS) is present, or when a personal identifier sits in the same prompt. A general question like "explain hypertension" stays informational; the same text with a CPF becomes a PHI incident.
Special category data (LGPD Art. 5 II and GDPR Art. 9)
Racial origin, religion, political opinion, union membership, sexual orientation, biometric data, and genetic data. Each category is detected with a bilingual vocabulary and treated the same way as PHI: a topic on its own, a real finding only when a personal identifier corroborates the subject. So "explain Catholic doctrine" stays a topic; the same content next to a CPF becomes an Art. 5 II or Art. 9 incident.
Financial data
Credit card validated by Luhn, IBAN validated by the mod-97 check across a country-length table of 80 IBAN-issuing countries, SWIFT and BIC codes in labeled context, and Brazilian agency-and-account pairs.
Credentials and cloud tokens
AWS access keys, JWTs, private keys (RSA, EC, OpenSSH, DSA, PGP),
Anthropic API keys (sk-ant-), OpenAI project-scoped keys
(sk-proj-), Google API keys (AIza...), Stripe live keys
(sk_live_, rk_live_, pk_live_; the test variants are
deliberately ignored), Slack webhooks, GitHub fine-grained PATs and
OAuth and refresh and server-to-server tokens, Azure SAS tokens and
storage AccountKey=, GCP service account JSON, SendGrid, Mailgun,
Twilio, database connection strings with embedded credentials
(entropy-gated to skip documentation snippets), and kubeconfig YAML.
Provider tokens that lack a dedicated detector are still caught by
the generic key = value assignment rule with an entropy gate that
rejects placeholders like change-me, process.env.X, or
os.getenv(...).
Source code, SQL objects, and internal context
Structural signals (fences, imports, function definitions, SELECT,
INSERT, CREATE TABLE, mysqldump, pg_dump), RFC1918 ranges,
.internal, .corp, .local, .lan, plus your own organization
names and internal domains as configured in policy.
Production and confidentiality markers
Mentions of production, prod, confidential, NDA, proprietary
amplify the risk of any adjacent finding. The classifier emits a
co-occurrence boost when an amplifier sits next to real sensitive
data, so "improve this PRODUCTION code for banco XPTO" carries more
risk than "improve this code".
Bypass resistance
Two adversarial shapes are defeated without configuration:
- Unicode look-alike substitution. Fullwidth digits and
homograph characters are normalized (NFKC) before the classifier
sees the prompt, so
CPF 111.444.777-35andpassword=раssword123are treated asCPF 111.444.777-35andpassword=password123. - Encoded envelopes. Content wrapped in base64, URL-encoding,
JSON escape sequences, or hex is decoded in memory (up to three
passes deep) and the classifier runs again on each decoded chunk.
Findings recovered this way carry a
via base64orvia base64>urlbadge in the portal.
Evidence masking
Every classification carries a masked evidence sample so a reviewer can audit a true positive without the raw value ever leaving the endpoint. Examples:
| Classification | Evidence shape |
|---|---|
| CPF, CNPJ, RG, CNH, PIS, phone, SSN | •••.•••.•••-35 |
| Credit card | ••••-••••-••••-1234 |
| IBAN | DE89••••••••3000 |
| SWIFT, BIC | DEUT•••FXXX |
j•••@•••.com |
|
| AWS, Stripe, Anthropic, GitHub keys | AKIA••••••MPLE |
| Full name | J••• da S•••• |
| Date of birth | ••/••/1985 |
| Source code, SQL, internal terms | literal token, truncated |
What it does not capture
The privacy contract is the product. The agent never persists raw prompts, raw file contents, or screen captures. Persistent storage holds only metadata: a short SHA-256 fingerprint, character and token counts, classification labels, the masked evidence samples above, and a pseudonymized user reference. The cleartext OS user name and primary egress IPv4 are recorded for organization attribution, an intentional posture choice for insider risk investigations.
Uploads (DOCX, XLSX, ZIP, PDF, plain text) are inspected in memory and the bytes are discarded. Only metadata, the SHA-256 of the file, and the resulting classifications are stored.
How the organization API key is stored on the endpoint
The organization API key is held in the operating system's native encrypted credential store: macOS Keychain, Windows Credential Manager, or Linux Secret Service. An additional application-layer envelope binds the credential to the originating host, so a keystore entry copied to another machine decrypts to garbage. Nothing sensitive is written to a plain file on the endpoint.
What this gives you:
- Backup-safe. Time Machine, iCloud, and corporate backup tools do not sweep the credential store, so a routine restore does not resurrect the key on a different machine.
- Support-safe. When an operator pastes the agent's configuration for a support ticket, no credential goes with it.
- Compliance-ready. Auditors covering SOC 2 CC6.6, ISO 27001 A.10.1, and HIPAA Technical Safeguards ask whether host credentials are encrypted at rest. The answer is yes, by the OS-native credential store with an application-layer envelope on top.
Honest scope: the keystore does not defeat an attacker who already has the user's interactive session and can read the running agent's process memory, or who can redirect the API endpoint to capture the outbound Authorization header. Those residual insider-threat risks are addressed by complementary controls: short-lived credentials, anomaly detection at the API side, and revocation workflows. They are out of scope of this page.
Operators verify the on-host credential state with
wasviking-sentinel ai-browser key-status. The command reports the
storage source and never prints the key.
Regulatory mapping
Every classification carries a stable list of compliance tags that map the finding to the regulatory frameworks it implicates. The mapping is deterministic at the detector level, so the same prompt produces the same tag set on every host.
| Framework | Tags emitted |
|---|---|
| Brazil LGPD | LGPD.Art.5.I (personal data), LGPD.Art.5.II (special categories) |
| EU GDPR | GDPR.Art.4.1 (personal data), GDPR.Art.9 (special categories) |
| US HIPAA | HIPAA.PHI, HIPAA.Privacy |
| PCI DSS | PCI.DSS, PCI.CHD |
| SOC 2 | SOC2.CC6.1 (logical access), SOC2.CC6.6 (encryption controls) |
| ISO 27001 | ISO27001.A.5.13 (data classification), ISO27001.A.8.10 (information deletion) |
| NIST 800-53 | NIST.800-53.SC-28, NIST.800-53.SC-12 |
| NIST AI RMF | NIST.AI.RMF.MAP-4.1, NIST.AI.RMF.GOVERN-3 |
| US states | CPRA |
| Canada | PIPEDA |
The dashboard surfaces these as colored chips. The event row in the table carries a deduplicated rollup of every framework the event implicates; the detail drawer shows the per-classification chip set so you can see whether a single finding maps to PCI DSS, HIPAA, GDPR, LGPD, or several of them at the same time.
Advanced detection
Three configuration knobs let you tighten or extend the classifier per tenant. All three live in the agent policy file.
Per-tenant custom detectors
Add proprietary patterns the built-in detectors do not cover, for example an internal employee ID, a project code, or a customer reference. Each entry carries its own label, category, regex (RE2 syntax), confidence, mask, and compliance tags. The agent refuses to start if a pattern fails to compile, so a typo never silently disarms detection. Up to 64 custom detectors per tenant.
Confidence calibration per label
A per-label multiplier in the [0, 1] range damps a noisy detector
for your tenant without disabling it. The multiplier only lowers
confidence, never raises it. The same engine surfaces both regex and
custom-detector findings, so calibration covers both.
LLM-assisted classification (opt in)
For prompts where the deterministic engine returns low confidence or
a high score and you want a second opinion, the agent can call an
LLM provider directly with your API key to add semantic
classifications. The customer-direct posture is intentional: the
prompt content goes from the endpoint to the LLM provider over
public TLS and never transits WASViking infrastructure. Results are
cached on disk by SHA-256 of the prompt, so identical prompts are
never re-classified. A daily budget guard stops calls when the cap
is reached. LLM findings appear in the dashboard with the llm_
prefix so they are distinguishable from regex hits.
This layer is most useful for paraphrased PII, contract text, M&A context, and proprietary IP that pattern matching cannot describe.
The configuration shape for all three knobs is documented in Set up WASViking AI Guardian.
Policy enforcement at the endpoint
You define rules in the portal under Cyber Risk > AI Guardian Policies. Each rule combines:
- Event: prompt submit, paste, file upload, or any.
- Conditions (ANDed): website category (generative AI, unsanctioned, sanctioned), data class (PII, PHI, secret, source code, internal), minimum severity, AI platform, browser.
- Targets: all users, or include/exclude specific OS user names.
- Action: Block, Warn, Audit, or Allow. Stronger actions win across overlapping rules.
When a user pastes a credit card into a chat with an unsanctioned AI tool and a Block rule matches, the agent stops the paste and displays a branded "Paste blocked" card with the rule name and the message you configured. The page receives no content. Block decisions and policy metadata are written to the local audit trail and forwarded to your tenant.
Dashboards in the portal
Three pages under Cyber Risk read the same per-tenant event store:
- AI Guardian (
/portal/cyber-risk/ai-guardian/): KPI tiles (events, critical and high, monitored devices, top AI platform), time series, severity, vendor posture, policy, OS and browser donuts, top users, and a paginated events table with masked evidence in the detail drawer. The Type column carries adecodedpill when a match came from an encoded envelope; the drawer opens with a Compliance row that lists every regulatory framework the event implicates. - AI Applications (
/portal/cyber-risk/ai-guardian/applications/): per-AI-app rollup with users, alerts, uploads, sanctioned posture, severity mix, and trend pills against the previous window. - AI Guardian Policies
(
/portal/cyber-risk/ai-guardian/policies/): row builder for the rules described above.
Where to go next
Follow the setup guide: Set up WASViking AI Guardian.
