Are your AI accounts training on or publicly sharing your work?
nosnitch verifies the current privacy state of the AI accounts available on
your machine. It groups CLI and browser sessions by account instead of treating
each product surface as a separate identity.
Privacy guidance often stops at “change these settings,” which does not verify
that every signed-in account is configured as intended. nosnitch reads the
current settings across the CLI and browser sessions already on your machine so
you can check the actual state in one place.
The Claude public-sharing check was added after
a community report showed that publicly shared Claude conversations could appear in Google Search.
nosnitch shows the title and URL of each public share it finds and can remove
those links with nosnitch claude unshare.
$ nosnitch check
nosnitch · AI account privacy check
[Claude Account]
Account [email protected]
Plan Max
Discovered via Claude Code, Chrome
Model improvement OFF
Shared chats 0
[OpenAI Account]
Account [email protected]
Plan ChatGPT Pro
Discovered via Codex CLI, Chrome
API data sharing OFF
Model training OFF
Codex training OFF
[GitHub Account]
Account you
Copilot license Copilot Pro
Discovered via Chrome
Model training OFF
Cloud agent repos SELECTED (2) review repository selection
Claude agent OFF
Codex agent OFF
✓ no training or public-sharing exposure found
Exit code: 0 clean · 1 training or public-sharing exposure found ·
2 incomplete (one or more account checks could not be completed). This makes
the command suitable for CI and local checks.
| Account | Source | Reports |
|---|---|---|
| OpenAI Account | Codex CLI | Account, plan, and API data-sharing incentives enrollment |
| OpenAI Account | ChatGPT browser session | ChatGPT and Codex model-training settings |
| Claude Account | Claude Code | Account, plan, and the account-wide “Help improve Claude” setting |
| Claude Account | Claude Desktop or browser session | Publicly shared Claude conversations |
| GitHub Account | GitHub browser session | Copilot license, model-training preference, cloud-agent repository scope, and partner-agent states |
The Claude model-improvement preference applies to consumer Claude chats and Claude Code coding sessions. Commercial Claude plans and API usage follow their organization's commercial data policy.
- Codex CLI: decodes the ID token in
~/.codex/auth.jsonlocally. - ChatGPT: borrows the logged-in browser session to read
/backend-api/settings/user. - Claude Code: reads account metadata from
~/.claude.json, then uses the OAuth token stored in macOS Keychain or~/.claude/.credentials.jsonon Linux for a read-only request to/api/oauth/account/settings. - Claude: borrows the logged-in Claude Desktop or browser session and reads the same
/api/organizations/{id}/sharesendpoint used by claude.ai. - GitHub Copilot: borrows the logged-in GitHub browser session and reads
/settings/copilot/featuresand/settings/copilot/coding_agent.
Browser cookies are decrypted locally using macOS Keychain or Linux Secret Service. Tokens and cookies are sent only to the corresponding first-party service and are never printed or sent elsewhere.
# Debian and Ubuntu
sudo install -d -m 0755 /etc/apt/keyrings
tmp_key="$(mktemp)"
curl -fsSL -o "$tmp_key" \
https://github.com/circlesac/homebrew-tap/releases/latest/download/circlesac-archive-keyring.asc
fingerprint="$(gpg --batch --show-keys --with-colons "$tmp_key" 2>/dev/null \
| awk -F: '$1 == "fpr" {print $10; exit}')"
test "$fingerprint" = "EDEB035445B676C3D9C4CFA2263CBDF3A243818E"
sudo install -m 0644 "$tmp_key" /etc/apt/keyrings/circlesac-archive-keyring.asc
rm -f "$tmp_key"
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/circlesac-archive-keyring.asc] https://github.com/circlesac/homebrew-tap/releases/latest/download ./" \
| sudo tee /etc/apt/sources.list.d/circlesac.list >/dev/null
sudo apt-get update
sudo apt-get install nosnitch
# macOS or Linuxbrew
brew install circlesac/tap/nosnitch
# Standalone
curl -fsSL https://github.com/circlesac/nosnitch-cli/releases/latest/download/install.sh | sh| Command | Behavior |
|---|---|
nosnitch check |
Read all currently available CLI and browser sessions. |
nosnitch check --json |
Emit the same report as stable JSON. |
nosnitch check --account <id> |
Check one registered account by ID or email; prompt to renew its authentication when needed. |
nosnitch check --all |
Check every registered account from its cached credential and renew accounts whose authentication has expired. |
nosnitch account add <provider> |
Authenticate, infer the account identity, and save its credential. Supported providers are openai, anthropic/claude, and github. |
nosnitch account list |
List registered IDs and redacted metadata. |
nosnitch account remove <id> |
Remove account metadata and its cached credential. |
nosnitch off |
Clear all supported detected exposure after confirmation. |
nosnitch off --yes |
Clear supported exposure without confirmation. |
nosnitch openai training [--yes] |
Turn off OpenAI training settings. |
nosnitch claude training [--yes] |
Turn off Claude model improvement. |
nosnitch claude unshare [--yes] |
Remove public Claude links. |
nosnitch github training [--yes] |
Turn off GitHub Copilot model training. |
nosnitch <provider> --help |
Show provider-specific help. |
Registered account metadata is stored in
$XDG_CONFIG_HOME/nosnitch/accounts.json (or ~/.config/nosnitch/accounts.json).
Credentials are stored separately under
$XDG_CACHE_HOME/nosnitch/credentials/ (or ~/.cache/nosnitch/credentials/)
with hashed filenames and mode 0600. account add openai and
account add anthropic use PKCE/OAuth. Browser-backed providers open the
first-party login page, wait for a readable session, validate its identity, and
cache only the matching cookies. check --account and check --all refresh
expiring OAuth credentials, store rotated refresh tokens, and reopen the
matching first-party login flow when a credential is missing or rejected.
The renewed identity must match the registered account before its cached
credential is replaced.
nosnitch off disables supported OpenAI training settings, disables Claude's
account-wide model-improvement setting, removes detected public Claude chat
links, and disables GitHub Copilot model training. It leaves GitHub Copilot
cloud-agent repository selection and partner-agent switches unchanged. Every
command that changes account state asks for confirmation unless --yes is
provided. The provider-specific training commands change only that provider's
training settings. nosnitch claude unshare changes only Claude's public links.
nosnitch supports macOS and Linux on amd64 and arm64. On macOS, browser
support includes Chrome, Edge, Brave, Claude Desktop, and Safari; Safari
requires Full Disk Access. On Linux, browser support includes Chrome, Chromium,
Edge, and Brave default profiles. Linux v11 Chromium cookies require an
unlocked Secret Service keyring and secret-tool (libsecret-tools on
Ubuntu); Homebrew installs this dependency automatically.
nosnitch reads sensitive local credentials to inspect your settings. Requests
are read-only unless you explicitly run off, a provider-specific training
command, or claude unshare. Registered OAuth tokens and browser cookies are
stored in the private XDG cache with mode 0600, sent solely to the matching
first-party host, and never printed or included in reports.