Lesson 03 DLP While Using AI
Theme:
Lesson 03 · Slide 1

Lesson 03 — DLP While Using AI

Data Loss Prevention, rewritten for a world where the biggest egress channel is the prompt box on your screen.

Audience: Everyone AI OpSec Foundations

Notes: The lesson is a habit, not a product. Four classes, one test, one redaction reflex.
Lesson 03 · Slide 2

What you will learn

Lesson 03 · Slide 3

What is DLP?

Classic Data Loss Prevention is a set of controls that watch the ways data can leave your organization — email, uploads, USB, chat — and block or flag anything sensitive.

AI adds a new egress channel that most classic DLP tools do not see: the prompt box. Every time you paste into a chat window, an IDE assistant, or a browser extension, you are performing an egress event.

New definition

DLP while using AI = preventing sensitive data from entering a prompt in the first place.

Lesson 03 · Slide 4

A four-class model

ClassExamples
NeverSecrets, credentials, API keys, PII of real customers
Enterprise tier onlySource code, internal docs, infra diagrams, ticket contents with internal names
With redactionStack traces, SQL, log snippets, configs
FreePublic docs, open-source, generic questions
Lesson 03 · Slide 5

The "email test"

Would I email this to an unknown vendor?

If the answer is no, do not paste it into a prompt.

Lesson 03 · Slide 6

Redaction that still lets the AI help — stack trace

Raw (do not send)

Traceback (most recent call last):
  File "/srv/acme/orders/api.py", line 142, in checkout
    user = db.get_user("jane.smith@acme.corp")
ConnectionError: could not connect to
  db-prod-3.internal.acme.corp:5432

Redacted (safe)

Traceback (most recent call last):
  File "<app>/orders/api.py", line 142, in checkout
    user = db.get_user("<user@example.com>")
ConnectionError: could not connect to
  <db-host>:5432

Keep the shape, mask the values. The model can still diagnose the error.

Lesson 03 · Slide 7

Redaction, part 2 — SQL query

Raw (do not send)

SELECT order_id, total, status
FROM orders_prod_2026
WHERE customer_id = 'cust_84312'
  AND created_at >= '2026-01-01'
  AND created_at <  '2026-02-01';

Redacted (safe)

SELECT order_id, total, status
FROM orders_table
WHERE customer_id = '<customer_id>'
  AND created_at >= '2026-01-01'
  AND created_at <  '2026-02-01';

Dates alone are low-risk. Real table names and real customer IDs are not.

Lesson 03 · Slide 8

Side channels you forget

If it can reach the model, it is a prompt. Treat it like one.

Lesson 03 · Slide 9

Zero-retention is not invisibility

Zero-retention is a contract, not a magic shield

It changes what the provider promises to keep on disk by default. It does not change physics, law, or operational reality.

Lesson 03 · Slide 10

Example — redacting an auth bug

Raw report

User alice@acme.corp reports that
POST /api/v2/sessions/refresh returns
401 even though her cookie
SESSION=abc123xyz789qrs456tuv
is still inside its TTL.
cc @platform-core @identity-team

Safe to paste

A user reports that
POST /sessions/refresh returns 401
even though the session cookie
appears to still be inside its TTL.
What are common causes?

Describe the bug. Never paste a live cookie "to illustrate the shape."

Lesson 03 · Slide 11

Rules to remember

1 / ?