26 августа 2026 года Johann Rehberger опубликовал атаку на Claude Code auto mode с 60–80% успеха (embracethered.com). На следующий день Anthropic выпустил Claude Code 2.1.248 с флагом --restricted (changelog). Совпадение по времени — прямая реакция на публикацию Rehberger.
--restricted — это не новый permission mode, а CLI-флаг, который убирает из агента инструменты выполнения кода и ограничивает файловый доступ текущей директорией. В этой статье — разбор, что именно делает флаг, когда его включать и почему он не заменяет песочницу.
Что делает --restricted

Флаг --restricted (или переменная окружения CLAUDE_CODE_RESTRICTED=1) появился в Claude Code 2.1.248 (changelog):

Вот пять изменений, которые вносит флаг:
1. Убирает Bash и аналогичные tools
С --restricted из набора инструментов агента удаляются все tools, которые запускают команды или выполняют код. Это Bash — основной инструмент, через который Rehberger добился выполнения произвольного кода (шаг 2 атаки: curl вместо WebFetch, шаг 4: запуск Python-скрипта).
Без Bash агент теряет возможность:
— запускать скрипты и команды
— устанавливать зависимости
— обращаться к git из командной строки
— скачивать файлы через curl/wget
2. Убирает WebFetch (кроме явно указанных в –tools)
Инструмент WebFetch — точка входа первой атаки Rehberger. Сервер с вредоносным контентом возвращал ошибку 415, после чего агент переключался на curl в Bash. С --restricted и WebFetch удалён — агент не может обращаться к веб-страницам.
Исключение: если WebFetch явно указан в флаге --tools. Это позволяет включить веб-доступ для конкретных проверенных задач.
3. Файловые tools ограничены рабочей директорией
Инструменты Read, Write и Edit сохраняются, но работают только внутри текущей рабочей директории (CWD). Агент не может прочитать ~/.ssh/id_rsa, .env с токенами или файлы в родительских директориях.
Это ограничивает поверхность файловой системы, которую агент способен затронуть.
4. Отказывает в bypassPermissions
Флаг --dangerously-skip-permissions (alias bypassPermissions) блокируется. Даже если вы попытаетесь запустить агента без ограничений, --restricted не позволит этого сделать.
5. Игнорирует все settings-файлы
--restricted не читает:
— ~/.claude/settings.json (пользовательские настройки)
— .claude/settings.json (проектные настройки)
— .claude/settings.local.json (локальные настройки)
Это значит, что ни allow-листы, ни deny-правила, ни custom permissions не влияют на поведение флага. Он работает как жёсткий кордон.

Как запустить
Через CLI-флаг:
claude --restricted "проанализируй код в текущей директории"
Через переменную окружения:
export CLAUDE_CODE_RESTRICTED=1
claude "рефактори модуль auth"
В комбинации с permission mode:
claude --restricted --permission-mode auto "напиши тесты для utils.py"
Флаг работает с любым permission mode (default, acceptEdits, plan, auto, dontAsk). Он не конфликтует с ними — --restricted действует на уровне выше, убирая tools до того, как permission system решает, одобрить или отклонить вызов.
Почему --restricted — не замена auto mode
Auto mode и --restricted решают разные задачи.
Auto mode — это permission mode, в котором второй модели (safety classifier) поручено одобрять или отклонять действия агента вместо пользователя. Классификатор работает на уровне логики модели и не гарантирует безопасность.
Rehberger показал (embracethered.com, 26.08.2026):
In a few runs Claude tried to terminate the malware process once it noticed the compromise, but Auto Mode denied the cleanup command.
В некоторых прогонах Claude пытался завершить вредоносный процесс, заметив компрометацию, но auto mode заблокировал команду очистки.
Классификатор разрешил создание процесса, но запретил его завершение. Механизм защиты стал частью проблемы.
--restricted — это не классификатор и не логика модели. Это жёсткое удаление инструментов на уровне CLI. Агент физически не может вызвать Bash или WebFetch, потому что их нет в списке доступных tools. Никакая модель не решает, «можно или нельзя» — инструмент просто отсутствует.
Это качественная разница: auto mode — попытка модели отличить безопасное от опасного; --restricted — устранение опасного инструмента напрямую.
| Критерий | Auto mode | –restricted |
|---|---|---|
| Что это | Permission mode | CLI-флаг |
| Механизм | Safety classifier (вторая модель) | Удаление tools из набора |
| Bash | Доступен (classifier одобряет/отклоняет) | Удалён полностью |
| WebFetch | Доступен (classifier одобряет/отклоняет) | Удалён (кроме –tools) |
| Файлы | Любые (с учётом permission rules) | Только CWD |
| bypassPermissions | Доступен | Отказ |
| Settings | Активны | Игнорируются |
| Обходимость | Через цепочку атак (Rehberger: 60–80%) | Физически невозможна (нет инструмента) |
--restricted не делает агента «безопасным» в абсолютном смысле — файловые tools по-прежнему работают, и агент может читать/писать файлы. Но ключевой вектор атаки Rehberger (выполнение кода через Bash) полностью перекрыт.
Когда включать --restricted
Сценарий 1: Агент работает с незнакомым кодом
Форкнули репозиторий, впервые смотрите чужой проект и хотите, чтобы агент проанализировал архитектуру. Если в репозитории есть вредоносный файл (module shadowing, как в атаке Rehberger), --restricted не позволит агенту его выполнить.
git clone https://github.com/someone/unknown-repo.git
cd unknown-repo
claude --restricted "обзор архитектуры проекта"
Сценарий 2: Агент обрабатывает внешние данные
Задача — рефакторинг кода, который читает данные из API или веб-страницы. Если данные содержат prompt injection, --restricted блокирует агенту доступ к WebFetch и Bash, через которые инъекция могла бы быть реализована.
Сценарий 3: CI/CD и автоматические прогон
В пайплайне агент запускается в headless-режиме без присмотра. --restricted снижает риски, ограничивая агента только чтением/записью файлов:
claude --restricted -p "обнови зависимости и запусти проверку типов"
Обратите внимание: без Bash агент не сможет запустить npm test или cargo build. Для задач, требующих выполнения команд, --restricted в чистом виде не подходит — его комбинируют с песочницей (см. следующий раздел).
Сценарий 4: Начало работы с кодинг-агентом
Если вы впервые пробуете Claude Code и не хотите, чтобы агент имел полный доступ к вашей файловой системе и сети — --restricted как «тренировочные колёса».
--restricted + песочница: комбинация слоёв
--restricted и песочница (sandbox) — независимые механизмы, которые усиливают друг друга.

Simon Willison (27.08.2026) и Rehberger сошлись в главном:
Run unattended coding agents in a container, VM or OS sandbox. Restrict network egress. Monitor your agents. Do not expose home directories, SSH keys, cloud credentials,… to the agent runtime.
Запускайте автономные кодинг-агенты в контейнере, VM или песочнице ОС. Ограничьте сетевой трафик. Мониторьте агентов. Не подвергайте домашние директории, SSH-ключи и облачные credential’ы рантайму агента.
Что даёт песочница без --restricted
Claude Code имеет встроенную Bash sandbox — файловую и сетевую изоляцию для команд (sandboxing). На macOS — Seatbelt, на Linux/WSL2 — Bubblewrap. Включается через /sandbox в интерфейсе.
/sandbox
{
"sandbox": {
"enabled": true,
"mode": "auto-allow"
}
}
Sandbox ограничивает Bash-команды: записи только в CWD, сети — по allowlist доменов. Но Bash по-прежнему доступен как инструмент. Модель всё ещё может пытаться выполнить команды — просто они будут работать в ограниченной среде.
Что даёт --restricted без песочницы
--restricted убирает Bash и WebFetch напрямую. Но файловые tools (Read/Write/Edit) работают в обычном permission-режиме — они не проходят через sandbox.
Если агент не нуждается в выполнении команд, а только анализирует или правит файлы — --restricted без песочницы достаточен.
Что даёт комбинация
| Механизм | Что блокирует | Что пропускает |
|---|---|---|
Только --restricted |
Bash, WebFetch, файлы за пределами CWD, bypassPermissions, все settings | Read/Write/Edit в CWD |
| Только sandbox | Bash за пределами CWD и allowlist, сетевые подключения за пределами allowlist | Bash в sandbox, все остальные tools |
--restricted + sandbox |
Bash (удалён), WebFetch (удалён), файлы только в CWD, сеть только по allowlist | Read/Write/Edit в CWD |
Комбинация закрывает оба вектора: --restricted убирает инструменты выполнения кода, sandbox ограничивает то, что остаётся.
Практический пример запуска:
# В контейнере с restricted
docker run --rm -v $(pwd):/workspace -w /workspace \
claude-code --restricted -p "рефактори модуль auth"
Для дополнительной изоляции сети:
docker run --rm --network none \
-v $(pwd):/workspace -w /workspace \
claude-code --restricted -p "обзор кодовой базы"
Подробнее про архитектуру песочниц — в отдельной статье: Песочницы для ИИ-агентов.
Ограничения --restricted
Флаг решает конкретную проблему — убирает инструменты выполнения кода. Но у него есть границы.
Файловые tools остаются активными
Read, Write и Edit работают в CWD. Если в рабочей директории лежит вредоносный файл (отравленный .py, скрипт с prompt injection в комментариях), агент его прочитает и может последовать инструкциям из файла.
Атака Rehberger не начинается с выполнения кода — она начинается с чтения README и CSV-файлов. --restricted не защищает от injection через файловый контент.
Нет изоляции от сети
--restricted не управляет сетевыми подключениями. Файловые tools не подключаются к сети, но если вы добавите MCP-сервер с сетевым доступом, агент сможет через него отправлять данные.
Не заменяет мониторинг
Даже с --restricted стоит проверять git-диффы после работы агента. Ограничение инструментов снижает вероятность вредоносных действий, но не исключает возможность тихого внедрения вредоносного кода через файловые правки.
Ограничивает функционал
Без Bash агент не может:
— запускать тесты (npm test, pytest, cargo test)
— устанавливать зависимости
— обращаться к git (команды git выполняются через Bash)
— запускать сборку (make, cargo build, go build)
Для задач, требующих выполнения команд, --restricted в чистом виде непригоден. Решение — комбинация с sandbox (см. раздел выше) или использование --tools для явного добавления необходимых инструментов.
MCP-серверы не ограничены
--restricted не влияет на MCP-серверы, подключённые к агенту. Если MCP-сервер предоставляет tools с доступом к сети или файлам за пределами CWD — --restricted их не блокирует. Управление MCP-инструментами — отдельная настройка.
Сравнение: все подходы к безопасности

| Подход | Что делает | Защита от Rehberger | Когда использовать |
|---|---|---|---|
| Manual mode | Каждое действие — запрос у пользователя | Полная (если вы проверяете) | Чувствительные задачи |
| Auto mode | Classifier проверяет действия | Ненадёжная (60–80% обхода) | Удобство, но не безопасность |
--restricted |
Убирает Bash/WebFetch | Высокая (инструмент отсутствует) | Непроверенный код, внешние данные |
| Bash sandbox | Файловая и сетевая изоляция Bash | Средняя (Bash доступен в sandbox) | Автономная работа с командами |
--restricted + sandbox |
Убирает tools + изоляция | Максимальная из доступных | Автономная работа, CI/CD |
| Контейнер/VM | Полная изоляция ОС | Максимальная | Полная изоляция от хоста |
Реальная иерархия защиты
На момент публикации безопасная конфигурация для работы с ненадёжным контентом:
- Контейнер/VM — агент не видит вашу файловую систему, SSH-ключи, credential’ы
--restricted— внутри контейнера: убирает Bash/WebFetch- Sandbox — ограничивает файловый доступ и сеть на уровне ОС
- Сетевые ограничения — файрвол,
--network noneв Docker - Мониторинг — логирование, проверка диффов, kill cord
- Отдельные credential’ы — временные ключи с минимальными правами
Не обязательно использовать все шесть уровней. Минимум для автономной работы с ненадёжным контентом: --restricted + sandbox. Для полностью изолированной среды — контейнер + --restricted.
Честные ограничения
--restrictedпоявился 27 августа 2026 года — на момент публикации флаг новым и поведение может измениться в следующих версиях.- Флаг не решает проблему prompt injection через файловый контент — агент всё ещё читает файлы в CWD.
- Без Bash агент не может запускать тесты, сборку и git-команды — для многих задач это критично.
- MCP-серверы остаются за пределами контроля
--restricted. - Auto mode по-прежнему рекомендуется Anthropic как режим по умолчанию для удобства —
--restrictedне конфликтует с ним, но не заменяет его функцию.
Auto mode can reduce risk if you do not run in a sandbox (when compared to –dangerously-skip-permissions), but it is not a security boundary.
Auto mode снижает риск, если вы не используете песочницу (по сравнению с –dangerously-skip-permissions), но не является рубежём безопасности.
Блок российских реалий
Claude Code работает из России через VPN и API. Оплата — картами Visa/Mastercard, которые в РФ не работают напрямую. Реальные способы: виртуальные карты (AdvCash, ForeignKey), криптовалюта через промежуточные сервисы, посредники с иностранными картами. Anthropic не публикует список заблокированных регионов, но описаны случаи блокировки аккаунтов при подключении из определённых юрисдикций.
Флаг --restricted не зависит от региона — это локальная настройка CLI, не связанная с API и оплатой. Работает одинаково из любой страны.
Тема безопасности кодинг-агентов и --restricted в русскоязычном сегменте на момент написания не освещена. На Habr есть материалы по LLM-безопасности в общем (habr.com/ru/search/?q=prompt+injection), но специфика кодинг-агентов и флаг --restricted не разобраны. На vc.ru и Tproger публикаций по теме не обнаружено.
Вывод
--restricted — ответ Anthropic на атаку Rehberger. Флаг убирает Bash и WebFetch из набора инструментов агента, ограничивает файловые операции текущей директорией, отказывает в bypassPermissions и игнорирует все settings-файлы.
Ключевой момент: --restricted — это не замена safety classifier (auto mode) и не замена песочницы. Это отдельный слой, который устраняет конкретный вектор атаки — выполнение произвольного кода. Для максимальной защиты комбинируйте: контейнер/VM + --restricted + sandbox + сетевые ограничения + мониторинг.
На момент публикации (Claude Code 2.1.248, август 2026) флаг новым и дополнительные ограничения или расширения возможны в будущих версиях.
Дополнительные материалы по теме:
- Промпт-инъекции в кодинг-агентах: как атакуют и как защититься — общая теория prompt injection и чек-лист защиты
- Песочницы для ИИ-агентов — Docker, VM, smolvm, Bash sandbox
- Кейс: взлом Claude Code auto mode — разбор атаки Rehberger — пошаговый разбор атаки
- Claude Code API — настройка и подключение к API
- ИИ в терминале — обзор терминальных инструментов
