8 8
9Claude Code는 작업하면서 Claude의 파일 편집을 자동으로 추적하므로 변경 사항을 빠르게 실행 취소하고 문제가 발생한 경우 이전 상태로 되돌릴 수 있습니다.9Claude Code는 작업하면서 Claude의 파일 편집을 자동으로 추적하므로 변경 사항을 빠르게 실행 취소하고 문제가 발생한 경우 이전 상태로 되돌릴 수 있습니다.
10 10
11<h2 id="how-checkpoints-work">11## Checkpoint의 작동 방식
12 Checkpoint의 작동 방식
13</h2>
14 12
15Claude와 함께 작업할 때 checkpointing은 각 사용자 프롬프트가 시작하는 턴 전에 코드의 상태를 자동으로 캡처합니다.13Claude와 함께 작업할 때 checkpointing은 각 사용자 프롬프트가 시작하는 턴 전에 코드의 상태를 자동으로 캡처합니다.
16 14
17<h3 id="automatic-tracking">15### 자동 추적
18 자동 추적
19</h3>
20 16
21Claude Code는 파일 편집 도구로 수행된 모든 변경 사항을 추적합니다:17Claude Code는 파일 편집 도구로 수행된 모든 변경 사항을 추적합니다:
22 18
25* Checkpoint는 세션과 함께 저장되므로 재개된 세션에서도 `/rewind`를 사용할 수 있습니다21* Checkpoint는 세션과 함께 저장되므로 재개된 세션에서도 `/rewind`를 사용할 수 있습니다
26* Claude Code는 [retention sweep](/docs/ko/claude-directory#cleaned-up-automatically)에서 세션의 파일 스냅샷을 삭제합니다. 기본적으로 세션이 마지막으로 저장된 후 약 30일 후입니다. 스냅샷이 없는 checkpoint로 되돌리면 [`No files were restored`](/docs/ko/errors#no-files-were-restored) 오류가 발생할 수 있습니다. 스냅샷을 더 오래 유지하려면 [`cleanupPeriodDays`](/docs/ko/settings-reference#cleanupperioddays)를 설정하세요.22* Claude Code는 [retention sweep](/docs/ko/claude-directory#cleaned-up-automatically)에서 세션의 파일 스냅샷을 삭제합니다. 기본적으로 세션이 마지막으로 저장된 후 약 30일 후입니다. 스냅샷이 없는 checkpoint로 되돌리면 [`No files were restored`](/docs/ko/errors#no-files-were-restored) 오류가 발생할 수 있습니다. 스냅샷을 더 오래 유지하려면 [`cleanupPeriodDays`](/docs/ko/settings-reference#cleanupperioddays)를 설정하세요.
27 23
28<h3 id="rewind-and-summarize">24### 되돌리기 및 요약
29 되돌리기 및 요약
30</h3>
31 25
32`/rewind`를 실행하거나 프롬프트 입력이 비어 있을 때 `Esc`를 두 번 눌러 rewind 메뉴를 엽니다.26`/rewind`를 실행하거나 프롬프트 입력이 비어 있을 때 `Esc`를 두 번 눌러 rewind 메뉴를 엽니다.
33 27
34<Note>28> [!NOTE]
35 프롬프트 입력에 텍스트가 포함되어 있으면 `Esc`를 두 번 누르면 메뉴를 열지 않고 대신 텍스트를 지웁니다. 지워진 텍스트는 입력 기록에 저장되므로 rewind 메뉴에서 작업을 마친 후 `Up`을 눌러 복구할 수 있습니다.29>
36</Note>30> 프롬프트 입력에 텍스트가 포함되어 있으면 `Esc`를 두 번 누르면 메뉴를 열지 않고 대신 텍스트를 지웁니다. 지워진 텍스트는 입력 기록에 저장되므로 rewind 메뉴에서 작업을 마친 후 `Up`을 눌러 복구할 수 있습니다.
37 31
38Rewind 메뉴는 세션 중에 보낸 프롬프트를 나열합니다. 작업할 지점을 선택한 다음 작업을 선택합니다:32Rewind 메뉴는 세션 중에 보낸 프롬프트를 나열합니다. 작업할 지점을 선택한 다음 작업을 선택합니다:
39 33
50 44
51여기까지 요약을 선택하면 대화의 끝에 남겨지며 입력 필드는 비어 있습니다. 두 요약 옵션 중 하나를 사용하면 압축된 메시지가 있던 대화에 **Summarized conversation** 마커가 나타납니다.45여기까지 요약을 선택하면 대화의 끝에 남겨지며 입력 필드는 비어 있습니다. 두 요약 옵션 중 하나를 사용하면 압축된 메시지가 있던 대화에 **Summarized conversation** 마커가 나타납니다.
52 46
53<h4 id="rewind-past-a-cleared-conversation">47#### 이전 세션의 지워진 대화로 되돌리기
54 이전 세션의 지워진 대화로 되돌리기
55</h4>
56 48
57동일한 Claude Code 프로세스에서 이전에 `/clear`를 실행한 경우 rewind 메뉴는 목록 맨 위에 `/resume <session-id> (이전 세션)`이라는 레이블이 지정된 추가 항목을 표시합니다. 이를 선택하여 `/clear`가 실행되기 전에 활성화되었던 대화를 재개합니다. 이 항목은 Claude Code를 종료하거나 다른 세션을 재개할 때까지 사용 가능합니다.49동일한 Claude Code 프로세스에서 이전에 `/clear`를 실행한 경우 rewind 메뉴는 목록 맨 위에 `/resume <session-id> (이전 세션)`이라는 레이블이 지정된 추가 항목을 표시합니다. 이를 선택하여 `/clear`가 실행되기 전에 활성화되었던 대화를 재개합니다. 이 항목은 Claude Code를 종료하거나 다른 세션을 재개할 때까지 사용 가능합니다.
58 50
59<h4 id="guide-a-summary">51#### 요약 안내
60 요약 안내
61</h4>
62 52
63요약은 디스크의 파일을 변경하지 않으며 원본 메시지는 세션 기록에 남아 있으므로 Claude가 여전히 세부 정보를 참조할 수 있습니다. 요약이 초점을 맞출 내용을 안내하려면 화살표 키로 **Summarize** 옵션을 강조 표시하고 행에 \*\*add context (optional)\*\*이라고 표시된 위치에 지침을 입력한 다음 `Enter`를 누르세요. 숫자 키로 옵션을 선택하면 지침 없이 즉시 요약합니다.53요약은 디스크의 파일을 변경하지 않으며 원본 메시지는 세션 기록에 남아 있으므로 Claude가 여전히 세부 정보를 참조할 수 있습니다. 요약이 초점을 맞출 내용을 안내하려면 화살표 키로 **Summarize** 옵션을 강조 표시하고 행에 \*\*add context (optional)\*\*이라고 표시된 위치에 지침을 입력한 다음 `Enter`를 누르세요. 숫자 키로 옵션을 선택하면 지침 없이 즉시 요약합니다.
64 54
65<Note>55> [!NOTE]
66 Summarize는 동일한 세션에 유지되고 범위를 좁힌 `/compact`처럼 context를 압축합니다. 원본 세션을 그대로 유지하면서 갈라져 나와 다른 접근 방식을 시도하고 싶다면 대신 [`/branch`](/docs/ko/sessions#branch-a-session) 또는 `claude --continue --fork-session`을 사용하세요.56>
67</Note>57> Summarize는 동일한 세션에 유지되고 범위를 좁힌 `/compact`처럼 context를 압축합니다. 원본 세션을 그대로 유지하면서 갈라져 나와 다른 접근 방식을 시도하고 싶다면 대신 [`/branch`](/docs/ko/sessions#branch-a-session) 또는 `claude --continue --fork-session`을 사용하세요.
68 58
69<h2 id="common-use-cases">59## 일반적인 사용 사례
70 일반적인 사용 사례
71</h2>
72 60
73Checkpoint는 다음과 같은 경우에 특히 유용합니다:61Checkpoint는 다음과 같은 경우에 특히 유용합니다:
74 62
77* **기능 반복**: 작동하는 상태로 되돌릴 수 있다는 확신을 가지고 변형을 실험합니다65* **기능 반복**: 작동하는 상태로 되돌릴 수 있다는 확신을 가지고 변형을 실험합니다
78* **Context 공간 확보**: 초기 지침을 그대로 유지하면서 중간 지점부터 시작하여 자세한 디버깅 세션을 요약합니다66* **Context 공간 확보**: 초기 지침을 그대로 유지하면서 중간 지점부터 시작하여 자세한 디버깅 세션을 요약합니다
79 67
80<h2 id="limitations">68## 제한 사항
81 제한 사항
82</h2>
83 69
84<h3 id="bash-command-changes-not-tracked">70### Bash 명령 변경 사항이 추적되지 않음
85 Bash 명령 변경 사항이 추적되지 않음
86</h3>
87 71
88Checkpointing은 Bash 명령으로 수정된 파일을 추적하지 않습니다. 예를 들어 Claude Code가 다음을 실행하는 경우:72Checkpointing은 Bash 명령으로 수정된 파일을 추적하지 않습니다. 예를 들어 Claude Code가 다음을 실행하는 경우:
89 73
95 79
96이러한 파일 수정 사항은 rewind를 통해 실행 취소할 수 없습니다. Claude의 파일 편집 도구를 통해 직접 수행된 파일 편집만 추적됩니다.80이러한 파일 수정 사항은 rewind를 통해 실행 취소할 수 없습니다. Claude의 파일 편집 도구를 통해 직접 수행된 파일 편집만 추적됩니다.
97 81
98<h3 id="subagent-edits-not-restored">82### Subagent 편집이 복원되지 않음
99 Subagent 편집이 복원되지 않음
100</h3>
101 83
102[Subagent](/docs/ko/sub-agents)는 Claude의 파일 편집 도구로 편집을 수행하지만, Claude Code는 일반적으로 세션의 checkpoint에서 이러한 편집을 캡처하지 않습니다. Rewind가 이를 복원하는지 여부는 subagent가 실행되는 방식에 따라 달라집니다:84[Subagent](/docs/ko/sub-agents)는 Claude의 파일 편집 도구로 편집을 수행하지만, Claude Code는 일반적으로 세션의 checkpoint에서 이러한 편집을 캡처하지 않습니다. Rewind가 이를 복원하는지 여부는 subagent가 실행되는 방식에 따라 달라집니다:
103 85
104* **Foreground forked skill**: [foreground에서 실행되는 `context: fork`가 있는 skill](/docs/ko/skills#run-skills-in-a-subagent)은 사용자의 차례 동안 작업 트리를 편집하므로, rewind는 일반적으로 편집을 복원합니다. `background: false`를 설정하여 fork를 foreground에서 실행합니다. 몇 가지 상황([skills 페이지에 나열됨](/docs/ko/skills#run-skills-in-a-subagent))은 설정과 관계없이 foreground에서 실행됩니다.86* **Foreground forked skill**: [foreground에서 실행되는 `context: fork`가 있는 skill](/docs/ko/skills#run-skills-in-a-subagent)은 사용자의 차례 동안 작업 트리를 편집하므로, rewind는 일반적으로 편집을 복원합니다. `background: false`를 설정하여 fork를 foreground에서 실행합니다. 몇 가지 상황([skills 페이지에 나열됨](/docs/ko/skills#run-skills-in-a-subagent))은 설정과 관계없이 foreground에서 실행됩니다.
105* **다른 모든 서브에이전트**: rewind는 대화에서 Claude가 이미 편집한 파일만 복원합니다. 다른 파일에 대한 서브에이전트의 편집은 그대로 남으므로 git을 사용하여 되돌립니다. 여기에는 background에서 실행되는 포크된 스킬(기본값)과 background [`/code-review --fix`](/docs/ko/code-review-local) 실행이 포함됩니다.87* **다른 모든 서브에이전트**: rewind는 대화에서 Claude가 이미 편집한 파일만 복원합니다. 다른 파일에 대한 서브에이전트의 편집은 그대로 남으므로 git을 사용하여 되돌립니다. 여기에는 background에서 실행되는 포크된 스킬(기본값)과 background [`/code-review --fix`](/docs/ko/code-review-local) 실행이 포함됩니다.
106 88
107<h3 id="external-changes-not-tracked">89### 외부 변경 사항이 추적되지 않음
108 외부 변경 사항이 추적되지 않음
109</h3>
110 90
111Checkpointing은 현재 세션 내에서 편집된 파일만 추적합니다. Claude Code 외부에서 수동으로 수행한 파일 변경 사항과 다른 동시 세션의 편집은 현재 세션과 동일한 파일을 수정하는 경우를 제외하고는 일반적으로 캡처되지 않습니다.91Checkpointing은 현재 세션 내에서 편집된 파일만 추적합니다. Claude Code 외부에서 수동으로 수행한 파일 변경 사항과 다른 동시 세션의 편집은 현재 세션과 동일한 파일을 수정하는 경우를 제외하고는 일반적으로 캡처되지 않습니다.
112 92
113<h3 id="messages-sent-mid-turn-not-checkpointed">93### 차례 중간에 전송된 메시지가 checkpoint되지 않음
114 차례 중간에 전송된 메시지가 checkpoint되지 않음
115</h3>
116 94
117rewind 메뉴에서 [Claude가 아직 작업하는 동안 입력한](/docs/ko/interactive-mode#queue-messages-while-claude-works) 메시지에 **No code restore** 표시가 붙을 수 있습니다. Claude는 턴이 끝나기 전에 해당 메시지를 읽었습니다. [체크포인트는 턴을 시작하는 프롬프트에 대해 생성되므로](#how-checkpoints-work), 이 메시지에는 자체 체크포인트가 없습니다. Claude가 이 메시지를 읽은 후 수행한 편집은 해당 턴을 시작한 프롬프트에 포함됩니다.95rewind 메뉴에서 [Claude가 아직 작업하는 동안 입력한](/docs/ko/interactive-mode#queue-messages-while-claude-works) 메시지에 **No code restore** 표시가 붙을 수 있습니다. Claude는 턴이 끝나기 전에 해당 메시지를 읽었습니다. [체크포인트는 턴을 시작하는 프롬프트에 대해 생성되므로](#how-checkpoints-work), 이 메시지에는 자체 체크포인트가 없습니다. Claude가 이 메시지를 읽은 후 수행한 편집은 해당 턴을 시작한 프롬프트에 포함됩니다.
118 96
119메시지 자체에 대해서는 별도로 조치할 필요가 없습니다. 세션의 해당 부분에서 발생한 파일 변경 사항을 실행 취소하려면, 턴을 시작한 프롬프트를 선택하고 **Restore code** 또는 **Restore code and conversation**을 선택합니다. 이렇게 하면 메시지가 도착하기 전의 편집을 포함하여 전체 턴에서 Claude가 수행한 파일 편집이 되돌려집니다. 표시가 붙은 메시지를 선택해도 **Restore conversation**은 여전히 제공되며, 이 옵션은 대화를 해당 메시지 시점으로 rewind하고 파일은 그대로 유지합니다.97메시지 자체에 대해서는 별도로 조치할 필요가 없습니다. 세션의 해당 부분에서 발생한 파일 변경 사항을 실행 취소하려면, 턴을 시작한 프롬프트를 선택하고 **Restore code** 또는 **Restore code and conversation**을 선택합니다. 이렇게 하면 메시지가 도착하기 전의 편집을 포함하여 전체 턴에서 Claude가 수행한 파일 편집이 되돌려집니다. 표시가 붙은 메시지를 선택해도 **Restore conversation**은 여전히 제공되며, 이 옵션은 대화를 해당 메시지 시점으로 rewind하고 파일은 그대로 유지합니다.
120 98
121<h3 id="symlinked-and-hard-linked-paths-not-restored">99### Symlink 및 hard link 경로가 복원되지 않음
122 Symlink 및 hard link 경로가 복원되지 않음
123</h3>
124 100
125Checkpointing은 symlink 또는 hard link된 파일을 rewind하지 않습니다. `/rewind` 메뉴에서 **Restore code** 또는 **Restore code and conversation**을 선택하면, Claude Code는 symlink 또는 hard link인 추적된 경로를 건너뛰고 `Restored the code, but skipped N files` 경고를 표시합니다. 건너뛴 파일은 현재 내용을 유지합니다. 세션의 변경 사항 중 하나를 실행 취소하려면 Claude에 편집을 되돌리도록 요청하거나 파일을 직접 편집합니다. dotfile manager가 프로젝트에 symlink하는 구성 파일과 pnpm이 제자리에 hard link하는 파일 모두 이 범주에 해당합니다.101Checkpointing은 symlink 또는 hard link된 파일을 rewind하지 않습니다. `/rewind` 메뉴에서 **Restore code** 또는 **Restore code and conversation**을 선택하면, Claude Code는 symlink 또는 hard link인 추적된 경로를 건너뛰고 `Restored the code, but skipped N files` 경고를 표시합니다. 건너뛴 파일은 현재 내용을 유지합니다. 세션의 변경 사항 중 하나를 실행 취소하려면 Claude에 편집을 되돌리도록 요청하거나 파일을 직접 편집합니다. dotfile manager가 프로젝트에 symlink하는 구성 파일과 pnpm이 제자리에 hard link하는 파일 모두 이 범주에 해당합니다.
126 102
127restore가 건너뛰는 경로를 확인하려면 restore 전에 `/debug`로 debug logging을 켭니다: `~/.claude/debug/<session-id>.txt`의 debug log는 건너뛴 각 경로를 나열합니다. 모든 건너뛰기 이유와 복구 단계는 [error reference의 skipped-files 항목](/docs/ko/errors#restored-the-code-but-skipped-files)을 참조합니다.103restore가 건너뛰는 경로를 확인하려면 restore 전에 `/debug`로 debug logging을 켭니다: `~/.claude/debug/<session-id>.txt`의 debug log는 건너뛴 각 경로를 나열합니다. 모든 건너뛰기 이유와 복구 단계는 [error reference의 skipped-files 항목](/docs/ko/errors#restored-the-code-but-skipped-files)을 참조합니다.
128 104
129<h3 id="not-a-replacement-for-version-control">105### 버전 관리의 대체가 아님
130 버전 관리의 대체가 아님
131</h3>
132 106
133Checkpoint는 빠른 세션 수준의 복구를 위해 설계되었습니다. 영구적인 버전 기록 및 협업을 위해 Git과 같은 버전 관리를 계속 사용하여 커밋, 분기 및 장기 기록을 유지합니다.107Checkpoint는 빠른 세션 수준의 복구를 위해 설계되었습니다. 영구적인 버전 기록 및 협업을 위해 Git과 같은 버전 관리를 계속 사용하여 커밋, 분기 및 장기 기록을 유지합니다.
134 108
135<h2 id="see-also">109## 참고 항목
136 참고 항목
137</h2>
138 110
139* [Interactive mode](/docs/ko/interactive-mode) - 키보드 단축키 및 세션 제어111* [Interactive mode](/docs/ko/interactive-mode) - 키보드 단축키 및 세션 제어
140* [Commands](/docs/ko/commands) - `/rewind`를 사용하여 checkpoint에 액세스112* [Commands](/docs/ko/commands) - `/rewind`를 사용하여 checkpoint에 액세스