Skip to content
푸땡로그
Go back

Claude Code /goal: 조건이 만족될 때까지 계속 일하게 만드는 방법

Claude Code에게 긴 작업을 맡기다 보면 사람이 매 턴마다 “계속해”, “다시 테스트해”, “아직 실패했으니 고쳐”라고 밀어줘야 할 때가 있습니다. 작업 자체는 명확한데, 중간 턴마다 사용자가 다시 눌러줘야 하는 흐름입니다.

/goal은 이 반복을 줄이는 기능입니다. 완료 조건을 한 번 적어두면 Claude가 각 턴이 끝날 때마다 조건이 만족됐는지 평가하고, 아직 아니면 다음 턴을 자동으로 시작합니다.

이 글은 작성 시점 2026-06-17 · Claude Code Goals 문서, scheduled tasks 문서, hooks 문서 스냅숏 기준으로 정리했습니다.

기준 /goal은 Claude Code v2.1.139 이상에서 사용할 수 있습니다. 현재 세션에 하나의 goal만 활성화할 수 있고, 조건이 만족되면 자동으로 해제됩니다.

/goal은 무엇인가

공식 문서는 /goal을 “completion condition을 설정하고, 그 조건이 만족될 때까지 Claude가 여러 턴에 걸쳐 계속 일하게 하는 기능”으로 설명합니다.

예를 들면 이렇게 씁니다.

/goal all tests in test/auth pass and the lint step is clean

goal을 설정하면 별도의 프롬프트를 다시 보낼 필요가 없습니다. 조건 자체가 첫 directive가 되고, Claude는 바로 작업을 시작합니다. 각 턴이 끝날 때 작은 빠른 모델이 대화 내용을 보고 조건이 만족됐는지 판단합니다.

flowchart TD
    A[사용자: /goal 조건 입력] --> B[Claude가 한 턴 작업]
    B --> C[Evaluator가 조건 확인]
    C --> D{조건 만족?}
    D -->|아니오| E[이유를 다음 턴 지침으로 전달]
    E --> B
    D -->|예| F[goal 자동 해제 및 완료 기록]

핵심은 “시간이 되면 다시 실행”이 아니라 “조건이 아직 안 맞으면 계속 실행”입니다.


/loop와 무엇이 다른가

/loop는 시간 기반입니다. 5분마다 배포 상태를 확인하거나, 주기적으로 PR 상태를 살피는 데 좋습니다.

/goal은 조건 기반입니다. 이전 턴이 끝난 직후 평가가 일어나고, 조건이 아직 아니면 바로 다음 턴이 시작됩니다.

기능다음 턴이 시작되는 조건멈추는 조건
/goal이전 턴이 끝남evaluator가 조건 만족을 확인
/loop시간 간격 도달사용자가 멈추거나 Claude가 완료 판단
Stop hook이전 턴이 끝남사용자 스크립트나 prompt 판단
Auto Mode다음 턴을 시작하지 않음한 턴 안에서 도구 승인만 자동화

문서도 이 차이를 분명히 설명합니다. Auto Mode는 per-tool prompt를 줄이고, /goal은 per-turn prompt를 줄입니다. 둘은 경쟁 관계가 아니라 함께 쓸 수 있는 기능입니다.


좋은 goal 조건 쓰기

/goal의 품질은 조건 문장에 달려 있습니다. evaluator는 독립적으로 파일을 읽거나 명령을 실행하지 않습니다. Claude가 대화에 드러낸 결과를 보고 판단합니다.

그래서 좋은 조건에는 세 가지가 필요합니다.

  1. 측정 가능한 종료 상태
  2. Claude가 증명해야 할 확인 방법
  3. 지켜야 할 제약 조건

예를 들어 이렇게 쓰는 편이 좋습니다.

/goal npm test exits 0, npm run lint exits 0, and no files outside src/auth and test/auth are modified

반대로 다음처럼 쓰면 애매합니다.

/goal make the auth code better

“더 좋아졌다”는 평가 기준이 모호합니다. /goal에는 테스트 결과, 빌드 exit code, 파일 수, 빈 큐, checklist 완료처럼 대화 안에서 확인 가능한 상태가 잘 맞습니다.

Tip 긴 작업은 goal 조건 안에 종료 한계도 넣으세요. 예를 들어 or stop after 20 turns처럼 쓰면 무한히 이어지는 흐름을 줄일 수 있습니다.

상태 확인과 해제

/goal만 입력하면 현재 goal 상태를 볼 수 있습니다.

/goal

활성 goal이 있으면 조건, 실행 시간, 평가된 턴 수, token spend, evaluator의 최근 이유가 표시됩니다.

중간에 멈추고 싶으면 /goal clear를 씁니다.

/goal clear

문서 기준 stop, off, reset, none, cancelclear의 alias로 동작합니다. 새 대화를 시작하는 /clear도 활성 goal을 제거합니다.


resume과 non-interactive mode

goal이 활성화된 상태에서 세션이 끝났다면 --resume이나 --continue로 되살릴 때 goal 조건이 복원됩니다. 다만 turn count, timer, token-spend baseline은 resume 시점부터 다시 시작됩니다.

/goal은 non-interactive mode에서도 쓸 수 있습니다.

claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"

이 경우 한 번의 invocation 안에서 goal loop가 완료될 때까지 진행됩니다. 중간에 멈추려면 Ctrl+C로 interrupt합니다.


언제 쓰면 좋은가

/goal이 잘 맞는 작업은 끝났는지 확인 가능한 작업입니다.

작업좋은 goal 조건
테스트 고치기특정 test suite가 exit 0
마이그레이션모든 call site가 새 API를 쓰고 build 통과
파일 분리각 파일이 지정한 line budget 이하
backlog 처리특정 label의 issue queue가 비어 있음
문서 업데이트acceptance criteria checklist가 모두 충족

반대로 “좋아 보이게”, “더 깔끔하게”, “적당히 리팩터링”처럼 주관적인 조건은 /goal과 잘 맞지 않습니다. 먼저 완료 기준을 명확히 정해야 합니다.

주의 evaluator는 도구를 호출하지 않습니다. Claude가 테스트를 실행하고 그 결과를 transcript에 남겨야 evaluator가 조건 만족 여부를 판단할 수 있습니다.

요구사항과 한계

문서에 따르면 /goal은 hooks system 위에 구현되어 있습니다. 그래서 trusted workspace에서만 동작합니다. 또한 disableAllHooks가 설정되어 있거나 managed settings에서 allowManagedHooksOnly가 켜져 있으면 사용할 수 없습니다.

이 제약은 자연스럽습니다. /goal은 턴이 끝날 때마다 평가 로직을 실행하는 기능이므로, hooks가 막힌 환경에서는 동작할 수 없습니다.


블로그 대표 이미지 콘셉트

Claude Code 터미널 위에 목표 조건이 체크리스트처럼 떠 있고, 각 턴이 끝날 때 작은 evaluator 모델이 “yes/no” 판단을 내리는 다이어그램이 좋습니다.

왼쪽에는 Claude가 테스트를 고치고 빌드를 실행하는 반복 루프가 있고, 오른쪽에는 /loop, Stop hook, Auto Mode와의 차이를 작은 비교 카드로 배치합니다. 전체 톤은 어두운 터미널 배경에 초록색 완료 체크와 노란색 evaluator 노드를 둔 워크플로우 일러스트가 잘 맞습니다.


마무리

/goal은 Claude Code를 “한 번 답하는 도구”에서 “조건이 맞을 때까지 계속 진행하는 작업자”에 가깝게 만듭니다.

중요한 건 goal을 잘 쓰는 법입니다. 측정 가능한 종료 상태, 확인 방법, 제약 조건을 함께 적어야 합니다. 그러면 “계속해”를 반복하지 않아도 Claude가 스스로 다음 턴으로 넘어가며 목표에 접근합니다.

시간 기반 확인은 /loop, 반복 실행의 조건 기반 자동화는 /goal, 도구 승인 피로 완화는 Auto Mode입니다. 이 셋을 구분해서 쓰면 Claude Code 세션을 훨씬 덜 끊기게 운영할 수 있습니다.


참고 자료


Share this post on:

Previous Post
Claude Code fallbackModel: 모델 장애와 과부하에 견디는 세션 만들기