Skip to content

How credentials are handled

Every credential Speedwave stores lives under one data directory on your machine, ~/.speedwave/ by default. Inside it, a tokens/<project>/<service>/ folder holds the credential files for one service, such as Slack or GitHub, created only when that service actually needs credential files.

Each MCP worker, the isolated container that talks to a service like Slack, GitHub, or SharePoint, mounts only its own service’s token folder, read-only, at /tokens. A worker never sees another service’s credentials, so if one is compromised, the blast radius is that one service’s tokens, nothing more. Files are 0o600 and their parent directories 0o700, owned by you.

The container Claude itself runs in holds no service tokens at all. Requests pass from Claude through a hub with zero tokens of its own, over HTTP, to the worker that holds the credential. Environment variables named like a token, key, or secret are blocked from reaching the Claude container or the hub, so a credential can only ever reach a worker as a file mount, never as something the model reads from its own environment. That split is the core of Speedwave’s isolation model.

Every proxy call also carries a per-project caller token in the x-speedwave-proxy-auth header, stopping another container on the same project network from relaying calls through it. A SHA-256 digest over the proxy’s config and token files drives its SPW_CONFIG_DIGEST variable, so rotating a provider key recreates the container automatically, without logging the key. See LLM providers and token paths for where these files live.

Pairing Claude Code with your local editor needs a path from the container back to your machine. The IDE Bridge lock file holds a UUID v4 auth token, regenerated on every Desktop start, and Speedwave mounts it into the container read-only.

The CLI never prints a raw secret, even by accident. Every line it writes, stdout, stderr, a log line, or a panic message, passes through the same sanitizer that scrubs the diagnostics export: Bearer tokens and API keys come out as ***REDACTED*** before they reach your screen.

Set up the services Speedwave can reach through workers on the integrations page.