Ответ бота читает весь канал

Самая опасная ошибка ИИ внутри мессенджера — не неверный ответ, а верный ответ не тому человеку.

У ИИ внутри рабочего мессенджера есть огромное преимущество перед отдельным чатом с моделью: он знает всё. Все каналы, задачи, расшифровки созвонов. И ровно это делает его опасным. Модель, которая знает всё, легко расскажет всё — гладким текстом, в котором утечку не заметить.

Формулировка правила важна

Первая мысль — «ответ не должен цитировать то, чего не видит спросивший». Этого недостаточно. Пересказ приватного канала утекает не хуже цитаты, а в гладком тексте его не заметит ни проверка, ни сам человек.

Правило, которое мы используем, жёстче: чужое не попадает в запрос к модели. Модель не может пересказать то, чего ей не дали. Условия видимости собирает та же функция, что решает, можно ли открыть канал, — а тесты проверяют сам текст запроса к модели, а не только её ответ.

Бот в канале — отдельная история

В строке поиска всё просто: вопрос задаёт один человек, ответ видит он же. Значит, модель получает то, что видно ему.

С ботом в канале так нельзя. Представьте: руководитель спрашивает в общем канале «@claude, что мы решили по бюджету?». Права руководителя открывают приватный канал руководства. Если бот ищет с правами спросившего — он перескажет обсуждение бюджета всему общему каналу.

Искать с правами самого бота — тоже плохо: его учётка состоит в каналах, куда её добавили, и может видеть больше спросившего. Поэтому правила такие:

  • Личка один на один с ботом — права спросившего: ответ прочитает только он.
  • Любой другой канал — только то, что видно каждому участнику этого канала: сам канал, публичные каналы пространства, неприватные задачи и записи этого канала.
  • Если среди участников есть гость — публичных каналов нет и в этом списке: гость их не видит.
  • И спросивший, и бот должны состоять в канале. Иначе через бота можно было бы читать каналы, куда не звали.

Токен бота снаружи — не ключ ко всему

Поиск для бота работает от имени другого человека. Если токен бота украдут, он не должен превратиться в отмычку. Поэтому этот поиск принимает запросы только изнутри нашей инфраструктуры: запрос, пришедший через внешний прокси, отклоняется даже с настоящим токеном.

Без источников — без ответа

Вторая половина честности — не придумывать. Если поиск не нашёл ни одного подходящего куска, модель не зовётся вовсе: спрашивать её без источников значит разрешить ей сочинить ответ. Каждое утверждение в ответе помечено номером источника, а под ответом стоит подпись, что его составила модель.

Что нашлось по дороге

Проверяя эти правила, мы нашли две старые дыры, не связанные с ИИ. Обычный поиск показывал гостю переписку публичных каналов, куда его не звали, а записи голосовых каналов — в том числе приватных — видели все участники пространства. Обе закрыты, на обе есть тесты, которые краснеют на прежнем коде.

Подробнее о том, что умеет ИИ-слой, — на странице ИИ и MCP-коннектора.