AGENTS.md: один файл инструкций для Codex, Cursor и Claude Code

Автор: Обновлено

Что такое AGENTS.md?

AGENTS.md: открытый формат проектных инструкций для кодовых агентов: обычный Markdown-файл в репозитории, где лежат команды сборки и тестов, соглашения по коду и ограничения. Спецификация называет его «README для агентов»; обязательных полей нет. Формат курирует Agentic AI Foundation при Linux Foundation.

TL;DR

  • -AGENTS.md - это Markdown без схемы и обязательных полей; при нескольких файлах в дереве приоритет у ближайшего к редактируемому файлу, а явный запрос в чате важнее любого файла.
  • -AGENTS.md читают Codex, Cursor, GitHub Copilot (cloud agent, code review, Copilot CLI, Chat в VS Code), а Gemini CLI и Aider читают его после настройки имени файла.
  • -Claude Code с v2.1.277 читает AGENTS.md сам, но только если в рабочей директории и выше нет CLAUDE.md, .claude/CLAUDE.md или CLAUDE.local.md; иначе нужен импорт @AGENTS.md в CLAUDE.md.
  • -Codex склеивает все AGENTS.md от корня проекта до текущей директории и перестаёт добавлять файлы, когда сумма достигает 32 KiB (project_doc_max_bytes по умолчанию).
  • -Рабочая схема для команды из нескольких инструментов: один общий AGENTS.md как источник правды и тонкий CLAUDE.md с @AGENTS.md и Claude-специфичными правилами; две независимые копии со временем расходятся.

Проектные инструкции для кодовых агентов лежат в репозитории под разными именами: CLAUDE.md у Claude Code, .cursor/rules у Cursor, .github/copilot-instructions.md у Copilot, GEMINI.md у Gemini CLI. AGENTS.md сводит их к одному файлу. Это открытый формат, обычный Markdown в корне репозитория с командами сборки и тестов, соглашениями по коду и ограничениями. Спецификация на agents.md называет его «README для агентов», а курирует формат Agentic AI Foundation при Linux Foundation.

В ноябре 2026 года AGENTS.md читают Codex, Cursor и GitHub Copilot, а Claude Code с версии 2.1.277 читает его, если в проекте нет CLAUDE.md. Но каждый инструмент читает по-своему: одни склеивают все файлы по дереву, другие берут ближайший, у Codex есть лимит 32 KiB на всю цепочку, а Claude Code молча переключается на CLAUDE.md, если тот лежит рядом.

Статья о том, кто и как читает AGENTS.md, как совместить его с CLAUDE.md в команде, где работают несколько агентов, что класть в общий файл и какие ловушки встречаются на практике. Поведение Claude Code проверено на версии 2.1.318, остальное описано по документации на 6 ноября 2026 года. Уровни CLAUDE.md и порядок их загрузки разобраны отдельно в гайде по CLAUDE.md.

Что такое AGENTS.md

Происхождение и стюардство

Формат появился в экосистеме OpenAI Codex и быстро вышел за её пределы. В декабре 2025 года Linux Foundation запустила Agentic AI Foundation, и AGENTS.md (от OpenAI) вошёл в неё вместе с MCP от Anthropic и goose от Block (SD Times, InfoQ). Сайт agents.md сообщает, что формат используют более 60 тысяч open-source проектов, а в основном репозитории OpenAI на момент написания страницы было 88 файлов AGENTS.md.

Главное, что нужно знать о формате: схемы нет. На вопрос об обязательных полях спецификация отвечает «нет, это обычный Markdown». Ни frontmatter, ни зарезервированных заголовков формат не требует, механизма условного применения в нём нет. Всё, что сложнее «прочитай этот текст», каждый инструмент реализует сам.

Из спецификации следуют только два правила приоритета. Если в дереве несколько AGENTS.md, выигрывает ближайший к редактируемому файлу. Явный запрос пользователя в чате важнее любого файла.

Что туда писать

Спецификация рекомендует пять разделов: обзор проекта, команды сборки и тестов, стиль кода, тестирование, безопасность. Минимальный рабочий файл помещается в полтора десятка строк:

# AGENTS.md

## Команды
- Установка: `pnpm install`
- Тесты: `pnpm test` (перед каждым коммитом)
- Линтер: `pnpm lint --fix`

## Соглашения
- TypeScript strict, без `any`
- API-обработчики лежат в `src/api/handlers/`

## Ограничения
- Не добавлять зависимости без согласования
- Не коммитить `.env*` и секреты

Полный шаблон для команды есть в разделе «Шаблон AGENTS.md и тонкий CLAUDE.md».

Кто читает AGENTS.md: матрица инструментов

Таблица собрана по первичной документации каждого инструмента, дата проверки: 6 ноября 2026 года. Поведение меняется от релиза к релизу, поэтому перед внедрением стоит перепроверить свой инструмент по ссылке из последней колонки.

ИнструментКак читает AGENTS.mdВложенные файлыЛимит / рекомендация по размеруИсточник
CodexОсновной формат. Глобальный ~/.codex/AGENTS.override.md или AGENTS.md, затем по одному файлу на каталог от корня проекта до текущей директорииСклеиваются от корня вниз, ближайшие идут позже и выигрывают32 KiB на всю цепочку (project_doc_max_bytes)docs Codex
Claude CodeС v2.1.277, если в рабочей директории и выше нет CLAUDE.md, .claude/CLAUDE.md, CLAUDE.local.mdAGENTS.md подкаталога подгружается, когда Claude читает файл из этого подкаталогаДля CLAUDE.md рекомендация: до 200 строкdocs Claude Code + проверка на 2.1.318
CursorВ корне и в подкаталогах, как альтернатива .cursor/rulesОбъединяются с родительскими, более специфичные приоритетнееДля правил рекомендация: до 500 строкdocs Cursor
GitHub CopilotCloud agent, code review, Copilot CLI, Chat в VS Code. Вместо AGENTS.md можно один CLAUDE.md или GEMINI.md в корнеПриоритет у ближайшего в деревеНе указанdocs GitHub, таблица поддержки
Gemini CLIПо умолчанию читает GEMINI.md; AGENTS.md читает после настройки context.fileName в settings.jsonВсе найденные файлы склеиваютсяНе указанdocs Gemini CLI
AiderСам файлы не ищет; AGENTS.md подключается через read: AGENTS.md в .aider.conf.yml или --readНе описаноНе указанdocs Aider, FAQ agents.md

В списке поддерживающих инструментов на agents.md есть ещё Jules, Devin, Windsurf, Junie, Zed, Warp, Factory, goose, opencode, Amp, RooCode, Kilo Code, Augment Code и другие. Их собственную документацию для этой статьи не проверяли. Отдельная оговорка про Gemini CLI: в мае 2026 года Google объявила о переходе на Antigravity CLI: с 18 июня 2026 года Gemini CLI перестал обслуживать бесплатных пользователей и подписчиков Google AI Pro и Ultra, доступ сохранился у лицензий Gemini Code Assist Standard и Enterprise и при работе через платные API-ключи. Читает ли AGENTS.md сам Antigravity CLI, не проверяли.

Codex: цепочка файлов и лимит 32 KiB

Codex собирает инструкции заново при каждом запуске. Сначала глобальный уровень в ~/.codex (или в CODEX_HOME): берётся AGENTS.override.md, а если его нет, AGENTS.md; используется первый непустой. Затем проектный уровень: Codex идёт от корня проекта (обычно корня Git-репозитория) вниз до текущей директории и в каждом каталоге берёт не больше одного файла в порядке AGENTS.override.md → AGENTS.md → имена из project_doc_fallback_filenames.

Найденные файлы не заменяют друг друга, а склеиваются через пустую строку от корня вниз. Ближайшие к рабочей директории идут последними и поэтому выигрывают при противоречии. Пустые файлы пропускаются. Как только суммарный размер достигает project_doc_max_bytes (по умолчанию 32 KiB), Codex перестаёт добавлять файлы. Документация советует либо поднять лимит, либо разнести инструкции по вложенным каталогам.

Запасные имена задаются в ~/.codex/config.toml:

project_doc_fallback_filenames = ["TEAM_GUIDE.md", ".agents.md"]
project_doc_max_bytes = 65536

Проверить, что Codex видит, можно его же запросом из корня репозитория: codex --ask-for-approval never "Summarize the current instructions.". Для подкаталога добавьте флаг --cd subdir.

Cursor: AGENTS.md или .cursor/rules

Cursor поддерживает оба механизма, и они решают разные задачи. AGENTS.md - простой Markdown без метаданных, документация Cursor предлагает его «для простых случаев». Файлы в подкаталогах объединяются с родительскими, более специфичные инструкции приоритетнее.

Правила .cursor/rules хранятся в файлах с расширением .mdc и frontmatter из трёх полей: description, globs, alwaysApply. От них зависит тип применения: Always Apply (в каждой сессии), Apply Intelligently (агент решает по описанию), Apply to Specific Files (по шаблону пути), Apply Manually (по @-упоминанию). В старых версиях документации последние два назывались Agent Requested и Auto Attached. Обычный .md в .cursor/rules без frontmatter система правил игнорирует.

Поверх проектных правил есть User Rules (глобальные для пользователя) и Team Rules (тарифы Team и Enterprise). При конфликте порядок такой: Team → Project → User. Про устаревший .cursorrules текущая страница документации не пишет ничего, поэтому утверждать что-либо о его статусе по ней нельзя.

GitHub Copilot: copilot-instructions.md, applyTo и AGENTS.md

У Copilot три вида репозиторных инструкций. .github/copilot-instructions.md действует на весь репозиторий. Файлы .github/instructions/NAME.instructions.md с ключом applyTo (glob) действуют на часть путей, их поддерживают только cloud agent и code review, а ключом excludeAgent ("code-review" или "cloud-agent") файл можно скрыть от одного из них. Третий вид называется agent instructions: один или несколько AGENTS.md в любом месте репозитория, где приоритет у ближайшего, либо одиночный CLAUDE.md или GEMINI.md в корне.

Кто именно читает agent instructions, видно из таблицы поддержки: cloud agent (на GitHub.com и из IDE), code review, Copilot CLI и Copilot Chat в VS Code. Copilot Chat в JetBrains, Visual Studio, Eclipse и Xcode в таблице agent instructions не поддерживает. Если команда пользуется Chat вне VS Code, copilot-instructions.md пока нужен.

Личные инструкции Copilot приоритетнее репозиторных, а репозиторные приоритетнее организационных; в запрос уходят все релевантные наборы.

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

До версии 2.1.277 Claude Code читал только CLAUDE.md, и AGENTS.md приходилось подключать обходными путями. Теперь встроенный плагин читает AGENTS.md сам, но с условием: по умолчанию (claude-md-or-agents-md) только если в рабочей директории и выше нет ни одного из трёх файлов: CLAUDE.md, .claude/CLAUDE.md, CLAUDE.local.md. Пользовательский ~/.claude/CLAUDE.md, управляемый CLAUDE.md организации и .claude/rules/ в эту проверку не входят и грузятся вместе с AGENTS.md.

В репозиторииЧто читает Claude Code
Только AGENTS.mdAGENTS.md
AGENTS.md + CLAUDE.md (без импорта)Только CLAUDE.md
AGENTS.md + CLAUDE.md с @AGENTS.mdCLAUDE.md и AGENTS.md через импорт
AGENTS.md + CLAUDE.local.mdТолько CLAUDE.local.md

Проверено: 6 ноября 2026 года, Claude Code 2.1.318, временные папки с уникальной фразой-маркером в каждом файле. Во всех четырёх случаях модель назвала маркеры только из указанных в таблице файлов, а /context all показал те же файлы в разделе Memory files. Импорт @AGENTS.md дубля не дал: каждый файл в списке один раз.

Ещё три отличия AGENTS.md, прочитанного напрямую, от CLAUDE.md по документации: на него не срабатывают хуки InstructionsLoaded (для импортированного или подключённого через symlink AGENTS.md срабатывают); AGENTS.md из каталогов, добавленных через --add-dir, не грузится; не читаются AGENTS.local.md, AGENTS.override.md и содержимое каталога .agents/. Если у вас есть Codex-специфичный AGENTS.override.md, Claude Code его не увидит.

Как совместить AGENTS.md с CLAUDE.md

Вариантов четыре, и универсально правильного среди них нет. Выбор зависит от того, есть ли в команде Windows, нужны ли инструкции только для Claude Code и укладывается ли общий текст в лимит Codex.

Вариант 1: только AGENTS.md

CLAUDE.md в репозитории нет, Claude Code читает AGENTS.md сам. Подходит, если инструкции действительно общие, а Claude-специфичного (hooks, skills, plan mode) в них нет или оно лежит в .claude/rules/ и .claude/settings.json.

Главная ловушка здесь CLAUDE.local.md. Это личный, незакоммиченный файл, и кажется, что он только добавляет инструкции. На деле он считается за CLAUDE.md, и Claude Code перестаёт читать AGENTS.md. В живой проверке модель с AGENTS.md и CLAUDE.local.md в одной папке видела только маркер из CLAUDE.local.md. Сообщения об ошибке нет: агент просто работает без проектных инструкций.

Второе ограничение связано с версиями. Сессии на Claude Code до 2.1.277 AGENTS.md не видят. До 2.1.281 его не видели и некоторые сессии на свежих версиях, например на Amazon Bedrock или с отключённой телеметрией. Иногда его не читает и первая сессия сразу после обновления с версии 2.1.276 или более ранней.

Вариант 2: CLAUDE.md с @AGENTS.md

Этот вариант стоит выбирать по умолчанию. AGENTS.md служит источником правды для всех агентов, а CLAUDE.md остаётся тонкой обёрткой: первой строкой импорт, ниже то, что относится только к Claude Code.

@AGENTS.md

## Claude Code
- Изменения в `src/billing/`: только через plan mode
- Перед коммитом запусти skill `pre-push`

Claude Code сначала читает импортированный файл, затем остальной CLAUDE.md. Схема работает и в сессиях, где прямое чтение AGENTS.md недоступно, и при любом значении настройки Project instructions, а дубля в контексте не бывает: документация обещает, что импорт никогда не заставит прочитать AGENTS.md дважды, и живая проверка это подтверждает. Минус один: если кто-то добавит в CLAUDE.md общие правила, другие агенты их не увидят. Такие вещи ловит только ревью.

ln -s AGENTS.md CLAUDE.md

Содержимое одно, читают его все. Документация Claude Code перечисляет два ограничения. Первое: инструменты Edit и Write не пишут через symlink, и Claude перенаправит правку в целевой файл, AGENTS.md. Второе: Windows. Создание symlink требует прав администратора или Developer Mode, а Git без core.symlinks извлекает закоммиченную ссылку как обычный текстовый файл. У разработчика на Windows CLAUDE.md окажется однострочным файлом с текстом AGENTS.md вместо инструкций.

Встречается и обратная схема: AGENTS.md -> CLAUDE.md. В рабочем пространстве автора (около 15 проектов, Claude Code и Codex параллельно) так устроено большинство проектов: они начинались с Claude Code, и источником правды остался CLAUDE.md. Направление ссылки определяет, какой файл настоящий, и это важно в двух местах. Править нужно цель, а не ссылку. И всё, что лежит в цели, видят все агенты: при AGENTS.md -> CLAUDE.md Codex получает и Claude-специфичные инструкции про hooks и skills, которых у него нет.

Вариант 4: два файла разной длины

Иногда общий текст объективно не помещается в лимит Codex. Пример из того же рабочего пространства: в продуктовом монорепозитории CLAUDE.md занимает около 708 строк и 41 415 байт, а AGENTS.md около 128 строк и 10 КБ. Длинный файл в лимит Codex по умолчанию (32 768 байт) не поместился бы. Что Codex делает с единственным файлом больше лимита, документация не уточняет: она описывает только остановку при накоплении суммы. Этот случай не проверяли.

Короткая версия для Codex фиксирует только операционный минимум: язык ответов, консервативные изменения, запреты (удаление файлов, новые зависимости, долгоживущие процессы, секреты), порядок проверки и ссылку «подробности в docs/, не здесь». Такое разделение осознанное: у короткого файла своя задача, и пересказывать длинный он не пытается.

Цена варианта в том, что получается два файла, которые нужно синхронизировать вручную. Работает, только если короткий файл действительно короткий и меняется редко.

Таблица выбора

«Да» в ячейке означает, что вариант подходит при этом условии.

КритерийТолько AGENTS.mdCLAUDE.md + @AGENTS.mdSymlinkДва файла
Есть разработчики на WindowsДаДаНетДа
Нужны инструкции только для Claude CodeТолько через .claude/rules/ДаНетДа
Сессии на Claude Code < 2.1.277НетДаДаДа
Личные CLAUDE.local.md у участниковНет, отключают AGENTS.mdДаДаДа
Общий текст больше 32 KiBНетНетНетДа
Число файлов, которые правят люди11 + тонкая обёртка12

Режим claude-md-and-agents-md и проверка через /context all

Если и CLAUDE.md, и AGENTS.md нужны, а импорт ставить не хочется, Claude Code можно переключить на чтение обоих файлов. В интерактивной сессии: /config → Project instructions → claude-md-and-agents-md. В файле настроек:

{
  "pluginConfigs": {
    "cc-plugin-agents-md@builtin": {
      "options": { "instructionFiles": "claude-md-and-agents-md" }
    }
  }
}

Эта настройка читается только из ~/.claude/settings.json, из файла, переданного через --settings, и из managed settings. В проектном .claude/settings.json и в settings.local.json она игнорируется, поэтому закоммитить её в репозиторий для всей команды нельзя. До v2.1.285 плагин назывался agents-md@builtin; с 2.1.285 принимаются оба ID. Остальные значения: claude-md (только CLAUDE.md) и managed-only (только управляемые инструкции организации).

Проверено: 6 ноября 2026 года, Claude Code 2.1.318, настройка передана через --settings. С CLAUDE.md без импорта модель увидела маркеры обоих файлов, с CLAUDE.local.md тоже маркеры обоих. Режим лечит и обычную ситуацию «CLAUDE.md рядом с AGENTS.md», и ловушку с CLAUDE.local.md.

Быстрее всего проверить загрузку командой /context all в начале сессии. Раздел Memory files перечисляет файлы инструкций с их уровнем (Project, Local, User) и числом токенов. Команда работает и в неинтерактивном режиме: claude -p "/context all". Если вместо ожидаемого AGENTS.md в списке только CLAUDE.local.md, причина найдена.

Вложенные AGENTS.md и монорепозитории

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

  • Codex склеивает всю цепочку от корня до текущей директории, и вложенные файлы тратят общий бюджет 32 KiB. Дробление на пакеты помогает, только если корневой файл короткий: он попадает в каждую цепочку.
  • Cursor объединяет вложенный файл с родительскими, более специфичный выигрывает при конфликте.
  • Copilot берёт ближайший файл в дереве.
  • Claude Code при старте читает AGENTS.md из рабочей директории и всех директорий выше, а AGENTS.md подкаталога подгружает, когда открывает файл из этого подкаталога и там нет своего CLAUDE.md. Вложенные файлы в живой проверке не тестировались, здесь описано поведение по документации.

Дробить имеет смысл, когда у пакетов действительно разные команды и соглашения: фронтенд на pnpm и Vitest, бэкенд на Go, отдельный пакет с инфраструктурой. Если вложенный файл повторяет корневой с парой отличий, лучше оставить одну строку в корневом: «в packages/api тесты запускаются через go test ./...».

Что класть в общий файл, а что нет

Общий AGENTS.md читают агенты с разным набором возможностей, поэтому в нём должно быть только то, что верно для любого из них:

  • команды сборки, тестов, линтера;
  • соглашения по коду и структуре, которые не выводятся из самого кода;
  • запреты: секреты, новые зависимости, удаление файлов, ручной деплой;
  • порядок проверки перед коммитом;
  • ссылки на docs/ и ADR вместо пересказа.

Инструмент-специфичное уходит в файл инструмента. Hooks, skills, plan mode, субагенты, MCP-серверы Claude Code описываются в CLAUDE.md или .claude/. Codex-специфичное кладут в AGENTS.override.md или глобальный ~/.codex/AGENTS.md. Фраза «запусти skill pre-push» в общем файле заставит Codex искать то, чего у него нет. Жёсткие правила, которые нельзя нарушать, вообще лучше выносить из текста в механизмы: в Claude Code для этого есть hooks. Инструкция в любом из файлов для модели только контекст, выполнение она не гарантирует.

Личные правила AGENTS.md не шарит. Это проектный файл: глобальные предпочтения у Claude Code живут в ~/.claude/CLAUDE.md, у Codex в ~/.codex/AGENTS.md, и синхронизировать их придётся отдельно.

Что касается содержания, есть эмпирика. В исследовании ETH Zurich и LogicStar.ai (arXiv 2602.11988, v3 от 29.09.2026) агентов прогоняли на задачах SWE-bench и на наборе issues из репозиториев, где разработчики сами закоммитили контекст-файлы. Вывод авторов: такие файлы в целом не повышают долю решённых задач, а стоимость инференса растёт в среднем более чем на 20%. Инструкции агенты выполняют хорошо, обзоры репозитория не помогают. Польза есть там, где нужно описать нестандартные практики проекта.

Отсюда практический вывод: писать в AGENTS.md неочевидное и проверяемое. Структуру каталогов агент прочитает сам, пересказывать её незачем. Каждая строка файла расходует контекст в каждой сессии; почему этот расход важен, разобрано в гайде по context engineering.

Шаблон AGENTS.md и тонкий CLAUDE.md

Шаблон для репозитория, с которым работают несколько агентов. Конкретные команды и пути заменить своими.

## Проект
Монорепозиторий: `apps/web` (Next.js), `apps/api` (Go), `packages/ui`.
Архитектура описана в `docs/architecture.md`, решения в `docs/adr/`.

## Команды
- Установка: `pnpm install`
- Тесты всего репозитория: `pnpm test`; один пакет: `pnpm --filter <pkg> test`
- API: `cd apps/api && go test ./...`
- Линтер и формат: `pnpm lint --fix`

## Соглашения
- TypeScript strict, без `any`; ошибки API отдаются через `ApiError`
- Новые эндпоинты добавляются с тестом в `apps/api/internal/.../*_test.go`
- Миграции БД только новыми файлами, существующие не редактировать

## Ограничения
- Не добавлять зависимости без согласования в PR
- Не коммитить `.env*`, ключи и токены
- Не удалять файлы и крупные блоки кода без явной просьбы
- Не запускать долгоживущие процессы (dev-серверы, watchers)

## Перед коммитом
1. `pnpm lint` и `pnpm test` проходят
2. Изменение описано в PR: что и зачем

И тонкий CLAUDE.md рядом:

@AGENTS.md

## Только для Claude Code
- Изменения в `apps/api/internal/billing/`: через plan mode
- Перед push запускай skill `pre-push`

Обе части вместе укладываются в несколько килобайт: до лимита Codex далеко, и до рекомендованных 200 строк для CLAUDE.md тоже. Что ещё писать в Claude-части, разобрано в гайде по CLAUDE.md.

Миграция существующей настройки

Из CLAUDE.md. Перенести общее в AGENTS.md, в CLAUDE.md оставить @AGENTS.md и Claude-специфичное. Если Claude-специфичного нет, CLAUDE.md можно удалить, и свежий Claude Code прочитает AGENTS.md сам. Ранее для этой задачи использовали генерацию AGENTS.md из CLAUDE.md внешними утилитами вроде AgentSync с исключением Claude-специфичных разделов. Для правил прямое чтение AGENTS.md эту задачу в основном снимает, а синхронизация MCP-конфигов между агентами остаётся отдельной.

Из .cursor/rules. Правила типа Always Apply переносятся в AGENTS.md. Правила, привязанные к шаблонам файлов, остаются в .mdc или превращаются во вложенный AGENTS.md соответствующего каталога. Правила типа Apply Intelligently аналога в AGENTS.md не имеют.

Из .github/copilot-instructions.md. Общий текст переносится в AGENTS.md. Сам copilot-instructions.md стоит оставить, если в команде пользуются Copilot Chat вне VS Code: там AGENTS.md не читается.

Через инструменты Claude Code. /init при генерации CLAUDE.md учитывает .cursor/rules, .cursorrules и .github/copilot-instructions.md; с переменной CLAUDE_CODE_NEW_INIT=1 ещё и AGENTS.md, .devin/rules/, .windsurf/rules/ и .clinerules. /import один раз копирует конфигурацию другого агента, включая AGENTS.md, в CLAUDE.md. В обоих случаях получается копия текста: если AGENTS.md остаётся в репозитории, лучше заменить скопированный текст на @AGENTS.md. Сгенерированный файл целиком оставлять не стоит: /init пишет обзор проекта, а такие обзоры, судя по данным ETH, агентам не помогают.

Старые обходы. Документация Claude Code разбирает четыре распространённых варианта:

БылоЧто делать
CLAUDE.md с @AGENTS.mdОставить; удалить, если в нём больше ничего нет и все сессии на свежей версии
CLAUDE.md с фразой «читай AGENTS.md»Заменить фразу на @AGENTS.md или удалить CLAUDE.md: агент открывает файл, только если сам решит
Symlink CLAUDE.md → AGENTS.mdМожно оставить или удалить, содержимое читается один раз
SessionStart-хук, печатающий AGENTS.mdУдалить, иначе в контексте будет вторая копия

Типичные ошибки

Две копии, которые правят независимо. Классический сценарий дрейфа. В одном из проектов автора CLAUDE.md и AGENTS.md начинались как одинаковые копии; со временем они разошлись в нескольких абзацах, и уже нельзя сказать, какая версия правильная. Агенты в одном репозитории получают разные правила.

Автозамена имён. Копию для другого агента делают поиском и заменой Claude → Codex. Вместе с названием меняются пути: строка ~/.claude/team-rules.md превращается в ~/.Codex/team-rules.md, которого не существует. Ошибка молчаливая: агент просто не находит файл.

Claude-специфика в общем файле. Для других агентов упоминания skills, hooks, субагентов и MCP-серверов Claude Code в AGENTS.md становятся инструкциями, которые они не могут выполнить. В лучшем случае это лишний расход контекста, в худшем агент тратит шаги на поиск несуществующего. Особенно легко это случается при схеме AGENTS.md -> CLAUDE.md.

Symlink в команде с Windows. У части команды вместо инструкций окажется однострочный файл. Это легко пропустить: агент работает как обычно, просто без проектных правил.

CLAUDE.local.md в проекте на AGENTS.md. Личный файл молча отключает чтение общего. Лечится импортом @AGENTS.md в CLAUDE.local.md или режимом claude-md-and-agents-md в пользовательских настройках.

Устаревший файл. AGENTS.md с командами, которые больше не работают, хуже отсутствия файла: агенты выполняют инструкции старательно. Файл стоит менять в том же PR, что и команды сборки, и проверять на ревью.

Разница между самими агентами разобрана в сравнении Claude Code и Codex, место файлов правил в командном процессе описано в гайде по vibe coding, общая настройка Claude Code есть в полном гайде по Claude Code.

С чего начать

  1. Запустить /context all в Claude Code и посмотреть, какие файлы инструкций реально загружаются сейчас.
  2. Найти все файлы инструкций в репозитории: CLAUDE.md, CLAUDE.local.md, AGENTS.md, .cursor/rules, .github/copilot-instructions.md. Если среди них есть копии, выбрать одну источником правды.
  3. Перенести общее в AGENTS.md, Claude-специфичное оставить в CLAUDE.md под строкой @AGENTS.md.
  4. Проверить размер: wc -c по всем AGENTS.md в цепочке от корня до самого глубокого пакета; сумма должна оставаться заметно ниже 32 KiB.
  5. Проверить каждым агентом: /context all в Claude Code, codex ... "Summarize the current instructions." в Codex, /memory show в Gemini CLI, если он у вас ещё работает.

Часто задаваемые вопросы

Читает ли Claude Code файл AGENTS.md?
Да, начиная с версии 2.1.277, но по умолчанию только тогда, когда в рабочей директории и выше нет CLAUDE.md, .claude/CLAUDE.md или CLAUDE.local.md. Если CLAUDE.md есть, Claude Code читает только его. Чтобы получить оба файла, добавьте строку @AGENTS.md в CLAUDE.md или включите режим claude-md-and-agents-md в настройке Project instructions.
Нужен ли CLAUDE.md, если в проекте уже есть AGENTS.md?
Не обязательно: свежий Claude Code прочитает AGENTS.md сам. CLAUDE.md нужен, когда есть инструкции только для Claude Code (hooks, skills, plan mode, субагенты) или когда часть сессий работает на версиях без прямого чтения AGENTS.md. В этом случае CLAUDE.md начинается со строки @AGENTS.md, а ниже идут Claude-специфичные правила.
Что лучше: symlink CLAUDE.md на AGENTS.md или импорт @AGENTS.md?
Импорт @AGENTS.md надёжнее. Symlink на Windows требует прав администратора или Developer Mode, а Git без core.symlinks превращает его в однострочный текстовый файл. Кроме того, инструменты Edit и Write в Claude Code не пишут через symlink, и в symlink-схеме некуда положить инструкции только для Claude.
Какой максимальный размер у AGENTS.md?
Сама спецификация лимита не задаёт. Codex по умолчанию перестаёт добавлять файлы инструкций, когда их суммарный размер достигает 32 KiB (настройка project_doc_max_bytes). Claude Code рекомендует держать CLAUDE.md в пределах 200 строк, Cursor держит правила в пределах 500 строк.
Как работают вложенные AGENTS.md в монорепозитории?
По спецификации агент берёт ближайший к редактируемому файлу AGENTS.md. Codex и Cursor при этом не выбрасывают родительские файлы, а объединяют их: Codex склеивает цепочку от корня до текущей директории, и более близкие инструкции идут позже и выигрывают. Claude Code подгружает AGENTS.md подкаталога, когда читает файл из этого подкаталога.
Поддерживают ли AGENTS.md Cursor и GitHub Copilot?
Cursor читает AGENTS.md в корне и в подкаталогах как альтернативу правилам .cursor/rules. GitHub Copilot использует AGENTS.md в cloud agent, code review, Copilot CLI и в Copilot Chat в VS Code; приоритет у ближайшего файла в дереве. Copilot Chat в JetBrains, Visual Studio, Eclipse и Xcode по таблице поддержки GitHub AGENTS.md не использует.
Чем AGENTS.md отличается от .cursor/rules?
AGENTS.md - простой Markdown без метаданных, его понимают многие агенты. Правила .cursor/rules - это файлы .mdc с frontmatter (description, globs, alwaysApply), которые умеют применяться по шаблону файлов или по решению агента, но работают только в Cursor. Обычный .md без frontmatter в .cursor/rules Cursor игнорирует.