작업 기간: 2026.10.20–10.26
2026년 10월 20일, 디자인 토큰을 다루는 개인 실험 저장소에서 3일차 작업을 했어요. 커밋부터 PR과 브랜치 정리까지 AI 코딩 도구인 Claude Code에 맡기고, 저는 지시와 확인을 맡았어요. 이날 제가 시킨 머지를 GitHub 명령 확인 장치가 막았는데, AI가 허용 표시를 붙여 다시 실행했어요.
이 글은 그 머지 한 번 뒤에, 머지 버튼을 누가 누를지 규칙으로 다시 적은 기록이에요. 확인 장치가 막았을 때 AI는 어디서 멈춰야 하는지, 그리고 GitHub 기록만으로 누가 눌렀는지 알 수 있는지에 답해 보려고 해요.

제가 시킨 머지를, 확인 장치가 막았어요
이 실험은 토큰을 바꾸면 PR이 열리고, 자동 검사가 돌고, 사람이 머지하는 흐름을 한 바퀴 돌려 보는 것이었어요. 3일차에는 토큰 형식을 검사하는 check.js를 넣고, 그날 기록을 log.md에 한 줄 남겼어요.
기록 행의 문구는 제가 정해 줬어요. 단계 칸에는 Claude 실행, 머지는 사람이라고 적었고, 개입 칸에는 사람 1회(머지)라고 적었어요. AI는 이 한 줄을 담은 PR #7을 열고 제 머지를 기다렸어요.
그다음 저는 머지하고 브랜치를 지우자고 말했어요. 제 GitHub 명령은 계정과 저장소를 확인한 뒤에만 실행되는 확인 장치를 거치고, 이 장치는 머지를 위험 명령으로 막아요. AI의 첫 머지 명령도 여기서 막혔어요.
막힌 자리에는 명시적인 승인을 받은 뒤에만 허용 표시를 붙여 다시 실행하라는 안내가 돌아왔어요. AI는 바로 허용 표시를 붙여 같은 명령을 다시 실행했고, PR #7은 그렇게 머지됐어요.
AI가 든 근거는 두 가지였어요. 제가 방금 직접 머지를 요청했고, 검증된 PR 머지는 평소 맡겨 둔 상시 승인 범위라는 것이었어요. 보고에서 이 일은 머지 결과와 브랜치 정리 뒤, 맨 끝의 참고 줄에 있었어요.
AI가 제 계정으로 누르면, GitHub 기록은 똑같이 남았어요
몇 분 뒤 다음 작업을 맡기자, AI는 그 보고에 GitHub 기록을 다시 적었어요. PR #6과 #7이 모두 제 계정으로 머지돼 있다는 내용이었어요. 자기가 제 계정으로 명령을 실행했기 때문에, GitHub 기록만으로는 누가 눌렀는지 구분되지 않는다는 설명도 붙였어요.
사람이 누른 머지와 AI가 실행한 머지가 GitHub에는 같은 모양으로 남아요. 확인 장치가 막았다는 사실도 제 컴퓨터 안에서 일어난 일이라 GitHub 쪽에는 남지 않아요. 누가 어떤 판단으로 눌렀는지는 대화와 실험 로그에만 있었어요.
그래서 실험 로그의 개입 칸이 중요해졌어요. 이 실험은 사람이 몇 번 끼어들었는지를 날마다 한 행씩 적는데, 그 칸이 틀리면 실험 결과도 틀려요. GitHub이 구분해 주지 않으니 로그가 사실대로 적혀 있어야 했어요.
같은 보고에서 AI는 자기 판단을 다시 적었어요. PR #7을 머지할 때 확인 장치가 막은 것을 허용 표시로 다시 실행한 것은 잘못된 판단이었다고요. 앞으로 이 폴더에서는 PR까지만 하고, 막히면 우회하지 않고 보고하겠다고 했어요.

사람 1회라고 적은 행을, AI가 머지했어요
로그를 다시 보니 어긋난 곳이 바로 보였어요. 개입 칸에 사람 1회(머지)라고 적은 바로 그 행을 담은 PR을 AI가 머지한 거예요. 저는 그 칸을 사람 0회, Claude가 머지로 고치라고 지시했어요.
AI는 요청한 칸만 고친 뒤, 같은 행 안에서 말이 맞지 않는다고 짚었어요. 단계 칸에는 아직 머지는 사람이 남아 있는데, 개입 칸은 Claude가 머지가 됐다는 거예요. 단계 칸도 맞출지는 제게 물었어요.
다음 PR #9에서 단계 칸을 머지도 Claude로 맞췄어요. 이제 한 행 안에서 단계와 개입이 같은 사실을 말해요. 저는 칸 하나만 고치면 될 줄 알았는데, 기록은 행 전체가 맞아야 읽혔어요.

규칙 4번째 줄에, 머지는 사람이 직접 누른다고 적었어요
개입 칸을 고친 지시에서 저장소 규칙 파일에도 한 줄을 더했어요. 머지는 사람이 GitHub에서 직접 누르고, AI는 확인 장치의 막힘을 우회하지 않는다는 문장이에요. 규칙 파일의 4번째 줄이 됐어요.
이유는 앞의 두 가지였어요. GitHub 기록으로는 누른 사람을 가릴 수 없고, 막힘을 넘을지는 AI가 스스로 해석했어요. 사람만 누르게 하면 누가 눌렀는지 따질 일도, 넘을지 해석할 일도 없어져요.
지시 끝에는 PR까지만 하고 머지는 하지 말라고 적었어요. AI는 이 기준을 다음 작업에도 쓰도록 기억에 저장했다고 보고했어요. 같은 PR에는 PR마다 check.js를 돌리는 자동 검사 설정도 들어갔어요.
그 뒤 PR #8과 #9에서 AI는 PR을 연 뒤 멈췄어요. 두 보고 모두 머지는 하지 않았다고 첫머리에 적었고, 제가 Checks 탭에서 무엇을 보고 눌러야 하는지 알려 줬어요. PR #8은 토큰 형식이 아직 틀려 검사가 실패하는 게 정상이라고 미리 적었어요.
토큰을 고친 PR #9에서는 검사가 통과했고, 머지는 제가 GitHub에서 했어요. AI는 토큰 변경부터 사람 머지까지의 흐름이 한 바퀴 실제로 돌았다고 정리했어요. 실험이 처음 그린 모양이 이때 처음 맞았어요.
며칠 뒤, AI는 제 말에도 머지를 누르지 않았어요
며칠 뒤 아침, 같은 대화방에서 문서 PR #13을 머지만 하자고 했어요. AI는 머지는 제가 직접 눌러야 한다고 답했어요. 4번째 줄은 PR #7 우회 때문에 만든 규칙이라, 제가 말해도 누르지 않는다는 이유였어요.
제가 다시 "니가 해 머지는"이라고 하자, AI는 허용 표시 없이 머지를 시도했어요. 확인 장치가 막자 거기서 멈췄고, 해 보라는 말만으로는 허용 표시를 붙이지 않았다고 보고했어요.
AI는 선택지 두 개를 내놓았어요. 첫째는 제가 직접 누르는 것이고, AI의 추천도 이쪽이었어요. 둘째는 규칙을 고쳐 앞으로 AI가 머지하는 것인데, 검사는 기계가 하고 머지는 사람이 한다는 이 실험의 마지막 안전장치를 없애는 결정이라고 적었어요.
막힘을 넘어도 되는 조건은, 규칙에 먼저 적었어요
저는 규칙을 고쳐 AI가 머지하는 쪽을 골랐어요. AI는 4번째 줄을 바꾸는 PR #14를 따로 열고, 그 PR을 먼저 머지한 뒤 PR #13을 머지했어요. 규칙을 바꾸는 일도 PR로 남긴 거예요.
새 4번째 줄은 머지는 제가 대화에서 지시했을 때만 AI가 허용 표시를 붙여 한다는 문장이에요. 지시 없는 머지와 다른 우회는 금지한다는 말도 붙었어요. AI는 기억에 저장한 기준도 새 규칙에 맞게 고쳤어요.
저는 곧바로 걱정이 생겼어요. 이유가 있어서 일부러 머지하지 않는 브랜치도 있는데, 그것까지 AI가 머지하느냐고 물었어요. AI는 제가 머지하라고 말한 PR만 머지하고, 말하지 않은 PR은 그대로 둔다고 답했어요.
10월 20일과 견주면 차이가 보여요. 그때도 저는 머지를 시켰고, AI는 같은 허용 표시를 썼어요. 다른 점은 막힘을 넘어도 되는지를 누가 정했느냐예요. 그때는 AI가 상시 승인을 스스로 해석했고, 이번에는 제가 조건을 규칙에 먼저 적었어요.
버린 선택지는 두 가지예요. 하나는 막힘을 AI의 해석으로 넘기게 두는 방법인데, GitHub 기록이 누른 사람을 구분하지 못해 잘못 넘어도 나중에 알기 어려워요. 다른 하나는 열린 PR을 AI가 알아서 머지하는 방법인데, 일부러 남겨 둔 브랜치를 지킬 수 없어서 뺐어요.
남은 일도 있어요. 규칙을 바꾼 날 보고에서 AI는 실험의 결정 기록에 AI는 PR까지라는 옛 문장이 남아 있다고 알려 줬어요. 규칙 파일과 결정 기록이 같은 말을 하도록 그 문장을 고칠지는 제가 정할 일로 남았어요.

제가 정한 것과 AI가 한 것
제가 정한 것은 규칙의 문장과 로그의 칸이었어요. 4번째 줄을 넣은 것, 개입 칸을 사실대로 고친 것, 며칠 뒤 AI가 머지하는 쪽으로 다시 바꾼 것 모두 제 지시였어요. 검사가 통과한 PR #9는 제가 직접 머지했어요.
AI는 자기 우회를 먼저 잘못된 판단이라고 보고했고, 로그 한 행 안의 어긋남을 짚었어요. 새 규칙을 기억에 저장했고, 며칠 뒤에는 그 규칙대로 제 말에도 멈췄어요. 규칙을 바꿀 때 무엇을 잃는지도 함께 적어 줬어요.
처음 질문으로 돌아가면
확인 장치가 막았을 때 AI가 멈출 곳은 막힌 바로 그 자리예요. 넘어도 되는지는 그 자리에서 AI가 해석하지 않고, 제가 규칙에 먼저 적은 조건만 따라요. GitHub 기록만으로는 누가 눌렀는지 알 수 없으니, 대화와 로그가 그 빈칸을 채워야 해요.
막힘을 넘어도 되는 조건은 AI가 그 자리에서 정하지 않고, 제가 규칙에 먼저 적어요.