---
title: "Security and privacy tips"
description: "Practical steps to keep your MySpec tokens, connected apps, code and shared specs safe."
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.myspec.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Security and privacy tips

These are the steps you can take on your side to keep your work in MySpec safe.

## Keep API tokens safe

- Treat a token like a password. Never commit it to a repository, paste it into
  a chat or put it in a URL.
- Give each machine or pipeline its own token, so you can revoke one without
  breaking the others.
- Prefer **Read only** unless the agent needs to change things.
- Choose the shortest expiry that works for you, and revoke tokens you no longer use.

- Check the **API tokens** page now and then. It shows when each token was last
  used, which helps you find tokens nobody needs any more.
- If a token may have leaked, **Revoke** it at once and create a new one. Also
  [revoke any stream tokens](#treat-stream-tokens-like-passwords) it created:
  they keep working after the API token is revoked.

See [API tokens](/mcp/api-tokens/#keep-tokens-safe).

## Give the least access that works

- **Use Read only access by default.** Create a **Read and write** API token, or
  tick **Also make changes** when you connect an app, only when the agent must
  change projects, spec files or comments.
- **Pick the right organization.** Every API token and every connected app works
  in one organization. Choose the one the agent actually needs.
- **Give each agent its own credential.** One token per machine or pipeline lets
  you cut off one without breaking the others.
- **Offer fewer tools.** On the remote server, the `X-MCP-Tools` header limits
  which tools an agent sees. See [Remote MCP server](/mcp/remote-server/). This
  only narrows what the agent is offered: anyone holding the token can leave the
  header out, so it is not access control. Use a **Read only** token or
  connection to stop changes.

People need the least access too. Use project roles and teams:

- **Keep the default project access at Read or Write.** With **Admin** as the
  default, every member can change who has access to every project.
- **Give Admin through a team**, such as a "Project leads" team, rather than
  to many people one by one. When someone changes jobs, update the team.
- **Use No access for sensitive work.** With the default project access at
  **No access**, members only see the projects they are given access to.
- **Give Read to people who only need to look.** They can read, download and
  follow sessions, but can't change specs, comment or chat with the AI.
- **Check each project's Access card** (**Settings** → **Access**) now and
  then, and remove people and teams that no longer need it.

An API token or connected app can never do more than your own role on a
project. See [Teams and project access](/guides/teams-and-project-access/).

## Disconnect apps you no longer use

Open the avatar menu and choose **Connected apps**. It lists every app you have
allowed to use MySpec, such as Claude or ChatGPT, with its organization and
access. Select **Disconnect** to remove one. It loses access within about a
minute.

Removing MySpec from the app's own settings does not end its access. Always
disconnect it in MySpec as well.

## Choose the folder you share with care

Brownfield sessions read your code through the local server's `reverse` command,
and a chat can read a folder you mount in the browser's **Local Workspace**. In
both cases, MySpec's AI can read files in that folder and nothing outside it.

- **Share the project folder, never your home folder.** Point `--root` at the
  repository you are working on.
- **Keep secrets out of the folder.** Some secret files, such as `.env` files,
  are skipped by default. Don't rely on that: a skipped file can still be read
  if the AI asks for it by its path, anything else in the folder can be read, and
  what the AI reads becomes part of the session.
- **Stop sharing when you are done.** Stop the `reverse` command with Ctrl-C, or
  select **Unmount workspace** in the browser.

See [Attachments and local files](/guides/attachments/) and
[Work on an existing codebase](/guides/brownfield/).

## Sign in with `--paste` only on trusted machines

`npx -y @myspec/mcp-server login --paste` lets you sign in from a browser on
another device. The sign-in page hands a one-time code to a program listening on
the machine where you open the link. Anything else running there could take that
code and act as you until you sign out.

- Open the sign-in link only on a machine you trust.
- Paste the value into the terminal as soon as it appears.
- On a shared machine, run `npx -y @myspec/mcp-server logout` when you are done.
  It removes your saved sign-in.

## Treat share links as public

A [share link](/guides/share-links/) can be opened by anyone who has it, without
a MySpec account.

- **Check what you share.** A link includes **every revision** each file you
  select has when you create the link, not only the latest (up to the 10 most
  recent a file keeps). Make sure older revisions hold nothing you would not
  show.
- **Use a short expiry.** Choose the fewest days that work.
- **Revoke links you no longer need.** Revoking stops the page from opening. It
  cannot take back files someone has already downloaded.

Owners and admins can also stop finished specs from going to outside build
tools. Turn off the **Spec integrations** switch in **Organization settings**:
when it is on, finishing a Generate session creates temporary links to your spec
files that anyone with the link can open for 24 hours. This switch does not
affect share links.

## Treat stream tokens like passwords

A [stream token](/mcp/stream-tokens/) lets anyone who has its connection details
read a project's events, without signing in.

- Choose the shortest expiry that covers the job.
- Never paste the connection details into a chat, a file, a commit or a log.
- Revoke a token with `revoke_stream_token` as soon as you no longer need it, or
  if it may have leaked. Use `list_stream_tokens` to find tokens you forgot.

## Keep your organization's members up to date

Unless your default project access is **No access**, every member can open every
project in your organization. Invite only people who should see your
organization's projects, or limit them with
[project roles and teams](/guides/teams-and-project-access/).

- When someone leaves your team, an owner or admin should **Remove** them in
  **Organization settings**. They lose access to the web app straight away,
  their connected apps for that organization stop working, and their API tokens
  for it become unusable. MySpec also takes them out of every team and removes
  the project access given to them personally. A client that is already
  connected can keep working for a short time; see
  [Revoke a token](/mcp/api-tokens/#revoke-a-token).
- To leave an organization yourself, open your **Profile** and select **Leave**
  next to it.

See [Organizations and members](/guides/organizations/).

Source: https://docs.myspec.dev/help/security/index.mdx
