10 сентября 2026 года вышла версия Claude Code 2.1.268, на следующий день - 2.1.269. Обновиться стоит сразу: в двух случаях запреты deny, которыми ты закрываешь от агента .env и служебные папки, молча не действовали. Кроме того, команда /mcp могла вывести в терминал секреты из твоих конфигов.
Всё ниже - по официальному списку изменений Anthropic и документации, источники открыты и сверены 17 сентября 2026 года. Последняя версия на этот день - 2.1.274. Механику ошибок описываем по этим записям: обходы на уязвимой версии не воспроизводили.
В Telegram-канале - что нового в вайб-кодинге: инструменты, находки, ошибки. Подпишись, чтобы не пропускать новое.
Что починили в Claude Code 2.1.268 и 2.1.269?
Для правил разрешений важны четыре исправления:
- Запреты на симлинках не действовали. Правила deny и ask, записанные на каталоги-ссылки (
/etc,/tmp,/varна macOS,/binна Linux), не срабатывали, когда путь указывали по его реальному расположению. Bash-команды также игнорировали deny, записанный на путь через ссылку. - Запрет на чтение и правку не срабатывал рядом с
env -Cилиeval. Если в той же строке команды стояла конструкция, которую проверка разрешений не умеет разбирать, deny на Read или Edit мог не сработать. - Правило с «!» работало шире, чем должно. Правило deny или ask, начинающееся с
!, применялось за пределами того файла настроек, где его записали. Теперь оно действует только внутри своего источника, а голое отрицание!игнорируется. teeписал мимо запретов. Deny-правилаEdit()и проверка пути записи не применялись к файлу, который создаёт Bash-командаtee. РазрешениеBash(tee:*)больше не покрывает запись вне рабочих каталогов.
В этих версиях также исправили две проблемы с выводом секретов. WebFetch больше не ждёт бесконечно ответа от сервера, который держит соединение открытым: теперь запрос завершается ошибкой через 300 секунд, срок настраивается переменной CLAUDE_CODE_WEBFETCH_DEADLINE_MS. Убрали и постоянную высокую загрузку процессора в долгих простаивающих сессиях.
Как устроены запреты в Claude Code
В Claude Code есть три списка правил: deny (запрещено всегда), ask (спросить перед действием) и allow (можно без подтверждения). Когда агент собирается что-то сделать, правила проверяются строго в этом порядке. Сработавший deny отменяет любой allow на то же действие: разрешающее правило не может сделать исключение из запрета.
Правила хранятся в трёх местах: пользовательские в ~/.claude/settings.json, проектные в .claude/settings.json внутри репозитория и локальные в .claude/settings.local.json. Пример настроек с запретом на чтение файла с ключами:
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./secrets/**)",
"Bash(rm *)"
]
}
}Посмотреть все действующие правила и файл, из которого каждое взято, можно командой /permissions в сессии. Если правило блокирует чтение, отказ называет это правило - это пригодится для проверки ниже.
Какие ошибки затрагивали запреты и область действия правил
Ошибки затрагивали проверку путей и команд, а также область действия правил из разных файлов настроек.
Случай первый: симлинки. На macOS каталоги /etc, /tmp и /var - это ссылки на реальные папки внутри /private, на Linux такой же ссылкой обычно является /bin. Если ты записал deny на одно написание пути, а агент обратился по другому (например, по реальному расположению вместо ссылки), правило не срабатывало. Bash-команды тоже игнорировали запрет, записанный на путь через ссылку. В 2.1.268 исправили оба случая: правило теперь действует независимо от того, каким написанием пути воспользовались.
Случай второй: env -C и eval в той же строке. Проверка разрешений разбирает команду, чтобы понять, к каким файлам она обратится. Конструкции вроде env -C или eval она разобрать не может. Ошибка была в том, что при наличии такой конструкции в строке deny на Read или Edit мог не примениться. В результате команда проходила мимо запрета на чтение или правку закрытого файла.
Случай третий: правило с «!» действовало за своими границами. Правило, начинающееся с !, должно действовать только внутри того файла настроек, где записано. До 2.1.269 оно применялось и к другим источникам настроек. Теперь область действия ограничена своим файлом, а правило из одного голого ! игнорируется.
Случай четвёртый: запись через tee. Команда tee в Bash умеет писать в файл. Проверка пути записи и deny-правила Edit() на такой файл не распространялись. При этом разрешение Bash(tee:*) покрывало и запись вне рабочих каталогов. В 2.1.269 к записи через tee стали применять эти проверки: deny на файл действует, а Bash(tee:*) покрывает только рабочие каталоги.
Если ты пользуешься запретами точечно - закрыл .env, пару служебных папок, опасные команды - их тоже стоит проверить. Порядок проверки приведён ниже.
Почему /mcp мог показать твои ключи?
В конфигурации MCP-серверов ключи принято держать в переменных окружения и ссылаться на них через ${VAR} - так файл можно хранить в репозитории без самих секретов. Проблема была в том, что команды просмотра (/mcp, /plugin, claude mcp list, claude mcp get) и сообщения об ошибках входа показывали конфиг уже с подставленными значениями. На экране оказывался сам ключ.
Ещё одно исправление касается ошибок плагинов и маркетплейсов: они могли показать токен или пароль из git-ссылки источника.
Если на старой версии вывод /mcp или claude mcp list попал на стрим, в скриншот, в сообщение коллеге или в лог, который ушёл за пределы твоей машины, в том числе автоматически, считай, что ключи из MCP-конфигов раскрыты, и перевыпусти их. Если вывод никуда не уходил с твоей машины, достаточно обновиться. Про сами MCP-серверы и готовые связки у нас есть отдельный гайд: MCP-серверы Claude Code.
Другие изменения этих версий
WebFetch и артефакты. Раньше правило WebFetch без уточнений в deny или ask распространялось на чтение и изменение опубликованных артефактов. С 2.1.268 оно больше на них не действует. Чтобы закрыть артефакты, нужно отдельное правило Artifact или правило по домену, например WebFetch(domain:claude.ai). Если ты полагался на общий запрет WebFetch как на защиту от чтения артефактов, перепроверь настройки: прежнее правило больше не блокирует эти действия.
WebFetch получил таймаут. Запрос к серверу, который держит соединение открытым и не заканчивает ответ, теперь завершается ошибкой через 300 секунд. Раньше такой запрос мог висеть бесконечно. Поведение настраивается переменной CLAUDE_CODE_WEBFETCH_DEADLINE_MS, значение 0 отключает ограничение.
Убрали постоянную высокую загрузку процессора в простаивающих сессиях. В долгих простаивающих сессиях холостой цикл в Claude Code мог вызывать постоянную высокую загрузку процессора. В 2.1.268 эту ошибку исправили. Она могла затрагивать и тех, кто держит сессии открытыми весь день.
Ставь последнюю версию. В 2.1.269 появилась новая ошибка: git-команды в Bash, которые только читают данные, после долгой работы сессии начинали просить разрешение. Её исправили в 2.1.270. Поэтому обновляйся до последней версии (на 17 сентября 2026 это 2.1.274), не останавливайся на 2.1.268 или 2.1.269.
Как обновиться и проверить, что запреты работают?
- Узнай текущую версию. В терминале выполни
claude --version. Исправления описанных проблем вышли в 2.1.268 и 2.1.269. Если номер меньше 2.1.268, этих исправлений в твоей версии ещё нет, но применимость каждой проблемы зависит от используемых путей, команд и правил. - Обновись. Пошаговая инструкция с разбором ошибок есть в гайде как обновить Claude Code до последней версии. Выбирай последнюю версию, не останавливайся на 2.1.268.
- Проверь запрет тестом. Испытывать правило на настоящем
.envне стоит: если запрет не сработает, агент увидит настоящие ключи. Создай проверочный файл, напримерsecret-test.txt, с любым текстом вроде «это проверка», добавь в.claude/settings.jsonпроекта правило"Read(./secret-test.txt)"в список deny, перезапусти сессию и попроси: «прочитай файл secret-test.txt и скажи, что внутри». Ожидаемое поведение - отказ, в котором названо твоё правило. Если агент прочитал файл, запрет в этом тесте не сработал. Начни с проверки синтаксиса из раздела выше и открой/permissions, чтобы увидеть действующие правила и файлы, из которых они загрузились. Сам результат теста ещё не указывает на причину. Один отказ показывает, что запрет на этот файл срабатывает; за остальные правила он не отвечает, их проверяй так же по одному. - Проверь случай с симлинком, если используешь такие пути. Если на macOS у тебя есть запреты на
/tmp,/etc,/var, а на Linux - на/bin, повтори тест для этих путей после обновления. - Пересмотри правила с «!». Если использовал такие, проверь, что каждое записано в том файле, где и должно действовать.
Если запрет работает, но Claude Code всё равно не видит нужные файлы, об этом есть отдельный разбор: почему Claude Code не видит файлы проекта.
Если обновиться нельзя прямо сейчас
Обновление иногда приходится отложить: среду нельзя менять, машина корпоративная или нужно закончить текущую задачу. До обновления снизить риск можно так:
- записывай deny на оба написания пути - и на ссылку, и на реальное расположение (на macOS реальные пути лежат под
/private); - не смешивай в одной строке несколько команд и избегай
env -Cиevalв командах, которые просишь выполнить; - не показывай никому вывод
/mcp,/plugin,claude mcp listиclaude mcp get, а ключи из MCP-конфигов, которые могли попасть в чужие руки, перевыпусти; - помни, что
teeпишет мимо deny на Edit - не считай файлы закрытыми, если разрешён Bash.
Эти меры уменьшают вероятность конкретных обходов, но не заменяют исправление. Как только появится возможность, обновись и выполни тест из прошлого раздела.
Короткий итог
Версии 2.1.268 и 2.1.269 исправили четыре проблемы с разрешениями Claude Code: симлинки, строки с env -C и eval, правила с «!» за пределами своего файла и запись через tee. Отдельно починили утечку секретов в выводе /mcp и токенов в ошибках плагинов. Проверь номер версии, обновись до последней и выполни тест с проверочным файлом из раздела выше. Отказ, который называет твоё правило, показывает, что в этом тесте запрет сработал. Самой записи в настройках для такой проверки недостаточно.
Источники
- Claude Code, официальный список изменений (записи 2.1.268, 2.1.269, 2.1.270): https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md
- Claude Code, даты выпусков версий в npm: https://www.npmjs.com/package/@anthropic-ai/claude-code
- Claude Code, документация по разрешениям (синтаксис deny/ask/allow): https://code.claude.com/docs/en/permissions
- Claude Code, выпуски на GitHub: https://github.com/anthropics/claude-code/releases
Полная схема вайб-кодинга за три вечера: ИИ-клон + Второй мозг + Контекст-инжиниринг. Записи эфиров в личном кабинете, доступ 30 дней.
Новые материалы - дайджестом, без спама
Гайды выходят регулярно. Подпишись, чтобы не пропускать: пришлю подборку в Telegram или на email. Раз в неделю или каждый день - выбираешь сам.

