Sécurité
Vos tâches restent les vôtres
Done est conçu pour un monde où des agents IA partagent votre liste de tâches. L’isolation, l’accès limité et la validation humaine n’y sont donc pas des options : ce sont les fondations.
Isolation des comptes
- Chaque tâche, chaque projet et chaque étiquette dépend de votre appartenance à un espace de travail. Une requête ne peut renvoyer que les lignes que votre compte a le droit de voir : aucun chemin ne lit d’un compte à l’autre.
- La colonne interne de création et d’attribution est retirée avant qu’une ligne ne quitte la couche de données : elle ne fait donc jamais partie de la surface de l’API.
- Les espaces de travail partagés et le partage par projet sont à activer vous-même : un coéquipier ne voit que ce à quoi vous l’invitez, rien d’autre.
Authentification
- Les mots de passe sont hachés avec argon2id, jamais stockés en clair. L’authentification se fait par compte, pas avec un secret d’environnement partagé.
- Activez l’authentification à deux facteurs (TOTP), et un mot de passe volé ne suffit plus pour se connecter. Elle s’applique aussi à la réinitialisation du mot de passe : l’accès à la boîte de réception seul ne permet pas de prendre le contrôle d’un compte. Vous recevez dix codes de récupération à usage unique en cas de perte de votre appareil.
- Les sessions sont propres à chaque compte et reposent sur des cookies. Chaque session correspond à un seul utilisateur, et chaque requête est limitée à cet utilisateur.
- Tout le site est servi depuis la même origine, en HTTPS, avec une Content-Security-Policy stricte : les scripts en ligne ne s’exécutent qu’avec un nonce renouvelé à chaque requête, de sorte qu’un script injecté ne s’exécute pas.
Accès des agents et jetons
- Chaque compte a son propre point d’accès MCP et ses propres jetons. Il n’existe aucun jeton partagé ou global : un jeton ne voit jamais que les données de son compte.
- Avec Pro et Teams, limitez un jeton à la lecture seule ou à un seul projet : un agent reçoit exactement l’accès dont il a besoin, rien de plus.
- Connectez-vous par OAuth 2.1 (Done est un serveur d’autorisation complet pour son point d’accès MCP) ou avec un jeton bearer. Régénérer ou révoquer un jeton l’invalide immédiatement.
- Changer ou réinitialiser votre mot de passe révoque aussi tous les identifiants d’API, jetons MCP et applications connectées compris. Après une compromission présumée, aucun accès d’agent ne reste donc actif à votre insu.
Vous approuvez chaque résultat
- Une tâche soumise à validation ne peut pas se clôturer toute seule. Un agent propose un plan avant un travail conséquent et un résumé avant la clôture. Rien n’est terminé sans votre approbation dans À valider.
- Seul un humain peut rendre une tâche approuvable automatiquement : un agent ne peut pas lever sa propre validation.
- Chaque session d’agent est enregistrée comme une exécution, avec ses budgets d’appels d’outils et de temps. Vous voyez exactement ce qui a tourné et vous pouvez lui fixer un plafond.
Vos données
- Les données sont stockées dans Cloudflare D1 (SQLite en périphérie) et les fichiers joints aux tâches dans Cloudflare R2, le tout servi par un seul Worker. Aucun backend séparé ne fait circuler vos données.
- Supprimer une tâche la met à la corbeille, avec 30 jours pour la restaurer. Ce n’est pas une suppression définitive immédiate.
- Exportez vos tâches en CSV ou en Markdown à tout moment, et supprimez vous-même votre compte (avec toutes ses données) depuis l’application.
Slack et connexions tierces
- L’application Slack se relie utilisateur par utilisateur, et seulement après que vous l’avez confirmé en étant connecté à Done. Une identité Slack ne peut pas être rattachée à un compte sans le consentement de son propriétaire.
- Chaque requête entrante de Slack est vérifiée à l’aide de sa signature, calculée avec le secret de signature de Slack, et les requêtes rejouées (périmées) sont rejetées.
- Google Calendar et les flux de calendrier ICS auxquels vous êtes abonné ne synchronisent que les créneaux occupés, en lecture seule, jamais les titres ni les détails des événements. Tout cela est entièrement facultatif : rien n’est connecté tant que vous ne le connectez pas.
Vous avez trouvé quelque chose ?
Signalez un problème de sécurité en privé à security [arobase] trydone.app et nous vous répondrons. Merci de ne pas ouvrir de ticket public pour une faille exploitable.