보안

내 작업은 내 것으로 남아요

Done은 AI 에이전트가 내 작업 목록을 함께 쓰는 시대를 위해 만들었어요. 그래서 격리, 범위가 제한된 액세스, 사람의 승인은 부가 기능이 아니라 기반이에요.

계정 격리

  • 모든 작업, 프로젝트, 태그는 워크스페이스 멤버십 범위로 제한돼요. 쿼리는 내 계정이 볼 수 있는 행만 반환하며, 계정을 넘나들며 읽는 경로는 없어요.
  • 내부용 작성자/귀속 컬럼은 행이 데이터 계층을 벗어나기 전에 제거되므로 API에 노출되지 않아요.
  • 공유 워크스페이스와 프로젝트별 공유는 직접 켜야 동작해요. 팀원은 내가 초대한 곳만 볼 수 있고 그 외에는 아무것도 볼 수 없어요.

인증

  • 비밀번호는 argon2id로 해시하며 평문으로 저장하지 않아요. 인증은 공유 환경 시크릿이 아니라 계정별로 이루어져요.
  • 2단계 인증(TOTP)을 켜면 비밀번호가 유출되더라도 그것만으로는 로그인할 수 없어요. 비밀번호 재설정에도 똑같이 적용되므로 이메일 접근만으로는 계정을 탈취할 수 없고, 기기를 잃어버렸을 때를 대비해 일회용 복구 코드 10개가 제공돼요.
  • 세션은 계정별 쿠키 기반이에요. 각 세션은 정확히 한 명의 사용자에게 연결되고, 모든 요청은 그 사용자 범위로 제한돼요.
  • 사이트 전체가 동일 출처이며 엄격한 Content-Security-Policy와 함께 HTTPS로 제공돼요. 인라인 스크립트는 요청마다 새로 발급되는 nonce가 있어야만 실행되므로 주입된 스크립트는 실행되지 않아요.

에이전트 액세스와 토큰

  • 계정마다 전용 MCP 엔드포인트와 전용 토큰이 있어요. 공유 토큰이나 전역 토큰은 없으며, 토큰은 자기 계정의 데이터만 볼 수 있어요.
  • Pro와 Teams에서는 토큰 범위를 읽기 전용이나 단일 프로젝트로 좁힐 수 있어요. 에이전트는 꼭 필요한 만큼의 액세스만 갖게 돼요.
  • OAuth 2.1(Done은 자체 MCP 엔드포인트를 위한 완전한 인증 서버예요) 또는 bearer 토큰으로 연결하세요. 토큰을 재발급하거나 폐기하면 즉시 무효화돼요.
  • 비밀번호를 변경하거나 재설정하면 MCP 토큰과 연결된 앱을 포함한 모든 API 자격 증명도 함께 폐기돼요. 계정 침해가 의심되어 복구한 뒤에도 에이전트 액세스가 조용히 남아 있는 일은 없어요.

모든 결과는 내가 승인해요

  • 승인이 필요한 작업은 스스로 닫히지 않아요. 에이전트는 본격적인 작업 전에 계획을, 완료 전에 요약을 제안하고, 확인 필요에서 내가 승인하기 전에는 아무것도 완료되지 않아요.
  • 작업을 자동 승인 가능하게 바꾸는 건 사람만 할 수 있어요. 에이전트가 자기 승인 절차를 직접 풀 수는 없어요.
  • 모든 에이전트 세션은 도구 호출 예산과 시간 예산이 함께 기록된 실행으로 남아요. 무엇이 실행됐는지 정확히 확인하고 어디까지 진행할지 상한을 둘 수 있어요.

내 데이터

  • 데이터는 Cloudflare D1(엣지 SQLite)에, 작업에 첨부한 파일은 Cloudflare R2에 저장되고 둘 다 하나의 Worker가 제공해요. 내 데이터를 이리저리 넘기는 별도 백엔드는 없어요.
  • 작업을 삭제하면 즉시 영구 삭제되지 않고 휴지통으로 이동하며, 30일 동안 복원할 수 있어요.
  • 언제든 작업을 CSV나 Markdown으로 내보낼 수 있고, 앱에서 직접 계정과 모든 데이터를 삭제할 수 있어요.

Slack 및 서드파티 연결

  • Slack 앱은 사용자별로 연결되며, Done에 로그인한 본인이 확인한 뒤에만 연결돼요. 소유자의 동의 없이는 Slack 계정을 Done 계정에 묶을 수 없어요.
  • Slack에서 들어오는 모든 요청은 Slack 서명 시크릿으로 검증하고, 재전송된(오래된) 요청은 거부해요.
  • Google Calendar와 구독한 ICS 캘린더 피드는 모두 일정이 있는 시간대만 읽어 오는 읽기 전용 동기화이며, 일정 제목이나 세부 내용은 가져오지 않아요. 전부 선택 사항이라 직접 연결하지 않으면 아무것도 연결되지 않아요.

문제를 발견하셨나요?

보안 문제는 security [at] trydone.app 주소로 비공개 제보해 주시면 답변드릴게요. 악용될 수 있는 문제는 공개 이슈로 올리지 말아 주세요.