본문으로 건너뛰기

© 2026 Molayo

Zenn헤드라인2026. 06. 15. 23:15

Claude Managed Agents의 scheduled deployment를 이용한 무인 cron 실행

요약

Claude Managed Agents의 'scheduled deployment' 기능을 활용하여 별도의 인프라 구축 없이 자율 에이전트를 cron 스케줄로 실행하는 방법을 소개합니다. 에이전트 생성부터 환경 설정, 배포 및 검증까지의 전체 워크플로우를 다룹니다.

핵심 포인트

  • scheduled deployment를 통해 자체 스케줄러 없이 무인 cron 실행 가능
  • 에이전트, 환경, 배포(deployment)의 단계적 구축 프로세스
  • run 명령어를 통한 수동 실행 및 운영 투입 전 검증 방법
  • cron 표현식과 타임존(DST) 적용 시 주의사항

안녕하세요, 토무입니다.

이번에는 2026년 6월 10일 Code with Claude Tokyo 이벤트에서 public beta로 발표된, Managed Agents의 "scheduled deployment" 기능을 사용해 보았습니다!

저도 Managed Agents를 사용하는 것은 처음이기 때문에, 그 부분도 차근차근 설명하며 본론으로 들어가겠습니다!

0. Claude Managed Agents란

Claude Managed Agents는 Claude를 **자율 에이전트 (Autonomous Agent)**로 실행하기 위한 하네스(Harness)와 인프라스트럭처를 제공하는 메커니즘입니다.

Claude Managed Agents는 4가지 개념을 중심으로 구축되어 있습니다.

개념설명
에이전트 (Agent)모델, 시스템 프롬프트 (System Prompt), 도구 (Tool), MCP 서버, 및 스킬
...

Claude Code와는 무엇이 다른가?

이 부분은 필자가 입문했을 때 자주 헷갈렸던 부분이라 일단 정리해 두겠습니다!

Claude Managed Agents가 클라우드 상에서 자율적으로 태스크를 완료하는 풀 매니지드형 (Full-managed) 서비스인 것에 반해, Claude Code는 실시간으로 대화하며 작업하는 도구입니다.

적용 시나리오의 차이는 다음과 같습니다.

용도Claude CodeClaude Managed Agents
단발 작업 · 대화형 개발
...

1. 도입: scheduled deployment란

  • 에이전트에 cron 스케줄을 연결하여, 실행될 때마다 새로운 세션을 시작하여 태스크를 완료하는 메커니즘. - 포인트는 "자체적으로 스케줄러를 구축·호스트할 필요가 없다"는 것. - 용도 예시: 야간 데이터 동기화 / 주간 컴플라이언스 스캔 / 일간 다이제스트.
  • 채택 사례로 신뢰성 보강 (Actively AI는 자체 제작한 스케줄링 인프라를 대체하여 스택을 간소화).

2. 전제

  • Console 계정 및 API 키.
  • ant CLI (Managed Agents CLI). - 모든 요청에 managed-agents-2026-04-01 beta 헤더가 필요 (CLI / SDK는 자동 부여).

3. 만들기 (agent → environment → deployment)

  • deployment는 기존의 agent와 environment를 ID로 참조하는 구조. - 따라서 순서는 "agent 생성 → environment 생성 → deployment.yaml에 두 ID를 작성 → create"입니다.
  • create의 응답으로 status: activeupcoming_runs_at (다음 실행 예정 시간)이 반환됩니다.

4. 검증

  • run (수동 실행)을 통해 스케줄을 기다리지 않고 즉시 세션을 생성 → 운영 투입 전 테스트로 사용할 수 있습니다. - deployment-runs list로 각 실행의 성패를 추적. --has-error로 에러만 추출. - deployment run은 세션의 라이프사이클 (Lifecycle)과는 독립된 기록이라는 설계를 강조하면 기술 기사로서 마무리하기 좋습니다.

5. cron / timezone / DST 동작

  • 최대 단위는 분 단위입니다. - cron은 리터럴한 wall-clock 매칭입니다. America/New_York0 20 * * *은 EST/EDT와 관계없이 현지 시간 20시에 실행됩니다. - 엣지 케이스: 봄의 존재하지 않는 시간(새벽 2시 등)은 실행되지 않으며, 가을의 중복된 시간은 2번 실행됩니다.
  • 누락이나 중복이 허용되지 않는다면, 현지 시간 새벽 1~3시를 피하거나 UTC를 사용하십시오.
  • upcoming_runs_at은 UTC로 표시되지만, 실행 판정 자체는 wall-clock 기반이라는 정리가 정확합니다. - 부하 분산을 위해 최대 10초의 jitter가 적용될 수 있습니다 (정확히 일치하는 시간에 실행되지 않을 수 있음).

(그렇다고는 해도, 아마 다른 요인으로 인해 몇 분 뒤에 실행되는 일은 흔히 있는 일이라고 생각합니다.)

6. 라이프사이클 관리

  • pause (가역적): 이후의 트리거를 억제합니다. 단, 이미 실행 중인 이전 run 세션은 계속 유지됩니다. pause 중에도 수동 run은 가능합니다.
  • unpause: 다음 예정된 회차부터 재개합니다. 누락된 회차에 대한 백필(backfill)은 이루어지지 않습니다.
  • archive (비가역적 / terminal): 스케줄을 종료하며, 이후 변경이 불가능합니다. - 자동 동작: agent가 아카이브/삭제되면 deployment도 자동으로 아카이브됩니다. 서브 에이전트가 아카이브되면 다음 트리거 시 실패한 run을 기록하고 자동 pause (업데이트 후 재개할 수 있도록) 합니다.

7. 주의 사항

  • 과금: 이것은 Claude Platform (API) 측의 기능으로, Pro/Max와 같은 월정액 구독과는 별개의 체계입니다. scheduled deployment 자체에 추가 요금이 붙지는 않지만, 트리거될 때마다 세션이 실행되므로 해당 토큰 소비와 샌드박스(sandbox) 실행이 API 종량제로 과금됩니다. 예: 매일 아침 1회 × 30일 = 세션 30회분 사용량. 정확한 단가는 claude.com/pricing#api 또는 Console의 사용량 화면에서 확인이 필요합니다.
  • ZDR / HIPAA 미지원: Managed Agents는 대화 이력, 샌드박스 상태, 출력을 서버 측에 유지하는 상태 유지(stateful) 설계이므로, Zero Data Retention (ZDR) 및 HIPAA BAA 대상에서 제외됩니다.
  • public beta: 사양은 변경될 수 있습니다.
  • 상한: 조직당 최대 1,000개의 scheduled deployment.

작업 가이드 (복사하여 실행용)

전제 조건:
ant CLI가 설치되어 있고, ANTHROPIC_API_KEY가 설정되어 있어야 합니다. CLI는 beta 헤더를 자동으로 부여합니다.

Step 0. API 키를 환경 변수에 설정

export ANTHROPIC_API_KEY="your-api-key-here"

Step 1. 에이전트를 생성하고 agent.id를 기록

ant beta:agents create \
--name "News Digest Agent" \
--model '{id: claude-opus-4-8}' \
...
  • agent_toolset_20260401을 통해 bash, 파일 조작, web search 등의 프리빌트(prebuilt) 도구 세트가 활성화됩니다.

응답 예시:

  • 반환된 agent.id를 기록합니다 (이후 $AGENT_ID로 사용).
export AGENT_ID="agent_xxxxxxxxxxxx"

Step 2. 환경을 생성하고 environment.id를 기록

ant beta:environments create \
--name "cron-env" \
--config '{type: cloud, networking: {type: unrestricted}}'

응답 예시:

  • 반환된 environment.id를 기록합니다.
export ENVIRONMENT_ID="env_xxxxxxxxxxxx"

Step 3. deployment.yaml 작성

이번에는 WSL 상에서 직접 VS Code를 호출하여, 거기서 다음 yaml 파일을 작성합니다.

code ~/deployment.yaml
# deployment.yaml
name: Weekday morning digest
agent: $AGENT_ID
...
  • expression은 표준 POSIX cron (분 시 일 월 요일)입니다.
  • timezone은 IANA 타임존 식별자입니다.

Step 4. scheduled deployment 생성

파일로부터 주입하는 방식 (공식 이미지 형태):

ant beta:deployments create < deployment.yaml

heredoc + ID 획득까지 한 번에 수행하는 방식 (공식 문서 형태):

DEPLOYMENT_ID=$(ant beta:deployments create <<YAML | jq -er '.id'
name: Weekday morning digest
agent: $AGENT_ID
...

응답 예시:

upcoming_runs_at

은 UTC 기준 표시입니다 (JST 9:00 = 00:00Z). 이를 통해 설정이 올바른지 확인할 수 있습니다. -
반환된

id

를 기록해 둡니다.

export DEPLOYMENT_ID="depl_xxxxxxxxxxxx"

Step 5. 수동 실행으로 테스트 (스케줄을 기다리지 않음)

ant beta:deployments run --deployment-id "$DEPLOYMENT_ID"
  • 즉시 세션을 생성하고,
    trigger_context.type: "manual"

인 deployment run을 생성합니다. -
실제 스케줄에 올리기 전 동작 확인용으로 사용합니다.

응답 예시:

출력 확인

Claude Platform 콘솔에서 확인할 수 있습니다!

Step 6. 실행 이력 확인

# 모든 run 목록
ant beta:deployment-runs list --deployment-id "$DEPLOYMENT_ID"
# 에러만 확인
...

응답 예시:

  • 실패한 run에는
    error.type

(예: environment_archived_error / agent_archived_error / session_rate_limited_error)

이 포함됩니다.

Step 7. 라이프사이클 (Lifecycle) 조작

# 일시 정지 (가역적): 이후의 트리거를 억제합니다. 실행 중인 세션은 계속 유지됩니다. pause 중에도 수동 run은 가능합니다.
ant beta:deployments pause --deployment-id "$DEPLOYMENT_ID"
# 재개: 다음 예정된 회차부터 적용됩니다. 누락된 회차에 대한 백필 (Backfill)은 없습니다.
...

Step 8. 실시 결과

실시 시간도 지정한 오전 9:00 근처에 실행되고 있는 것을 확인할 수 있습니다!

Step 9. 정리

ant beta:deployments archive --deployment-id "$DEPLOYMENT_ID"

응답 예시:

여담

Claude에는 정기 실행 수단이 단계별로 마련되어 있습니다!

Claude Code 내에서 동작하는 /loop (세션을 열어두는 동안만), PC를 닫아도 Anthropic의 클라우드에서 동작하는 /schedule (Cloud Routine), 그리고 본 기사에서 다루는 Managed Agents의 scheduled deployment까지 총 3단계로 구성되어 있습니다.

개인 작업 보조부터 실제 운영까지 용도에 따라 선택할 수 있다는 것이 특징입니다!

각 수단의 세부적인 차이점은 【Claude loop 완전 가이드】 세무사·경리·인사 등 비엔지니어가 "정기 확인"을 노코드(No-code)로 자동화하는 방법의 마지막 부분에 정리되어 있으니, 그쪽을 확인해 주세요!

참조 (1차 소스)

Discussion

AI 자동 생성 콘텐츠

본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0