에이전트는 파일을 실제로 바꾸는데, 가끔은 엉뚱한 파일을 바꿉니다. 고장 나서가 아니라 여러분이 생각한 것과 다르게 과제를 이해했기 때문입니다. 좋은 소식은 Claude Code가 코드 스냅샷을 알아서 만들어 준다는 것입니다. 여러분이 손댈 필요가 없고, 잘못된 시도는 몇 번 누르는 것만으로 되돌릴 수 있습니다.

더 안 좋은 소식도 있습니다. 이 스냅샷에는 경계가 있습니다. 에이전트가 파일에 직접 적어 넣는 것은 모두 보호된 영역 안에서 일어나고, 거기서는 되돌릴 수 있습니다. 그 영역을 벗어나는 것은 울타리 밖입니다. 스냅샷은 그걸 보지 못했고, 되돌리지도 못합니다. 울타리가 어디 있는지는 무언가 사라진 그 순간이 아니라 미리 알아 두는 편이 좋습니다.
아래에서 되돌리기가 어떻게 동작하는지, 울타리는 어디에 있는지, 얼마나 오래 유지되는지, 그리고 울타리 밖에 남은 것은 무엇으로 메워야 하는지 살펴봅니다.
checkpoint란 무엇인가
Checkpoint는 에이전트가 손대기 직전, 곧 수정하려는 파일의 스냅샷입니다. 프로젝트 백업도 아니고 버전 관리 기록도 아닙니다. 현재 세션, 즉 여러분과 에이전트의 대화 안에서만 쓸 수 있는 작업용 복원 지점입니다.
이 섹션에서 꼭 기억할 한 가지가 있습니다. 스냅샷은 여러분이 메시지를 보낼 때마다 자동으로 만들어집니다. 여러분이 직접 만들거나 설정할 필요도 없고, 누르는 걸 깜빡할 일도 없습니다. 메시지를 보낸 순간 이미 지점이 생깁니다.
- 사용자 메시지
- 코드 스냅샷
- 에이전트 수정
- 다음 메시지
- 새 스냅샷
순서를 눈여겨보세요. 스냅샷이 먼저고 수정은 그다음입니다. 그래서 어느 지점으로 돌아간다는 것은 "이 메시지 이전의 코드로 되돌려 달라"는 뜻이 됩니다. 여러분이 고르는 것은 시각이 아니라 여러분이 보낸 구체적인 메시지 하나이고, 그 뒤의 모든 것을 취소하게 됩니다.
앞으로 이해하기 쉽도록 한 가지만 더 짚겠습니다. Checkpoint는 코드에 관한 것입니다. Claude Code는 대화도 되돌릴 수 있지만, 이는 메뉴에서 따로 선택하는 항목입니다. 코드와 대화를 함께 되돌릴지 따로 되돌릴지는 여러분이 정합니다.
되돌리기 메뉴를 여는 법
여는 방법은 두 가지이고, 결과는 같습니다.
- 입력창에
/rewind명령을 입력합니다. 익숙한 별칭인/undo와/checkpoint도 있습니다.![]()
- 입력창이 비어 있으면
EscEsc키를 누릅니다.

입력창에 텍스트가 남아 있었을 가능성이 큽니다. 그럴 때는 첫 번째 Esc Esc가 입력한 내용을 지우기만 하고 메뉴는 나타나지 않습니다. 텍스트가 사라진 것은 아닙니다. 입력 기록으로 넘어갈 뿐이라 위쪽 화살표 키로 다시 불러올 수 있습니다. 이제 빈 줄에서 Esc Esc를 한 번 더 누르면 메뉴가 열립니다.
열리는 것은 이 세션에서 보낸 메시지 목록입니다. 파일 목록도 아니고 시간축도 아닙니다. 여러분이 보낸 메시지 하나하나입니다. 일이 잘못되기 시작한 그 지점을 고르면 됩니다.

예외 상황도 있습니다. 같은 에이전트를 실행한 채로 이전에 /clear를 실행했다면, 최신 버전에서는 목록 맨 위에 항목이 하나 더 나타납니다. 이 항목은 clear 이전의 대화로 되돌립니다. 보시다시피 clear는 아무것도 완전히 지우지 않습니다.
메뉴가 제공하는 것
지점을 고르면 에이전트가 정확히 무엇을 할지 물어봅니다. 선택지는 여섯 가지입니다.
| 메뉴 항목 | 동작 |
|---|---|
Restore code and conversation | 선택한 지점으로 코드와 대화를 모두 되돌립니다 |
Restore conversation | 대화만 되돌리고 파일은 그대로 둡니다 |
Restore code | 파일만 되돌리고 대화는 그대로 둡니다 |
Summarize from here | 이 지점부터 이어지는 대화를 요약으로 접습니다 |
Summarize up to here | 이 지점까지의 대화를 요약으로 접고, 그 이후는 그대로 둡니다 |
Never mind | 아무것도 하지 않고 메뉴를 닫습니다 |
이 표에서 가장 먼저 알아 둘 점은 메뉴 구성이 매번 달라진다는 것입니다. 코드에 관련된 두 항목은 선택한 지점 이후로 에이전트가 실제로 파일을 바꿨을 때만 나타납니다. 바꾸지 않았다면 되돌릴 것도 없으니 해당 항목 자체가 없습니다. 그러니 메뉴에 여섯 개 대신 네 개만 있어도 같은 프로그램이 맞습니다.
Summarize 두 항목은 따로 봐야 합니다. 이들은 코드가 아니라 대화 길이를 다루는 기능으로, 대화의 일부를 요약으로 접습니다. 디스크의 파일에는 애초에 손이 닿지 않습니다. 이게 왜 필요한지는 따로 다룰 만큼 큰 주제라서, 여기서는 이것이 되돌리기가 아니고 이 방법으로는 코드를 되돌릴 수 없다는 것만 알아 두면 충분합니다.
신경을 덜 쓰게 해 주는 사소한 점도 있습니다. 대화를 되돌리면 바로 그 메시지의 텍스트가 입력창으로 돌아옵니다. 무엇을 썼는지 기억해서 다시 입력할 필요 없이, 표현만 고쳐서 다시 보내면 됩니다.
되돌리기가 되돌리는 것과 되돌리지 못하는 것
자기 영역 안에서는 되돌리기가 믿을 만합니다. 두 가지를 되돌립니다. 에이전트가 자체 편집 도구로 한 파일 수정, 그리고 이 세션의 대화 기록입니다.
울타리 밖에 남는 것은 이렇습니다.
- 터미널 명령으로 생긴 변화. 에이전트는 파일을 편집하는 것 말고도 명령을 실행할 수 있습니다.
rm명령으로 파일을 지웠거나 옮겼거나 복사로 덮어썼다면, 스냅샷은 그걸 보지 못했고 되돌릴 수도 없습니다. - 에이전트를 거치지 않은 변화. 이 세션에서 에이전트가 건드리지 않은 파일은 되돌리기가 아예 건드리지 않습니다. 여러분이 직접 에디터에서 고쳤거나, 다른 프로그램이 덮어썼거나, 옆에서 다른 세션이 돌아가고 있었거나. 이런 것들은 그대로 남고, 메뉴로는 되돌리거나 취소할 수 없습니다. 반대로 에이전트도 편집한 파일을 여러분이 직접 고쳤다면, 코드를 되돌릴 때 그 파일 전체가 스냅샷 상태로 돌아갑니다. 여러분이 직접 한 수정도 함께 돌아갑니다.
- 심볼릭 링크 파일이라는 드문 경우. 이런 파일은 되돌리기가 건너뛰고 그 사실을 별도 줄에 정직하게 알려 줍니다. 마주치면 그때 해결하면 되고, 미리 준비할 필요는 없습니다.
겉으로는 차이가 거의 안 보입니다. 에이전트는 파일을 수정했을 때나 파일을 지운 명령을 실행했을 때나 똑같이 태연하게 보고합니다. 화면에는 비슷하게 생긴 메시지 두 개로 보이지만, 되돌리기 입장에서는 근본적으로 다른 사건입니다. 첫 번째는 되돌리지만 두 번째는 되돌리지 못합니다.
그래서 뭔가를 지우거나 옮기거나 덮어쓰는 명령을 실행해 달라는 요청은 일반적인 수정 요청보다 더 주의해서 읽어야 합니다. 이 순간에는 뒤를 지켜 줄 안전장치가 이미 사라진 상태입니다.
짧게 정리하면, 되돌리기는 에이전트가 컴퓨터에서 하는 모든 일이 아니라 파일에 적어 넣는 내용만 지켜봅니다.
되돌리기는 얼마나 오래 유지되는가
스냅샷이 끝없이 쌓이지는 않습니다. 메뉴에 나오는 지점 자체는 전부 나열되지만, 파일 스냅샷은 최근 백 개까지만 보관됩니다. 한 대화 기준으로는 넉넉하지만 무한하지는 않고, 오래된 것부터 차례로 밀려납니다.
다만 지점은 열려 있는 터미널 창에 매여 있지 않습니다. 세션과 함께 저장되기 때문에, 터미널을 닫고 내일 다시 와서 같은 대화를 이어 가도 되돌리기 메뉴는 아무 일 없었다는 듯이 작동합니다.
그렇다고 완전히 영구적인 것도 아닙니다. 세션과 그에 딸린 스냅샷은 대략 한 달이 지나면 자동으로 정리되며, 원한다면 이 기간을 바꿀 수 있습니다.
여기서 간단한 결론이 나옵니다. 되돌리기는 작업 하나 규모, 즉 분 단위, 시간 단위, 에이전트와의 대화 하나 안에서 쓰기 좋습니다. 프로젝트 역사를 저장하는 용도로 만들어진 게 아니고, 그건 부족한 점이 아니라 애초에 다른 역할입니다. 더 긴 기간을 감당하는 방법은 다음에 다룹니다.
안전장치 네 가지, 저마다 다른 역할
실행 취소, 스냅샷, 폴더 복사본, 버전 관리 기록은 같은 것을 부르는 네 가지 이름이 아닙니다. 저마다 다른 기간과 다른 종류의 손실을 막아 줍니다.
| 안전장치 | 누가 만드는가 | 무엇을 보존하는가 | 얼마나 유지되는가 | 어디서 무력한가 |
|---|---|---|---|---|
| 에디터의 실행 취소 | 사용자, 단축키로 | 열려 있는 파일의 최근 수정 | 오래가지 않음, 에디터에 따라 다름 | 여러 파일에 걸친 동시 수정, 보통 에디터 밖에서 디스크에 기록된 것도 |
| Checkpoint | Claude Code, 자동으로 | 메시지를 보낼 때마다 그 직전의 코드 | 세션과 함께, 백 개 지점까지 | 터미널 명령, 에이전트를 거치지 않은 변화 |
| 폴더 복사본 | 사용자, 수작업으로 | 복사한 시점의 프로젝트 전체 | 삭제하기 전까지 | 무엇이 바뀌었는지 보여 주지 않고, 디스크를 어지럽힘 |
| 버전 관리 기록, git | 사용자, 의식적인 행동으로 | 프로젝트 상태를 순서대로 | 프로젝트와 함께 | 기록해 두지 못한 것 |
안전장치는 먼저 보호 범위로 고르고, 그다음에야 유지 기간을 봅니다. Claude가 자체 편집 도구로 일반 파일만 바꾸고 세션 밖에는 아무것도 건드리지 않는다면, 5분짜리 실험은 checkpoint만으로 충분히 커버됩니다. 작업에 터미널 명령이나 외부 변화가 끼어든다면, 시간이 얼마나 짧든 checkpoint 하나로는 부족합니다. 그리고 보호 범위가 맞는 안전장치들 사이에서만 기간을 따져 보세요. 며칠짜리 작업이나 중요한 이정표는 에이전트와의 대화에 의존하지 않는 방법을 필요로 합니다.
폴더 복사본에 대해서는 솔직히 말할 필요가 있습니다. 위험한 일을 앞둔 일회성 조치로는 제 역할을 합니다. 복사하고, 부수러 들어가고, 안 되면 되돌리면 됩니다. 하지만 체계로 쓰기에는 부족합니다. 일주일만 지나도 거의 똑같은 폴더가 여러 개 생기고, 어느 게 최신인지는 아무도 기억하지 못합니다.
마지막 줄이 유일하게 상태를 오래 보존하면서 동시에 그 사이에 정확히 무엇이 바뀌었는지 보여 주는 방법입니다. 바로 git이고, 그 자체로 큰 주제입니다. 자기만의 도구, 자기만의 명령 세트가 있어서 여기서는 다루지 않습니다. 표에서의 자리만 알아 두면 충분합니다. 가장 긴 기간을 감당하고, 되돌리기가 커버하지 못하는 부분을 지키는 유일한 방법입니다.
이것이 작업 방식을 어떻게 바꾸는가
버튼 몇 개가 늘어난다는 이야기가 아닙니다. 되돌리기에서 실제로 나오는 결론은 이렇습니다.
- 스냅샷은 저절로 만들어지지만, 사실상 공짜인 경우는 Claude의 자체 편집 도구로 일반 파일만 건드리는 실험뿐입니다. 터미널 명령이나 세션 밖의 변화가 끼어들 예정이라면 먼저 다른 안전장치를 고르세요.
- 에이전트가 대신 되돌려 주지는 않습니다. 잘못 갔다고 말해 줄 수는 있지만, 메뉴를 열고 고르는 것은 여러분의 몫입니다.
- 터미널 명령을 실행해 달라는 요청은 파일 수정 요청과는 다른 종류의 행동입니다. 되돌리기는 전자를 커버하지 못하고 후자는 커버합니다. 차이는 요청의 문구에만 드러나니, 그래서 문구를 읽어야 합니다.
- 단계가 클수록 되돌리기의 쓸모는 줄어듭니다. 되돌리는 것 자체는 되지만, 메뉴 하나만 보고 정확히 무엇이 돌아왔는지 파악하기는 에이전트가 많이 할수록 어려워집니다. 작은 단계가 여기서도 유리합니다.
- 되돌리기와 버전 관리 기록은 서로 경쟁하지 않습니다. 하나는 한 대화 안의 분과 시간을 커버하고, 다른 하나는 프로젝트의 일과 주, 이정표를 커버합니다.
정말로 위험한 시도를 앞두고 있다면, 1분을 들여서 세션보다 오래 남는 방법으로 상태를 고정해 두는 게 좋습니다. 지금 당장 쓸 수 있는 건 폴더 복사본입니다. 위험을 앞둔 일회성 조치로는 정직하게 제 역할을 합니다.
하지만 이럴 때 쓰는 진짜 도구는 git입니다. 원하는 만큼 오래 상태를 보관하고, 그 사이에 정확히 무엇이 바뀌었는지 보여 주며, 거의 똑같은 폴더로 디스크를 어지럽히지도 않습니다. 사용법은 따로 다루겠습니다. 그 자체로 큰 주제라서 별도의 이야기가 필요합니다. 위험 앞에서 1분 멈추는 습관은 git을 쓰든 아직 안 쓰든 도움이 됩니다.
되돌리기 메뉴는 빠른 실험용으로 남겨 두세요. 최후의 수단으로 쓸 때는 일상 도구로 쓸 때보다 확실히 아쉽습니다.
되돌리기 메뉴의 구성과 보관 기간은 Claude Code 버전과 설정에 따라 달라지므로, 여러분의 화면은 여기 설명과 다를 수 있습니다. 여러분의 버전이 무엇을 제공하는지는 메뉴 자체가 항상 보여 줍니다.

GO TO FULL VERSION