Где находится блокировка

Загрузчик поставляется как встроенный плагин agents-md. Его регистрация в бандле версии 2.1.280 выглядит так:

var W = !1;
var B = () => Oa("tengu_agents_md_mod", W);
var H =
  "AGENTS.md as project instructions: by default loaded where the project has no CLAUDE.md; ...";

W — значение isOnByDefault плагина, оно равно false. B — это isAvailable, который проверяет удалённый флаг функции tengu_agents_md_mod с откатом на false. Если Claude Code не может получить флаг, плагин становится недоступным, и локальный файл никогда не читается. Чтение markdown-файла из рабочей директории вообще не требует сети, но здесь система ждёт серверного переключателя.

Как тестировалось

Создан пустой каталог только с AGENTS.md, содержащим контрольное слово, и в нём запущена команда claude -p с просьбой найти это слово. Каждую конфигурацию проверили в двух сеансах, потому что в первом сеансе новой конфигурации флаг только загружается, а во втором используется.

echo 'The canary word is PERIWINKLE.' > AGENTS.md
claude -p 'What is the canary word from the project instructions? Answer NONE if you have none. Do not read files.'

Что было измерено

  • CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 блокирует функцию, как указано в описании проблемы.
  • DISABLE_TELEMETRY=1 тоже блокирует. При установке любой из переменных AGENTS.md не загружается, поэтому пришлось очистить обе.
  • Установка либо переменной на 0 не помогает. Блокировка остаётся. В документации переменных окружения сказано, что подходит любое значение, но это легко пропустить при попытке включить функцию.
  • Блок env в проектном .claude/settings.json, который очищает обе переменные, не помогает. Нет способа включить функцию для одного репозитория.
  • Переопределение на уровне сеанса работает, начиная со второго сеанса:
claude --settings '{"env":{"DISABLE_TELEMETRY":"","CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC":""}}'

Ни в одном из этих случаев не выводится предупреждение. Сеанс запускается, модель отвечает без инструкций проекта, и ничто не говорит, что файл был пропущен. В проблеме также указывается, что сторонние шлюзы, Bedrock и Vertex, имеют ту же проблему, потому что там флаг не может получить значение true.

Обходной путь

CLAUDE.md поддерживает импорты @path, которые не зависят от флага. Однострочный CLAUDE.md рядом с AGENTS.md загружает его при отключённой телеметрии:

echo '@AGENTS.md' > CLAUDE.md

С этим файлом на месте контрольный тест возвращает слово, даже при установленном CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1. Цена — один дополнительный файл на репозиторий, что как раз должна была устранить поддержка AGENTS.md.

Почему это неприемлемо

Телеметрия была отключена намеренно, и ожидалось, что это решение позволит лишь пожертвовать диагностикой. Вместо этого оно молча отключает функцию чтения файла со своего собственного диска. Удалённый флаг может иметь смысл для функции, которая говорит с сервером, но единственный вход, который нужен этой функции, уже находится в рабочей директории.

Проблема также затрагивает людей, которые с большей вероятностью будут использовать AGENTS.md. Тот, кто держит один файл инструкций для нескольких агентов, обычно внимательно следит за тем, что каждый инструмент отправляет домой, а команды на Bedrock, Vertex или шлюзе часто отключают ненужный трафик по политике. Все они получают функцию, которая анонсирована как доступная, но потом не работает.

Молчание — самая страшная часть. Проблема была подтверждена контрольным словом и поиском строк в бинарнике, но большинство люде не станут этого делать. Они заключат, что модель игнорирует их инструкции, и потратят время на переформулирование промптов, когда файл вообще до модели не дошёл.

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

Что хотелось бы увидеть

  • Чтение локального файла не должно зависеть от телеметрии. Если врата нужно оставить для постепенного развёртывания, предупреждение при запуске, когда AGENTS.md присутствует и пропущен, сэкономит людям время на контрольные тесты.
  • Глобальный AGENTS.md. Плагин ищет AGENTS.md и .claude/AGENTS.md только в директориях проектов, и нет пользовательского файла рядом с пользовательским CLAUDE.md. Codex читает глобальный ~/.codex/AGENTS.md, а команда /import в Claude Code может скопировать его в пользовательский CLAUDE.md, но копия не отслеживает последующие изменения. Если держишь один набор личных инструкций для нескольких агентов, всё ещё нужен импорт @ в пользовательском CLAUDE.md, указывающий на общий файл.
  • Встроенная поддержка общих навыков агентов. Codex читает навыки из .agents/skills в проекте и из ~/.agents/skills в домашней директории. Claude Code 2.1.280 знает эти пути только в /import, который копирует навыки в .claude/skills. Положили контрольный навык в .agents/skills, и Claude Code не показал его, но показал тот же навык из .claude/skills в том же репозитории. Копия расходится с источником, поэтому вместо этого связывают .claude/skills с ../.agents/skills, и Claude Code следует этой символической ссылке.

Пока используется однострочный CLAUDE.md для инструкций и символическая ссылка для навыков.