이번 업데이트의 핵심은 세 가지입니다.
- 대시보드 보안 보기: 에이전트가 한 일과 거부된 명령, 거부 사유를 한 화면에서 봅니다. 월간 보고용 숫자를 감사 화면마다 모으지 않아도 됩니다.
- 거부 사유 전달: 규칙에 맞지 않아 거부되면 에이전트는 응답에서 그 이유를 받습니다. 승인자가 거절하면 에이전트는 승인자가 거절했다는 응답을 받고, MCP로 요청했다면 승인자가 남긴 이유도 함께 받습니다. 에이전트가 이유를 몰라 다른 방법을 추측하는 일이 줄어듭니다.
- 파일 실행 승인: 스크립트 요청을 실제로 실행될 파일 내용을 보고 승인합니다. 이름만 보고 승인하던 빈틈을 메웁니다.
AI 에이전트가 한 일과 명령이 막힌 이유를 한 화면에서 봅니다
이제 모든 워크스페이스에서 Dashboard 상단의 보기로 역할에 맞는 화면을 고를 수 있습니다.
- 운영: 내 세션, 승인 요청, 알림
- 관리: 승인 대기, 라이브 세션, 우회 접속
- 보안: 접근 통제 현황, AI 에이전트, 위협
지금까지는 매달 AI 에이전트 사용 현황을 보고하려면 여러 감사 화면을 오가며 숫자를 모아야 했습니다. 이제 보안 보기 한 화면에서 확인할 수 있습니다.
AI 에이전트 통제에서는 MCP, CLI, API 토큰, 서비스 토큰 등 명령이 들어온 경로별 건수와 에이전트별 거부율, 거부 사유를 볼 수 있습니다. 거부 사유는 허용되지 않음, 위험 판정, 승인 거절·응답 없음, 무결성·시스템 네 가지로 나뉩니다. 위 화면에서는 Claude Code가 보낸 명령 11건 중 3건을 승인자가 거절했습니다.
같은 화면에서 다음 내용도 함께 확인할 수 있습니다.
- 접근 통제 현황: 관리되는 자산, Alpacon을 거친 접속, 세션 분석, 확인된 우회 접속 네 가지 지표와 30일 추이
- sudo 권한: 어떤 정책으로 sudo 권한이 부여됐는지
- 계정·토큰 점검: 90일 동안 활동이 없는 계정, 만료가 다가오는 서비스 토큰
숫자를 누르면 그 기록 목록이 바로 열립니다. "지난달 에이전트 명령을 몇 건 막았고, 왜 막았나요?"라는 질문에 숫자와 기록으로 바로 답할 수 있습니다. 단, Free 플랜에서는 목록에 최근 7일 동안의 내 기록만 표시됩니다.
에이전트 이름은 에이전트가 스스로 밝힌 것이라, 화면에도 자기 신고로 표시됩니다. 대시보드는 모든 플랜에서 사용할 수 있고, 각 항목은 보는 사람이 그 기록을 볼 권한이 있을 때만 표시됩니다. 보기 선택은 고를 수 있는 보기가 둘 이상일 때 나타납니다.
명령이 거부되면 사람도 에이전트도 이유를 압니다
에이전트가 명령이 거부된 이유를 모르면, 추측해서 다른 방법을 시도할 수 있습니다. 이제 Alpacon CLI뿐 아니라 MCP 서버도 서버가 기록한 거부 사유를 에이전트에게 그대로 전달합니다.
규칙에 맞지 않아 바로 거부되는 명령
예를 들어 Claude Code가 Work Session에서 승인받지 않은 계정(root)으로 명령을 실행하려 하자, 요청이 다음 사유와 함께 바로 거부됐습니다.
reason : the command runs as an account the session was not approved for; a session runs only as the account named when it was created
required scope: command
target server : prod-web-01-demo
AI 에이전트의 Work Session은 승인받은 계정으로만 실행됩니다. 명령, Websh, 에디터, WebFTP 중 어떤 경로로 요청해도 마찬가지입니다.
사람의 승인이 필요한 명령
사람의 승인이 필요한 명령은 바로 실행되지 않고 보류됩니다. sudo systemctl restart nginx를 예로 들면 다음 순서로 진행됩니다.
1. 에이전트는 명령이 보류됐다는 안내를 받습니다.
Warning: Approval required—this command is held for human approval in the Alpacon console (web). It runs automatically once approved; pass --wait (or --wait-approval DURATION for a longer wait) to block until then.
이 안내는 사람의 승인을 기다리라는 내용일 뿐, 에이전트가 스스로 권한을 넓히는 방법은 알려주지 않습니다. 이렇게 보류된 명령은 승인되면 실행됩니다. CLI가 승인 대기(종료 코드 4)로 끝나면서 승인되면 실행된다는 안내가 없으면, 승인된 뒤 명령을 다시 실행하거나 처음 요청할 때 --wait를 붙여야 합니다.
2. 사람은 AI 판단을 보고 결정합니다.
요청은 Execution > Pending approvals의 결정 패널에 표시됩니다. AI 검사가 위험하다고 본 명령이면 그 판단이 함께 표시되고, 사람은 이를 보고 승인하거나 거절합니다.
3. 에이전트는 거절됐다는 응답을 받습니다.
Error: command <command-id> was rejected: an approver rejected it (rejection_cause: approval_rejected, rejection_gate: approval).
에이전트는 명령이 실행되지 않았고, 승인자가 거절했다는 것을 알게 됩니다. MCP로 요청한 에이전트는 승인자가 남긴 이유도 함께 받습니다(alpacon-mcp 1.25.0 이상). Alpacon CLI는 이유를 콘솔에서 확인하라고 안내합니다.
4. 기록에는 거절 이유가 남습니다.
거절된 명령은 Audit > Events > Commands에 남습니다. 열어 보면 거절 이유와 함께 다음에 할 일이 표시됩니다.
개인 API 토큰 상세 화면의 거절된 명령에는 그 토큰으로 보냈지만 실행 전에 거부된 명령이 사유와 함께 최신순으로 표시됩니다. 거부 코드가 무엇을 뜻하는지는 문서의 Access rules 레퍼런스에서 확인할 수 있습니다.
스크립트는 이름이 아니라 실행될 내용을 보고 승인합니다
에이전트가 스크립트를 실행하는 방법은 두 가지입니다. 서버에 있는 스크립트를 bash /opt/deploy.sh처럼 명령으로 실행하거나, 스크립트 파일 자체를 Alpacon에 올려 실행을 요청하는 파일 실행입니다.
명령으로 실행하면 Alpacon은 명령 한 줄만 받습니다. 그래서 승인자는 그동안 스크립트 이름만 보고 승인해야 했고, 안에 무엇이 들어 있는지는 알 수 없었습니다. 이제 이런 명령 요청의 결정 패널(Execution > Pending approvals)에는 콘솔 문구 그대로 다음 안내가 표시됩니다.
스크립트를 실행하는 명령이지만 내용은 확인할 수 없어요. 요청자가 파일 실행으로 다시 요청하면 볼 수 있어요.
승인자는 내용을 모른 채 승인하지 않고, 요청을 거절한 뒤 파일 실행으로 다시 요청하도록 할 수 있습니다. 에이전트는 Alpacon CLI의 alpacon exec --file … --upload나 MCP의 execute_file 한 번으로 파일을 올리고 실행을 요청합니다.
파일 실행 요청이 승인 대기로 넘어오면, 승인자는 결정 패널에서 실행할 파일의 경로와 실행 계정, 그 파일의 SHA-256 값을 확인합니다.
그 아래에는 AI 검사의 요약과 함께 스크립트 전체가 줄 단위로 표시됩니다. 승인은 이 서버에서, 이 계정으로, 이 인자로 이 파일을 실행하는 것만 허용합니다. Alpacon은 실행 전에 파일의 SHA-256 값을 확인하므로, 파일이 한 글자라도 바뀌면 다시 승인을 받아야 합니다. 스크립트가 불러오는 다른 파일은 승인 범위에 들어가지 않습니다.
실행 전에 승인자가 내용을 보는 것은 승인 대기로 넘어온 파일 실행입니다. 기본 규칙에서는 AI 검사가 위험하다고 본 스크립트가 승인 대기로 넘어오고, 위험도가 낮은 스크립트는 바로 실행됩니다. 바로 실행된 스크립트도 그 내용은 나중에 명령 상세에서 확인할 수 있습니다. 위험도가 낮은 스크립트도 실행 전에 내용을 확인하려면 Admin > Policies > Access rules에 규칙을 추가하세요.
- 파일 실행을 쓰려면 AI 검사가 켜져 있어야 하고, 대상 서버의 Alpamon이 2.8.3 이상이어야 합니다.
- 같은 명령을 여러 번 승인했다면, 파일 실행으로 다시 요청할 경우 규칙에 따라 ‘항상 허용’으로 둘 수 있다는 안내도 표시됩니다.
- 상시 승인된 파일은
Audit > Approved file executions에서 확인합니다.
그 밖의 업데이트
- 메일로 발송되는 세션 위험도 분석은 워크스페이스의 Slack 채널에도 함께 올라가고, 버튼을 누르면 분석 결과로 바로 이동합니다. Essentials 플랜 이상에서 제공됩니다.
- 서버 목록에서 각 서버에 어떤 종류의 알림이 있는지 바로 보이고, 오프라인 서버는 마지막 연결 시각이 표시됩니다. 내가 관리하는 서버만 걸러 볼 수도 있습니다.
- 승인 권한이 없는 멤버도 대시보드에서 자기 승인 요청의 상태를 볼 수 있고, AI 검사를 쓸 수 없어 승인 대기로 넘어간 요청은 그 이유가 표시됩니다.
- 클라우드 계정에 원격 명령 권한이 없으면 Alpamon 설치가 멈추고 그 이유가 표시됩니다. 권한을 고친 뒤 다시 확인할 수 있습니다.
- 문서를 작업 기준으로 다시 구성했고, 모든 페이지를 Markdown으로도 제공해 에이전트가 직접 읽을 수 있습니다.
HTTPS_PROXY가 설정된 서버에서는 Alpamon이 그 프록시를 거쳐 Alpacon에 연결합니다.HTTP_PROXY는 일반 HTTP 주소에만 적용되므로 Alpacon 연결에는 쓰이지 않습니다. Alpamon 2.8.5 이상이 필요합니다.
동작 변경 사항
- 새로 발급하는 개인 API 토큰에는
*같은 와일드카드로도 명령 실행이나 파일 전송 권한을 줄 수 없습니다. 기존 토큰은 그대로이며, 자동화에는 서비스 토큰을 쓰세요. - AI 에이전트의 Work Session은 명령, Websh, 에디터, WebFTP 모두에서 승인받은 계정으로만 실행됩니다.
- 스스로 승인할 수 있는 요청자에게 먼저 알림이 가고, 다른 승인자에게는 10분 뒤에 갑니다.
- Free 플랜에서는 Work Session을 다른 사람에게 할당할 수 없습니다.
- MCP는 타임아웃이나 연결 끊김 뒤에 명령을 다시 보내지 않으며, 명령이 실행됐을 수 있으니
list_commands로 확인하라는 오류를 반환합니다. - API로 직접 보내는 파일 전송과 Linux 에디터 요청은 group이 지정되지 않았거나, 계정이 지정된 group에 속하지 않으면 거부됩니다. Alpacon을 통한 요청은 영향이 없습니다. Alpamon 2.8.5 이상이 필요합니다.
