실험은 버릴 수 있는 환경에서 시작한다
전용 컨테이너나 권한이 낮은 사용자 계정에서 실행하고, 호스트 홈 디렉터리와 운영 소켓을 마운트하지 않습니다. 필요한 저장소 하나만 읽고 쓸 수 있게 하며 운영 키, 클라우드 자격 증명, 배포 권한은 넣지 않습니다. 네트워크 목적지도 업무에 필요한 범위로 제한합니다.
container root가 host root와 같지 않더라도 Docker socket이나 넓은 bind mount가 있으면 탈출 효과를 낼 수 있습니다. read-only base image, ephemeral workspace, CPU, memory, process, disk 한도와 seccomp 같은 실행 제한을 검토합니다. 작업 결과는 승인된 diff, artifact만 밖으로 내보냅니다.
repository의 issue, web page, tool output도 Agent에게는 신뢰할 수 없는 입력입니다. “secret을 출력하라”는 문장을 화면에서 읽어도 정책을 바꾸지 못하게 system instruction과 외부 content를 분리합니다. egress allowlist와 secret 부재가 prompt injection의 피해 범위를 줄이는 실제 방어입니다.
토큰은 짧게 유지하고 회전, 폐기 절차를 실제로 시험합니다. 허용되지 않은 사용자의 메시지, 재생된 버튼, 긴 출력, 연결 끊김, 동시에 온 두 명령을 넣어 예상대로 거부되거나 직렬화되는지 확인해야 합니다. 비용과 반복 횟수 상한도 로컬 에이전트에 그대로 적용됩니다.
연결이 끊겼을 때 daemon이 실행을 계속할지 멈출지는 업무별 정책입니다. 읽기 전용 test는 계속할 수 있어도 승인 대기나 write 단계에서는 pause가 안전합니다. reconnect 뒤 buffered message의 순서를 확인하고 이미 끝난 command가 다시 stdin으로 들어가지 않게 합니다.
kill switch는 messenger 계정에만 의존하지 않고 host 운영자가 network와 daemon process를 즉시 끊을 수 있어야 합니다. 종료가 child process tree와 tmux session까지 전달되는지 시험합니다. 비상 중단 뒤 uncommitted diff, 열린 connection과 audit log를 보존해 복구 절차를 이어갑니다.