# Security and privacy in cwdio

> What cwdio does on your machine: no telemetry, every network call listed, credentials encrypted by Windows, trash and undo, an AI that only proposes, hardening.

- Canonical: https://cwdio.com/security/
- Updated: 2026-08-15
- Product: Cwdio File Manager (cwdio) — https://cwdio.com

cwdio has **no telemetry and no analytics SDK**. It does not contact any server to run, and the handful of
network calls it can make are listed below in full. Your files, file names, search queries and terminal
history never leave your machine. This page is the app's side of the story; the website's own, shorter
list is on the [privacy page](/privacy/).

## Every network call the app can make

| When | Where | Why | Only if |
| --- | --- | --- | --- |
| About a minute after launch, then every 4 hours | `updates.cwdio.com` (cwdio's update feed on Cloudflare R2) | The installer build checks for and downloads updates | Installed with the installer (never the portable build, never in development) |
| About 30 s after launch, then every 4 hours (portable build); on demand for Help ▸ Check for updates (any build) | `github.com/cwdio/cwdio/releases/latest` (a small `version.json`) | The portable build learns a newer version exists and shows a passive notice; the installer build only when you ask, since it updates itself | Packaged build |
| About 30 s after launch | The update feed's `min-version.json` | The kill-switch: if a release must be retired, prompt to update. Strictly fail-open — unreachable means nothing happens | Packaged build |
| When you ask | Your AI provider's endpoint — OpenAI-compatible, which includes a fully local Ollama or LM Studio | The AI assistant and the semantic index | You configured a provider |
| When you connect | The SFTP / FTP / FTPS servers you add | Remote browsing and the SSH terminal | You added a connection |
| When you click *Report an issue* or *Send report* | Your browser opens a pre-filled GitHub issue | Bug and crash reports | You choose to; nothing is sent automatically |

There is no licence server: a licence key is a signed token verified on your machine, and registration
never becomes a launch-time check. There is no usage ping, no "anonymous statistics", nothing to opt out of.

## What stays on your machine, and how it is kept

- **Server credentials** are session-only by default — held in memory, never written. If you tick
  *Remember*, they are stored only under the operating system's own encryption (Electron `safeStorage`,
  which on Windows rests on the OS credential protection) and never in plain text. If that encryption is not
  available, cwdio refuses to save them rather than fall back.
- **SSH host keys** are trusted on first use: the SHA-256 fingerprint is recorded, and a **changed key
  hard-fails before any credential is sent** — the classic protection against a server that is not who it
  was.
- **The AI provider key** lives in the same kind of encrypted vault. The AI tool loop runs in a background
  process, not in the window that renders web content.
- **Crash reports are opt-in** and redacted before you ever see them: your home directory becomes `~`,
  user-profile path segments become `<user>`, and email addresses are removed from the log tail. The report
  is a GitHub issue you can read before you submit it.
- **Settings and logs** live under `%AppData%\@cwdio\desktop`. The logs are size-bounded.

## Nothing is destroyed quietly

- **Delete goes to the Recycle Bin** by default, after a confirmation you can turn off. Permanent delete
  (<kbd>Shift+Delete</kbd>) always asks with a stronger, danger-styled dialog whose default button is Cancel.
- **Overwrites are stashed, not destroyed.** When a copy, move or save replaces a file, the previous bytes are
  kept and <kbd>Ctrl+Z</kbd> brings them back.
- **Undo covers a whole batch** — a copy, a move, a rename of hundreds of files, a new folder, an
  overwrite, and anything the AI assistant did. Deletes are not on the undo stack; they went to the Recycle
  Bin, where Windows can restore them.
- **The transfer queue is journaled.** An operation interrupted by a crash or a dropped drive can resume
  instead of leaving a half-copied tree.
- **The AI never changes a file without asking.** Read tools run freely; anything that would modify a file
  becomes a proposal you confirm, and it executes through the same queue, trash and undo as a manual action.

## Permissions

- **Per-user install, no administrator prompt.** cwdio runs with exactly the rights your Windows account
  already has — no more — and never asks for elevation.
- **Open filesystem by default**, because it is your machine and your files. Setting the environment
  variable `CWDIO_SANDBOX_ROOT` locks every navigation and every operation to one root, enforced on
  **resolved** paths so a symlink or junction planted inside the root cannot lead out of it. Tests run that
  way; a locked-down deployment can too.
- **The Explorer right-click entry** is registered per user, in your own registry hive, and can be switched
  off under Tools ▸ Explorer integration.

## Hardening of the shipped binary

cwdio is an Electron application and treats that as a responsibility:

- The window that renders the interface runs with **context isolation and the sandbox on**, Node
  integration off, `<webview>` off, and developer tools disabled in the packaged build.
- **Every web permission is denied** — camera, microphone, geolocation, notifications, clipboard-read and
  the rest — because the app needs none of them.
- **Navigation is blocked** and only `http:`, `https:` and `mailto:` links may ever be handed to the
  operating system. A document you merely previewed can never launch a local protocol handler.
- **A strict Content Security Policy without `unsafe-eval`** — the Markdown, diagram and code-editor
  components are all eval-free, and the end-to-end suite runs under the real policy to prove it.
- **Electron fuses are flipped** in the packaged binary: the shipped exe cannot be run as a general-purpose
  Node runtime, cannot take Node command-line or inspector options, loads only its own bundle, and encrypts
  cookies. **No source maps** are shipped.
- **This posture is guarded by a test**, because fuses apply only at package time and a refactor could
  silently undo one.
- **No obfuscation, deliberately.** An Electron bundle cannot be hidden from a determined reader and
  pretending otherwise buys nothing; what is worth having is tamper-*evidence*, which is what signing and
  ASAR integrity provide — see the next section.

## Code signing: where it stands

cwdio is **code-signed** with an individual-validated certificate issued by SSL.com to *Ihor Melnyk*. Every
release is signed by the build workflow — the app, the installer and the helper executables alike — and the
private key never leaves the certificate authority's hardware, so it cannot be taken from a build machine.

Signing is not the same as being trusted instantly. Windows SmartScreen weighs the publisher *and* how many
people have run a given file, so a fresh release can still show *"Windows protected your PC"* until it has
been installed enough times. The difference signing makes is what **More info** reveals: a verified publisher
rather than an unknown one, and reputation that now accumulates across releases instead of resetting with
every build.

**Every release publishes `SHA256SUMS.txt`**, produced by the same workflow that builds the binaries. Verify
a download with `Get-FileHash <file> -Algorithm SHA256` in PowerShell and compare.

## Reporting a security issue

Email **hi@cwdio.com**. Please keep anything exploitable out of the public issue tracker until it is fixed;
a private report gets a fix and a credit.

## Related

- [Privacy policy](/privacy/) — what the website collects (very little) and why.
- [Install and update](/docs/install-and-update/) — the update mechanics in full.
- [Undo and the safety net](/features/undo-and-safety-net/) · [Remote servers](/features/remote-sftp-ftp/) · [The AI assistant](/features/ai-assistant/)

## Frequently asked questions

**Does cwdio send any data anywhere?** The app contains no telemetry and no analytics SDK. Its only outbound calls are the ones listed on this page — an update check, a minimum-version check, and, only if you set them up, your own AI provider and the servers you connect to. Nothing about your files, names, searches or terminal history ever leaves your machine.

**Where are my SFTP passwords and AI key stored?** Server credentials are held in memory for the session by default. If you tick Remember, they are stored only under the operating system’s own encryption (Electron safeStorage, backed by Windows credential protection) and never in plain text; if that encryption is unavailable, cwdio refuses to save them. The AI provider key uses the same encrypted vault.

**Is cwdio code-signed?** Yes. Every release is signed with an individual-validated certificate issued by SSL.com to Ihor Melnyk, and the private key stays in the certificate authority's hardware. Windows SmartScreen also weighs how many people have run a file, so a fresh release can still prompt until it is widely installed — More info will name the verified publisher. Every release publishes SHA-256 checksums so you can verify what you downloaded.

**How do I report a security issue?** Email hi@cwdio.com. Please do not open a public issue for anything exploitable; a private report gets a fix before a disclosure.
