# Маскирование данных

Персональные данные и секреты заменяются псевдонимами до отправки модели и возвращаются в ответе.

**Маскирование данных** уменьшает объем персональных данных и секретов, которые получает провайдер модели. Роутер находит в запросе ФИО, email, телефоны, паспорта, ИНН и счета физлиц, СНИЛС, банковские карты, IP-адреса, ключи и токены и заменяет каждое значение псевдонимом вида `[EMAIL_1]`. Модель отвечает с псевдонимами, а роутер возвращает в ответ исходные значения — и в обычном ответе, и в стриме, и в аргументах вызовов инструментов.

Маскирование включает владелец или администратор пространства Router в кабинете, на странице «Защита данных». Код клиента менять не нужно.

## Как это работает

1. Запрос приходит в роутер: «Ответьте Анне на [anna@example.com](mailto:anna@example.com)».
2. Роутер заменяет значения: «Ответьте Анне на `[EMAIL_1]`». Одно значение получает один псевдоним, даже если записано по-разному.
3. Модель получает только псевдонимы и отвечает с ними. Чтобы модель не меняла псевдонимы, роутер добавляет в начало диалога короткую инструкцию (около 100 входных токенов, оплачиваются как обычные) — только если в запросе что-то замаскировано.
4. Роутер ставит значения на место и отдает ответ: «Готово, письмо для [anna@example.com](mailto:anna@example.com)».

Нумерация идет по первому появлению, поэтому история диалога при каждом новом ходе маскируется одинаково и кэш промптов провайдера продолжает работать.

## Категории

| Категория        | Что находит                                                                                               |
| ---------------- | --------------------------------------------------------------------------------------------------------- |
| ФИО              | Полное ФИО на русском, фамилию с инициалами, имя с фамилией рядом со словами «ФИО», «клиент», «Уважаемый» |
| Email            | Адреса электронной почты                                                                                  |
| Телефон          | Российские номера с +7 или 8 и международные с кодом страны                                               |
| Паспорт РФ       | Серию и номер рядом со словами «паспорт», «серия»                                                         |
| ИНН физлица      | 12 цифр с верной контрольной суммой рядом со словом «ИНН»                                                 |
| СНИЛС            | Номер с верной контрольной суммой                                                                         |
| Счет физлица     | 20-значные счета физлиц (40817, 40820, 423, 40802)                                                        |
| Банковская карта | Номера карт Мир, Visa и Mastercard с верной контрольной суммой                                            |
| IP-адрес         | IPv4 и IPv6, кроме локальных адресов                                                                      |
| Секреты и ключи  | Ключи и токены облаков, LLM-провайдеров, Git-платформ, пароли в URL и в `.env`                            |

Для отдельного ключа можно оставить только часть категорий, например «только секреты» для ключа кодового агента. Это делает тот, кто управляет всеми ключами пространства.

## Файлы и картинки

Роутер не читает картинки, аудио и файлы. Пока маскирование включено, такие запросы по умолчанию не уходят в глобальные модели: если подходящей модели не осталось, роутер отвечает `400` с `metadata.reason: "masking_files_blocked"`. В российские модели файлы уходят как обычно. Блокировку можно выключить на странице «Защита данных».

## Стоимость

Пока маскирование включено, к стоимости каждого запроса добавляется надбавка. Ставка указана в кабинете на странице «Защита данных». Надбавка видна отдельной строкой в карточке вызова, в Статистике и в месячном отчете договорной оплаты. Цены в списке моделей указаны без нее.

## Логи

В Логах фильтр «Чувствительные данные» показывает запросы, в которых маскирование что-то нашло: любые данные, только персональные данные, только секреты или одну категорию. Карточка вызова показывает, сколько значений каждой категории заменено. Журнал содержимого хранит запрос и ответ с псевдонимами.

## Ошибки

Если маскирование не смогло выполниться, роутер не отправляет запрос модели и ничего не списывает: ответ `503` с `metadata.reason: "guardrail_unavailable"`. Запрос можно повторить.

## Ограничения

- Поиск вероятностный: часть значений может остаться незамеченной.
- Одиночные имена («Оля, привет»), иностранные имена и адреса пока не маскируются.
- Значение возвращается в той форме, в которой было записано впервые. Склонения ФИО не исправляются.
- Подписанные `reasoning_details` передаются без изменений.
- Маскирование не делает данные обезличенными: пока у роутера есть соответствие псевдонимов и значений, данные остаются персональными. Оно уменьшает объем данных у провайдера модели, но не меняет их правовой статус и не снимает обязанностей оператора, в том числе по трансграничной передаче.
