체크포인트와 `/rollback` — 파괴적인 작업을 위한 안전망
Credential Pools — Rotate API Keys — easy-to-understand guide based on official docs
체크포인트와 /rollback — 파괴적인 작업을 위한 안전망
AI 에이전트가 rm -rf 같은 명령어를 실행하거나 파일을 덮어쓰는 걸 보면서 “정말 뭘 하는지 알고 있는 걸까?“라고 생각해본 적 있나요? Hermes Agent v2에서는 이제 제대로 된 안전망 — 체크포인트 — 을 제공합니다. 위험한 작업 전에 프로젝트 스냅샷을 찍어두고, 단 하나의 명령어로 복원할 수 있죠.
가장 좋은 점은? 완전히 옵트인(opt-in) 방식이라는 겁니다. 대부분의 사용자는 /rollback을 건드릴 일이 없고, shadow-store 저장 공간이 시간이 지나면서 커질 수 있기 때문에 기본값은 꺼져 있습니다. 하지만 필요할 때는 생명의 은인이 되어줍니다.
체크포인트 활성화하기
세션별로 간단한 플래그로 체크포인트를 활성화할 수 있습니다:
hermes chat --checkpoints
또는 ~/.hermes/config.yaml에서 전역으로 활성화할 수도 있습니다:
checkpoints:
enabled: true
끝입니다. 활성화하면 Hermes가 파괴적인 작업이 발생하기 전에 자동으로 프로젝트 스냅샷을 찍습니다.
체크포인트가 생성되는 조건
Hermes는 다음 상황 전에 자동으로 체크포인트를 생성합니다:
- 파일 도구 —
write_file및patch - 파괴적인 터미널 명령어 —
rm,rmdir,cp,install,mv,sed -i,truncate,dd,shred, 출력 리다이렉트(>), 그리고git reset/clean/checkout
에이전트는 턴마다 디렉토리당 최대 1개의 체크포인트를 생성하므로, 오래 실행되는 세션에서도 스냅샷이 남발되어 저장 공간을 낭비하지 않습니다.
내부 동작 방식
이 모든 마법은 내부 체크포인트 매니저(Checkpoint Manager) 를 통해 이루어집니다. 이 매니저는 ~/.hermes/checkpoints/store/에 단일 공유 shadow git 저장소를 유지합니다. 실제 프로젝트의 .git은 절대 건드리지 않으며, 모든 것은 이 별도의 저장소에 보관됩니다.
동작 흐름은 다음과 같습니다:
- Hermes가 작업 트리의 파일을 수정하려는 도구를 감지합니다.
- 대화 턴당(디렉토리별) 합리적인 프로젝트 루트를 결정합니다.
- 공유 shadow 저장소를 초기화하거나 재사용합니다.
- 프로젝트별 인덱스에 파일을 스테이징하고, 트리를 구성한 다음 프로젝트별 ref(
refs/hermes/<project-hash>)에 커밋합니다.
모든 프로젝트가 동일한 저장소를 공유하므로, git의 콘텐츠 주소 지정 객체 데이터베이스가 프로젝트 간 및 턴 간 중복을 제거합니다 — 즉, 동일한 콘텐츠에 대해 저장 공간을 낭비하지 않습니다.
세션에서 /rollback 사용하기
체크포인트가 활성화된 세션에 있다면, 다음과 같은 슬래시 명령어를 사용할 수 있습니다:
| 명령어 | 설명 |
|---|---|
/rollback |
변경 통계와 함께 모든 체크포인트 나열 |
/rollback <N> |
체크포인트 N으로 복원, 직접 수정한 내용은 유지 (마지막 채팅 턴도 실행 취소) |
/rollback <N> --all |
전체 복원 — 직접 수정한 내용도 덮어씀 |
/rollback diff <N> |
체크포인트 N과 현재 상태 간의 차이점 미리보기 |
/rollback <N> <file> |
체크포인트 N에서 단일 파일 복원 |
/rollback을 실행하면 다음과 같은 형식의 목록이 표시됩니다:
📸 Checkpoints for /path/to/project:
1. 4270a8c 2026-03-16 04:36 before patch (1 file, +1/-0)
2. eaf4c1f 2026-03-16 04:35 before write_file
3. b3f9d2e 2026-03-16 04:34 before terminal: sed -i s/old/new/ config.py (1 file, +1/-1)
셸에서 저장소 관리하기
세션 밖에서는 CLI 명령어로 체크포인트 저장소를 확인하고 관리할 수 있습니다:
| 명령어 | 설명 |
|---|---|
hermes checkpoints |
전체 크기, 프로젝트 수, 프로젝트별 세부 정보 표시 |
hermes checkpoints status |
기본 checkpoints 명령어와 동일 |
hermes checkpoints list |
status의 별칭 |
hermes checkpoints prune |
강제 정리: 고아/오래된 항목 삭제, GC, 크기 제한 적용 |
hermes checkpoints clear |
전체 체크포인트 베이스 삭제 (확인 메시지 표시) |
hermes checkpoints clear-legacy |
v1 마이그레이션의 legacy-* 아카이브만 삭제 |
설정 옵션
~/.hermes/config.yaml에서 체크포인트 동작을 세밀하게 조정할 수 있습니다:
checkpoints:
enabled: false # 마스터 스위치 (기본값: false — 옵트인)
max_snapshots: 20 # 프로젝트당 최대 체크포인트 수
max_total_size_mb: 500 # 전체 저장소 크기 하드 리밋
max_file_size_mb: 10 # 이 크기보다 큰 단일 파일은 건너뜀
auto_prune: true # 시작 시 정리 실행 (기본값: 켜짐)
retention_days: 7 # 이 기간보다 오래된 항목 삭제
min_interval_hours: 24 # 자동 정리 사이 최소 시간 간격
중요한 참고 사항: 자동 정리(auto-prune)는 “고아(orphan)” 항목(작업 디렉토리를 찾을 수 없는 경우)을 절대 삭제하지 않습니다. 시작 시 작업 디렉토리가 없다는 것은 프로젝트가 삭제되었거나, 아직 마운트되지 않은 외장 볼륨이나 네트워크 공유일 수 있기 때문입니다. 고아 항목 정리는 확인 메시지를 먼저 표시하는 명시적인 hermes checkpoints prune 명령어로만 수행됩니다.
모든 기능을 비활성화하려면:
checkpoints:
enabled: false
auto_prune: false
enabled: false인 경우 체크포인트 매니저는 아무 작업도 하지 않으며 git 작업을 시도하지 않습니다. auto_prune: false인 경우 수동으로 hermes checkpoints prune을 실행할 때까지 저장소는 계속 커집니다.
마무리
체크포인트를 사용하면 Hermes가 자유롭게 작업하도록 맡겨도 언제든지 알려진 정상 상태로 롤백할 수 있다는 확신을 얻을 수 있습니다. 리팩토링을 실험하거나, 위험한 명령어를 테스트하거나, 그냥 마음의 평화를 원할 때 /rollback 명령어가 여러분을 지켜줍니다.
다음 세션에서 한번 사용해 보세요 — 작업 흐름의 필수 요소가 될 수도 있습니다.
📖 공식 문서
この記事は Hermes Agent の공식 문서に基づいています:공식 문서 › user-guide/features/credential-pools