alpacon work-session create

새 작업 세션을 생성합니다.

bash
alpacon work-session create [flags]

--use를 전달하면 새 세션이 워크스페이스의 활성 세션으로 지정되어 이후 exec, websh, cp, tunnel 명령이 --work-session 없이 이 세션에 연결됩니다. 승인이 필요한 경우 --use를 --wait와 함께 사용하세요. 세션이 active 상태에 도달하면 연결됩니다.

작업에 sudo가 필요하면 --sudo로 명령 패턴을 사전 선언하세요. 세션에 MFA 우회 sudo 정책이 첨부되어 비대화형 호출자(예: exec를 실행하는 AI 에이전트)가 해당 sudo 명령을 대화형 MFA 프롬프트 없이 실행할 수 있습니다. 각 --sudo 값은 쉼표로 구분한 패턴 목록으로 하나의 정책을 구성하며, 패턴 안에 리터럴 쉼표는 사용할 수 없으므로 해당 정책마다 플래그를 다시 전달하세요. sudo 기능이 자동으로 추가되며, 정책은 세션과 함께 승인 요청됩니다. 이후 sudo 명령이 거부되면 alpacon work-session update로 세션에 추가하세요.

AI 에이전트가 CLI를 실행하면 세션은 에이전트 세션이 됩니다. CLI는 Claude Code, Codex, Gemini CLI, GitHub Copilot, Cursor, Cline, Goose가 자신이 실행하는 셸에 설정하는 환경 변수로 이를 감지하고, 모든 요청에 AI 에이전트의 이름을 함께 보냅니다. CLI가 감지하지 못하는 AI 에이전트(예: Aider)는 해당 에이전트의 환경에 AI_AGENT=<name>을 설정하세요. 에이전트 세션에는 워크스페이스의 승인 규칙이 적용됩니다. Advisory 모드에서는 승인을 기다리지 않고 시작됩니다. Websh와 Kubernetes는 사용할 수 없습니다.

AI 에이전트가 감지된 동안에는 --requester-type user가 거부됩니다. 직접 명령을 실행하는 경우에는 AI 에이전트 환경 밖의 터미널을 사용하세요. AI 에이전트가 실행하는 명령은 에이전트 세션으로 요청해야 합니다. --requester-type agent는 AI 에이전트 이름 없이 에이전트 세션을 엽니다.

--account로 서버에서 작업을 실행할 계정(예: root)을 지정하면 승인자가 요청과 함께 이 계정을 확인할 수 있습니다. Windows 서버에서는 이 계정이 감사용 표시일 뿐이며 명령은 SYSTEM으로 실행됩니다. 자세한 내용은 Windows의 권한을 참고하세요.

옵션 (Options)

bash
      --account string          서버에서 작업을 실행할 계정 (예: root), 승인자가 요청과 함께 확인. Windows 서버에서는 감사용 표시(명령은 SYSTEM으로 실행)
      --expires-at string       절대 만료 시각 (RFC3339)
      --expires-in string       세션 사용 시간 (예: 1h, 2h, 4h)
  -h, --help                    create 명령어에 대한 도움말 출력
      --purpose string          무엇을, 왜 하는지 구체적으로 작성 (마크다운 지원, 비대화형 모드에서 필수)
      --requester-type string   요청자 유형: 'user'(기본값) 또는 'agent'. 감지된 AI 에이전트는 항상 'agent'. CLI가 감지하지 못하는 에이전트는 AI_AGENT=<name> 설정
      --scope strings           요청할 기능. 유효 값: command, editor, sudo, tunnel, webftp, websh (반복 가능, 쉼표로 구분한 값도 허용)
      --server strings          대상 서버 이름 (반복 가능, 쉼표로 구분한 값도 허용)
      --sudo stringArray        대화형 MFA 없이 실행할 sudo 명령 패턴 사전 선언 (반복 가능, 각 값은 쉼표로 구분한 패턴 목록으로 하나의 정책을 구성, 와일드카드 허용)
      --sudo-reason string      --sudo로 생성한 sudo 정책에 적용할 사유
      --use                     생성한 세션을 워크스페이스의 활성 세션으로 지정 (상태가 'active'에 도달해야 함, 승인이 필요하면 --wait와 함께 사용)
      --wait                    세션이 승인될 때까지 대기 후 종료 (기본 타임아웃 5m, 활성 세션으로 지정하지는 않음, 자동 연결하려면 --use와 함께 사용)
      --wait-approval string    --wait와 동일하지만 대기 시간을 직접 지정 (예: 30m, 기본값 5m). --wait를 암시적으로 포함

예제

명령 실행과 터미널 접근을 위한 세션 요청:

bash
alpacon work-session create --purpose "nginx fix" --scope command,websh --server web-01 --expires-in 2h

여러 서버를 대상으로 절대 만료 시각을 지정하고 승인 대기:

bash
alpacon work-session create --purpose "deploy" --scope command --server web-01,db-01 --expires-at 2027-01-15T10:00:00Z --wait

세션 생성과 활성 세션 지정을 한 번에:

bash
alpacon work-session create --purpose "deploy" --scope command --server web-01 --expires-in 2h --wait --use

비대화형 sudo를 위한 명령 패턴 사전 선언:

bash
alpacon work-session create --purpose "nginx hotfix" --scope sudo --server web-01 --expires-in 2h \
  --sudo "systemctl restart nginx,systemctl reload nginx" --sudo "tail -f /var/log/nginx/*.log"

서버에서 작업을 실행할 계정 지정:

bash
alpacon work-session create --purpose "restart nginx" --scope command,sudo --server web-01 --expires-in 1h --account root

세션은 pending(승인 대기) 상태로 시작하며 승인되면 사용할 수 있습니다. Superuser 본인의 요청은 자동으로 승인됩니다. 다만 AI 에이전트가 요청한 세션은 워크스페이스가 Advisory 모드인 경우를 제외하면 기본적으로 사람의 승인을 기다립니다. 자세한 내용은 수명 주기와 세션 요청하기를 참고하세요.

sudo 명령 패턴

--sudo 패턴은 세션이 대화형 MFA 프롬프트 없이 실행할 수 있는 권한 명령을 결정합니다. Alpacon은 다음 규칙으로 명령을 패턴과 매칭합니다.

  • 패턴은 권한 상승 대상 명령과 매칭되며, 이 명령에는 sudo 접두사가 포함되지 않습니다. Alpacon이 명령을 평가할 때 입력한 sudo는 이미 명령의 일부가 아니므로, sudo systemctl restart nginx는 systemctl restart nginx로 매칭됩니다. 패턴에는 sudo를 넣지 마세요. sudo apt-get update가 아니라 apt-get update를 등록합니다. sudo가 포함된 패턴은 절대 매칭되지 않습니다.
  • 전체 문자열이 일치해야 합니다. 명령 전체가 패턴 전체와 일치해야 합니다. *가 유일한 와일드카드로 임의의 텍스트와 일치하며, 그 외 glob이나 정규식 문법은 없습니다.
  • 복합 명령은 분리됩니다. 셸 연산자(&&, ||, ;, 파이프, 리다이렉션)로 연결된 입력은 하위 명령으로 나뉘며, 각 하위 명령이 최소 하나의 패턴과 일치해야 합니다.
  • 공백은 정규화되고 나머지는 정확히 일치해야 합니다. 연속된 공백은 매칭 전에 하나의 공백으로 합쳐집니다. 그 외에는 플래그, 인자 순서, 절대 경로까지 그대로 일치해야 합니다. apt-get install -y nginx는 apt-get install nginx와 일치하지 않고, /usr/bin/apt-get update는 apt-get update와 일치하지 않습니다.
패턴일치불일치
systemctl restart nginxsystemctl restart nginx (정확히 일치), sudo systemctl restart nginx (셸에 입력한 sudo는 매칭 대상 명령에 포함되지 않음)systemctl restart nginx.service
systemctl restart *systemctl restart nginx, systemctl restart php-fpmsystemctl status nginx
apt-get updateapt-get updateapt-get update && apt-get upgrade (apt-get upgrade도 등록하지 않은 경우)
tail -f /var/log/nginx/*.logtail -f /var/log/nginx/error.logtail -n 100 /var/log/nginx/error.log
docker compose *docker compose up -d, docker compose psdocker run nginx
최종 수정: