# Privacy recipes

> The settings to use, and what you'll see, for six common situations — from local-only AI to sharing a vault with git.

Source: https://docs.docgraph.app/privacy/recipes/

Each recipe says which settings to use, how to check they're working, and what they don't cover. The defaults already match the first recipe; the others are about opening a door deliberately and knowing where it leads.

## Local AI only

*You want AI help, and nothing leaving your computer.*

This is how DocGraph starts. To keep it that way:

- Use a model from a group marked **local** in the chat's model picker — the built-in runtime, Apple's on-device model, or Ollama on this computer. Don't add a key in the **AI Providers** section of **AI → Models & providers**.
- Leave **AI → Chat & index → Allow remote Ollama** and **AI → Web search** off, and leave the external agents and the MCP server in **Connections → Agents & MCP** off.

**How to check:** the [privacy badge](https://docs.docgraph.app/privacy/badge/) reads **100% local** (with a shield icon) while you chat, and the Network tab of the [Activity log](https://docs.docgraph.app/privacy/activity/) gains no rows when you ask a question.

*[Screenshot: The privacy badge reading "100% local" above the chat, where a local Ollama model is selected.]*

**Not covered:** model downloads (each one asks first) and anything you turn on later — the badge will tell you when that happens.

## Cloud AI for some chats

*Most of the time local is fine, but for some questions you want a stronger hosted model.*

1. **AI → Models & providers:** save a key for one provider, then **allow** it in the system dialog. Set a **spending limit** on the key at the provider's website.
2. Leave **Block secrets from being sent to cloud providers** on.
3. In chat, pick the provider's model only for the conversations that need it; pick a local model again afterwards.

**How to check:** while a cloud model is selected, the badge reads **Cloud AI · *provider*** and a strip above the message box says where messages go. Switching an existing conversation to a cloud model shows a line in the thread — before you send — warning that the earlier history will go too; choose **Start a fresh chat instead** to keep it local.

*[Screenshot: The badge reading "Cloud AI · OpenRouter" while an OpenRouter model is selected in the chat.]*

**Not covered:** what the provider does with your content once it has it — that's its policy. [More](https://docs.docgraph.app/privacy/ai/#cloud-providers).

## I keep API keys in my notes

*Your notes include setup steps, and sometimes the keys that go with them.*

1. **Privacy → Activity & audit → Security Audit → Scan now** to find what's already there. Move real secrets to a password manager, or [encrypt](https://docs.docgraph.app/privacy/encryption/) the notes that must keep them.
2. Keep **Warn me when saving a file adds a new secret** on.
3. Set **When content is about to leave this machine** to **Block it** if nothing sensitive should ever leave by accident.
4. Add known-harmless values (test keys) to **Ignore these values** rather than dismissing each finding.

**How to check:** saving a note with a new key shows **Possible secret in *file***; sending one to a cloud model shows **Blocked before it left**.

*[Screenshot: A red card in the corner: "Blocked before it left — GitHub token found in content about to be sent to the model at OpenRouter".]*

**Not covered:** a scan reads HTML notes only (Markdown is checked when DocGraph saves it), and a secret without a recognisable format can be missed. A local model's prompts aren't checked unless you turn on **Inspect prompts to my local model too**. [More](https://docs.docgraph.app/privacy/secrets/).

## Sensitive client notes

*Some notes must stay private even from someone with access to your computer.*

1. **Encrypt** those notes — the whole file, or just the passages that matter — from the lock icon in the document toolbar. Use a strong passphrase you keep elsewhere; there is no recovery.
2. Encrypted notes are left out of search and out of the notes the AI retrieves, so a cloud model never receives them as context. Keep conversations *about* those clients on a local model all the same — what you type in chat is sent as written.
3. Turn on your computer's **full-disk encryption** (FileVault). DocGraph's search index holds the text of every note you *haven't* encrypted.
4. If the vault is backed up with git, encrypt **before** the notes' first commit — earlier versions keep the plain text.

**How to check:** a locked note opens as 🔒 *This file is encrypted*, and its words no longer turn up in search.

*[Screenshot: The viewer showing a padlock, "This file is encrypted" and "Unlock it to view its contents".]*

**Not covered:** a note you've unlocked is readable until it locks again (when the window loses focus or after 15 minutes idle). [More](https://docs.docgraph.app/privacy/encryption/).

## Sharing a vault with git

*You back the vault up to a git server, or share it with a colleague through one.*

1. **Connections → Sync (git):** start versioning, add the remote, and push.
2. Choose a remote you control, and treat it like a copy of your notes: it is a backup, not a private or encrypted one.
3. Keep secret checks on — before every push, DocGraph checks the files it's about to upload. **Block it** stops a push that carries a secret.
4. [Encrypt](https://docs.docgraph.app/privacy/encryption/) anything the remote shouldn't be able to read.

**How to check:** each push shows on the badge and in the network log.

**Not covered:** your git access token is stored in a file readable only by you (`~/.docgraph/git-credentials.json`), not in the keychain; and a colleague who pulls the vault can open everything that isn't encrypted. [More](https://docs.docgraph.app/privacy/sync-updates/).

## I open HTML saved from the web

*You collect articles, newsletters and exported pages, which often carry scripts and tracking pixels.*

1. Keep them in a vault where **Privacy → Page scripts** has both switches **off** (the default).
2. Read the notice above each page: it tells you when scripts didn't run and how many remote resources were blocked.
3. If you must allow either switch, do it in a separate vault for pages you trust — the choice covers every page in the vault.

**How to check:** the toolbar shows **Scripts off**, and blocked images show their description instead.

*[Screenshot: A saved newsletter open in DocGraph, with notices that its scripts aren't running and that 2 remote resources were blocked.]*

**Not covered:** clicking a link opens your browser straight away, with no confirmation. Dismissing a notice silences it for that vault permanently. [More](https://docs.docgraph.app/privacy/pages/).
