---
title: "02 How MDflow Protects Your Data"
canonical_url: https://mdflow.cz/share/c/h0L7MvX5Cy5sST3qPnApqHOmrQ36JTVy169qJMtDMya9Kc30zm04cg9OuPSSPwvj/6c08643f-a2c2-41e2-9b50-4616aa303476
md_url: https://mdflow.cz/share/c/h0L7MvX5Cy5sST3qPnApqHOmrQ36JTVy169qJMtDMya9Kc30zm04cg9OuPSSPwvj/6c08643f-a2c2-41e2-9b50-4616aa303476.md
visibility: public
---

# How MDflow Protects Your Data

A plain summary of MDflow's privacy and security characteristics, so you can decide what to trust it with.

## Your workspace

- **Workspace routes require authentication.**
- **Server-side ownership checks** protect every document and folder read and write. Ownership is enforced on the server, not in the browser, so other users' workspaces are never visible — including through the API and MCP server.

## Encryption

- Encrypted documents are **stored only as ciphertext**. Encryption and decryption happen in your browser, so the server never receives the plaintext or the password.
- Encrypted contents are **excluded from search** and **cannot be read by anyone without the password** — including through a share link, including by MDflow.

See [01 Document Encryption](/doc/b230e154-6c58-4bfd-8a7a-c70bc7bebcd7).

## Public share links

- Links use **random 64-character slugs**.
- **Disabling sharing invalidates the URL permanently.** Re-enabling generates a fresh one.
- An anonymous reader sees only the shared document's **title, body, commenting availability, and referenced public images**.
- Public links **do not expose your identity** or any other workspace content.
- Share pages are `noindex`.

The model is *unlisted link*, not *password*. Anyone with the URL can read it and can pass it on.

## Private shares

- Access is granted **only to the specific signed-in email addresses** the share was created for.
- Shares can be **revoked individually or all at once**, effective immediately.

## Comments

- Signed-in commenters see **display names and avatars only — never email addresses**.
- Comment reads and writes **require possession of the active random share URL**. Knowing a document ID alone does not grant comment access.
- Browser sessions **cannot enumerate the comments table** directly.

## Images

- Uploaded images **remain private** unless the saved public document references them.
- Cloned copies include **only** images referenced by the saved public document.

## Tokens and API access

- **API access is scoped to the token owner's account.** A token can read and write that owner's documents and folders and manage their sharing.
- **Tokens can be revoked immediately.**
- Token **hashes** are stored, never the plaintext token.
- API responses use `Cache-Control: no-store`.
- Creating and using tokens requires **Pro**.

The important caveat, stated plainly:

> **A Personal Access Token is account-wide.** It is not scoped to a workspace, a folder, or a permission level. Any tool or agent you give a token to can read and write **everything** in your account and manage its sharing. If that is too much, revoke the token — there is no narrower grant.

The one thing a token **cannot** do is read version history, which is private to the owner and not exposed through the API or MCP server. Nor can it read the contents of encrypted documents.

## Integrations

- **GitHub** — the access token is encrypted at rest, stays on the server, is **never sent to the browser**, and is revoked when you disconnect. MDflow lists your repositories, branches and files, and writes the files you edit.
- **Google Drive** — MDflow uses Google's least-privilege **`drive.file`** scope, which grants access **only** to files you explicitly pick through Google's own picker, or that MDflow creates. Never your whole Drive. Credentials are encrypted at rest, stay on the server, and are revoked when you disconnect.

Neither integration copies content into MDflow. Files are read and written live, so the repository or Drive remains the single source of truth.

## Your data is portable

This is a security property too — the ability to leave is a check on any provider.

- **Download** any document as `.md`.
- **Export** an entire workspace as a self-contained `.zip` with every folder, document and image, that renders offline in Obsidian, VS Code or GitHub.
- **Delete** your account and everything in it, permanently, from Settings.

See [02 Exporting a Workspace](/doc/7666542c-b167-4475-9026-2fb85f335e19) and [03 Deleting Your Account and Data](/doc/e74e57f7-89cc-4bfb-89ab-eb566a13c781).

## What MDflow does not claim

Being honest about the boundaries:

- MDflow is **not zero-knowledge by default**. Only documents you explicitly encrypt are unreadable to the server. Everything else is ordinary stored text.
- There is **no trash or soft delete**. Deletions are immediate and permanent.
- There is **no per-workspace or read-only token scope**.
- Public share links are **unlisted, not access-controlled**.
