Git 커밋에서 Co-Authored-By Claude를 제거하는 방법
Claude Code는 커밋에 Co-Authored-By trailer를, 풀 리퀘스트에 Generated with Claude Code 한 줄을 붙입니다. 이를 없애는 설정, 그 설정을 넣을 파일, 이미 푸시한 커밋을 정리하는 방법을 알아봅니다.
Claude Code에 커밋을 맡기면, 메시지 끝에 직접 쓰지 않은 한 줄이 붙습니다: Co-Authored-By: Claude Opus 4.6 <[email protected]>. 그 상태로 풀 리퀘스트를 열면 설명 끝에 로봇 이모지와 "Generated with Claude Code"가 붙습니다. 둘 다 버그가 아닙니다. 둘 다 하나의 설정에서 나오며, 1분이면 바꿀 수 있습니다.
이 가이드에서는 그 설정, 나에게만, 한 프로젝트에, 또는 팀 전체에 적용하려면 어느 파일에 넣어야 하는지, 아직 남아 있을 수 있는 지원 중단된 키, 그리고 이미 이 줄이 붙은 커밋을 정리하는 방법을 다룹니다. Claude Code에 관한 내용은 설정 레퍼런스를 바탕으로 하며, 2026년 11월 12일에 Claude Code 2.1.318을 설치한 상태로 확인했습니다.
짧은 답. ~/.claude/settings.json에 다음을 넣으세요:
{
"attribution": {
"commit": "",
"pr": ""
}
}
새 커밋에는 더 이상 trailer가 붙지 않고, 새 풀 리퀘스트에서도 그 줄이 사라집니다. 변경 전에 만든 커밋은 다시 쓰기 전까지 그 줄을 그대로 갖고 있습니다.
Claude Code가 무엇을, 어디에 추가하는가
Claude Code는 세 곳에 어트리뷰션을 추가합니다. 각각 attribution 아래에 자기만의 하위 키가 있습니다.
| 위치 | Claude Code가 기본으로 추가하는 것 | 하위 키 |
|---|---|---|
| 커밋 메시지 | trailer: Co-Authored-By: <model> <[email protected]> | attribution.commit |
| 풀 리퀘스트 설명 | 로봇 이모지와 "Generated with Claude Code" | attribution.pr |
| 클라우드 또는 Remote Control 세션에서 만든 커밋이나 PR | claude.ai 세션 링크. 커밋에는 Claude-Session trailer로 붙음 | attribution.sessionUrl |
trailer에 들어가는 이름은 커밋하는 시점에 사용 중인 모델입니다. 그래서 이 줄이 어떤 주에는 Claude Opus 4.6, 다음 주에는 Claude Sonnet 4.6이 되고, 이 문제를 검색하면 그렇게 많은 모델 이름이 나오는 것입니다. Claude Code가 Claude 모델임은 알아보지만 버전을 확인할 수 없을 때는 Claude만 씁니다. 사용자 지정 ANTHROPIC_BASE_URL 뒤의 모델이 아예 Claude 모델이 아닐 때는 Claude Code라고 씁니다. 서브에이전트가 커밋하면 trailer에는 서브에이전트의 모델이 들어갑니다.
이 줄은 git hook이 아닙니다. Claude가 직접 커밋이나 풀 리퀘스트를 작성할 때, Claude Code가 Claude에게 이 줄을 추가하라고 지시하는 것입니다. 터미널에서 직접 만든 커밋이나 다른 도구가 만든 커밋에는 절대 붙지 않습니다.
attribution 설정으로 끄기
attribution은 세 부분으로 된 객체를 받으며, 셋을 한꺼번에 끄려면 false를 받습니다.
| 값 | 효과 |
|---|---|
"commit": "" | 커밋에 trailer 없음 |
"pr": "" | 풀 리퀘스트 설명에 어트리뷰션 줄 없음 |
"sessionUrl": false | 클라우드 또는 Remote Control 세션에서 만든 커밋과 풀 리퀘스트에 claude.ai 세션 링크 없음 |
"attribution": false | 셋 모두 한 번에 숨김. Claude Code 2.1.281 이상 필요 |
짧은 형식이 끌리지만, 먼저 버전 줄을 읽으세요. 2.1.281보다 오래된 Claude Code는 "attribution": false를 거부하며, 그 키를 무시하는 데서 끝나지 않습니다. 그 키가 들어 있는 설정 파일 전체를 권한, hook, 모델 설정과 함께 건너뜁니다. 버전이 다른 여러 컴퓨터에서 같은 파일을 읽는다면 긴 형식을 쓰세요:
{
"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, 프로젝트의 로컬 파일, 프로젝트의 공유 파일, 마지막으로 사용자 파일 순입니다. 이 순서에서 두 가지 경우가 나옵니다. 팀이 일부러 trailer를 유지하는 파일을 커밋했다면, 나만의 .claude/settings.local.json이 다른 사람에게는 아무 영향 없이 나에게만 그 설정을 덮어씁니다. 조직이 managed settings에서 attribution을 설정했다면, 내가 무엇을 써도 바뀌지 않습니다.
CLAUDE.md에서 Claude에게 이 줄을 추가하지 말라고 할 수도 있습니다. Claude Code는 Claude에게, 어트리뷰션에 관한 사용자 자신의 지시가 기본 줄보다 우선한다고 알려 줍니다. 단, 그 줄이 managed settings에서 온 경우는 예외입니다. 차이는 성격에 있습니다. 설정은 Claude Code가 요청하는 텍스트 자체를 없애고, 지시는 모델이 읽고 적용하는 것입니다. 설정을 쓰세요.
예전 키 includeCoAuthoredBy
attribution 이전에는 includeCoAuthoredBy가 스위치였습니다. Claude Code 2.0.62부터 지원 중단되었지만 여전히 읽힙니다:
"includeCoAuthoredBy": false는 커밋의 trailer와 풀 리퀘스트의 줄을 모두 숨깁니다.attribution.commit이나attribution.pr이 설정되는 순간 Claude Code는includeCoAuthoredBy를 무시하고, 둘 중 설정하지 않은 쪽에는 기본 텍스트를 씁니다.
이 두 번째 규칙이 trailer가 다시 나타나는 흔한 이유입니다. includeCoAuthoredBy: false를 써 두었다가 PR 줄만 없애려고 "attribution": {"pr": ""}를 추가하면, 커밋 trailer가 다시 나타납니다. 이제는 attribution이 결정하는데 commit이 설정되어 있지 않기 때문입니다. attribution으로 옮기고 두 부분을 모두 설정하세요.
제거하는 대신 바꾸기
AI의 도움을 받은 커밋을 기록해 두고 싶지만 그 줄로는 싫다는 팀도 있습니다. attribution.commit은 trailer를 포함한 어떤 텍스트든 받습니다. git은 메시지의 마지막 문단에서만 trailer를 읽으므로, 끝에 함께 모아 두세요:
{
"attribution": {
"commit": "Assisted-by: Claude Code"
}
}
이것을 프로젝트의 .claude/settings.json에 커밋하면 모든 팀원의 Claude Code가 같은 줄을 씁니다.
이미 trailer가 붙은 커밋
이 설정은 설정 이후에 작성된 커밋만 바꿉니다. 이미 있는 커밋에 맞는 도구는 그 커밋이 어디까지 퍼졌는지에 달려 있습니다.
마지막 커밋이고 아직 푸시하지 않았다면: 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"
'
기록을 다시 쓰는 데는 비용이 들고, 공유 브랜치에서는 대개 그 한 줄보다 비쌉니다. 처음 바꾼 커밋 이후의 모든 커밋 해시가 새로 바뀌므로, 푸시한 브랜치에는 강제 푸시가 필요하고, 모든 협업자가 새 기록에서 다시 시작해야 하며, 예전 커밋을 바탕으로 열린 풀 리퀘스트는 깨지고, 서명된 커밋은 서명을 잃습니다. 병합 전의 개인 브랜치라면 하세요. 다른 사람들이 이미 풀한 main 브랜치라면 그대로 두고, 앞으로를 위해 키를 설정하세요.
GitHub에서 trailer가 하는 일
GitHub는 Co-authored-by trailer를 읽고, 그 이메일 주소가 GitHub 계정에 속해 있으면 커밋에 공동 작성자로 표시합니다. 2025년 6월, anthropics/claude-code 저장소의 issue 두 개(#1653, #1655)가 그 주소를 통해 Anthropic과 무관한 GitHub 계정에 커밋이 귀속되었다고 보고했으며, 두 issue 모두 닫혔습니다. 어느 날 그 주소가 어떤 계정으로 연결되든, trailer를 제거하면 이후 커밋에서 공동 작성자가 사라집니다. 사라지는 것은 그 이후 커밋에서뿐입니다.
다른 CLI는 어떻게 하는가
자기 작업에 서명하는 것은 Claude Code만이 아니며, CLI마다 자기만의 스위치가 있습니다.
- Codex. 2026년 11월 12일에 우리가 읽은
openai/codex소스에서, 워크스페이스에 어트리뷰션이 활성화되어 있으면 Codex는 커밋에Co-authored-by: Codex <[email protected]>를, 풀 리퀘스트 본문에 "Generated with Codex."를 추가합니다. 이는 세션이 시작될 때 가져오는 정책입니다. 정책이 꺼져 있으면 Codex는 두 줄 모두 추가하지 말라는 지시를 받습니다. - Aider. trailer를 추가하는 대신 git 작성자(author)와 커미터(committer) 이름에 "(aider)"를 덧붙입니다.
--no-attribute-author와--no-attribute-committer로 이를 끌 수 있고,--attribute-co-authored-by를 쓰면 대신Co-authored-bytrailer로 바뀝니다.
AgentsRoom에서는 어떻게 하는가
우리는 매일 같은 저장소에서 여러 에이전트를 돌립니다. Claude Code 옆에 Codex와 다른 에이전트들이 있고, 그들의 작업이 만나는 곳이 커밋입니다. 경우는 두 가지이며, 같은 규칙을 따르지 않습니다.
에이전트가 자기 터미널에서 직접 커밋할 때는 그 CLI가 메시지를 쓰므로 CLI 자체의 설정이 적용됩니다. Claude Code는 attribution, Codex는 워크스페이스 정책, Aider는 플래그입니다.
AgentsRoom에서 커밋할 때, 즉 변경사항 탭, 리뷰 모드, 에이전트를 닫을 때의 자동 커밋, 또는 모바일 앱의 변경사항 화면에서 커밋할 때는 AgentsRoom이 커밋을 작성하므로 어떤 CLI도 trailer를 추가하지 않습니다. 맨 아래에 들어가는 것은 AgentsRoom의 커밋 서명이며, 내용은 직접 정합니다. 기본적으로 커밋에 파일이 포함된 각 에이전트의 역할과 그 에이전트가 쓴 시간을 한 줄로 추가합니다:
bug : Fix the login redirect
AgentsRoom-Agent: fullstack; time=42m
각 항목은 설정 > Git > 커밋 서명에 있는 별도의 스위치로, 계정 전체, 프로젝트 폴더, 또는 프로젝트 하나 단위로 켜고 끌 수 있습니다. 에이전트의 역할, 소요 시간, 그리고 기본으로 꺼져 있는 비용, 할당량 사용 비율, 직접 입력한 프롬프트입니다. 에이전트와 소요 시간을 끄면 커밋은 이전과 정확히 같아집니다. 우리 저장소에서는 역할을 켜 둡니다. CLI 네 개가 커밋하는 저장소에서 모델 이름은 어떤 모델이 코드를 썼는지 알려 주고, 역할은 그 모델이 어떤 일을 하고 있었는지 알려 줍니다. 3주 뒤 어떤 변경이 무언가를 망가뜨렸을 때 우리가 찾는 것이 바로 그것입니다. 공개 변경 내역도 같은 줄을 읽어 각 릴리스에 어떤 에이전트가 참여했는지 보여 줍니다.
변경 뒤의 추론도 남기고 싶다면, Commit Context가 같은 trailer 블록에 에이전트 대화로 가는 링크를 추가합니다. 메시지를 아예 직접 쓰고 싶지 않다면, AI 커밋 메시지가 diff를 바탕으로 초안을 써 줍니다.
자주 묻는 질문
커밋에서 Co-Authored-By Claude를 제거하려면 어떻게 하나요?
~/.claude/settings.json에 "attribution": {"commit": "", "pr": ""}를 추가하세요. 그러면 Claude Code는 그 컴퓨터의 모든 프로젝트에서, 자신이 작성하는 커밋에 Co-Authored-By trailer를, 자신이 여는 풀 리퀘스트에 Generated with Claude Code 줄을 더 이상 붙이지 않습니다. Claude Code 2.1.281 이상에서는 "attribution": false 값 하나로 모두 숨길 수 있습니다. 변경 전에 만든 커밋에는 trailer가 그대로 남습니다.
includeCoAuthoredBy는 아직 작동하나요?
아직 작동하지만 Claude Code 2.0.62부터 지원 중단(deprecated) 상태입니다. includeCoAuthoredBy: false는 커밋의 trailer와 풀 리퀘스트의 줄을 모두 숨깁니다. 단, 더 새로운 키인 attribution이 commit 또는 pr을 설정하면 attribution이 우선합니다. 새 설정에는 attribution을 쓰세요.
trailer에 Claude가 아니라 Claude Opus 4.6이나 Sonnet 4.6이 적히는 이유는 무엇인가요?
trailer에는 커밋하는 시점에 사용 중인 모델 이름이 들어가므로, 모델을 바꾸면 함께 바뀝니다. Claude Code는 정확한 버전을 확인할 수 없을 때는 Claude만 쓰고, 사용자 지정 ANTHROPIC_BASE_URL 뒤의 모델이 Claude 모델이 아닐 때는 Claude Code라고 씁니다. 이 설정은 이 모든 변형을 제거합니다.
이미 만든 커밋에서 trailer를 제거하려면 어떻게 하나요?
마지막 커밋이라면 git commit --amend를 실행하고 그 줄을 지우세요. 아직 푸시하지 않은 커밋 여러 개라면 git rebase -i로 메시지를 고쳐 쓰세요. 기록 전체라면 git filter-repo에 message callback을 주어, 새로 클론한 저장소에서 모든 커밋의 그 줄을 지울 수 있습니다. 기록을 다시 쓰면 처음 건드린 커밋 이후의 모든 커밋 해시가 바뀌므로, 이미 푸시한 기록에는 강제 푸시가 필요하고 모든 협업자가 새 기록에서 다시 시작해야 합니다.
회사가 어트리뷰션을 강제로 다시 켤 수 있나요?
네. 조직이 배포하는 managed settings는 사용자가 관리하는 모든 파일보다 위에 있으므로, 그곳에 설정된 attribution 값은 사용자, 프로젝트, 로컬 설정보다 우선합니다. Claude Code에서 /status를 실행하세요. Setting sources 줄에 managed 소스가 적용되는지 표시됩니다.
trailer를 제거하면 AI를 사용했다는 사실이 숨겨지나요?
커밋 메시지에서 한 줄이 빠질 뿐, 다른 것은 아무것도 바뀌지 않습니다. 이 설정은 Claude Code가 직접 제공하며, 공식 문서도 이 줄을 유지하라고 요구하지 않습니다. 다만 일부 프로젝트와 고용주는 기여자에게 AI 도움을 밝히도록 요구하므로, 끄기 전에 푸시할 저장소의 규칙을 읽어 보세요.
AgentsRoom 다운로드
모든 AI 에이전트를, 모든 프로젝트에서, 하나의 창으로 실행하세요.
컴패니언 앱: 이동 중에도 에이전트를 모니터링
Claude, Codex, Antigravity CLI 또는 다른 AI 공급자를 사용하세요.
버그와 요청을 공개 백로그로 바로 보내세요.
계속 읽기
Claude Code mod: mod란 무엇이고, 우리가 모든 에이전트에 넣는 mod는 무엇인가
mod는 JavaScript가 Claude Code 안에서 실행되는 플러그인입니다. mod로 할 수 있는 일, 세 개의 파일, 불러오고 테스트하는 방법, 그리고 우리가 모든 에이전트에 넣는 mod를 소개합니다.
기사 읽기MCP 토큰 사용량 줄이기: 도구 정의를 60% 줄인 방법
에이전트가 호출할 수 있는 MCP 도구 하나하나는 모델이 요청마다 읽을 수 있는 JSON 덩어리입니다. 저희 도구는 약 95,000토큰이었습니다. 내 도구를 2분 만에 측정하는 방법, 도구를 하나도 없애지 않고 줄인 것, 그리고 다시 불어나지 않게 막는 예산 검사를 소개합니다.
기사 읽기코딩에 가장 좋은 AI 모델은? 개발자 1,200명이 실제로 실행하는 모델
28일 동안 에이전트 실행 205,366회: Opus가 1위, GPT-6.1 Sol이 2위, 그리고 계정의 절반은 저희가 기본으로 제안하는 모델을 씁니다. 이 숫자가 증명하는 것과 증명할 수 없는 것을 정리했습니다.
기사 읽기
