Ответ бота видят все в канале

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

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

Важно, как сформулировано правило

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

Наше правило жёстче: чужое не попадает в запрос к модели. Модель не может пересказать то, чего ей не дали. Что можно передать модели, определяет тот же код, который решает, можно ли открыть канал, — а автоматические тесты проверяют сам текст, который уходит модели, а не только её ответ.

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

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

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

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

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

Украденный токен бота — не ключ ко всему

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

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

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

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

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

Подробнее о том, что умеет ИИ в Kontext, — на странице «ИИ и MCP-коннектор».