2026년 5월 5일 화요일

내가 적지도 않은 Co-authored-by가 커밋 메시지에?!

어느 날 평소처럼 커밋을 했는데, 커밋 로그에 이런 게 붙어있었다.

Co-authored-by: Copilot <copilot@github.com>

분명히 커밋 메시지 입력창에는 없었는데, 커밋 버튼을 누른 뒤에 멋대로 추가된 거다.



원인

VS Code 1.118.1 업데이트에서 git.addAICoAuthor 설정의 기본값이 바뀐 게 원인이다.

항목이전변경 후
기본값"off""all"

"all" 이면 AI(Copilot)가 관여한 변경에 커밋 시 자동으로 Co-authored-by: Copilot <copilot@github.com> 트레일러를 추가한다.


왜 문제가 됐나

기능 자체보다 언제, 어떻게 동작하느냐가 핵심 문제였다.

올바른 UX였다면:

  1. Copilot이 변경에 관여

  2. 커밋 메시지 입력창에 Co-authored-by: 미리 표시

  3. 사용자가 보고 → 유지하거나 삭제

  4. 커밋 버튼 클릭 → 그대로 저장

실제로 한 동작:

  1. Copilot이 변경에 관여

  2. 사용자가 메시지 직접 작성

  3. 커밋 버튼 클릭

  4. 커밋 완료 후 후처리로 트레일러 삽입 ← 문제

커밋 버튼은 "이 내용으로 확정"이라는 의사표시다. 그 이후에 내용을 바꾸는 건 사용자 동의 모델 위반이다.



기술적인 버그도 있었다

// extensions/git/src/repository.ts
config.get('addAICoAuthor', 'off')  // fallback이 'off'로 하드코딩

스키마 기본값은 "all"로 바뀌었는데, 런타임 코드의 fallback은 여전히 "off"였다. VS Code UI 환경에서는 "all"로 동작하고, 스키마가 로드 안 되는 특수 환경에서는 "off"로 동작하는 불일치 상황이 발생했다.

Copilot AI 코드 리뷰도 이 불일치를 잡아냈는데, 아이러니하게도 자기가 만든 기능에 AI가 "이거 되돌리세요"라는 리뷰를 단 셈이 됐다. 😅



커뮤니티 반응

👍 2 vs 👎 372

결국 VS Code 팀은 1.119에서 수정하겠다고 공식 발표했다.

"Sorry about the regression. I will work on fixing this in 1.119."

수정 항목으로 명시한 것은:

  • disableAIFeatures가 켜져 있을 때는 절대 동작하지 않도록

  • AI가 실제로 관여하지 않은 변경에는 attribution 추가 안 하도록

  • 기본값 변경 전 테스트 커버리지 확보



해결 방법 (롤백 전 버전 사용 중이라면)

.vscode/settings.json 또는 사용자 설정에 추가:

{
 "git.addAICoAuthor": "off"
}


정리

좋은 의도(AI 기여 투명성)도 UX 기본 원칙을 지키지 않으면 역효과가 난다. 미리 입력창에 보여주고 사용자가 선택하는 opt-in 방식이었다면 반응이 달랐을 것이다.

댓글 없음:

댓글 쓰기