변경 가능한 데이터베이스 로그는 증거가 아니다 — 쓰기 권한이 있는 사람은 누구든 이를 변경할 수 있고, 수정 후에도 테이블은 수정 전과 똑같이 신뢰할 만해 보인다. 변경 불가능한 감사 추적은 다르다: 해시로 체인 연결되고 독립적으로 검증 가능한 원장으로, 각 이벤트가 이전 이벤트와 연결되어 있어 변조가 단순히 억제되는 것이 아니라 감지 가능해진다. 이것이 기술적으로 무엇을 의미하는지, 그리고 이것이 AI 에이전트에 구체적으로 어떻게 적용되는지 설명한다.
AI 에이전트를 위한 변경 불가능한 감사 추적이란, 각 항목의 암호학적 해시가 이전 항목의 해시를 포함하는, 추가 전용이며 해시로 체인 연결된 이벤트 로그이다. 따라서 시퀀스 어디에서든 수정, 삭제, 삽입이 발생하면 체인이 끊어지고 독립적이고 수학적으로 감지 가능해진다. 이는 정책에 의해서만 편집으로부터 보호되는 데이터베이스가 아니다 — 변조가 스스로 피할 수 없는 흔적을 남기는 구조이다.
모든 프로덕션 시스템에는 이미 로그가 있다. 애플리케이션 로그, 요청 추적, 그리고 occurred_at 컬럼과 이를 발생시킨 에이전트로의 외래 키를 가진 Postgres 테이블이 있다. 문제는 이런 것들이 존재하지 않는다는 것이 아니라, 그 자체의 무결성에 대해 아무것도 증명하지 못한다는 것이다.
이 중 어느 것도 악의를 필요로 하지 않는다 — 일반적인 운영상의 데이터베이스 접근만으로 충분하다. 변경 가능한 로그는 하나의 주장일 뿐이다: 이런 일이 있었다, 우리를 믿어달라는 식이다. 이메일 발송, 자금 이동, 고객 데이터 접근처럼 실제 행동을 수행하는 자율 에이전트의 경우, 누군가 결국 “이 에이전트가 실제로 무엇을 했고, 그 기록이 정확하다는 것을 어떻게 아는가?”라고 물을 때 단순한 주장만으로는 충분하지 않다.
이 메커니즘은 생각보다 단순하다. 원장의 각 이벤트에는 content_hash가 있는데 — 이 이벤트 내용의 암호학적 해시로서 — 이벤트 자체의 데이터와, 바로 이전 항목을 가리키는 previous_event_hash을 기반으로 계산된다. 즉, 각 이벤트의 해시는 그 시점까지의 체인 전체 이력에 의존하며, 이벤트 자체에만 의존하지 않는다.
새 이벤트는 체인 끝에 추가된다. 이 설계에는 업데이트나 삭제 작업이 존재하지 않는다 — 원장은 오직 늘어나기만 한다.
이벤트 N의 해시는 이벤트 N−1의 해시를 포함한다. 이벤트 N−1을 나중에라도 어떤 식으로든 변경하면, 이벤트 N이 이전 항목으로 기록한 것과 다른 해시가 생성된다.
검증 과정은 모든 항목을 순회하며, 내용과 기록된 이전 항목으로부터 예상 해시를 다시 계산하여 저장된 값과 일치하는지 확인한다. 어느 한 곳에서라도 불일치가 발견되면 그 지점 이후의 체인 전체가 깨진다.
이는 블록체인과 Git 커밋 이력의 배경에 있는 것과 동일한 구조적 발상——콘텐츠 주소 방식으로 연결된 참조——을, 통화 원장이나 코드베이스가 아니라 감사 로그에 적용한 것이다.
VeriSwarm Vault는 추가 전용이며 해시로 체인 연결된 원장으로, Max 요금제에서 이용할 수 있다. 스위트를 통해 처리되는 모든 이벤트 — 신뢰 결정, Guard 스캔 결과, Passport 검증, 에이전트 라이프사이클 변경 — 는 별도의 로깅 호출 없이 자동으로 여기에 기록된다. 각 원장 항목에는 다음이 기록된다:
event_id, actor_type / actor_id, subject_type / subject_idevent_type, source, occurred_at, ingested_atcontent_hash — 이 이벤트의 암호학적 해시previous_event_hash — 바로 이전 항목의 해시무결성은 GET /v1/suite/vault/verify확인할 수 있다. 이 엔드포인트는 체인을 순회하며 확인된 항목 수와 함께 무결성 여부를 반환한다. 검증 실패는 데이터 품질 문제가 아니라 보안 사고로 취급되는데, 이는 체인이 깨졌다는 것이 곧 원장이 증명해야 할 것을 더 이상 증명하지 못한다는 것을 의미하기 때문이다. 원장 데이터는 내보내기도 가능하며(JSON 또는 CSV, 이벤트 유형·행위자·에이전트별로 필터링 가능), 오프라인 검증을 위한 체크섬도 함께 제공된다. 필드 수준의 전체 세부사항은 Vault 문서.
지금 가장 명확한 구체적 적용 사례는 EU AI Act이다. 제12조는 고위험 AI 시스템이 위험 상황을 식별할 수 있고 제26조의 6개월 보관 기간을 견딜 수 있는 형태로, 시스템 수명 전체에 걸쳐 이벤트를 자동으로 기록할 것을 요구한다. 해시로 체인 연결된 원장은 “로그가 있습니다”라는 말을, 규제 기관이나 감사관이 실제로 신뢰할 수 있는 증거로 바꿔준다. 이 요구사항, 그리고 Vault가 이를 정확히 어떻게 충족하는지는 AI 에이전트를 위한 EU AI Act 제12조 로깅에서 다룬다. 변경 불가능한 감사 추적은 일반적인 메커니즘이며, 제12조는 그것을 갖춰야 할 구체적이고 현재 시행 가능한 이유 중 하나일 뿐이다.
불변성이란 스토리지 계층이 물리적으로 쓰기를 막는다는 뜻이 아니다 — 대부분의 데이터베이스는 충분한 접근 권한이 있는 사람이라면 기술적으로 편집할 수 있다. 이는 변조가 감지 가능하다는 것을 의미한다. 해시로 체인 연결된 원장에서는 각 이벤트의 콘텐츠 해시가 이전 이벤트의 해시를 포함하므로, 각 항목은 암호학적으로 이전 항목과 연결된다. 체인 어디에서든 레코드를 변경, 삭제, 삽입하면 그 지점 이후에 계산되는 모든 해시가 더 이상 일치하지 않게 된다 — 변조는 숨겨진 채로 남지 않고 검증 시 즉시 드러난다.
일반 로그 — 애플리케이션 로그, Postgres 감사 테이블, CloudWatch 항목 — 는 이벤트가 발생했다는 것만 기록한다. 그 기록이 이후 변경되지 않았다는 것은 증명하지 못한다. 그 테이블에 쓰기 권한이 있는 사람이라면 누구든(엔지니어, 손상된 자격 증명, 자동화된 정리 스크립트) 행을 편집하거나 삭제할 수 있으며, 테이블은 이전과 똑같이 신뢰할 만해 보인다. 해시로 체인 연결된 원장은 이 틈을 메운다: 무결성은 주장되는 것이 아니라, 체인 검증을 통해 수학적으로 확인 가능한 것이 된다.
검증은 첫 번째 이벤트부터 원장을 순서대로 순회하며, 각 항목의 예상 해시를 그 내용과 기록된 이전 항목의 해시로부터 다시 계산하여 저장된 값과 일치하는지 확인한다. VeriSwarm Vault는 이를 GET /v1/suite/vault/verify로 노출하며, 확인된 항목 수와 함께 ok: true 또는 false를 반환한다. false 결과는 정상적인 운영 밖에서 레코드가 변경, 삭제, 또는 삽입되었음을 의미한다 — VeriSwarm의 권고는 이를 데이터 품질 버그가 아니라 보안 사고로 취급하라는 것이다.
VeriSwarm Vault에서는 스위트를 통해 기록되는 모든 이벤트 — 신뢰 결정(allow/review/deny), Guard 보안 스캔 결과, Passport 신원 검증, 에이전트 라이프사이클 변경(kill switch, 위임 부여) — 이 Vault가 활성화되는 즉시 자동으로 기록된다. 각 항목에는 행위자, 대상, 이벤트 유형, 타임스탬프, 페이로드, 그리고 체인 연결용 해시가 담긴다. 별도의 로깅 호출은 필요하지 않다. 이는 에이전트가 플랫폼을 통해 정상적으로 동작하는 데 따르는 부수적인 결과일 뿐이다.
규제는 이를 원하는 이유 중 하나이며 — EU AI Act 제12조의 기록 보관 요구사항이 직접적인 예다 — 하지만 그 근본적인 필요성은 더 넓다. 의미 있는 자율성(도구 접근, 고객 대면 행동, 금융 또는 PII 처리)을 지닌 모든 에이전트는, 언젠가 누군가가 “이 에이전트가 실제로 무엇을 했고, 그 기록을 신뢰할 수 있는가?”라고 묻는 순간을 만들어낸다. 변경 가능한 로그는 이에 주장으로 답한다. 변경 불가능하고 독립적으로 검증 가능한 로그는 이에 증거로 답한다.
아니다 — 해시 체인 원장과 체인 검증 엔드포인트를 포함한 Vault는 Max 요금제 기능이다. Gate의 무료 요금제는 신뢰 점수 산정과 이벤트 수집을 포함하지만, 변경 불가능한 감사 원장 자체는 유료 기능이다. 현재 요금제 세부사항은 /pricing을 참조하라.
Vault는 Max 요금제 기능이다 — 해시 체인 원장, 체인 검증, 내보내기는 무료 요금제에 포함되지 않는다. 전체 기술 레퍼런스를 읽거나, 이것이 특정 규제와 어떻게 연결되는지 확인해 보라.