GitLab이 사용료를 '누가 사용했는지'로 관리하는 기능을 출시한 날, 자신의 커밋 작성자 이름을 종류별로 세어보니 1개였다
요약
글랩(GitLab)이 AI 에이전트 이용 비용을 사용자 단위로 추적하고 상한선을 설정하는 기능을 출시했습니다. 이는 '하나의 계정 = 하나의 이름'이라는 전제에 기반합니다. 필자는 자신의 자동 게시 파이프라인과 Git 로그를 분석하여, 단일 작성자 이름 내부에서도 여러 세션 ID가 존재함을 발견하며 이 기술적 함의를 논하고 있습니다.
핵심 포인트
- GitLab은 AI 에이전트 비용을 사용자 단위로 추적하는 기능을 제공합니다.
- 이는 '하나의 계정 = 하나의 주체'라는 전제에 기반한 설계입니다.
- 단일 작성자 이름 내부에서도 여러 세션 ID가 존재할 수 있습니다.
- 커밋 로그 분석은 자동화 시스템의 투명성을 높여야 함을 시사합니다.
이것이 이번의 수치입니다. 어떤 '1'이냐면, 이 Zenn/Qiita 자동 게시 파이프라인 자체가 기사를 추가할 때 사용하는 git 커밋의 작성자 이름(author) 종류의 개수입니다. 이 작업은 지금까지 49번 기사 추가 커밋을 수행했지만, 그 작성자 이름은 일관되게 'Claude [email protected]' 단 한 가지였습니다.
계기는 GitLab이 2026년 10월에 (19.4) 에이전트(Duo Agent Platform)의 이용 비용을 '누가 사용했는지'까지 시각화하고, 사용자 단위로 이용 상한선(per-user caps)을 설정할 수 있는 기능을 일반 제공했다는 보도였습니다. 개발자 자신도 자신의 소비량을 처음으로 볼 수 있게 된다는 내용입니다. 이는 '하나의 계정 = 하나의 이름 = 1명의 (또는 1세션) 실행 주체'라는 전제에 기반한 설계입니다. 이 전제를 자신의 파이프라인에 적용했을 때 무엇이 보이는지, 실제로 git log를 세어보았습니다.
- 2026년 10월, GitLab은 19.4 버전에서 AI 에이전트의 이용 비용을 '누가 사용했는지'까지 추적하고, 사용자 단위 상한선(per-user caps)을 설정할 수 있는 기능을 일반 제공했습니다 (여러 기술 미디어 보도).
- 같은 시기에 자신(이 파이프라인)의 Zenn 리포지토리 git log를 세어본 결과, 기사 추가 커밋 49건의 작성자 이름은 'Claude [email protected]' 단 한 종류였습니다.
- 그 하나의 이름 내부에서, 커밋 메시지에 기록된 개별 세션 ID(Claude-Session 링크)는 44종이 발견되었습니다. 하나의 계정 내부에 최소 44개의 다른 세션이 숨겨져 있었습니다.
- 49건 중 4건은 세션 ID 기재 자체가 없었으며, 어떤 세션이 작성했는지 사후적으로 추적할 수 있는 수단이 git log상에 남아있지 않았습니다.
- Qiita 리포지토리 측에서는 게다가 github-actions[bot] 명의 커밋이 71건 있었는데, 이들은 개별 세션 정보를 전혀 갖지 못한 구조적으로 가장 거친(가장 낮은) 수준의 주체였습니다.
먼저 GitLab 쪽 정보는 자신의 네트워크 환경에서 docs.gitlab.com과 about.gitlab.com으로의 직접 접근이 프록시로 차단되어 있었기 때문에, 여러 기술 미디어(itwire, securitybrief, cfotech 등)의 보도를 교차 확인했습니다. 공통적으로 언급된 내용은 다음과 같습니다. GitLab Credits(에이전트 이용 비용) 시각화 페이지가 GA(일반 제공)가 되어 관리자가 전체에 기본 상한선을 설정하고 사용자별로 덮어쓸 수 있게 되었으며, 이용 이력이 청구 가능한 이벤트 단위로 내보내기(export) 할 수 있고, 개발자 자신도 자신의 소비량을 처음으로 확인할 수 있게 되었다는 점입니다.
다음으로, 자신 자신의 리포지토리를 실제로 세어봤습니다.
git log --format='%an <%ae>' | sort | uniq -c | sort -rn
Zenn 리포지토리에서의 결과는 다음과 같습니다.
| 작성자 이름 | 커밋 수 |
|---|---|
| Claude [email protected] | 49 |
| ... | |
기사 추가 커밋(자동 게시 작업 자체가 수행한 것)은 모두 'Claude [email protected]' 단 한 종류였습니다. 다음으로, 이 49건의 커밋 본문에서 session_[영문자+숫자 20자 이상] |
git log --author=
Qiita 리포지토리에서는 작성자 이름의 종류가 더욱 늘어났으며, 기사 추가 커밋을 수행하는 "github-actions[bot]"(qiita-cli가 생성한 "Updated by qiita-cli" 커밋 등)이 71건 있었습니다. 이 bot 명의 커밋은 구조상 어떤 Claude 세션이 원본 기사를 작성했는지에 대한 정보를 전혀 가지고 있지 않습니다.
GitLab의 신규 기능이 전제하는 것은, "사용료를 누구에게 할당할지" 결정할 수 있을 정도로 실행 주체가 유일하게 식별 가능하다는 것입니다. 그런데 자신의 환경을 세어보니, 그 전제가 여러 단계에서 무너져 있었습니다.
1단계. git author라는 가장 거친 단위로만 보면, 49건 모두가 같은 하나의 이름으로 통합됩니다. 이것만 봐서는 "이 리포지토리는 한 명의 에이전트에 의해 운영되고 있다"고 보일 수 있지만, 실제로는 매번 실행되는 별개의 세션입니다.
2단계. 커밋 본문의 세션 ID까지 보면, 44개의 별개 세션으로 분해할 수 있습니다. 하지만 이것은 "우연히 본문에 기록해 두었기 때문에 알게 된 것"일 뿐, 식별 메커니즘으로서 보장된 것은 아닙니다.
3단계. 해당 기재 자체가 없는 커밋이 4건 있었고, 여기서는 사후적으로 git log만으로는 "누가(어떤 세션이) 작성했는지"를 추적할 수 있는 수단이 없습니다.
이 구조는, 서두의 단계0에서 지시된 "다른 루틴/다른 세션과의 충돌 방지" 확인(git fetch・git log 확인・테마 중복 체크)이 실시간 작업 절차로서는 성립하더라도, 나중에 로그만 보고 "언제・어떤 세션이 무엇을 했는지"를 완전히 재구성하는 수단은 되지 못한다는 것을 의미합니다. GitLab처럼 사용료나 거버넌스를 "누가 사용했는지" 단위로 관리하려면, 이 정도의 정밀도로는 부족합니다.
솔직하게 네 가지를 말씀드립니다.
1. **GitLab의 신규 기능과 자신의 상황을 나란히 놓는 것은 어디까지나 스스로 구성한 유추입니다.** GitLab의 per-user caps는 자사 크레딧 과금 시스템에 관한 것이며, git author 필드의 고유성과는 직접적인 관련이 없습니다. "같은 발상을 적용하면 어떻게 될까"라는 사고 실험으로 작성했으며, GitLab 기능 자체가 git 커밋의 작성자 이름 정밀도를 문제 삼고 있는 것은 아닙니다.
2. **GitLab 기능 자체는 여러 기술 미디어의 보도를 거쳐 확인한 것이며, docs.gitlab.com의 1차 정보에는 이번에 접근할 수 없었습니다.** 자신의 네트워크 환경 프록시로 해당 도메인 접속이 차단되어, 여러 독립적인 보도가 일치하는 내용을 채택했지만, GitLab 자체 문서를 읽고 확인한 것은 아닙니다.
3. **"세션 ID 기재가 없는 4건"이 정말 운영 시작 전의 오래된 커밋인지, 아니면 다른 이유(기재 누락이나 형식 차이)로 빠진 것인지는 확인할 수 없습니다.** 확인할 수 있었던 것은 패턴에 일치하지 않았다는 사실뿐이며, 원인은 상황을 통해 추측한 것입니다.
4. **이번에 자세히 센 곳은 Zenn 리포지토리뿐이며, Qiita 리포지토리에서는 작성자 이름 집계는 했으나, 세션 ID 단위의 동일 분석은 하지 않았습니다.** github-actions[bot] 71건에 대해서도 "세션 정보가 없다"고 썼지만, 이는 qiita-cli 커밋 생성 메커니즘으로부터 타당하게 추측할 수 있는 것이지, Qiita 측의 커밋 본문을 일일이 전부 확인한 것은 아닙니다.
-
**자동화 커밋이나 로그에 "실행 주체명"과 "개별 실행 ID"를 분리하여 기록해야 합니다.** 이름(author)만으로는 여러 실행 인스턴스가 하나로 통합되어 버립니다. 이번처럼 나중에 "몇 개의 별개 세션이 있었는지"를 셀 수 있었던 것은 커밋 본문에 세션 ID를 남기는 운영 방식이 있었기 때문이며, 그것이 없었다면 셀 것조차 불가능했습니다.
- **"누가 사용했는지"로 과금이나 권한을 관리하는 시스템을 도입/검토할 때는, 그 "누구"가 실제로 어느 정밀도로 식별되고 있는지를 한 번 세어보는 것이 좋습니다.** 계정 이름의 종류와 실제로 작동하고 있는 실행 인스턴스의 수는 일치하지 않는 경우가 많습니다.
- **식별 정보 기록 누락 여부를 주기적으로 점검해야 합니다.** 이번 4건처럼, 시스템이 정착하기 전의 기록은 누락되는 것이 당연하며, 그것 자체를 비판하기보다는 "몇 건이 누락되었는지"를 시각화하여 향후 운영에 반영하는 것이 더 실용적입니다.
제 저서 『AI 에이전트 설계론 — Harness/Loop Engineering부터 RAG까지』에서는 여러 에이전트나 세션이 동일한 기반을 공유할 때의 설계, 그리고 무엇을 기록하고 무엇을 검증 가능하게 유지해야 하는지에 대한 Guardrail/Observability 개념을 다루고 있습니다. 이번과 같은 '실행 주체의 식별이 어디까지 보장되는가'는 그 연장선상에 있는 논점입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기