Claude Code 2.1.268: запреты deny молча не работали - что починили и что проверить у себя

Опубликовано 17.09.20268 мин чтенияБазовый
Символ DENY на папках, сквозь который утекают фрагменты кода и данных из .env-файлов.
Что узнаешь
  • Какие четыре проблемы с разрешениями закрыли версии 2.1.268 и 2.1.269
  • В каких случаях запрет deny на .env и папки молча не действовал
  • Почему команда /mcp могла показать секреты из твоих конфигов
  • Как обновиться и проверить простым тестом, что запрет на файл срабатывает
  • Что делать, если обновиться прямо сейчас нельзя
Базовый
9просмотров

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?

Для правил разрешений важны четыре исправления:

  1. Запреты на симлинках не действовали. Правила deny и ask, записанные на каталоги-ссылки (/etc, /tmp, /var на macOS, /bin на Linux), не срабатывали, когда путь указывали по его реальному расположению. Bash-команды также игнорировали deny, записанный на путь через ссылку.
  2. Запрет на чтение и правку не срабатывал рядом с env -C или eval. Если в той же строке команды стояла конструкция, которую проверка разрешений не умеет разбирать, deny на Read или Edit мог не сработать.
  3. Правило с «!» работало шире, чем должно. Правило deny или ask, начинающееся с !, применялось за пределами того файла настроек, где его записали. Теперь оно действует только внутри своего источника, а голое отрицание ! игнорируется.
  4. 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. Пример настроек с запретом на чтение файла с ключами:

json
{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(./secrets/**)",
      "Bash(rm *)"
    ]
  }
}

Посмотреть все действующие правила и файл, из которого каждое взято, можно командой /permissions в сессии. Если правило блокирует чтение, отказ называет это правило - это пригодится для проверки ниже.

Практикум по вайб-кодингу
+Твой второй мозг
3 вечера - инструменты, метод, первый проект
Старт 22–24 сентября  ·  2 000 ₽
Записаться →

Какие ошибки затрагивали запреты и область действия правил

Ошибки затрагивали проверку путей и команд, а также область действия правил из разных файлов настроек.

Случай первый: симлинки. На 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.

Как обновиться и проверить, что запреты работают?

  1. Узнай текущую версию. В терминале выполни claude --version. Исправления описанных проблем вышли в 2.1.268 и 2.1.269. Если номер меньше 2.1.268, этих исправлений в твоей версии ещё нет, но применимость каждой проблемы зависит от используемых путей, команд и правил.
  2. Обновись. Пошаговая инструкция с разбором ошибок есть в гайде как обновить Claude Code до последней версии. Выбирай последнюю версию, не останавливайся на 2.1.268.
  3. Проверь запрет тестом. Испытывать правило на настоящем .env не стоит: если запрет не сработает, агент увидит настоящие ключи. Создай проверочный файл, например secret-test.txt, с любым текстом вроде «это проверка», добавь в .claude/settings.json проекта правило "Read(./secret-test.txt)" в список deny, перезапусти сессию и попроси: «прочитай файл secret-test.txt и скажи, что внутри». Ожидаемое поведение - отказ, в котором названо твоё правило. Если агент прочитал файл, запрет в этом тесте не сработал. Начни с проверки синтаксиса из раздела выше и открой /permissions, чтобы увидеть действующие правила и файлы, из которых они загрузились. Сам результат теста ещё не указывает на причину. Один отказ показывает, что запрет на этот файл срабатывает; за остальные правила он не отвечает, их проверяй так же по одному.
  4. Проверь случай с симлинком, если используешь такие пути. Если на macOS у тебя есть запреты на /tmp, /etc, /var, а на Linux - на /bin, повтори тест для этих путей после обновления.
  5. Пересмотри правила с «!». Если использовал такие, проверь, что каждое записано в том файле, где и должно действовать.

Если запрет работает, но 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 и токенов в ошибках плагинов. Проверь номер версии, обновись до последней и выполни тест с проверочным файлом из раздела выше. Отказ, который называет твоё правило, показывает, что в этом тесте запрет сработал. Самой записи в настройках для такой проверки недостаточно.

Источники

Полная схема вайб-кодинга за три вечера: ИИ-клон + Второй мозг + Контекст-инжиниринг. Записи эфиров в личном кабинете, доступ 30 дней.

Практикум по вайб-кодингу
+Твой второй мозг
3 вечера - инструменты, метод, первый проект
Старт 22–24 сентября  ·  2 000 ₽
Записаться →

Новые материалы - дайджестом, без спама

Гайды выходят регулярно. Подпишись, чтобы не пропускать: пришлю подборку в Telegram или на email. Раз в неделю или каждый день - выбираешь сам.

Была инструкция полезна?
Артемий Миллер
Автор
Артемий Миллер
Предприниматель и вайб-кодер

Артемий Миллер - предприниматель и вайб-кодер. Бывший программист, собирает продукты исключительно вместе с ИИ-агентами, без найма разработчиков.

Связанные инструкции

Память Grok Build между сессиями: как включить и что агент записывает

У Grok Build есть память между сессиями: агент ведёт заметки о проекте в Markdown-файлах и подставляет подходящие записи в новые сессии. Функция экспериментальная и по умолчанию выключена. По официальной документации объясняем, как включить память, что записывается и как посмотреть и удалить заметки.

8 мин

Голосовой режим в Codex: как включить /voice и что он умеет

Стабильный Codex CLI 0.155.0 от 17 сентября 2026 принёс экспериментальные голосовые разговоры с агентом в терминале. По умолчанию функция выключена. По первоисточникам: как включить /voice, что он умеет, где полезен и какие у режима ограничения.

7 мин

Kimi Code: что это, официальный сайт и как установить на Windows и macOS

17 сентября 2026 Moonshot AI выпустил desktop-версию Kimi Code и новую основную версию CLI 2.0. Что это за инструмент, где официальный сайт, как установить его на Windows и macOS и сколько стоит работа с ним.

8 мин

Как открыть сайт поисковым роботам ChatGPT, Claude и Perplexity

Как настроить доступ к сайту для ИИ-ассистентов: чем поисковый робот отличается от обучающего, точные имена роботов ChatGPT, Claude и Perplexity, пример robots.txt по шагам и ограничения настройки.

10 мин

Связанные термины