권한과 가드
내 PC에 셸 권한을 가진 에이전트를 남에게 열어 주는 법. 그리고 멈추는 것도 기능입니다.
내 PC에 셸 권한을 가진 에이전트는 챗봇과 위험 등급이 다르다. 그래서 제일 오래 걸린 게 에이전트 루프가 아니라 가드였다.
| 티어 | 어디서 | 할 수 있는 것 |
|---|---|---|
| 오너 | DM · 모든 채널 | 전권 — 셸 · 파일 · 스킬 |
| 조직 멤버 | 바인딩된 채널 | 그 조직 파일에 적힌 폴더만, 읽기 전용 |
| 손님 | 초대된 채널 | 허용 목록 폴더만. Bash · Skill 차단 |
읽기를 막으면 셸로 읽는다
손님 티어에서 Bash를 같이 막는 게 핵심이다. 파일 읽기 권한만 잠그고 셸을 열어 두면, 셸로 파일을 읽는다. 같은 이유로 스킬 실행과 하위 작업 생성도 막는다 — 간접 실행 경로가 하나라도 열려 있으면 직접 경로를 막은 의미가 없다.
여기서 실무적인 함정이 하나 있었다. 차단 규칙이 468개까지 늘어난다. 이걸 명령줄로 넘기면 셸의 명령줄 길이 한계에 걸려 실행 자체가 안 된다. 에러 메시지는 “명령줄이 너무 깁니다” 한 줄이라 원인을 짚기 어렵다. 지금은 설정 파일로 넘긴다.
그리고 매니페스트가 비어 있으면 전부 허용이 아니라 전부 차단이다. 실수로 파일을 비웠을 때 잠기는 쪽이 열리는 쪽보다 낫다.
조직은 파일 한 장이다
파일 하나 = 조직 하나. 그 안에 멤버, 바인딩된 채널, 읽을 수 있는 폴더, 쓸 수 있는 명령, 시간당 상한이 들어 있다.
해석 순서가 정해져 있다 — 오너 > 명시 멤버 > 채널 바인딩 > 무소속. 그리고 조직끼리는 격리되고, 조직 파일은 읽기 전용이다.
파일로 둔 이유는 손으로 열어 볼 수 있어야 하기 때문이다. 권한 설정이 데이터베이스나 명령 이력에만 있으면, “지금 이 사람이 뭘 볼 수 있나”에 답하려면 도구를 돌려야 한다. 파일이면 열어 보면 된다.
자격증명은 되돌리지 않고 알린다
설정 파일을 직접 고치면 되돌리고 오너에게 알린다.
절반만 적용된 자격증명이 아예 안 바꾼 것보다 나쁘기 때문이다. 반쯤 바뀐 상태로 도는 에이전트는 어느 계정으로 무엇을 했는지가 흐려진다.
이 가드에 내가 한 번 걸렸다. 토큰을 손으로 넣었는데 다음에 보니 사라져 있어서 “저장이 안 됐다”고 오진하고 한 시간을 썼다. 되돌릴 때 알림이 오는데 그걸 먼저 안 봤다. 가드가 잘 돌아서 생긴 혼란이라, 지금은 “사라졌으면 알림부터 확인”이 첫 단계다.
멈추는 것도 기능이다
긴 파이프라인을 스레드에서 재개할 때, Loki는 선택지와 그 대가를 먼저 보여주고 멈춘다. 승인해야 실행한다.
이 게이트에는 성질이 두 개 있다.
게이트는 두뇌를 부르지 않는다. 그래서 구독 한도가 바닥나 있어도 확인까지는 정상 동작한다. 한도가 없어서 재개를 못 하는 상황에서 재개 확인이 안 되면, 그건 두 번 막히는 것이다.
대기 상태는 디스크에 남는다. 처음엔 메모리에 15분만 들고 있었는데 첫 실사용에서 바로 깨졌다 — 물음 15:27, 답 16:53. 85분 뒤였다. 만료된 확인이 조용히 두뇌로 새어 들어갔고, 두뇌는 “수동으로 실행할까요?“라고 지어냈다.
15분이 짧아서 틀린 게 아니다. 재개는 한도 리셋을 기다렸다 하는 일이라 분 단위 수명이 현실과 안 맞았고, 워커 재기동에도 살아남아야 했다.
낡은 답의 위험은 시간으로 막지 않는다. 답이 왔을 때 선택지를 다시 계산해 물었을 때와 같은지 대조하고, 다르면 실행 대신 되묻는다. 만료된 것도 조용히 흘리지 않고 “만료됐다”고 알린다.
바깥으로 나가는 것
발행, push, 티켓 등록. 전부 준비까지는 자동으로 하고 멈춰서 사람을 기다린다.
기준이 하나다 — 이 기계 밖에 흔적이 남는가. 파일을 고치는 건 되돌릴 수 있고, 올라간 글은 되돌려도 본 사람이 있다.