모든 글
에이전트 운영2026-09-097 min read

이 에이전트가 내 API 키를 읽을 수 있나

Meta Muse의 자격증명 설계(에이전트가 못 읽는 저장소·일회용 카드·승인 게이트·작업 기록)를 로컬 에이전트에 대보면 대부분 정반대다. 스킬 파일로는 못 막고 경계는 OS에서 그어야 한다.

오늘 자기 에이전트에 던질 질문 하나. "이 에이전트가 내 API 키를 읽을 수 있나?"

대부분 답은 "그렇다"일 것이다. 그리고 그건 결정한 결과가 아니라 기본값이라 그렇게 된 것이다. 어제 공개된 Meta Muse의 설계에 베낄 부분이 있어서 적는다.

Muse가 그은 네 개의 경계

Meta가 개인 AI 에이전트 Muse를 공개했다. 예약·구매·문서 작성을 대신 수행하고, 앱을 닫아도 백그라운드로 계속 돈다. 대기업 제품 출시 자체는 여기서 다룰 소재가 아닌데, 발표에 포함된 자격증명 설계는 다르다.

로그인 정보는 에이전트가 읽을 수 없는 보안 자격 증명 저장소에 보관하고, 결제에는 일회용 카드 번호를 사용해 판매자와 에이전트 모두 실제 카드 번호를 보지 못하게 한다.

(원문)

정리하면 네 가지다.

  1. 자격증명을 에이전트가 읽을 수 없는 곳에 둔다
  2. 결제 수단을 일회용으로 발급해 피해 범위를 한 건으로 묶는다
  3. 메시지 전송·구매·앱 간 정보 공유 앞에 승인 게이트를 둔다
  4. 수행한 작업과 예정된 작업을 작업 기록으로 남긴다

확인된 것: 위는 Meta의 발표 내용이다. 확인하지 못한 것: 실제 구현이 발표대로인지에 대한 제3자 검증본은 보지 못했다. 벤더 발표를 그대로 믿을 이유는 없다. 다만 설계 원칙 자체는 벤더를 믿지 않아도 베낄 수 있다.

왜 하필 지금인가

TechCrunch가 9월 8일 보도한 내용이 이 네 가지의 필요성을 그대로 설명한다. 인포스틸러 악성코드가 PC에서 Claude 로그인 세션을 훔쳐 남의 계정 사용량을 태우고 있고, Anthropic이 이를 확인했다. 기사가 지적한 더 큰 문제는 항목별 사용량 추적이 없어 이 도둑질이 수개월간 탐지되지 않았을 수 있다는 것이다.

(TechCrunch)

로컬에서 에이전트를 굴리는 우리 대부분의 상태를 위 네 항목에 대보면 이렇다.

  1. 키가 평문 .env에 있고, 에이전트 프로세스가 그 파일을 읽을 수 있는 디렉터리에서 돈다
  2. 결제 수단이 장기 키 하나에 묶여 있어 피해 범위에 상한이 없다
  3. 승인 게이트가 있더라도 --yes 계열 플래그로 대부분 열려 있다
  4. 무엇을 언제 했는지 기록이 없거나, 있어도 컨텍스트 압축 과정에서 사라진다

여기서 내 판단. 4번이 제일 과소평가된다. 앞의 세 개가 뚫렸는지 아는 유일한 방법이 4번이기 때문이다. 그리고 에이전트를 24시간 돌리는 사람에게는 기사가 제시한 탐지 신호("안 쓰는데 토큰이 준다")가 구조적으로 보이지 않는다. 상시 소비가 평상시 모습이라서다. 이 부류가 이 공격에 가장 눈이 먼 사용자다.

스킬 파일로는 못 막는다

같은 날 올라온 i-have-adhd는 다른 얘기지만 같이 볼 만하다. 코딩 에이전트가 핵심 답을 긴 설명 속에 묻지 않도록 출력 형식을 바꾸는 스킬이다. "좋은 질문입니다!" 같은 서두를 없애고, 행동을 먼저, 여러 단계는 번호로, 목록은 5개까지 — 열 개 규칙으로 응답을 통제한다. SKILL.md 파일 하나다.

(원문 · SKILL.md · MIT)

여기서 잘못 이어붙이기 쉽다. "행동을 파일로 규정할 수 있으니 권한 경계도 파일로 쓰면 되겠네"는 틀린 결론이다.

스킬 파일은 습관을 바꾼다. 권한은 못 막는다. SKILL.md에 "자격증명을 읽지 마라"라고 적어도 프로세스가 그 파일을 읽을 수 있으면 읽힌다. 프롬프트 인젝션 한 줄이면 그 규칙은 지나간다. 경계는 OS에서 그어야 한다 — 파일 권한, 별도 계정, 키체인, 컨테이너. 파일에 적는 건 경계가 아니라 안내문이다.

오늘 할 세 가지

  1. ~/.claude, .env, 에이전트 작업 디렉터리의 권한을 확인한다. 평문 키가 에이전트가 읽는 경로 안에 있으면 밖으로 뺀다. macOS는 키체인이 있다.
  2. 결제 수단에 상한을 건다. 일회용 카드가 어려우면 최소한 사용량 알림이라도 건다. 상한 없는 장기 키는 피해 규모가 발견 시점까지 비례해 커진다.
  3. 에이전트 실행 시각을 남기는 로그를 만든다. 벤더 사용량 그래프와 대조할 게 없으면 도난당해도 증명할 방법이 없다.

모르는 것: 대부분의 벤더가 시간대별 사용량을 어디까지 노출하는지 확인하지 못했다. 3번의 실효성은 거기서 갈린다. 확인하면 따로 쓰겠다.

댓글

불러오는 중...