Як прибрати Co-Authored-By Claude з твоїх комітів git

Claude Code підписує твої коміти трейлером Co-Authored-By, а твої пул-реквести рядком Generated with Claude Code. Налаштування, яке їх прибирає, файл, куди його покласти, і як почистити вже запушені коміти.

Ти просиш Claude Code зробити коміт, і повідомлення закінчується рядком, якого ти не писав: Co-Authored-By: Claude Opus 4.6 <[email protected]>. Відкрий із ним пул-реквест, і опис закінчиться емодзі робота та «Generated with Claude Code». Ні те, ні інше не баг. Обидва походять з одного налаштування, і ти змінюєш його за хвилину.

Цей посібник розбирає налаштування, файл, куди його покласти, щоб воно діяло на тебе, на один проєкт або на всю команду, старий ключ, який у тебе, можливо, ще лишився, і як почистити коміти, які вже несуть цей рядок. Факти про Claude Code взято з його довідника з налаштувань, прочитаного 12 листопада 2026 року зі встановленим Claude Code 2.1.318.

Коротка відповідь. Поклади це в ~/.claude/settings.json:

{
  "attribution": {
    "commit": "",
    "pr": ""
  }
}

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

Що додає Claude Code і куди

Claude Code додає атрибуцію в трьох місцях. Кожне має свій підключ в attribution.

ДеЩо Claude Code додає за замовчуваннямПідключ
Повідомлення комітуТрейлер: Co-Authored-By: <модель> <[email protected]>attribution.commit
Опис пул-реквестуЕмодзі робота та «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 сам пише коміт або пул-реквест. Коміт, який ти робиш сам у терміналі або який робить інший інструмент, ніколи його не отримує.

Вимкнути його налаштуванням attribution

attribution приймає об'єкт із трьох частин або false для всіх одразу.

ЗначенняЕфект
"commit": ""Немає трейлера в комітах
"pr": ""Немає рядка атрибуції в описах пул-реквестів
"sessionUrl": falseНемає посилання на сесію claude.ai в комітах і пул-реквестах з хмарної сесії чи сесії 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 приховує і трейлер комітів, і рядок пул-реквестів;
  • щойно задано 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, кожному учаснику доведеться почати заново з нової історії, відкриті пул-реквести на старих комітах ламаються, а підписані коміти втрачають підпис. В особистій гілці до 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.» до тіла пул-реквестів, коли атрибуцію ввімкнено для твого робочого простору: це політика, яку він отримує під час старту сесії. Коли політику вимкнено, 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 додає посилання на розмову агента в той самий блок трейлерів. А якщо ти волієш узагалі не писати повідомлення, AI-повідомлення комітів складають його за диффом.

Часті запитання

Як прибрати Co-Authored-By Claude з моїх комітів?

Додай "attribution": {"commit": "", "pr": ""} у ~/.claude/settings.json. Тоді Claude Code перестає додавати трейлер Co-Authored-By до комітів, які він пише, і рядок Generated with Claude Code до пул-реквестів, які він відкриває, у всіх проєктах на цій машині. У Claude Code 2.1.281 і новіших "attribution": false приховує все одним значенням. Коміти, зроблені до зміни, зберігають свій трейлер.

includeCoAuthoredBy ще працює?

Працює, але вважається застарілим, починаючи з Claude Code 2.0.62. includeCoAuthoredBy: false приховує і трейлер комітів, і рядок пул-реквестів, якщо тільки новіший ключ 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 сам пропонує це налаштування, і його документація не просить зберігати рядок. Натомість деякі проєкти й роботодавці просять учасників повідомляти про допомогу ШІ: прочитай правила репозиторію, у який ти пушиш, перш ніж вимикати його там.

Інженер DevOpsКопірайтерFrontend-розробникМенеджер з продажуBackend-розробникКоуч і тренерАрхітектор програмного забезпеченняЮристІнженер з забезпечення якості (QA)Фінанси та адмініструванняFull-Stack розробникКреативний дизайнерРозробник мобільних додатківДослідникІнженер з безпекиHR та підбір персоналу
Менеджер проектуПерекладачЕксперт з GitАналітик данихСпеціаліст з SEOБухгалтерСпеціаліст з локалізаціїPR і комунікаціїГенератор ідейОперації та логістикаСпеціаліст з маркетингуПідтримка клієнтівАсистент проєктуФахівець із закупівельSMM-менеджерОсобистий асистент

Завантажити AgentsRoom

Запускайте всіх своїх AI-агентів на всіх своїх проєктах з одного вікна.

Завантажити AgentsRoomБезкоштовно

Додаток-компаньйон: контролюйте своїх агентів на ходу

Використовуйте свого: Claude, Codex, Antigravity CLI або іншого AI-провайдера.

Отримати розширення
Chrome Web Store

Надсилайте баги та запити прямо у свій публічний беклог.

Агенти, яких читаєш як розмову

Кожен агент має роль, обличчя та стрічку, яку читаєш як месенджер.

Режим розмови

Режим розмови в AgentsRoom: робота AI-агента для кодування у вигляді чату
Кілька проектів
Багато постачальників
Кілька агентів
Статус в реальному часі
Різниця файлів і коміт
Мобільний компаньйон
Попередній перегляд в реальному часі
Команди агентів
Автоматизація браузера
Розробка, орієнтована на беклог
Бібліотека підказок
Бібліотека навичок
Переглянути всі функції

Читати далі