Как убрать Co-Authored-By Claude из твоих коммитов git
Claude Code подписывает твои коммиты трейлером Co-Authored-By, а твои pull request строкой Generated with Claude Code. Настройка, которая их убирает, файл, куда её положить, и как почистить уже запушенные коммиты.
Ты просишь Claude Code сделать коммит, и сообщение заканчивается строкой, которую ты не писал: Co-Authored-By: Claude Opus 4.6 <[email protected]>. Открой с ним pull request, и описание закончится эмодзи робота и «Generated with Claude Code». Ни то, ни другое не баг. Оба берутся из одной настройки, и ты меняешь её за минуту.
Это руководство разбирает настройку, файл, куда её положить, чтобы она действовала на тебя, на один проект или на всю команду, старый ключ, который у тебя, возможно, ещё остался, и как почистить коммиты, которые уже несут эту строку. Факты о Claude Code взяты из его справочника по настройкам, прочитанного 12 ноября 2026 года с установленным Claude Code 2.1.318.
Короткий ответ. Положи это в ~/.claude/settings.json:
{
"attribution": {
"commit": "",
"pr": ""
}
}
Новые коммиты больше не несут трейлер, новые pull request теряют строку. Коммиты, сделанные до изменения, сохраняют её, пока ты их не перепишешь.
Что добавляет Claude Code и куда
Claude Code добавляет атрибуцию в трёх местах. У каждого свой подключ в attribution.
| Где | Что Claude Code добавляет по умолчанию | Подключ |
|---|---|---|
| Сообщение коммита | Трейлер: Co-Authored-By: <модель> <[email protected]> | attribution.commit |
| Описание pull request | Эмодзи робота и «Generated with Claude Code» | attribution.pr |
| Коммит или PR из облачной сессии или сессии Remote Control | Ссылка на сессию claude.ai, в виде трейлера Claude-Session в коммитах | attribution.sessionUrl |
Имя в трейлере обозначает модель, которая используется в момент коммита. Поэтому строка говорит Claude Opus 4.6 одну неделю и Claude Sonnet 4.6 следующую, и поэтому в поисковых запросах об этой проблеме упоминается столько моделей. Когда Claude Code распознаёт модель Claude, но не может подтвердить её версию, он пишет просто Claude. Когда модель за пользовательским ANTHROPIC_BASE_URL вообще не является моделью Claude, он пишет Claude Code. Когда коммит делает субагент, трейлер называет модель субагента.
Эта строка не git hook. Claude Code просит Claude добавить её, когда Claude сам пишет коммит или pull request. Коммит, который ты делаешь сам в терминале или который делает другой инструмент, никогда её не получает.
Отключить её настройкой attribution
attribution принимает объект из трёх частей или false для всех сразу.
| Значение | Эффект |
|---|---|
"commit": "" | Нет трейлера в коммитах |
"pr": "" | Нет строки атрибуции в описаниях pull request |
"sessionUrl": false | Нет ссылки на сессию claude.ai в коммитах и pull request из облачной сессии или сессии Remote Control |
"attribution": false | Все три скрыты сразу. Нужен Claude Code 2.1.281 или новее |
Короткая форма соблазнительна, но сначала прочитай строку о версии. Claude Code старше 2.1.281 отвергает "attribution": false, и он не просто игнорирует ключ: он пропускает весь файл настроек, который его содержит, вместе с твоими разрешениями, хуками и моделью. Если один и тот же файл читается на машинах с разными версиями, используй длинную форму:
{
"attribution": {
"commit": "",
"pr": "",
"sessionUrl": false
}
}
Выполни /status, чтобы проверить, что файл загрузился: строка Setting sources перечисляет каждый файл, который прочитал Claude Code. Если уже открытая сессия продолжает добавлять строку, начни новую.
Какой файл: ты, один проект или вся команда
Ключ работает в любом файле настроек. От файла зависит, на кого он действует.
| Файл | На кого действует |
|---|---|
~/.claude/settings.json | На тебя, во всех проектах на этой машине |
.claude/settings.json в проекте | На всех, кто работает в проекте, как только ты закоммитишь файл |
.claude/settings.local.json в проекте | На тебя, только в этом проекте. Claude Code держит его вне git, когда создаёт его |
| Managed settings, развёрнутые твоей организацией | На всех, кому организация их развёртывает |
Когда два файла задают ключ, побеждает тот, что выше: managed settings, затем --settings в командной строке, затем локальный файл проекта, затем общий файл проекта, затем твой пользовательский файл. Из этого порядка следуют два случая. Если твоя команда коммитит файл, который намеренно оставляет трейлер, твой собственный .claude/settings.local.json переопределяет его для тебя, ничего не меняя для остальных. Если твоя организация задаёт атрибуцию в managed settings, ничто из того, что ты напишешь, её не изменит.
Ты также можешь сказать Claude в своём CLAUDE.md не добавлять строку, и Claude Code сообщает Claude, что твои собственные инструкции об атрибуции важнее его строк по умолчанию, если только строка не пришла из managed settings. Разница в природе: настройка убирает текст, который запрашивает Claude Code, а инструкция остаётся текстом, который модель читает и применяет. Используй настройку.
Старый ключ includeCoAuthoredBy
До attribution переключатель назывался includeCoAuthoredBy. Он устарел начиная с Claude Code 2.0.62 и всё ещё читается:
"includeCoAuthoredBy": falseскрывает и трейлер коммитов, и строку pull request;- как только задан
attribution.commitилиattribution.pr, Claude Code игнорируетincludeCoAuthoredByи берёт свой текст по умолчанию для той из двух частей, которую ты не задал.
Именно из-за второго правила трейлер обычно и возвращается. У тебя было includeCoAuthoredBy: false, потом ты добавил "attribution": {"pr": ""}, чтобы убрать только строку PR, и трейлер коммитов появляется снова, потому что теперь решает attribution, а commit не задан. Переходи на attribution и задай обе части.
Заменить её, а не убрать
Некоторые команды хотят помнить, какие коммиты сделаны с помощью ИИ, просто не этой строкой. attribution.commit принимает любой текст, включая трейлеры. Git читает трейлеры только из последнего абзаца сообщения, поэтому держи их вместе, в конце:
{
"attribution": {
"commit": "Assisted-by: Claude Code"
}
}
Закоммить это в .claude/settings.json проекта, и Claude Code у каждого участника команды будет писать одну и ту же строку.
Коммиты, у которых уже есть трейлер
Настройка меняет только коммиты, написанные после неё. Для тех, что уже есть, правильный инструмент зависит от того, как далеко они ушли.
Последний коммит, ещё не запушенный: сделай amend и удали строку в редакторе.
git commit --amend
Несколько коммитов в ветке, которой ты ни с кем не делился: сделай rebase и переформулируй каждый.
git rebase -i origin/main
Вся история: git filter-repo переписывает каждое сообщение коммита за один проход. Ему нужен свежий клон, и это отдельный инструмент, который нужно установить:
git filter-repo --message-callback '
return re.sub(rb"(?mi)^Co-Authored-By: Claude[^\n]*<noreply@anthropic\.com>\n?", b"", message).rstrip(b"\n") + b"\n"
'
У переписывания есть цена, и в общей ветке она обычно выше, чем цена строки. Каждый хеш коммита после первого изменённого становится новым: запушенной ветке нужен force push, каждому участнику придётся начать заново с новой истории, открытые pull request на старых коммитах ломаются, а подписанные коммиты теряют подпись. В личной ветке до merge делай это. В ветке main, которую другие уже стянули, оставь её как есть и задай ключ на будущее.
Что трейлер делает на GitHub
GitHub читает трейлеры Co-authored-by и показывает соавтора в коммите, когда адрес электронной почты принадлежит аккаунту GitHub. В июне 2025 года два issue в репозитории anthropics/claude-code (#1653 и #1655) сообщили о коммитах, приписанных через этот адрес аккаунту GitHub, не связанному с Anthropic; оба закрыты. На какой бы аккаунт ни указывал адрес в тот или иной день, удаление трейлера убирает соавтора из последующих коммитов, и только из них.
Что делают другие CLI
Claude Code не единственный, кто подписывает свою работу, и у каждого CLI свой переключатель.
- Codex. В исходном коде
openai/codex, который мы прочитали 12 ноября 2026 года, Codex добавляетCo-authored-by: Codex <[email protected]>в коммиты и «Generated with Codex.» в тело pull request, когда атрибуция включена для твоего рабочего пространства: это политика, которую он получает при старте сессии. Когда политика выключена, Codex получает указание не добавлять ни ту, ни другую строку. - Aider. Он дописывает «(aider)» к имени автора и коммиттера git вместо того, чтобы добавлять трейлер.
--no-attribute-authorи--no-attribute-committerотключают это, а--attribute-co-authored-byзаменяет это трейлеромCo-authored-by.
Что мы делаем в AgentsRoom
Мы каждый день запускаем несколько агентов на одних и тех же репозиториях, Claude Code рядом с Codex и другими, и именно в коммите их работа сходится. Два случая, и правила у них разные.
Когда агент сам делает коммит в своём терминале, сообщение пишет его CLI, поэтому действует настройка самого CLI: attribution для Claude Code, политика рабочего пространства для Codex, флаги для Aider.
Когда ты делаешь коммит из AgentsRoom, из вкладки Changes, режима проверки, автокоммита при закрытии агента или экрана Changes мобильного приложения, коммит пишет AgentsRoom, и ни один CLI не добавляет свой трейлер. Внизу оказывается подпись коммита AgentsRoom, и настраиваешь её ты. По умолчанию она добавляет одну строку с ролью каждого агента, чьи файлы есть в коммите, и временем, которое он потратил:
bug : Fix the login redirect
AgentsRoom-Agent: fullstack; time=42m
У каждой части свой переключатель в «Настройки > Git > Подпись коммита», для твоего аккаунта, папки проектов или одного проекта: роль агента, затраченное время и, выключенные по умолчанию, стоимость, доля твоей квоты и промпты, которые ты написал. Выключи «Агент» и «Затраченное время», и твои коммиты станут ровно такими, какими были раньше. В наших собственных репозиториях мы оставляем роль включённой: в репозитории, где коммитят четыре CLI, имя модели говорит, какая модель написала код, а роль говорит, какую работу она выполняла, и именно это мы ищем, когда изменение что-то ломает три недели спустя. Наш публичный changelog читает ту же строку, чтобы показать, какие агенты работали над каждым релизом.
Если тебе нужно ещё и рассуждение за изменением, Commit Context добавляет ссылку на разговор агента в тот же блок трейлеров. А если ты предпочитаешь вообще не писать сообщение, ИИ-сообщения коммитов составляют его по диффу.
Часто задаваемые вопросы
Как убрать Co-Authored-By Claude из моих коммитов?
Добавь "attribution": {"commit": "", "pr": ""} в ~/.claude/settings.json. Тогда Claude Code перестаёт добавлять трейлер Co-Authored-By в коммиты, которые он пишет, и строку Generated with Claude Code в pull request, которые он открывает, во всех проектах на этой машине. В Claude Code 2.1.281 и новее "attribution": false скрывает всё одним значением. Коммиты, сделанные до изменения, сохраняют свой трейлер.
includeCoAuthoredBy ещё работает?
Работает, но считается устаревшим начиная с Claude Code 2.0.62. includeCoAuthoredBy: false скрывает и трейлер коммитов, и строку pull request, если только более новый ключ attribution не задаёт commit или pr: тогда решает attribution. Новая конфигурация использует attribution.
Почему в трейлере написано Claude Opus 4.6 или Sonnet 4.6, а не Claude?
Трейлер называет модель, которая используется в момент коммита, поэтому он меняется вместе с твоей моделью. Claude Code пишет просто Claude, когда не может подтвердить точную версию, и Claude Code, когда модель за пользовательским ANTHROPIC_BASE_URL не является моделью Claude. Настройка убирает все эти варианты.
Как убрать трейлер из уже сделанных коммитов?
Для последнего коммита выполни git commit --amend и удали строку. Для нескольких ещё не запушенных коммитов используй git rebase -i и переформулируй их. Для всей истории git filter-repo с message callback убирает строку из каждого коммита, на свежем клоне. Переписывание меняет хеш каждого коммита после первого затронутого: уже запушенная история требует force push, и каждому участнику придётся начать заново с новой истории.
Может ли моя компания принудительно вернуть атрибуцию?
Да. Managed settings, развёрнутые организацией, стоят выше всех файлов, которыми ты управляешь, поэтому значение attribution, заданное там, побеждает твои пользовательские, проектные и локальные настройки. Выполни /status в Claude Code: строка Setting sources показывает, действует ли на тебя управляемый источник.
Скрывает ли удаление трейлера, что я использовал ИИ?
Оно убирает одну строку из сообщения коммита, и ничего больше. Claude Code сам предлагает эту настройку, и его документация не просит сохранять строку. Зато некоторые проекты и работодатели просят участников сообщать о помощи ИИ: прочитай правила репозитория, в который ты пушишь, прежде чем отключать её там.
Скачать AgentsRoom
Запускай всех своих ИИ-агентов во всех проектах из одного окна.
Приложение-компаньон: следите за агентами на ходу
Используйте Claude, Codex, Antigravity CLI или другого поставщика AI.
Отправляйте баги и запросы прямо в ваш публичный бэклог.
Агенты, которых читаешь как переписку
У каждого агента есть роль, лицо и лента, которую читаешь как в мессенджере.

Читать далее
Моды Claude Code: что это такое и мод, который мы встраиваем в каждого агента
Мод представляет собой плагин, чей JavaScript работает внутри Claude Code. Что он умеет, три его файла, как его загрузить и протестировать, и мод, который есть в каждом нашем агенте.
Читать статьюКак сократить расход токенов на MCP: мы урезали определения инструментов на 60%
Каждый инструмент MCP, который может вызвать твой агент, это блок JSON, который модель может читать при каждом запросе. Наши весили около 95 000 токенов. Как измерить свои за две минуты, что мы урезали, не убрав ни одного инструмента, и проверка бюджета, которая не даёт им снова разрастись.
Читать статьюКакая нейросеть лучше для программирования? Что на самом деле запускают 1 200 разработчиков
205 366 запусков агентов за 28 дней: Opus на первом месте, GPT-6.1 Sol на втором, и половина аккаунтов на модели, которую мы предлагаем по умолчанию. Что цифры доказывают, а что сказать не могут.
Читать статью