Ответ бота читает весь канал
Самая опасная ошибка ИИ внутри мессенджера — не неверный ответ, а верный ответ не тому человеку.
У ИИ внутри рабочего мессенджера есть огромное преимущество перед отдельным чатом с моделью: он знает всё. Все каналы, задачи, расшифровки созвонов. И ровно это делает его опасным. Модель, которая знает всё, легко расскажет всё — гладким текстом, в котором утечку не заметить.
Формулировка правила важна
Первая мысль — «ответ не должен цитировать то, чего не видит спросивший». Этого недостаточно. Пересказ приватного канала утекает не хуже цитаты, а в гладком тексте его не заметит ни проверка, ни сам человек.
Правило, которое мы используем, жёстче: чужое не попадает в запрос к модели. Модель не может пересказать то, чего ей не дали. Условия видимости собирает та же функция, что решает, можно ли открыть канал, — а тесты проверяют сам текст запроса к модели, а не только её ответ.
Бот в канале — отдельная история
В строке поиска всё просто: вопрос задаёт один человек, ответ видит он же. Значит, модель получает то, что видно ему.
С ботом в канале так нельзя. Представьте: руководитель спрашивает в общем канале «@claude, что мы решили по бюджету?». Права руководителя открывают приватный канал руководства. Если бот ищет с правами спросившего — он перескажет обсуждение бюджета всему общему каналу.
Искать с правами самого бота — тоже плохо: его учётка состоит в каналах, куда её добавили, и может видеть больше спросившего. Поэтому правила такие:
- Личка один на один с ботом — права спросившего: ответ прочитает только он.
- Любой другой канал — только то, что видно каждому участнику этого канала: сам канал, публичные каналы пространства, неприватные задачи и записи этого канала.
- Если среди участников есть гость — публичных каналов нет и в этом списке: гость их не видит.
- И спросивший, и бот должны состоять в канале. Иначе через бота можно было бы читать каналы, куда не звали.
Токен бота снаружи — не ключ ко всему
Поиск для бота работает от имени другого человека. Если токен бота украдут, он не должен превратиться в отмычку. Поэтому этот поиск принимает запросы только изнутри нашей инфраструктуры: запрос, пришедший через внешний прокси, отклоняется даже с настоящим токеном.
Без источников — без ответа
Вторая половина честности — не придумывать. Если поиск не нашёл ни одного подходящего куска, модель не зовётся вовсе: спрашивать её без источников значит разрешить ей сочинить ответ. Каждое утверждение в ответе помечено номером источника, а под ответом стоит подпись, что его составила модель.
Что нашлось по дороге
Проверяя эти правила, мы нашли две старые дыры, не связанные с ИИ. Обычный поиск показывал гостю переписку публичных каналов, куда его не звали, а записи голосовых каналов — в том числе приватных — видели все участники пространства. Обе закрыты, на обе есть тесты, которые краснеют на прежнем коде.
Подробнее о том, что умеет ИИ-слой, — на странице ИИ и MCP-коннектора.