Privacy Policy

Last updated: 2026-08-23 (Spool v0.6.2). This English translation is provided for convenience; the Chinese original is authoritative.

The one-sentence version

Spool keeps your data on your computer, and Spool's own process never opens a network connection. Capture, filing, packing, and search all happen on your machine. No account, no telemetry. The app's content-security policy (CSP) structurally forbids all external network connections from the webview, and the Spool binary contains no HTTP client at all.

One route does reach a model provider, and Spool is the one that starts it. If you switch the API engine on (Settings → Engine — it is off until you do), Spool runs a small bundled subprocess that makes the request, using a key you gave it and your own quota. That route and the three hand-offs you perform yourself are all listed below; nothing else leaves this machine.

What we collect

Nothing. Spool has no server. There is no account system, no usage analytics, no crash reporting, no advertising identifiers. The developer cannot see any of your content.

One exception, and it is a link rather than a part of the app. The feedback section of the website offers a short survey hosted by SurveyMars, a third-party form service. If you follow that link and fill it in, your answers are stored on their servers under their privacy policy — they do not pass through spoolapp.org and they never touch the Spool application. This site contacts them only if you click; nothing is loaded from them otherwise. Email and GitHub remain available if you would rather not involve a third party at all.

Where your data lives

Deleting that directory removes all Spool data completely; “Settings → Clear all data” inside the app does the same.

When data can leave your computer

Content can reach another program in four ways, and every one of them is off until you turn it on. In the first three you hand the content over, and the receiving program — not Spool — decides whether it then reaches a network service. The fourth is the API engine: there the request is made on your behalf, by a subprocess Spool starts:

FeatureWhere data goesNotes
Pack and paste The app or service where you paste the Pack Spool assembles the Pack locally and places it on your clipboard. Copying stays on your own machine; pasting into another program is your deliberate hand-off, and that program's privacy terms apply from there.
MCP service (Settings → MCP, off by default) The AI client you installed and configured yourself (Claude Desktop, Codex — including a Codex conversation inside the ChatGPT desktop app — Cursor, …) Your AI client reads project content over local inter-process communication; Spool listens on no network port. Where those clients send content is governed by that client and your agreement with its provider.
Follow Up, Weekly Review, or drafting follow-up goals (Settings → Engine; requires a supported CLI installed and logged in, plus the required MCP permissions) The command-line AI you installed and logged into yourself (Claude Code, Codex CLI, or Gemini CLI; Gemini does not run Follow Up) Spool starts that CLI as a local subprocess and hands it the relevant project content. The network request happens inside that subprocess, on your own account's quota — on this route Spool stores no API key, and its own process makes no HTTP request.
Compress a project, or run the out-of-date check (Settings → Engine → API engine, off by default; requires a key you supply) The model provider whose endpoint you configured (DeepSeek by default; any OpenAI-compatible HTTPS endpoint) This is the one route Spool runs itself. The project content being compressed or checked is sent to that provider, and the run is billed to your own key — including a run you cancel partway, because the provider still charges for what it already produced. The request is made by a bundled subprocess (spool-ai) that Spool starts and that exits when the run ends; Spool's own process still makes no HTTP request. Plain http:// endpoints are refused. Nothing is written into your library until you approve it on screen.

⚠️ Follow up is the one action that deliberately searches the web. It takes the lines you wrote yourself describing what to watch for, and asks that CLI to go look for news — so those lines and the context it needs reach the CLI's provider. Weekly Review and drafting follow-up goals do not receive web-search tools, but the project content they need is still handed to the CLI and may reach its provider.

In other words: content leaves this machine only along a route you switched on — a manual paste, an MCP client you enabled, a CLI action you ran, or the API engine you gave a key to. With the API engine off, Spool makes no network request at all; with it on, the request comes from a separate subprocess, on your own key and quota, to the provider you picked.

The other direction — an AI writing into your library — only arises once you have turned the MCP server on. The “allow AI writes” switch underneath it is on by default and can be turned off at any time; what an AI writes can only be added, never edited over anything you wrote, and every entry carries a source label (“Claude · MCP”, say) so it reads as theirs, not yours.

System permissions

PermissionPurposeIf declined
Input monitoring (double-tap ⌥ capture) Detecting the Option-key double-tap gesture Double-tap ⌥ unavailable; a custom capture shortcut can be set in Settings
Accessibility (optional) Two things: keeps the capture gesture exclusive to Spool — when a capture fires, the second ⌥ press is removed from the event stream so other apps using the same gesture (such as Claude Desktop) don't pop up alongside — and hands the confirmation the keyboard, so the note box can be typed into without clicking it first Capture works exactly the same; other apps using the same gesture fire together with Spool, and the note box has to be clicked before it takes typing
Automation (browser) Reading the current tab title as a source label Source falls back to the application name
Clipboard Reading clipboard text at capture time Capture unavailable

Permissions are used only when the corresponding feature fires — no background monitoring. The clipboard is read exactly once, at the moment you press the capture shortcut.

Contact

Questions or concerns: open an issue on GitHub, or write to jinhz0531@gmail.com.