당신의 작업물이지 에이전트의 서명이 아닙니다: AI 크레딧을 위한 로컬 Git 가드레일 (Guardrail)
요약
AI 코딩 도구가 생성한 불필요한 크레딧 문구가 커밋 메시지나 PR에 포함되는 것을 방지하는 로컬 Git 가드레일 도구인 ai-credit-scrub을 소개합니다. 이 도구는 Git 훅을 사용하여 코드가 원격 저장소로 전송되기 전 로컬 단계에서 명시적인 AI 출처 표기를 자동으로 제거합니다.
핵심 포인트
- AI 에이전트의 자동 생성 문구(예: Generated with Claude Code)를 제거
- 오프라인 우선 방식의 Go 기반 CLI 도구로 보안 및 프라이버시 유지
- commit-msg 및 pre-push Git 훅을 통한 로컬 단계의 자동 정화
- AI 탐지기가 아닌 명시적인 크레딧 라인 제거에 집중
AI 코딩 도구들은 우리가 소프트웨어를 작성하는 방식을 변화시키고 있습니다. 이 도구들은 테스트 초안을 작성하거나, 익숙하지 않은 코드베이스를 설명하거나, 거친 아이디어를 유용한 첫 번째 구현체로 변환할 수 있습니다. 그 부분은 문제가 아닙니다.
짜증 나는 부분은 워크플로우의 마지막 단계에서 발생합니다. 커밋 메시지(commit message)나 풀 리퀘스트(pull request) 본문에 갑자기 다음과 같은 자동 생성 문구가 포함되는 것입니다:
Generated with Claude Code
또는:
Co-authored-by: Claude <noreply@anthropic.com>
때로는 그러한 출처 표기가 의도적인 경우도 있습니다. 때로는 팀의 정책에 의해 요구되기도 합니다. 하지만 때로는 개발자가 코드를 검토하는 데 집중하느라 미처 확인하지 못한 채 기본 푸터(footer)가 그대로 포함되어 버리는 경우도 있습니다.
일단 커밋(commit)에 도달하면, 그것은 Git 히스토리(history)의 일부가 됩니다. 일단 풀 리퀘스트(pull request)가 열리면, 그것은 이미 GitHub에 올라가 있는 상태입니다. CI 체크(CI check)가 문제를 보고할 수는 있지만, 이미 공개된 경계를 다시 로컬(local)로 되돌릴 수는 없습니다.
그것이 바로 ai-credit-scrub이 해결하고자 하는 문제입니다. 버전 1.1.0은 작고 무료이며, 오프라인 우선(offline-first) 방식의 Go CLI 도구로, 내용이 커밋이 되거나, 원격 저장소에 도달하거나, 풀 리퀘스트를 통해 GitHub로 전송되기 전에 명시적인 AI 에이전트 크레딧(credit) 텍스트를 제거합니다.
중요한 단어는 _명시적인(explicit)_입니다. 이것은 AI 탐지기(AI detector)가 아니며, 누가 코드를 작성했는지 결정하려고 시도하지도 않습니다. 대신 알려진 완전한 크레딧 라인(credit lines)을 제거합니다. Git 작성자(authors)나 커미터(committers)를 재작성하거나, 인간 공동 저자(co-authors)를 제거하거나, 소스 코드를 업로드하거나, 서비스로 프롬프트(prompts)를 보내거나, 모델(model)을 호출하지 않습니다.
왜 이를 로컬에서 해결해야 할까요?
실수로 공개되는 것을 방지하기 위한 가장 좋은 장소는 공개가 시작되는 바로 그 기계입니다.
에이전트 또는 IDE가 텍스트를 제안함
|
+-- commit-msg --> Git이 커밋을 생성하기 전에 정화(clean)
...
이는 CI에서 커밋을 수집한 다음 나중에 누군가에게 알리는 방식과는 매우 다른 모델입니다. 로컬 가드레일(guardrails)은 개발자의 통제권을 보존하며 민감한 콘텐츠를 개발자의 기계에 그대로 유지합니다.
저장소에 설치하기
GitHub Releases 페이지에서 바이너리(binary)를 다운로드하거나, Go를 사용하여 설치할 수 있습니다:
go install github.com/paladini/ai-credit-scrub/cmd/ai-credit-scrub@latest
그 다음, 보호하려는 Git 저장소에서 다음 명령어를 실행하세요:
ai-credit-scrub install --git
이 명령어 하나로 두 개의 로컬 훅(hook)이 설치됩니다:
| 훅 (Hook) | 역할 |
|---|---|
commit-msg | Git이 커밋 객체(commit object)를 생성하기 전에 임시 커밋 메시지 파일(commit-message file)을 다시 작성합니다. |
pre-push | 전송되는 커밋 메시지를 검사하고, 원격 업데이트(remote update)가 전송되기 전에 일치하는 크레딧(credit)을 차단합니다. |
설치 프로그램은 기존의 훅을 삭제하지 않습니다. 기존 훅을 보존하면서 ai-credit-scrub이 실행되기 전에 체이닝(chaining)합니다. 생성된 훅은 바이너리의 절대 경로(absolute path)를 사용하므로, 바이너리 위치를 옮겼다면 설치 프로그램을 다시 실행하십시오.
실질적인 예시
AI 도구가 기능 구현을 도와준다고 가정해 봅시다. 당신은 변경 사항(diff)을 검토하고 테스트한 뒤 커밋을 생성합니다. 이때 도구나 Git 클라이언트가 다음과 같은 트레일러(trailer)를 추가합니다:
Add account settings page
Co-authored-by: Claude <noreply@anthropic.com>
훅이 설치되어 있다면, Git은 커밋을 기록하기 전에 해당 임시 메시지 파일을 ai-credit-scrub에 통과시킵니다. 결과적으로 히스토리에 남는 커밋은 다음과 같습니다:
Add account settings page
이는 의도적으로 범위를 좁게 설정한 것입니다. 다음과 같은 일반적인 라인들은 그대로 유지됩니다:
Reviewed in Cursor
Co-authored-by: Ada Lovelace <ada@example.com>
제품명만으로는 일치(match)로 간주하지 않습니다. 이 도구는 Codex, Claude Code, Cursor, Windsurf, 그리고 GitHub Copilot에 대한 완전하고 알려진 에이전트 크레딧 서명(agent credit signatures)을 찾습니다. 이러한 보수적인 접근 방식이 중요합니다. 위생 도구(hygiene tool)가 일반적인 산문이나 사람의 기여(human attribution)를 다시 작성하여 사용자를 놀라게 해서는 안 되기 때문입니다.
변경하기 전에 콘텐츠 검사하기
훅이 가드레일 역할을 하지만, CLI 자체로도 유용합니다. 파일을 수정하지 않고 스캔하려면 다음과 같이 입력하세요:
ali-credit-scrub scan CHANGELOG.md
검토된 파일을 제자리에서(in place) 정리하려면:
ai-credit-scrub clean --in-place CHANGELOG.md
스크립트 및 툴링(tooling)의 경우, scan과 check는 JSON 형식으로도 결과를 반환할 수 있습니다:
ai-credit-scrub check --format json pull-request.md
check는 일치하는 항목을 발견하면 실패 상태(failure status)로 종료되므로, 로컬 명령어가 다른 로컬 워크플로(workflow)를 중단시키도록 만들고 싶을 때 유용합니다.
Pull Request 텍스트를 동일한 경로로 유지하기
Git hooks는 커밋 메시지(commit messages)를 보호하지만, Pull Request(PR)의 제목과 본문은 Git 객체(objects)가 아닙니다. 따라서 이들은 자체적인 로컬 게시 경로(publication path)가 필요합니다.
gh pr create를 직접 호출하는 대신 내장된 래퍼(wrapper)를 사용하세요:
ai-credit-scrub pr create \
--title "Document local hooks" \
--body "Explain the guardrail.\n\nGenerated with Claude Code"
ai-credit-scrub는 제목과 본문을 정리한 다음, 이미 인증된 기존의 GitHub CLI로 작업을 위임합니다. 별도의 계정이나 추가 토큰(token), 또는 호스팅된 백엔드(backend)가 필요하지 않습니다.
실제 PR의 경우에는 보통 본문 파일(body file)을 사용하는 것이 더 깔끔합니다:
ai-credit-scrub pr create \
--title "Add local publication guardrails" \
--body-file pull-request.md
코딩 에이전트를 위한 선택적 가이드라인
대부분의 로컬 도구들이 결국 Git을 호출하기 때문에, Git은 보편적인 강제 적용 계층(enforcement layer) 역할을 합니다. ai-credit-scrub은 Codex, Claude Code, Cursor, Windsurf 또는 GitHub Copilot을 사용하는 저장소(repositories)를 위한 선택적 어댑터(adapters)도 제공합니다:
ai-credit-scrub install --adapter codex
ai-credit-scrub install --adapter claude
ai-credit-scrub install --adapter cursor
어댑터는 Git hooks와 PR 래퍼를 사용하도록 로컬 가이드라인을 추가합니다. 이는 마법 같은 가로채기(interception)가 아니며, 기존의 에이전트 설정 파일(configuration file)을 덮어쓰지 않습니다. 만약 저장소에 이미 해당 파일이 있다면, 생성된 설정을 신중하게 병합(merge)하십시오.
커스텀 규칙은 신중한 검토가 필요합니다
모든 조직은 고유의 어휘를 가지고 있습니다. .ai-credit-scrub.yml 파일에 리터럴(literal) 또는 정규 표현식(regular expression) 규칙을 정의할 수 있지만, 커스텀 자동 재작성(automatic rewriting)을 위해서는 다음과 같은 명시적인 확인이 필요합니다:
version: 1
reviewed: true
literals:
...
reviewed: true 요구 사항은 의도적인 것입니다. 먼저 스캔을 실행하여 무엇이 일치할지 검사한 다음, 규칙이 텍스트를 수정할 수 있도록 허용하십시오. 목표는 프로젝트 기록을 조용히 변경하는 과도한 클리너(cleaner)가 아니라 예방에 있습니다.
이 도구가 보장할 수 없는 것
로컬 소프트웨어는 자신의 한계에 대해 정직해야 합니다.
git push --no-verify는 클라이언트 측 훅 (client-side hooks)을 우회하는 의도적인 방법입니다.- GitHub 웹 UI에서 생성된 풀 리퀘스트 (pull request)는 로컬 Git을 거치지 않습니다.
- 독립적인 GitHub 작성 MCP 서버는 로컬 래퍼 (wrapper)를 사용하지 않고 PR 텍스트를 생성할 수 있습니다.
마지막 사례의 경우, ai-credit-scrub pr create를 사용하거나, 에이전트가 사용할 수 있는 유일한 GitHub 작성 서버 앞에 로컬로 정화된 (sanitized) MCP 프록시 (proxy)를 배치하십시오. 통합 가이드에서 해당 경계에 대해 더 자세히 설명합니다.
또한 다음과 같이 분명히 말할 가치가 있습니다: AI 크레딧을 제거하는 것이 귀하의 조직 정책, 기여자 협약 (contributor agreement) 및 관련 법률과 호환되는지 확인하십시오. 이 도구는 귀하에게 로컬 기술 제어권을 제공할 뿐, 해당 정책 결정을 대신 내려주지는 않습니다.
핵심은 작업 방식을 숨기는 것이 아닙니다
AI의 도움을 받는 것은 이제 많은 사람에게 프로그래밍의 정상적인 일부입니다. 문제는 자동 생성된 푸터 (footer)가 귀하가 게시하는 모든 결과물에 포함되어야 하는가 하는 점입니다. 스스로 그 선택을 하고자 하는 개발자들에게 가드레일 (guardrail)은 결과물이 자신의 머신을 떠나기 전에 실행되어야 합니다.
ai-credit-scrub v1.1.0은 구현을 의도적으로 작게 유지합니다: 결정론적 규칙 (deterministic rules), 로컬 Git 훅 (Git hooks), 안전한 PR 생성 경로, 그리고 명확한 한계입니다. 감시 계층도 없고, 모델 호출도 없으며, 인간의 정체성을 재작성하려는 시도도 없습니다.
하나의 리포지토리 (repository)에 설치하여 알려진 크레딧 라인이 포함된 커밋을 시도해 보고 결과를 검사해 보십시오. 유용한 결과는 간단합니다: 귀하가 게시한 Git 기록이 귀하가 의도한 대로 말하게 된다는 것입니다.
- Source 및 릴리스: github.com/paladini/ai-credit-scrub
- 프로젝트 사이트: paladini.github.io/ai-credit-scrub
- 라이선스: MIT
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기