GitHub PR 설명 41%가 같은 문체, load-bearing 금지어가 안 먹히는 이유
GitHub 풀 리퀘스트 설명 46만 건을 단어만으로 군집화했더니 한 묶음이 0.7%에서 41%로 늘었습니다. 1위 단어 load-bearing은 Claude Code 내장 프롬프트에 들어 있어 CLAUDE.md 금지어가 듣지 않습니다.
- PR 설명 46만 건 군집 분석에서 한 묶음이 0.7%에서 41%로 늘었습니다.
- 그 묶음의 1위 단어는
load-bearing, 39.5배 더 자주 나옵니다. - Anthropic은 이 표현이 Claude Code 내장 프롬프트에 있다고 확인했습니다.
프랑스 개발자 Louis Abraham이 2026년 8월 26일 분석 페이지 하나를 공개했습니다. GitHub 풀 리퀘스트 설명을 하루 1,000건씩 긁어모아, 어떤 단어를 쓰는지만 보고 열 개 묶음으로 나눈 결과입니다. 다음 날 Hacker News 첫 화면에 올라 641점과 댓글 312개를 받았습니다.
나눠 놓고 보니 한 묶음이 2025년 초 8주 평균 0.70%에서 최근 8주 36.6%로 늘어 있었습니다. 가장 최근 한 주인 2026년 8월 17일 주간만 보면 6,216건 중 2,582건, 41.5%입니다. 페이지 본문은 이를 "지난달 사람 명의 풀 리퀘스트의 40%"라고 적고 있습니다. 이 묶음을 가장 강하게 특징짓는 단어가 load-bearing입니다.
같은 주에 원인 쪽 답이 나왔습니다. Anthropic의 claude-code 저장소에는 "Claude Code가 load-bearing이라는 단어를 멈추지 못한다"는 이슈 #53454가 2026년 4월 26일부터 열려 있었습니다. 8월 25일 Claude Code 협력자 bcherny가 재현 결과를 올리면서, 이 표현이 Claude Code에 내장된 프롬프트 문구 안에 들어 있다고 밝혔습니다.
단어만 보고 나눴는데 한 묶음이 41%가 됐습니다
이 분석에는 사람이 "이건 AI가 쓴 글"이라고 라벨을 붙인 데이터가 한 건도 안 들어갑니다. PR 설명 46만 건을 각각 "어떤 단어가 몇 번 나오는가"라는 분포로만 바꾼 뒤, 비슷한 분포끼리 열 덩어리로 묶었습니다. 날짜도 모델 출시일도 입력하지 않았습니다.
수집 규모는 2025년 1월 6일부터 2026년 8월 17일까지 85주, 595일 치입니다.
봇은 걸러냈습니다. 계정 이름에 [bot], -bot, copilot이 들어간 3,784개 계정을 뺐고, 이게 전체 행의 13.2%였습니다. 같은 주에 같은 사람이 올린 설명은 3건까지만 셌습니다. 한 사람이 스크립트로 찍어낸 문장이 통계를 밀어 올리는 것을 막기 위해서입니다.
모델에는 시간 변수가 없습니다. 중심점 한 벌이 20개월 전체를 덮고, 주 단위로 따로 조정되는 값이 없습니다. 그래서 페이지에 그려진 주별 곡선은 모델이 추세를 학습한 결과가 아니라, 각 설명을 단어만 보고 배치한 뒤 나중에 주 단위로 세어 붙인 숫자입니다.
선두 묶음 안에서 밖보다 몇 배 더 자주 나오는지로 줄을 세우면 이렇습니다.
| 순위 | 단어 | 배수 |
|---|---|---|
| 1 | load-bearing | 39.5배 |
| 2 | plainly | 33.8배 |
| 3 | quietly | 29.9배 |
| 4 | refusal | 27.8배 |
| 5 | survived | 27.6배 |
| 6 | re-derived | 26.7배 |
| 7 | halves | 26.6배 |
| 8 | asserted | 25.2배 |
| 9 | nobody | 24.8배 |
| 10 | genuinely | 24.5배 |
load-bearing은 전체 46만 건에서 1,011번 나왔습니다. 코퍼스 전체로는 100만 단어당 20회지만, 최고점 주에는 100만 단어당 95회까지 올랐습니다.

금지어를 적어도 안 되는 이유는 제품 안에 있었습니다
이 단어를 못 참겠다는 사람이 먼저 있었습니다. 사용자 gertalot이 2026년 4월 26일 Anthropic 저장소에 이슈를 올리면서 이렇게 적었습니다. 플러그인과 CLAUDE.md와 다른 프롬프트를 다 뒤졌는데 load-bearing이라는 단어가 어디에도 없었고, 메모리에 "쓰지 마라"를 저장해도 소용이 없었다는 내용입니다. 반응은 154개가 달렸고 그중 엄지 표시가 103개입니다.
넉 달 뒤 답이 나왔습니다. Claude Code 협력자 bcherny가 2026년 8월 25일 올린 재현 결과는 다음과 같습니다.
- 플러그인도
CLAUDE.md도 메모리도 없는 새 설정 디렉터리에서 v2.1.233을 깨끗이 설치했습니다. - 7줄짜리 Python 파일의 아키텍처 문서를 짧게 써 달라고 시켰습니다.
- 생성된 문서가
load-bearing을 두 번 썼습니다.
원인 설명이 여기 붙습니다. 배포된 바이너리의 문자열에서 확인되듯 이 표현은 Claude Code 자체 내장 프롬프트 텍스트에 반복해서 등장합니다. 매 세션 시작 시점에 모델이 이 단어에 먼저 노출된다는 말입니다. bcherny는 사용자 지시가 안 먹히는 이유도 여기서 나온다고 적었습니다. 내장 문구가 매 턴 다시 주입되면서, 사용자가 CLAUDE.md에 적어 둔 금지 규칙과 자리를 다툽니다.

이 이슈에는 사용자들이 직접 센 숫자도 쌓여 있습니다. ansingh1214가 2026년 5월 21일 올린 계량 결과를 보면, 세션 3개에서 나온 어시스턴트 메시지 1,108건과 약 167,000단어를 놓고 컨텍스트 길이별로 빈도를 나눴을 때 컨텍스트가 길수록 빈도가 올랐습니다. 1만 단어당 출현이 컨텍스트 10만 토큰 이하에서 2.4회였다가 50만에서 70만 토큰 구간에서 11.6회로 뛰었습니다. 모델별로는 Opus 4.6이 1만 단어당 0.5회, Opus 4.7이 12.0회로 약 24배 차이가 났습니다.
corneliusroemer가 2026년 7월 26일 올린 측정에서는 10만 단어당 빈도가 Opus 5 19.5회, Opus 4.8 6.4회, Sonnet 5 2.3회였습니다. 같은 계열 안에서도 세대가 올라갈수록 빈도가 늘었습니다.
저자는 "Claude를 추적한 게 아니다"라고 말합니다
분석을 만든 본인이 Hacker News 댓글에서 해석 범위를 스스로 좁혔습니다. "저는 Claude의 버릇을 추적하는 게 아니라, 특정 어휘 묶음이 늘어난다는 사실만 찾은 것"이라고 적었습니다. 모델 출시일을 구조 모델에 넣어 묶음을 제약해 보려 했지만 결과가 설득력이 없어서 모델을 크게 단순화했다고도 밝혔습니다. 어느 묶음이 어느 도구에서 나왔는지 확인하려면 라벨 데이터가 필요한데, 이 분석에는 그게 없습니다.
댓글에서 나온 반론도 방향이 다릅니다.
jfultz: 줄어든 묶음들의 상위 단어가 사용자명(4번 묶음)이나 저장소·태그 이름(6번 묶음)입니다. 묶음이 문체가 아니라 저장소 정체성을 잡아낸 부분이 있습니다. 실제로 2번 묶음의 상위 단어는 WebKit 저장소의 테스트 봇 이름들이고, 3번 묶음은 스페인어·프랑스어 단어들입니다.sethd:load-bearing같은 표현 상당수는 기술 회사에서 실제로 쓰던 은어이고, Codex도 같은 단어를 씁니다. 에이전트를 쓰면 그런 표현을 쓰는 동료가 한 명 생긴 게 아니라 훨씬 빠른 속도로 쏟아내는 동료가 생긴 것이라는 견해입니다.bakugo: 반대로 봅니다.load-bearing seam이라는 표현을 사람이 쓴 적이 없으니, AI 문체가 사람 문체를 반영한다는 주장이 이걸로 깨진다고 봅니다.
sroussey는 EU AI법 대응 텍스트 워터마킹이 응답 다양성을 줄인 결과 아니냐고 추측했지만, 다른 사용자가 워터마킹은 이미 확률이 비슷한 선택지 사이를 밀어 줄 뿐이라며 반박했습니다. Claude 출력에 들어가는 워터마크는 이미 정리했는데, 지금 나온 증거로 보면 load-bearing의 직접 원인은 워터마킹이 아니라 Claude Code 내장 프롬프트입니다.
지금 확인할 수 있는 것
분석 페이지는 아무 조건 없이 열립니다. Anthropic은 아직 이 이슈를 닫지 않았습니다.
| 항목 | 분석 페이지·저장소 | Claude Code 이슈 #53454 |
|---|---|---|
| 대상 | 누구나. 계정 불필요 | Claude Code 사용자 전원 |
| 요금제·가격 | 무료 | 해당 없음 |
| 한국 사용 가능 | 가능. GitHub Pages 정적 페이지라 지역 제한 없음 | 가능 |
| 필요 조건 | 직접 재현하려면 GitHub 토큰과 Python(numpy·scipy·numba). 12코어에서 약 50초 | 없음 |
| 상태 | 매일 GitHub Actions로 갱신. 2026-08-28 갱신본 기준 | 2026년 8월 28일 기준 open, 수정 릴리스 없음 |
저장소에는 라이선스 파일이 없습니다. 코드를 읽고 돌려 보는 것과 별개로 재배포 조건은 명시되어 있지 않으니, 사내 도구에 그대로 옮겨 심을 계획이라면 저자에게 확인이 필요합니다.
코딩 에이전트가 쓴 PR 설명을 사람이 리뷰하는 팀이라면, 최근 30일 PR 본문에 load-bearing, plainly, quietly, genuinely 네 단어를 grep해 보면 됩니다. 위 표의 열 개 단어가 그대로 검색어가 됩니다. 숫자가 잡히는데 CLAUDE.md에 이미 금지 규칙을 적어 두었다면, 그 규칙은 내장 프롬프트와 매 턴 경쟁하고 있으므로 지우고 다른 자리로 옮기는 편이 낫습니다. 이슈 #53454가 닫히고 내장 프롬프트가 바뀔 때까지는 모델에게 부탁하는 대신 발행 직전 치환 단계를 두는 쪽이 결과가 확실합니다.