Выходной фильтр для AI: персональные данные и секреты не уходят за периметр организации
Firewall контролирует сеть, но не семантику payload. Локальная модель детектирует персональные данные и секреты до того, как текст агента покидает периметр — исполняемый фильтр вместо policy и code review.
Проблема
В сценарии cross-org agent negotiation у границы уже стоит firewall — на уровне сети. Но что именно проходит через него, firewall не разбирает. Агент компании А может включить в своё сообщение данные о клиентах из примеров, внутренние ключи API или credentials в заголовках. Сетевая граница этого не останавливает — она не смотрит в семантику payload.
Та же дыра есть в любом RAG-сценарии: корпоративные документы попадают в контекст агента, агент пересылает фрагменты во внешнюю LLM или в другую org. Нет ни одного слоя, который автоматически блокирует случайную утечку до того, как текст ушёл.
Стандартный ответ «напишем code review policy» работает до первого дедлайна.
Методика
Локальная модель детектирует и редактирует PII и secrets до того, как текст пересекает trust boundary. Никаких облачных вызовов — данные не покидают контур.
-
1. Privacy Filter.
openai/privacy-filter:
1.5B параметров, 50M активных (MoE), контекст до 128k токенов. Один проход по тексту,
запускается локально через
transformers. -
2. 8 категорий спанов.
Для agent-сценария критичны три:
secret(API-ключи, пароли, токены),private_person/private_email/private_phone/private_address— PII (персональные данные),account_number(банковские реквизиты). -
3. Egress-функция.
Каждый текстовый блок, уходящий за org-границу, проходит через
egress_gate(text)перед форвардингом. На выходе — отредактированный текст и лог замен с позициями и категориями — это и есть audit trail. - 4. Human-in-the-loop checkpoint на флагах с низкой уверенностью: агент ставит сообщение на паузу, человек принимает решение о форвардинге.
Как выглядит в коде
встраивается в цикл агента как обёртка вокруг отправки
from egress_gate import egress_gate
# вместо прямой отправки:
outgoing_message = agent.compose_message(context)
safe_message, log = egress_gate(outgoing_message)
send_to_partner_org(safe_message)
store_audit(log)
Что детектируется на реальных примерах
Пример 1 — credentials в теле агентного сообщения
До редакции
Deploying the webhook now. Use Authorization: Bearer sk-proj-K9mX2pQw7nL4vR8tY3hJ6cF1aB5eD0gH2iN for the callback, and send failure alerts to ops-lead@merchant.example.com.
После редакции (egress-safe)
Deploying the webhook now. Use Authorization: Bearer [secret] for the callback, and send failure alerts to [private_email].
Пример 2 — PII клиента в диалоге агента поддержки
До редакции
Support bot: I've updated the shipment address. The order stays under Elena Volkova; call her at +7 (916) 555-42-18 if the courier cannot reach the building.
После редакции (egress-safe)
Support bot: I've updated the shipment address. The order stays under [private_person]; call her at [private_phone] if the courier cannot reach the building.
Артефакт
github.com/dobryakov/bots-discuss-spec/tree/master/privacy-egress-gate —
функция egress_gate(text),
демо с реальными примерами, requirements.txt.
Устанавливается и запускается одной командой, модель скачивается локально при первом запуске.
Где ломается
OpenAI формулируют прямо: Privacy Filter — это data-minimization aid, не anonymization, не compliance-гарантия. Три failure mode:
- Доменно-специфичные идентификаторы. Внутренние коды клиентов, CRM-ID, артикулы — если они «секрет» в вашем домене, фильтр их не знает. Проходят незамеченными. Нужны кастомные правила поверх стандартных категорий.
- Контекстно-зависимый пересказ. Агент может пересказать PII своими словами, не цитируя дословно — «клиент из Москвы, который вчера звонил». Фильтр по токен-спанам это не поймает. Human-in-the-loop нужен не только на флагах, но и на содержательных сообщениях целиком.
- Latency. 50M активных параметров достаточны для текста, но задержка на каждом egress-вызове накапливается. Проектируется как async gate с буфером — не синхронный блокирующий вызов в critical path агента.
Egress-редакция — первый слой контроля, не финальный. Закрывает случайные утечки, создаёт audit trail, не заменяет архитектурное разделение доступа и не является юридической anonymization.
Для кого и почему
CTO и architect'у в multi-agent системах с внешними интеграциями: runtime gate, который автоматически блокирует случайные утечки PII и secrets через агентные сообщения — без code review, без policy, без изменения архитектуры агента.
Head of AI: governance AI-систем — это инженерная задача с измеримым выходом (audit log), а не чеклист в документации.
Нужна governance-архитектура для ваших AI-агентов?
Trust boundary, data isolation, audit trail, human-in-the-loop — не как чеклист, а как работающая инженерная практика. Диагностика и архитектурный дизайн под ваш контур.
Написать на почтуДругие разборы
Серия инженерных разборов: реальная задача → методика → работающий артефакт → честный разбор, где он ломается.
К серии →