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

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

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 вечера - инструменты, метод, первый проект
Старт 17–19 ноября  ·  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 вечера - инструменты, метод, первый проект
Старт 17–19 ноября  ·  2 000 ₽
Записаться →

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

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

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

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

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

Что даёт платная подписка Grok в 2026 и стоит ли платить

У Grok есть бесплатный вход и три платных тарифа, и разница между ними не в одной цифре. Разбираю, за что берут деньги, что открывает SuperGrok, кому нужен Plus за 100 долларов и что с оплатой из России.

12 мин

utm_source=chatgpt.com: что это и как считать трафик из ChatGPT

Метку utm_source=chatgpt.com ставит сам ChatGPT на ссылки из своего поиска. В Метрике она в отчёте «Метки UTM», а все визиты из ChatGPT собирает сегмент из двух условий: метка ИЛИ реферер chatgpt.com.

9 мин

Как скачать Claude Desktop на компьютер и телефон и с чего начать

Claude для компьютера скачивается с claude.com/download: Windows 10 и новее, macOS 11 и новее, Linux в бете. Чат работает и на бесплатном тарифе, Cowork и Claude Code открываются с Pro.

7 мин

Какую модель ИИ брать под задачу, чтобы не переплачивать за токены

Если платить по API и выполнять все задачи на флагманской модели, по цене флагмана оплачивается и работа, с которой справилась бы модель дешевле. Разбираю, какую модель брать под план, код, тексты, поиск и рутину, привожу официальные цены на 23.09.2026 и показываю, как перевести фоновые задачи агента на дешёвую модель.

9 мин

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

Термин

Терминал

Окно, где компьютером управляют текстовыми командами, без кнопок и мышки. Через него работают Claude Code и другие ИИ-агенты: сами набирают команды, а ты читаешь, что они запускают, и разрешаешь.

Термин

Репозиторий

Папка проекта вместе с историей всех изменений: что, когда и кем поменяно, включая правки ИИ-агента. Копия лежит на GitHub, и к любой прошлой версии можно вернуться.

Термин

Сервер

Компьютер, который работает круглосуточно и подключён к интернету. На нём живут сайт, бот, база данных или ИИ-агент, и продуктом пользуются, даже когда твой ноутбук выключен.

Термин

Домен

Адрес сайта словами, например smyslokod.ru. Его покупают у регистратора на год и продлевают, а в настройках указывают, на каком сервере лежит сайт. Забыл оплатить, и сайт пропал из интернета.

Термин

MCP-сервер

Программа, через которую ИИ-агент подключается к внешнему сервису: почте, календарю, таблице, CRM, браузеру, хостингу. Подключил сервер, и агент сам берёт оттуда данные и выполняет действия.

Термин

Логи

Записи, которые программа ведёт о своей работе: кто зашёл, какой запрос упал, текст ошибки и время. Когда что-то сломалось, агенту первым делом нужны логи: по словам «не работает» он может только гадать.

Термин

Переменная окружения

Настройка с именем, которая хранится отдельно от кода: ключ API, адрес базы данных. Программа читает её при запуске. На компьютере такие настройки лежат в файле .env, на сервере их вписывают в панель хостинга.

Термин

Вайб-кодинг

Способ строить продукты через диалог с ИИ-агентами: ты ставишь задачу словами, агент пишет код, ты проверяешь и итерируешь. Не «изучить программирование», а «получить результат руками агента».

Термин

Второй мозг

Папка business/ в проекте с базой знаний: аудитория, продукты, цели, экономика. Claude читает её перед каждой задачей и заземляет решения на реальный контекст бизнеса.

Термин

ИИ-клон

Цифровая проекция твоего мышления в виде папки ai-clone/: ценности, принципы, тон, правила, выученные через ошибки. Claude читает её перед текстами «от меня» - голос совпадает.

Термин

Контекст-инжиниринг

Дисциплина подготовки контекста для ИИ-агента: что он уже знает к моменту твоего промпта. 5 слоёв: ИИ-клон, бизнес, проект, зона задачи, сама задача.