Privacy

Where your files live, and what leaves the machine. Reviewed 2026-09-24.

Your files

Writ opens any text file on your disk and edits it where it is. It also keeps a folder of its own, ~/Writ unless you moved it; Settings → Files → Folder shows the path. New files and anything you pipe into the writ command land there, and search covers every file in it.

Writ's data folder

Writ keeps its own records in ~/.writ, which Settings → Advanced also shows. Among them:

None of this is written into your folder, so a sync client never carries it.

What the app does on the network

Until you switch on Chat or Rewrite, Writ makes one kind of outbound request: it fetches a release manifest from GitHub and compares versions on your machine. It does this on its own shortly after launch, at most once a day, and whenever you ask in Settings → Updates. Turn the automatic check off with Check for updates automatically. Installing an update downloads the release from GitHub and checks it against a signing key built into the app.

Spell check runs against a dictionary bundled in the app. The preview pane runs under a fixed content-security-policy (default-src 'none', connect-src 'none'), so rendered HTML makes no network calls. Writ sends no crash reports, usage data or telemetry.

The AI connection

Chat and Rewrite are apps you switch on in Settings → Apps. While either is on, the same section holds the connection they share: provider, address, API key and model. Ollama and LM Studio run on your machine and need no key, so a request to either stays there.

Point the connection at a hosted provider and Writ asks once, naming the host, before it sends that host anything. The answer is recorded for that host alone, so allowing one provider does not cover another or a hand-edited address. An address that is neither on this machine nor https is refused before any bytes leave.

To show whether the provider is reachable, Writ requests its model list. That request carries your API key and no text, and goes to a hosted provider only after you allowed it. Settings also asks Ollama and LM Studio on this machine whether they are running; that request carries nothing.

Connecting OpenRouter opens openrouter.ai in your browser. Writ listens on this machine for the one answer that browser sends back, then exchanges it for a key and stores the key like one you typed. No port is open at any other time.

Rewrite

A rewrite sends the selected text, the instruction for the action you picked, and the model id. With nothing selected, Writ asks before sending the whole file.

Chat

A chat request carries a fixed instruction, the files attached to the conversation, the conversation so far and the model id. The pane attaches the file in front of you and shows it as a chip you can remove; you add others with @ or by attaching a folder. Any file open in the editor can be attached, including one outside your folder, which is sent under its parent folder and file name, never its full path. Nothing that is not attached is read for a request.

Chat writes a file only when you choose Apply on a proposed edit, and no setting applies one for you. If the file changed after the edit was proposed, Writ refuses to apply it. For a file in your folder, the proposed text is saved beside it as a dated copy; for a file outside it, the proposed text stays in the conversation.

Connected programs

Writ ships an MCP server, writ mcp, so a program you choose can work with the files in your folder. Connected programs is an app you switch on in Settings → Apps, which also shows the command to give the program. The program starts the server itself and talks to it over that process's input and output. Writ opens no port, and the server makes no network request. Where that program sends what it reads is up to that program.

Switching the app on approves nobody. A program's first call is refused and waits in Settings until you approve that program. Reading and writing are approved separately; approving reading never grants writing. Either can be withdrawn in Settings or in config.toml and takes effect on the next call.

With reading approved, a program has eight tools: list the folder's Markdown files, search the folder, read a file, read a file's links, backlinks, properties and tags, and list the folder's tags. With writing approved, it has three: replace a file's text, create a file, and rename one. No tool deletes a file. A write that passes the version the program read is refused if the file changed since, and the program's text is saved beside the file. A file outside your folder is out of reach.

The activity list

Every call from a program, whether it was allowed, refused or left waiting, and every chat edit you applied or discarded, is appended to activity.jsonl. A record names the program or chat, the tool, the file, the decision and, for a write, a byte count, never the text. The file stays on your disk and is capped at 5 MB with one older generation kept. While Connected programs is on, open it from Settings → Apps → Connected programs → Recent activity.

Keys

On macOS and Windows, Writ stores an API key in the system keychain under the service com.writ.ai. Where the keychain is unavailable, Writ holds the key in memory for the session and warns that you will enter it again next time. A key is never written to config.toml, the database or a log.

What this site does

This site is a static export served from GitHub Pages, and it serves its own font. It counts page views with a self-hosted Umami script from stats.ibrahemid.com, which it tells to honor Do Not Track. It sets no cookies and embeds no third-party widgets.

Backup and deletion

Back up your folder and any file you keep elsewhere; the files are the only copy of your text. Writ can rebuild the index in ~/.writ from the folder. Nothing else in ~/.writ can be rebuilt: settings, earlier versions, conversations and the activity list.

Delete ~/.writ to return the app to a fresh install. Your folder and every file you opened elsewhere stay untouched. An API key is not in that directory: clear it from your keychain, or from Settings → Apps while Chat or Rewrite is on.

Source of truth

Everything above is in the repository, github.com/ibrahemid/writ, with the decisions behind it in ADR-031 and the checks in the threat model. If you find a network call this page does not describe, file an issue and it will be treated as a bug.