sbx run — 샌드박스에서 에이전트 실행

sbx run — 샌드박스에서 에이전트 실행

sandbox의 하위 명령인 sbx run은 샌드박스에서 에이전트를 실행하고, 없으면 샌드박스를 만들어요. 내장 에이전트, 로컬/OCI 키트, 클라우드 실행 등 다양한 실행 방식을 지원해요.

출처: 문서

본문

설명 (Description)

샌드박스에서 에이전트를 실행하고, 샌드박스가 없으면 만들어요.

첫 번째 위치 인자는 실행할 에이전트를 식별해요. 내장 에이전트 이름 또는 샌드박스 키트 참조일 수 있어요. 샌드박스 키트 참조는 로컬 디렉토리, ZIP 파일, git 저장소 또는 OCI 참조일 수 있어요. 상대 로컬 참조는 ./my-kit 또는 ../my-kit.zip 같은 명시적 경로여야 해요. 베어 값은 에이전트 또는 샌드박스 이름 의미를 유지해요. 기존 샌드박스에 이름으로 다시 붙으려면 --name을 사용해요. 이름 있는 샌드박스가 이미 존재하면 에이전트 위치 인자는 선택 사항이고 그 명세에서 읽혀요.

에이전트 인자는 "--" 구분자 뒤에 전달해요. 추가 워크스페이스는 추가 인자로 제공할 수 있어요. ":ro"를 붙이면 읽기 전용으로 마운트돼요. 읽기 전용 인자는 단일 파일을 이름 지을 수 있어, 샌드박스가 쓸 수 있는 워크스페이스 안에서도 그 경로 하나를 닿지 못하게 해요.

경로를 생략하면 현재 디렉토리를 마운트해요. 경로를 전달하면 다른 워크스페이스를 마운트해요.

붙이지 않고 샌드박스만 만들려면 sbx create를 대신 사용하거나, --detached(-d)를 전달해 샌드박스 ID를 출력하고 인터랙티브 세션을 열지 않고 종료해요.

사용 가능한 에이전트: claude, codex, copilot, cursor, devin, docker-agent, droid, gemini, kiro, opencode, shell

--cloud 사용 시: 클라우드 샌드박스에서 에이전트를 실행하고, 샌드박스가 없으면 만들어요.

첫 번째 위치 인자는 실행할 에이전트를 식별해요: 내장 에이전트 이름 또는 샌드박스 키트 참조(로컬 디렉토리, ZIP 파일, git 저장소 또는 OCI 참조). 상대 로컬 참조는 ./my-kit 또는 ../my-kit.zip 같은 명시적 경로여야 해요. 클라우드 샌드박스에는 호스트 워크스페이스가 없어 에이전트 뒤에 경로가 오지 않아요. 에이전트 인자는 "--" 구분자 뒤에 전달해요.

기존 샌드박스(실행 중이든 중지됐든)가 있는 에이전트를 실행하면 재사용할 것인지 새로 만들 것인지 선택하라는 프롬프트가 떠요. --new로 프롬프트를 건너뛰고 항상 새 샌드박스를 만들어요. --name NAME은 그 이름의 샌드박스가 존재하면 재사용·재시작하고, 없으면 만들어요. 키트 템플릿(샌드박스 키트 또는 빌드 콘텐츠가 있는 mixin)을 구운 실행은 항상 새로 만들어요. --detached는 프롬프트를 건너뛰어요: --name과 함께면 그 샌드박스가 존재할 때 재시작하고, 아니면 새로 만들어요. --detached 없는 비대화형 실행은 거부되므로 스크립트는 --detached를 전달해요(예: sbx --cloud run -d claude && sbx --cloud exec ...).

크기는 --cpus--memory에서 오며 과금 가능한 형태에 도달해야 해요. 없으면 클라우드 샌드박스는 2 CPU와 4 GiB를 받아요. -t/--template로 이름 지은 템플릿은 클라우드 레지스트리에 이미 존재해야 하고 CLI는 업로드하지 않아요. 클라우드 샌드박스 모델은 https://docs.docker.com/ai/sandboxes/ 를 참고해요.

옵션 (Options)

| 옵션 | 기본값 | 설명 | | --allow-network | | 클라우드 샌드박스 이그레스(egress)에 허용할 네트워크 패턴 (클라우드 전용; 여러 번 지정 가능) | | --clone | | 호스트 Git 저장소의 private in-container 클론에서 에이전트 실행; 샌드박스 생성 시점에 설정해야 함(기존 clone-mode 샌드박스에 다시 붙을 땐 no-op) | | --cpus | 0 | 샌드박스에 할당할 CPU 수 (0 = 자동: 모든 호스트 CPU) | | --deny-network | | 생성 시 샌드박스별 네트워크 deny 규칙 추가. 여러 번 지정 가능. 규칙은 새 샌드박스에만 적용되며 'sbx policy ls ' 또는 'sbx policy rm network --sandbox --resource '로 나중에 나열·제거 가능. 중앙 거버넌스 아래에서 안전 — 로컬 deny는 이그레스를 좁히기만 하고 넓히지 않기 때문 | | --detach-keys | | 세션을 실행 상태로 남기는 분리(detach) 동작 오버라이드 (Docker 스타일, 예: "ctrl-\", "ctrl-x,ctrl-d"). 기본: Ctrl-\ . 기본이 에이전트 키맵과 충돌할 때 사용 (클라우드 전용) | | -d, --detached | | 에이전트 세션을 열지 않고 샌드박스를 시작하고 ID 출력 | | -e, --env | | 샌드박스에 환경 변수 설정 (반복 가능): KEY=VALUE, 또는 베어 KEY (현재 환경에서 값 가져옴). 에이전트 세션에 적용되어 재붙임 때도 효과. 이 run이 만들 때는 샌드박스에도 구워짐 | | --env-file | | 파일에서 환경 변수 읽기 (반복 가능). --env가 파일보다 우선; 나중 파일이 이전 파일보다 우선. 에이전트 세션에 적용되어 재붙임 때도 효과. 이 run이 만들 때는 샌드박스에도 구워짐 | | --image-ref | | 인라인 모드 클라우드 생성용 OCI 이미지 참조 (--template와 상호 배타; --cpus와 --memory 필요) | | --kit | | 실험적 추가 키트 참조 (mixin이어야 함; 디렉토리, ZIP, git 또는 OCI). 여러 번 지정 가능 | | --kit-arg | | 실험적 키트가 선언한 인자 값. 모든 키트에 name=value이거나 특정 키트에 kit.name=value (반복 가능) | | --kit-args-file | | 실험적 한 줄에 하나씩 name=value 키트 인자 파일 (반복 가능); --kit-arg가 우선 | | -m, --memory | | 이진 단위 메모리 제한 (예: 512m, 8g). 최소: 512 MiB. 기본: 호스트 메모리의 50%, 512 MiB–32 GiB로 클램프. 최대: max(호스트 메모리의 75%, 512 MiB) | | --name | | 샌드박스 이름 (기본: -) | | --new | | 기존 샌드박스를 재사용하라는 프롬프트 대신 항상 새 클라우드 샌드박스 생성 (클라우드 전용) | | --on-timeout | | --ttl이 만료될 때: 'delete'(기본)는 샌드박스를 tombstone, 'stop'은 제자리에서 중지해 나중에 다시 시작 가능 (클라우드 전용; 'stop'은 계정이 권한이 있어야 함) | | -p, --publish | | 샌드박스 포트를 호스트로 공개 (반복 가능): [[HOST_IP:]HOST_PORT:]SANDBOX_PORT[/PROTOCOL]. 샌드박스 생성 시 적용; 재붙임 때 무시 ("sbx ports" 사용) | | --pull | always | 이미지 풀 정책 (always|missing|never) | | --skills | | 공유 스킬 저장소 모드: off, readonly, 또는 readwrite (에이전트의 스킬 디렉토리, 예: ~/.claude/skills에 마운트). 기본: readonly, 또는 설정된 skills.defaultMode. 새 샌드박스를 만들 때만 사용 가능 | | -t, --template | | 샌드박스에 사용할 컨테이너 이미지 (기본: 에이전트별 이미지) | | --ttl | | 클라우드 샌드박스가 타임아웃되기 전 time-to-live (예: 30m, 2h, 1h30m; 단위는 대소문자 무시; 클라우드 전용; 기본: 서버 측) | | -v, --volume | | 실험적 기존 영구 볼륨 붙이기, NAME:MOUNTPATH (클라우드 전용, 실험적; 반복 가능) |

전역 옵션 (Global options)

| 옵션 | 기본값 | 설명 | | --cloud | | 로컬 sandboxd 대신 Docker Cloud Sandboxes API로 디스패치 (점점 더 많은 동사 지원 — 현재 목록은 'sbx --cloud --help' 실행) | | -D, --debug | | 디버그 로깅 활성화 |

예시 (Examples)

# 현재 디렉토리에서 claude로 샌드박스 생성·실행
sbx run claude

# 로컬 샌드박스 키트에서 생성·실행
sbx run ../path/to/my-agent/

# OCI 샌드박스 키트에서 생성·실행
sbx run ghcr.io/foo/my-agent:latest

# 내장 에이전트에 mixin 추가
sbx run claude --kit ./my-mixin/

# 추가 워크스페이스(읽기 전용)와 함께 생성·실행
sbx run claude . /path/to/docs:ro

# 이름으로 기존 샌드박스에 재붙임 (명세에서 에이전트 읽음)
sbx run --name existing-sandbox

# 이름으로 기존 샌드박스에 재붙이고 예상 에이전트 확인
sbx run claude --name existing-sandbox

# 에이전트 인자로 샌드박스 실행
sbx run claude -- --continue

# 새 클라우드 샌드박스에서 claude 실행
sbx --cloud run claude

# 비대화형으로 클라우드 샌드박스 생성하고 ID 출력
sbx --cloud run --detached claude

# 그 이름의 클라우드 샌드박스 재사용, 없으면 생성
sbx --cloud run --name my-project claude

# 에이전트 인자로 실행
sbx --cloud run claude -- --continue

더 알아보기 (Learn more)

  • 샌드박스 생성만 하려면 sbx create, 포트 관리는 sbx ports, 제거는 sbx rm을 참고해요.