Безопасность

Ваши задачи остаются вашими

Done создан для мира, где ИИ-агенты работают с вашим списком задач, — поэтому изоляция, ограниченный доступ и одобрение человеком здесь не функции, а фундамент.

Изоляция аккаунтов

  • Каждая задача, проект и тег привязаны к вашему участию в рабочем пространстве. Запрос может вернуть только те строки, которые разрешено видеть вашему аккаунту, — пути, читающего данные между аккаунтами, не существует.
  • Внутренний столбец с автором записи удаляется до того, как строка покинет слой данных, поэтому он никогда не попадает в API.
  • Общие рабочие пространства и доступ к отдельным проектам включаются только по вашему желанию: коллега видит лишь то, куда вы его пригласили, и ничего больше.

Аутентификация

  • Пароли хешируются с помощью argon2id и никогда не хранятся в открытом виде. Аутентификация своя у каждого аккаунта — это не общий секрет окружения.
  • Включите двухфакторную аутентификацию (TOTP) — и украденного пароля будет недостаточно, чтобы войти. Она действует и при сбросе пароля, так что одного доступа к почте мало, чтобы захватить аккаунт, а на случай потери устройства вы получаете десять одноразовых кодов восстановления.
  • Сессии привязаны к аккаунту и работают через cookie; каждая сессия соответствует ровно одному пользователю, и каждый запрос ограничен его данными.
  • Весь сайт работает в одном источнике (same-origin) и отдаётся по HTTPS со строгой Content-Security-Policy: встроенные скрипты выполняются только с новым nonce на каждый запрос, поэтому внедрённый скрипт не запустится.

Доступ агентов и токены

  • У каждого аккаунта свой MCP-эндпоинт и свои токены. Общего или глобального токена нет — токен видит только данные своего аккаунта.
  • В Pro и Teams токен можно ограничить только чтением или одним проектом, чтобы агент получил ровно тот доступ, который ему нужен, и ничего больше.
  • Подключайтесь по OAuth 2.1 (Done — полноценный сервер авторизации для своего MCP-эндпоинта) или с bearer-токеном. Перевыпуск или отзыв токена делает его недействительным немедленно.
  • Смена или сброс пароля отзывает и все API-доступы — MCP-токены и подключённые приложения, — поэтому после подозрения на взлом доступ агентов не останется незаметно активным.

Вы одобряете каждый результат

  • Задача с одобрением не может закрыть сама себя. Агент предлагает план перед существенной работой и резюме перед завершением; ничто не становится выполненным без вашего одобрения в разделе «Ждут вас».
  • Сделать задачу автоматически одобряемой может только человек — агент не может сам снять с себя ограничение.
  • Каждая сессия агента записывается как запуск с бюджетами на вызовы инструментов и время, так что вы видите, что именно выполнялось, и можете ограничить, как далеко он зайдёт.

Ваши данные

  • Данные хранятся в Cloudflare D1 (SQLite на edge), а прикреплённые к задачам файлы — в Cloudflare R2; и то и другое обслуживает один Worker — никакого отдельного бэкенда, через который ходили бы ваши данные.
  • Удалённая задача попадает в Корзину, откуда её можно восстановить в течение 30 дней, а не стирается мгновенно и навсегда.
  • Экспортируйте задачи в CSV или Markdown в любой момент и удаляйте аккаунт (со всеми данными) самостоятельно прямо из приложения.

Slack и сторонние подключения

  • Приложение Slack привязывается отдельно для каждого пользователя и только после того, как вы, войдя в Done, это подтвердите, — учётную запись Slack нельзя привязать к аккаунту без согласия владельца.
  • Каждый входящий запрос от Slack проверяется по подписи с секретом Slack (signing secret), а повторно отправленные (устаревшие) запросы отклоняются.
  • Google Calendar и подписки на ICS-календари синхронизируют только занятое время и только для чтения — никогда названия или детали событий — и полностью необязательны: ничто не подключается, пока вы сами этого не сделаете.

Нашли уязвимость?

Сообщите о проблеме безопасности конфиденциально на security [at] trydone.app — мы ответим. Пожалуйста, не создавайте публичный issue о том, чем можно воспользоваться для атаки.