Claude Code를 쓰다 보면 “끝날 때까지 가끔 확인해줘”라는 요청이 자주 생깁니다. 배포 완료, CI 통과, 새 PR 리뷰 코멘트를 확인하고, 긴 빌드가 끝나면 다음 조치를 해야 합니다.
이때마다 터미널로 돌아와 같은 프롬프트를 다시 입력하면 번거롭습니다. Claude Code의 /loop ↗는 현재 세션 안에서 같은 프롬프트를 반복 실행합니다.
이 글은 작성 시점 2026-06-17 · Claude Code scheduled tasks 문서 ↗, Goals 문서 ↗, Channels 문서 ↗ 스냅숏 기준으로 정리했습니다.
/loop는 Claude Code v2.1.72 이상에서 사용할 수 있는 scheduled tasks 기능입니다. 이 글에서는 클라우드 Routines가 아니라, 현재 CLI 세션 안에서 반복 실행되는 /loop에 집중합니다.
/loop는 무엇인가
공식 문서는 /loop를 “세션이 열려 있는 동안 프롬프트를 반복 실행하는 가장 빠른 방법”으로 설명합니다. /loop는 현재 대화 안에서 같은 요청을 정해진 때에 다시 실행합니다.
예를 들어 배포가 끝났는지 5분마다 확인하고 싶다면 이렇게 씁니다.
/loop 5m check if the deployment finished and tell me what happened
Claude는 이 요청을 cron 표현식으로 바꿔 현재 세션의 scheduled task로 등록합니다. 시간이 되면 새 턴이 큐에 들어가고, Claude가 바쁘지 않을 때 실행됩니다.
flowchart TD
A[사용자: /loop 5m check deploy] --> B[Claude Code가 scheduled task 생성]
B --> C[세션 안에서 대기]
C --> D{시간 도달}
D --> E[프롬프트 재실행]
E --> F[결과 관찰]
F --> C
/loop는 별도 서버에서 돌지 않습니다. 현재 Claude Code 세션, 현재 설정, 현재 MCP 서버, 현재 권한 모델을 그대로 이어받습니다.
세 가지 사용 방식
공식 문서 기준 /loop는 무엇을 넘기느냐에 따라 동작이 달라집니다.
| 입력 | 예시 | 동작 |
|---|---|---|
| 간격 + 프롬프트 | /loop 5m check the deploy | 고정 간격으로 같은 프롬프트 실행 |
| 프롬프트만 | /loop check the deploy | Claude가 매 반복 후 다음 간격을 고름 |
| 간격만 또는 없음 | /loop 15m, /loop | 기본 maintenance prompt 실행 |
고정 간격에 5m, 2h, 1d 같은 값을 넣으면 Claude가 cron 표현식으로 바꿉니다. 초 단위는 cron의 1분 단위 제약 때문에 분 단위로 올림 처리됩니다.
프롬프트만 넘기면 Claude가 매번 상황을 보고 다음 대기 시간을 고릅니다. 공식 문서는 이 범위를 1분에서 1시간 사이로 설명합니다. 빌드가 곧 끝날 것 같으면 짧게 기다리고, 별일 없으면 길게 기다리는 식입니다.
빈 /loop가 하는 일
/loop만 입력하면 Claude는 내장 maintenance prompt를 실행합니다. 문서 기준 우선순위는 다음과 같습니다.
- 현재 대화에서 끝나지 않은 작업을 이어가기
- 현재 브랜치의 PR을 돌보기: 리뷰 코멘트, 실패한 CI, merge conflict
- 남은 일이 없으면 bug hunt나 단순화 같은 cleanup pass 수행
이때 Claude는 이 범위 밖의 새 작업(initiative)을 시작하지 않습니다. 공식 문서에 따르면 push나 delete처럼 되돌리기 어려운 행동은 기존 transcript에서 허용된 작업의 연장일 때만 진행합니다.
/loop는 "무엇을 해도 되는지"가 애매하면 결과도 애매해집니다. 배포 확인, PR 대응, 특정 테스트 재시도처럼 목적이 정해져 있다면 관찰 대상과 허용 행동을 프롬프트에 적습니다.
loop.md로 기본 프롬프트를 바꾸기
프로젝트마다 반복 확인 방식이 다르다면 .claude/loop.md를 둘 수 있습니다. 공식 문서에 따르면 Claude는 먼저 프로젝트의 .claude/loop.md를 찾고, 없으면 사용자 홈의 ~/.claude/loop.md를 봅니다.
이 파일은 인자 없는 /loop의 기본 prompt를 대체합니다. 여러 작업 목록을 담는 파일이 아니라, /loop만 입력했을 때 쓰는 기본 지시문 하나입니다.
# .claude/loop.md
Check the release PR. If CI is red, inspect the failing job log and
propose the smallest safe fix. If review comments arrived, address them
one by one. If everything is green and quiet, report that in one line.
문서 기준 loop.md는 Markdown 파일이고 필수 구조는 없습니다. 실행 중 수정해도 다음 반복부터 반영됩니다. 25,000 bytes를 넘는 내용은 잘릴 수 있습니다. 파일이 길어지면 이 한도를 먼저 확인합니다.
/goal, Routines, Channels와 어떻게 다른가
Claude Code에는 비슷해 보이는 자동화 기능이 여럿 있습니다. /loop는 열려 있는 세션에서 상태를 반복 확인할 때 씁니다.
| 기능 | 다음 턴이 시작되는 조건 | 좋은 용도 |
|---|---|---|
/loop | 시간이 지남 | 배포, CI, PR 리뷰처럼 상태가 나중에 바뀌는 일 |
/goal ↗ | 이전 턴이 끝난 뒤 조건이 아직 안 맞음 | 테스트 통과, 마이그레이션 완료처럼 검증 가능한 목표 |
Channels ↗ | 외부 이벤트가 세션으로 들어옴 | CI 실패, Telegram/Discord 메시지, 모니터링 알림 |
Routines ↗ | 클라우드 스케줄 또는 이벤트 | 머신이 꺼져도 돌아야 하는 정기 작업 |
따라서 “10분마다 배포 상태를 봐줘”는 /loop가 자연스럽습니다. “테스트가 전부 통과할 때까지 계속 고쳐줘”는 /goal이 더 맞습니다. “CI가 실패하면 그때 바로 세션에 알려줘”는 Channels가 더 낫습니다. “매주 월요일 오전 의존성 점검”은 Routines나 GitHub Actions 쪽이 더 적합합니다.
각 기능은 Claude Code Channels, Claude Code Routines, Claude Code Ultra Plan에서 다뤘습니다. 자동화할 작업이 있다면 먼저 시간 기반, 조건 기반, 이벤트 기반, 클라우드 기반 중 어디에 해당하는지 정하고 기능을 고릅니다.
실전 패턴
/loop는 곧 상태가 바뀌지만 정확히 언제 바뀔지 모르는 작업에 맞습니다.
배포 감시
/loop 5m check whether the Netlify deploy for the current branch finished. If it failed, inspect the log and summarize the likely cause.
배포가 끝날 때까지 반복 확인하고, 실패하면 원인 분석으로 넘어갑니다.
PR babysitting
/loop check whether CI passed and whether new review comments arrived. If there is actionable feedback, address it and report the change.
프롬프트만 주면 Claude가 상황에 따라 다음 간격을 고를 수 있습니다. 리뷰가 활발하면 짧게, 조용하면 길게 기다리는 식입니다.
로컬 장기 작업 확인
/loop 10m check whether the long-running import script has finished. If it failed, inspect the latest log and stop the loop with a summary.
이런 작업은 사람이 터미널을 계속 지켜보지 않아도 됩니다. 대신 실패 시 어떤 로그를 볼지, 어떤 행동까지 허용할지를 프롬프트에 적어야 합니다.
멈추는 방법과 한계
/loop가 다음 실행을 기다리는 중이라면 Esc로 pending wakeup을 지울 수 있습니다. 고정 간격 loop는 사용자가 멈추거나 7일이 지나면 끝납니다. self-paced loop는 Claude가 작업이 완료됐다고 판단하면 다음 wakeup을 만들지 않고 종료할 수도 있습니다.
/loop 작업은 Claude Code가 실행 중이고 세션이 idle 상태일 때만 실행됩니다. 터미널을 닫거나 새 conversation을 시작하면 session-scoped task는 사라집니다. --resume이나 --continue로 세션을 되살리면 두 종류만 복원됩니다. 아직 만료되지 않은 recurring task와 scheduled time이 지나지 않은 one-shot입니다.
/loop를 쓰지 않습니다. 대신 Routines, Desktop scheduled tasks, GitHub Actions를 씁니다.
마무리
/loop는 현재 Claude Code 세션에서 상태를 반복 확인하고, 필요할 때만 다음 행동으로 넘어갑니다. 별도 인프라나 설정 없이 명령 하나로 시작합니다.
배포, CI, PR 리뷰처럼 조금 뒤에 다시 봐야 하는 일에는 /loop를 씁니다. 명확한 종료 조건이 있으면 /goal, 외부 이벤트에 즉시 반응해야 하면 Channels, 세션과 무관하게 오래 돌아야 하면 Routines를 씁니다.