AI 코딩 도구가 명령마다 ‘진행할까요?’ 묻는 걸 없앤 이야기 — 끊김 없는 자율 루프 만들기

저는 수학 학습 도구를 만들면서 Claude Code라는 AI 코딩 도구에게 일을 많이 맡깁니다(터미널에서 명령을 대신 실행하고 코드를 고쳐주는 CLI예요). 그런데 이 도구를 “알아서 쭉 진행해줘”로 굴리려니 걸리는 게 하나 있었어요. 명령을 실행할 때마다 “이거 진행할까요?”라고 물어보며 멈추는 거였죠. 빌드 한 번, 테스트 한 번, 타입 검사 한 번… 매번 제가 엔터를 쳐줘야 다음으로 넘어갔습니다. 자동으로 굴러가라고 맡겼는데 5초마다 저를 부르니, 사실상 자동이 아니었어요.

오늘은 이 승인 프롬프트를 걷어내서 끊김 없이 굴러가는 자율 루프를 만든 이야기, 그리고 여기서 제일 중요한 “무엇을 자동 허용하고 무엇을 계속 물어보게 둘까”의 판단을 정리할게요.

문제 — 승인 프롬프트가 ‘자율’을 깨뜨린다

AI 코딩 도구가 위험한 짓을 못 하게 명령 실행 전에 확인받는 건 좋은 기본값이에요. 사고 방지 장치니까요. 문제는 이게 모든 명령에 걸린다는 거였습니다. 파일 목록 보기, 빌드, 테스트처럼 아무리 반복해도 안전한 명령까지 매번 멈춰서 물어보니, 여러 단계를 스스로 이어가야 할 작업이 자꾸 끊겼어요.

이게 왜 아깝냐면, 제가 이 도구에 기대하는 건 “계획 → 실행 → 검증 → 다음”을 사람 개입 없이 한 바퀴 도는 거였거든요. 그 흐름이 명령 하나마다 끊기면, 결국 제가 계속 붙어 앉아 엔터만 치는 셈이 됩니다. 채점으로 치면, 학생이 한 문제 풀 때마다 저를 불러 “다음 문제 풀어도 돼요?”라고 묻는 것과 같아요. 안전하긴 한데, 그러면 자습이 아니죠.

해결 — 안전한 명령은 미리 ‘허용 목록’에 넣는다

핵심 아이디어는 명령을 두 부류로 가르는 거예요. 반복해도 안전한 건 미리 허용해두고, 위험한 건 계속 물어보게 두는 거죠. Claude Code는 프로젝트 안의 설정 파일 .claude/settings.json허용 목록을 둘 수 있었어요(나만 쓰는 로컬 규칙은 .claude/settings.local.json에 둡니다).

허용 목록(allowlist): “이 패턴에 맞는 명령은 물어보지 말고 바로 실행해도 된다”고 미리 등록해두는 목록. 여기 없는 명령은 예전처럼 확인을 거친다.

그래서 .claude/settings.json에 안전한 명령 패턴을 등록했습니다. permissions.allow 목록에 “이 패턴은 물어보지 말고 실행해도 된다”를 적는 거예요.

{
  "permissions": {
    "allow": [
      "Bash(npm run build:*)",
      "Bash(npm test:*)",
      "Bash(git status)"
    ]
  }
}

여기서 Bash(npm test:*):*는 “npm test로 시작하는 명령은 뒤에 뭐가 붙든 허용”이라는 뜻이에요. 이렇게 해두니 빌드·테스트·상태 확인 같은 건 Claude Code가 묻지 않고 바로 실행하고, 목록에 없는 낯선 명령이 나오면 그때만 저에게 물어봤어요. 자율 루프가 안 끊기면서도, 새로운 위험은 여전히 걸러지는 거죠.

제일 중요한 건 ‘무엇을 허용하느냐’의 선

여기서 초보가 빠지기 쉬운 함정이 있어요. “귀찮으니까 전부 다 허용”하고 싶은 유혹이요. 그건 안전장치를 통째로 떼는 것과 같아서 위험합니다. 되돌리기 어려운 명령을 도구가 말없이 실행해버리면, 사고가 나도 막을 순간이 없어요.

그래서 저는 이 선을 이렇게 그었습니다.

  • 자동 허용: 읽기(파일·상태 보기), 빌드·테스트·타입 검사처럼 몇 번을 돌려도 상태를 안 망치는 명령.
  • 계속 확인: 파일·브랜치 삭제, 강제 푸시, 배포처럼 되돌리기 어렵거나 바깥에 영향을 주는 명령.

기준은 단순해요. “실수로 여러 번 실행돼도 안전한가?” 그렇다면 허용, 아니라면 계속 물어보게. 판단이 애매하면 허용하지 않는 쪽으로 뒀어요. 자동화의 편리함보다 사고를 막을 마지막 순간을 남겨두는 게 우선이라서요.

그래서 뭘 하면 되나

AI 코딩 도구를 끊김 없이 굴리고 싶다면, 이 순서로 설정하세요.

명령 성격판단처리
읽기·목록·상태 확인🟢 항상 안전허용 목록에 등록
빌드·테스트·타입 검사🟢 반복해도 무해허용 목록에 등록
삭제·강제 푸시·배포🔴 되돌리기 어려움자동 허용 금지(계속 확인)
판단 애매🟡 모르면 보수적으로허용하지 않음(물어보게)

한 문장 요약: 승인 프롬프트가 자율 루프를 끊는다면, “여러 번 실행돼도 안전한” 명령만 골라 허용 목록에 넣어라 — 되돌리기 어려운 명령은 끝까지 확인을 거치게 두고, 애매하면 허용하지 마라.

이 설정을 하고 나서야 도구가 비로소 “맡기면 알아서 한 바퀴 도는” 느낌이 났어요. 다만 그 편함은 어디에 선을 긋느냐에 전적으로 달려 있더라고요. 자동화는 브레이크를 없애는 게 아니라, 밟지 않아도 되는 곳과 반드시 밟아야 하는 곳을 미리 정해두는 일에 가까웠습니다.


댓글 남기기