# Как запретить Claude Code отправлять ваш email и данные на сторонние сайты: настройки приватности

> AI Release · @ai_release1 · https://ai-release.org/guides/kak-zapretit-claude-code-otpravlyat-vash-email-i-dannye.html

## TL;DR
- Время выполнения: 15–20 минут
- Уровень сложности: Basic
- Понадобится: установленный и залогиненный Claude Code (CLI), доступ на запись в `~/.claude/`, git, текстовый редактор. Точные номера версий, в которых доступны конкретные ключи `settings.json`, — сверьтесь с документацией.

## Требования и подготовка
![Иллюстрация к разделу «Требования и подготовка»](https://ai-release.org/guides/img/kak-zapretit-claude-code-otpravlyat-vash-email-i-dannye-ru-1.jpg?v=1794213413)


- macOS, Linux или Windows с WSL — команды ниже даны для `bash`.
- Claude Code установлен и хотя бы раз запускался (иначе файла настроек ещё нет).
- Права на запись в домашний каталог: `~/.claude/`.
- `git` установлен и настроен (`git config --get user.email` возвращает значение).
- Резервная копия текущих настроек перед правкой.

**Что сделать:** проверьте, что установлено и где лежат файлы конфигурации.

```bash
claude --version
ls -la ~/.claude/settings.json .claude/settings.json .claude/settings.local.json 2>&1
git config --get user.email
```

**Зачем:** Claude Code читает настройки из трёх уровней — пользовательский `~/.claude/settings.json`, проектный `.claude/settings.json` и локальный `.claude/settings.local.json` (его обычно не коммитят). Более конкретный уровень перекрывает общий, поэтому важно знать, какой файл существует у вас: править несуществующий бессмысленно.

**Как проверить:** `ls` выведет пути существующих файлов или `No such file or directory` — последнее значит, что файл нужно создать. Если ни одного файла нет, создайте пользовательский:

```bash
mkdir -p ~/.claude && cp /dev/null ~/.claude/settings.json
cp ~/.claude/settings.json ~/.claude/settings.json.bak
```

**Пример:** вывод `git config --get user.email` вида `ivan.petrov@company.ru` — это ровно та строка, которая попадёт в поле Author каждого коммита, сделанного агентом. Если там личный адрес, его и увидит любой, кто откроет `git log`.

## Шаг 1. Аудит: что уже разрешено агенту

**Что сделать:** посмотрите, какие инструменты выданы Claude Code сейчас, и какие сетевые вызовы он реально делает.

```bash
env | grep -E 'ANTHROPIC|CLAUDE'
cat ~/.claude/settings.json
```

Внутри запущенной сессии проверьте список разрешений командой `/permissions` — она показывает действующие правила allow/ask/deny.

**Зачем:** у Claude Code есть инструменты с выходом в сеть — `WebFetch` (загрузка страницы по URL и её разбор моделью), `WebSearch` (поиск) и `Bash`, через который агент может выполнить `curl`, `wget`, `ssh`. Плюс MCP-серверы (внешние плагины-инструменты, которые вы подключаете сами) со своим сетевым доступом. Пока вы не видите список, вы не знаете, что именно блокировать.

**Как проверить:** `/permissions` выводит таблицу правил. Пустой список `deny` означает, что сетевые инструменты не ограничены ничем, кроме запроса подтверждения.

**Пример:** в выводе `env` строка `ANTHROPIC_BASE_URL=https://api.anthropic.com` — значит, запросы к модели идут на официальный эндпоинт. Если там сторонний адрес (прокси, реселлер), весь ваш код уходит через него — этот параметр надо осознанно подтвердить или убрать.

## Шаг 2. Блокировка сетевых инструментов, телеметрии и email в коммитах
![Иллюстрация к разделу «Шаг 2. Блокировка сетевых инструментов, телеметрии и email в коммитах»](https://ai-release.org/guides/img/kak-zapretit-claude-code-otpravlyat-vash-email-i-dannye-ru-2.jpg?v=1794213416)


**Что сделать:** внесите правила в `~/.claude/settings.json`.

```json
{
  "permissions": {
    "deny": [
      "WebFetch",
      "WebSearch",
      "Bash(curl:*)",
      "Bash(wget:*)",
      "Bash(nc:*)",
      "Bash(ssh:*)",
      "Bash(scp:*)",
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./**/*.pem)"
    ],
    "ask": [
      "Bash(git push:*)"
    ]
  },
  "env": {
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
    "DISABLE_TELEMETRY": "1",
    "DISABLE_ERROR_REPORTING": "1"
  },
  "includeCoAuthoredBy": false
}
```

**Зачем:** каждая строка закрывает свой канал.

| Что уходит | Через что | Чем закрывается |
|---|---|---|
| Содержимое файлов на сторонний сайт | `WebFetch`, `Bash(curl:*)` | `permissions.deny` |
| Поисковые запросы (фрагменты кода в них) | `WebSearch` | `permissions.deny` |
| Секреты из `.env` в контекст модели | `Read` | `Read(./.env)` в `deny` |
| Метрики использования и отчёты об ошибках | встроенная телеметрия | `DISABLE_TELEMETRY`, `DISABLE_ERROR_REPORTING` |
| Личный email в истории git | строка `Co-Authored-By` | `includeCoAuthoredBy: false` |

`Bash(curl:*)` — правило с двоеточием означает «команда `curl` с любыми аргументами»; звёздочка тут обязательна. `includeCoAuthoredBy: false` убирает из сообщения коммита подпись соавтора, но **не** меняет поле Author — его берёт из `git config`.

Поэтому отдельно поправьте авторство, если не хотите светить личный адрес:

```bash
git config --global user.email "<ваш-noreply@users.noreply.github.com>"
git config --global user.name "<Ваше Имя>"
```

**Как проверить:** файл остаётся валидным JSON и правила подхватились.

```bash
python3 -m json.tool ~/.claude/settings.json > /dev/null && echo "JSON OK"
```

**Пример:** `JSON OK` — синтаксис верный. Запятая после последнего элемента массива даст `Expecting property name enclosed in double quotes` — это самая частая поломка, из-за которой настройки молча не применяются.

Для полного отказа от внешнего трафика есть более радикальный вариант — направить Claude Code на локальную модель через OpenAI-совместимый API: см. [как подключить локальную модель к Claude Code](https://ai-release.org/guides/kak-podklyuchit-lokalnuyu-model-k-claude-code-llama-ser.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide). А если настройку нужно раскатать на всю команду, а не на свою машину, используйте managed-настройки из гайда [Claude Code для команды](https://ai-release.org/guides/claude-code-dlya-komandy-kak-nastroit-subagentov-i-obsc.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide) — они имеют приоритет над пользовательскими.

## Шаг 3. Проверка, что данные не уходят
![Иллюстрация к разделу «Шаг 3. Проверка, что данные не уходят»](https://ai-release.org/guides/img/kak-zapretit-claude-code-otpravlyat-vash-email-i-dannye-ru-3.jpg?v=1794213426)


**Что сделать:** прогоните три проверки — сеть, телеметрия, коммит.

```bash
claude -p "Открой https://example.com и перескажи первую строку"
```

**Зачем:** это живой тест блокировки. Флаг `-p` (print mode) выполняет один запрос без интерактивной сессии, поэтому отказ видно сразу и воспроизводимо.

**Как проверить:** ожидаемый результат — отказ, а не текст страницы. Claude Code сообщит, что использование `WebFetch` запрещено настройками; формулировка зависит от версии — сверьтесь с документацией. Если вместо отказа пришёл пересказ `Example Domain`, правило не применилось: проверьте, в тот ли файл вы писали и нет ли перекрывающего `.claude/settings.local.json`.

Второй тест — коммит:

```bash
git commit --allow-empty -m "test privacy"
git log -1 --format='%an <%ae>%n%b'
git reset --hard HEAD~1
```

Ожидаемо: в поле автора — адрес из `git config`, в теле коммита нет строки `Co-Authored-By: Claude`. Третья команда откатывает тестовый коммит.

Чек-лист приёмки:

- [ ] `/permissions` показывает `WebFetch` и `WebSearch` в списке deny
- [ ] запрос на `https://example.com` отклонён
- [ ] `git log -1` не содержит личного email и подписи соавтора
- [ ] `env | grep DISABLE_TELEMETRY` внутри сессии возвращает `1`
- [ ] `python3 -m json.tool ~/.claude/settings.json` не выдаёт ошибок

## Возможные проблемы и решения

**Проблема. Агент вместо ответа пишет, что инструмент запрещён**

- Ошибка: `Permission to use WebFetch has been denied.`
- Причина: сработало правило `deny` — это штатное поведение, но вы ждали, что агент просто «сходит» на один доверенный домен.
- Решение: разрешите точечно, не снимая общий запрет. Уберите `"WebFetch"` из `deny` и добавьте белый список в `allow`:
```json
"allow": ["WebFetch(domain:docs.anthropic.com)"]
```
Правило `WebFetch(domain:<домен>)` разрешает загрузку только с указанного хоста; остальные остаются заблокированными.

**Проблема. После включения приватности падают тесты**

- Ошибка: `Permission to use Read has been denied.` при попытке прочитать `.env`
- Причина: вы закрыли `Read(./.env)`, а тестовому прогону нужны переменные окружения из этого файла.
- Решение: не открывайте файл агенту — передайте значения через окружение сессии, тогда `Read` не нужен:
```bash
set -a && . ./.env && set +a && npm test
```
Ключи попадут в процесс, но не в контекст модели и не в историю переписки.

**Проблема. В истории git остался рабочий email**

- Лог: `Author: Ivan Petrov <ivan.petrov@company.ru>`
- Причина: `includeCoAuthoredBy: false` убирает только строку соавтора; поле Author формирует git из `user.email` на момент коммита.
- Решение: смените адрес и перепишите ещё не отправленные коммиты:
```bash
git config user.email "<ваш-noreply@users.noreply.github.com>"
git commit --amend --reset-author --no-edit
```
Уже запушенные коммиты так не исправить — там нужен `git filter-repo`, и это отдельная операция с согласованием в команде.

## Резюме и следующие шаги

Сетевые инструменты, телеметрия и подпись в коммитах закрываются одним файлом `~/.claude/settings.json`, а проверяются тремя командами из Шага 3. Дальше имеет смысл разобраться, что провайдер делает с уже отправленными данными — см. [как отключить обучение на своих данных в ChatGPT, Claude и Gemini](https://ai-release.org/guides/kak-otklyuchit-obuchenie-na-svoih-dannyh-v-chatgpt-clau.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).

## FAQ

**Передаёт ли Claude Code мой код на сторонние сайты по умолчанию?**
Запросы к модели идут на эндпоинт из `ANTHROPIC_BASE_URL`. Отдельно существует риск через инструменты с выходом в сеть (`WebFetch`, `Bash(curl:*)`) и через MCP-серверы, которые вы подключили сами — их список и поведение сверьте с документацией.

**Достаточно ли выставить `DISABLE_TELEMETRY=1`?**
Нет. Эта переменная выключает метрики использования, но не запрещает агенту загружать страницы. Нужны ещё правила `permissions.deny` на `WebFetch`/`WebSearch` и сетевые команды в `Bash`.

**Где настройки имеют наименьший приоритет?**
Пользовательский `~/.claude/settings.json`. Проектный `.claude/settings.json` и managed-конфиг перекрывают его, поэтому правило, добавленное в проект, может отменить ваш запрет — проверяйте `/permissions` внутри рабочей папки.

**Можно ли вообще убрать внешний трафик?**
Да, если направить клиент на локальную модель через `ANTHROPIC_BASE_URL` — тогда запросы не покидают вашу машину. Ограничения и рабочие конфиги — в [гайде по локальной модели](https://ai-release.org/guides/kak-podklyuchit-lokalnuyu-model-k-claude-code-llama-ser.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).
