Claude Code 2.1.309 запер стартовые файлы шелла в песочнице

В Claude Code 2.1.309, вышедшей 22 октября, Anthropic исправила ошибку песочницы на macOS и Linux: перед каждой Bash-командой стартовые файлы шелла выполнялись за её пределами. В том же релизе закрыли обход правил denyWrite через символьные ссылки и запись в конфиг MCP изнутри песочницы, а claude ultrareview теперь требует доверия к рабочей папке. Полный перечень есть в списке изменений на Github.
Стартовые файлы вроде .bashrc или .zshrc шелл читает при запуске: там лежат алиасы, функции, правки PATH. Сама песочница - граница, которую держит операционная система вокруг команд Claude. На macOS это встроенный Seatbelt, на Linux и WSL2 - bubblewrap и socat, а собрана она на открытом пакете @anthropic-ai/sandbox-runtime. В версиях до 2.1.309 команда Claude попадала внутрь этой границы, а то, что шелл подгружал перед ней, оставалось снаружи.
Касается это тех, кто песочницу включал. Как сказано в документации Claude Code, по умолчанию она выключена и включается командой /sandbox или настройкой sandbox.enabled в файле вроде ~/.claude/settings.json. Внутри песочницы команды пишут только в рабочую папку, во временный каталог пользователя и в добавленные папки, а в сеть выходят через локальный прокси, который сверяет каждый хост со списком разрешённых доменов. По умолчанию этот список пуст.
Символьные ссылки и чужие конфиги
Вторая группа исправлений касается путей, до которых добирались через символьную ссылку. На macOS шаблоны denyWrite не срабатывали по реальному адресу файла, если папку из шаблона открывали через ссылку. Та же проблема была у защиты от записи в хранилище профилей, когда каталог конфигурации подключён через ссылку.
На Linux запреты на запись снимались, если фоновая команда продолжала работать после окончания сессии.
Отдельно закрыли запись в конфиг MCP, переданный через --mcp-config. Его могли менять и команды из песочницы, и правки, принятые автоматически. При этом сама песочница покрывает только шелл: файловые инструменты Claude, MCP-серверы и хуки работают вне её, с полным доступом пользователя. Рядом исправили ещё один путь к MCP: в print- и SDK-сессиях отключённый сервер подключался заново при следующем запросе разрешения.
Поменялось и поведение команд, которые настройки выводят из песочницы. Если песочница включена, но запуститься не может, такие команды спрашивают разрешения перед записью в пути из её списка на запись, а запуск без песочницы в этой ситуации запрещён.
Где спотыкалась проверка прав
Проверка прав в Bash ошибалась в нескольких местах. Она доверяла переменной, которую задаёт команда с перенаправлением, способным не открыться. Составные команды, которые сначала меняют каталог, а потом запускают git, не вызывали запроса, если cd был чем-то обёрнут или снабжён префиксом, хотя для обычного cd запрос появлялся. Правило запрета Edit(path) не мешало перенаправить вывод Bash в тот же файл, если в команде была ещё и подоболочка.
Сессии с изоляцией в worktree пропускали часть команд с префиксом локали, а на zsh ещё и некоторые арифметические выражения, которые защита изоляции должна отклонять. Эту изоляцию в Claude Code чинят не первый раз: в версии 2.1.222 она пропускала разрушительные команды git в основную копию. Кроме того, worktree и переключения веток, которые создаёт Claude Code, теперь игнорируют replace refs (механизм git, подменяющий один объект другим), как это уже делали остальные его операции с git.
На Windows проверка PowerShell сама одобряла часть команд Set-Location и cd, нацеленных на текущий каталог, но с лишними аргументами. Сейчас они ждут подтверждения. На нативной Windows Claude Code запускает команды без песочницы (она доступна только внутри WSL2), так что там между командой и системой стоит проверка прав. Там же хуки на PowerShell не блокировали действие, когда программа хука завершалась с кодом 2, а хуки PreToolUse и PermissionRequest с "shell": "powershell" пропускали всё без проверки, если не установлен Git for Windows.
Ещё два исправления касаются агентов. Напарники в соседних панелях не наследовали запреты инструментов и правила --tools, заданные в командной строке ведущего. А в PR, issues и комментариях Claude оформлял названия ролей и плейсхолдеры как упоминания и тем самым присылал уведомления посторонним пользователям GitHub.
Заметно каждый день
В VS Code правки через Edit и Write стали быстрее: после каждой правки расширение ждёт новых ошибок в редакторе 0,75 секунды в большинстве случаев, раньше ждало от 1 до 1,5 секунды. Подсказка «Waiting for API response» мигала за шлюзами, которые шлют только keepalive-пинги. Для маршрутов не через бэкенд Anthropic ожидание теперь составляет 45 секунд.
Сессии раз за разом сжимали контекст после чтения файлов под очень большим вложенным CLAUDE.md. Если такой файл превышает лимит размера, загружается только его начало. Длинные превью вывода инструментов обрезались посреди эмодзи, и транскрипты сессий потом не разбирались в jq. Bash-команда, которую оборвал переполненный диск, сообщает об этом и называет папку, которую стоит освободить, а запуск на заполненном временном разделе выдаёт понятное сообщение вместо голой ошибки ENOSPC.
Многие команды git, которые Claude Code запускает для себя, на Windows ускорились, а на всех платформах их ошибки выводятся по-английски, даже если git настроен на другой язык. На Mac без Xcode и Command Line Tools при каждом старте перестал открываться диалог установки инструментов разработчика. На Amazon Bedrock потоковая передача вызовов инструментов (fine-grained tool streaming) оставалась выключенной, если в ANTHROPIC_BEDROCK_BASE_URL указан стандартный адрес bedrock-runtime.<region>.amazonaws.com, это тоже исправили.
Что ведёт себя иначе
sed -i получает стандартный запрос Bash и выполняется как написано, без имитации превью правки файла. Как и другие правки через Bash, его изменения /rewind уже не откатывает.
В Desktop и VS Code в режиме bypass permissions опасные rm и rmdir сразу отклоняются с подсказкой, как переписать команду, чтобы сессии без присмотра продолжали работу. При создании и повторном использовании worktree git не подтягивает объекты по запросу, в обычных клонах и в частичных клонах с настроенной Bash-песочницей. Частичный клон в таком случае скачивает их заранее.
Переделывать придётся вызовы claude ultrareview: команда требует доверия к рабочей папке, в терминале спрашивает его, в остальных случаях отказывается работать. В скриптах нужно передать флаг --trust-workspace. Значения у него нет, поэтому номер PR или базовую ветку пишут перед ним. Другой вариант - задать переменную CLAUDE_CODE_DISABLE_ULTRAREVIEW_TRUST_CHECK=1.
Дальше
Claude на Pro, Max и Team перейдёт в авторежим по умолчанию
Одобрять каждый шаг Claude со следующей недели не придётся: на Pro, Max и Team авторежим станет режимом по умолчанию, а рискованные действия будет отсекать автоматическая проверка. Ручной режим можно вернуть в любой момент. Вы оставите авторежим или сразу вернёте ручное подтверждение шагов?
Читайте также
- Claude Code 2.1.307 переводит код на API 2026-10-21
- Claude Code 2.1.282 не даст репозиторию включить телеметрию
- Claude Code выдаёт домены отдельно каждой команде
- Скрытые части команд обходили проверку прав в Bash
- Изоляция worktree пропускала команды git в основную копию
- Focus view в VSCode и маскирование ключей в песочнице
Комментарии
Пока никто не написал. Будьте первым.
Присоединяйтесь к разговору
Войдите, чтобы оставить комментарий. Он появится после модерации.

