Security & privacy

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.

Updated 15 August 2026 View as Markdown

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.

Every network call the app can make

WhenWhereWhyOnly if
About a minute after launch, then every 4 hoursupdates.cwdio.com (cwdio’s update feed on Cloudflare R2)The installer build checks for and downloads updatesInstalled 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 itselfPackaged build
About 30 s after launchThe update feed’s min-version.jsonThe kill-switch: if a release must be retired, prompt to update. Strictly fail-open — unreachable means nothing happensPackaged build
When you askYour AI provider’s endpoint — OpenAI-compatible, which includes a fully local Ollama or LM StudioThe AI assistant and the semantic indexYou configured a provider
When you connectThe SFTP / FTP / FTPS servers you addRemote browsing and the SSH terminalYou added a connection
When you click Report an issue or Send reportYour browser opens a pre-filled GitHub issueBug and crash reportsYou 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 (Shift+Delete) 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 Ctrl+Z 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.

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.