Claude Code /rewind: undo code, hội thoại và cái bẫy

Claude vừa “dọn dẹp” giúp bạn ba file, và giờ app không chạy nữa. Bạn ngồi đọc lại từng đoạn diff để sửa tay, mệt mỏi, trong khi cách nhanh hơn là bấm vài phím để quay lại đúng thời điểm trước khi mọi thứ vỡ.

Cái nút đó tên là rewind. Gõ /rewind, chọn một điểm trong phiên, và Claude Code đưa code cùng hội thoại về đúng lúc đó. Nhưng có một hiểu lầm nguy hiểm: nhiều người tưởng nó là undo toàn năng. Không phải. Bài này chỉ bạn dùng đúng, và quan trọng hơn, tránh đúng cái bẫy khiến vài người mất code.

TL;DR: Claude Code tự lưu một checkpoint sau mỗi prompt bạn gửi. Gõ /rewind (hoặc nhấn Esc hai lần khi ô nhập trống) để mở menu, chọn một điểm rồi quyết định khôi phục code, hội thoại, hoặc cả hai. Nó là “local undo” cho các sửa file của Claude, KHÔNG thay thế Git và KHÔNG hoàn tác được lệnh bash.

Đáng dùng nếu: bạn hay để Claude thử nghiệm rộng và cần một lưới an toàn để quay lại. Coi chừng nếu: phiên của bạn có nhiều lệnh bash (rm, mv, git push), vì rewind không cứu được những thứ đó.

Rewind (checkpointing) là gì và hoạt động ra sao?

Trả lời nhanh: một cơ chế tự chụp lại trạng thái code trước mỗi lần Claude sửa file, để bạn lùi về điểm cũ khi mọi thứ đi lạc. Trong Claude Code, cơ chế này gọi là checkpointing, còn lệnh để dùng nó là /rewind.

Cách nó chạy rất gọn. Mỗi prompt bạn gửi sẽ tạo một checkpoint mới. Claude Code track mọi thay đổi mà công cụ sửa file của nó tạo ra, lặng lẽ, không cần bạn làm gì. Các checkpoint lưu xuyên session, nên mở lại phiên cũ vẫn truy cập được. Chúng tự dọn cùng session sau 30 ngày (con số này chỉnh được trong settings.json của Claude Code).

Ví dụ dễ hình dung: như chơi game có save point trước mỗi cửa khó. Đánh trùm thua, bạn không chơi lại từ đầu, chỉ load lại save gần nhất. Checkpoint là cái save point đó, tự tạo sau mỗi lượt bạn nói chuyện với Claude.

Điểm hay là nó cho bạn liều “dám làm”. Bạn giao cho Claude một việc lớn, rủi ro, mà vẫn yên tâm vì biết luôn có đường lùi. (Nguồn: tài liệu Claude Code, truy cập 30/06/2026.)

Bước 1: Mở menu rewind (/rewind hoặc Esc Esc)

Có hai cách mở menu, và cách thứ hai có một cái bẫy nhỏ. Cách trực tiếp: gõ /rewind rồi Enter. Cách nhanh bằng phím: nhấn Esc hai lần, nhưng chỉ khi ô nhập đang trống.

Vì sao phải trống? Nếu ô nhập đang có chữ, nhấn Esc hai lần sẽ xóa chữ đó chứ không mở menu. Đừng lo, chữ vừa xóa được lưu vào input history, nhấn Up là lấy lại được sau khi bạn xong việc trong menu.

Menu hiện ra sẽ liệt kê từng prompt bạn đã gửi trong phiên. Mỗi dòng là một checkpoint. Bạn chọn điểm muốn quay về, rồi tới bước quyết định khôi phục cái gì.

Bước 2: Chọn restore code, hội thoại, hay cả hai?

Sau khi chọn một điểm, Claude Code hỏi bạn muốn khôi phục gì. Đây là chỗ quan trọng nhất, vì ba lựa chọn cho ba kết quả rất khác nhau. Chọn sai thì hoặc mất công vừa làm, hoặc giữ lại đúng cái bạn muốn vứt.

Ba lựa chọn restore:

  • Restore code and conversation đưa cả file lẫn lịch sử hội thoại về điểm đó. Dùng khi cả hướng đi lẫn code đều hỏng, muốn làm lại sạch.
  • Restore conversation lùi hội thoại nhưng giữ code hiện tại. Dùng khi code đang ổn nhưng cuộc trò chuyện đi lan man, muốn cắt bớt context mà không đụng file.
  • Restore code revert file nhưng giữ hội thoại. Dùng khi Claude sửa hỏng nhưng bạn vẫn muốn giữ mạch trao đổi để chỉ đạo lại.

Còn một nút Never mind để thoát mà không đổi gì, phòng khi bạn chỉ vào xem.

Bạn muốn Chọn
Làm lại sạch từ điểm tốt Restore code and conversation
Giữ code, cắt hội thoại lan man Restore conversation
Bỏ sửa hỏng, giữ mạch chỉ đạo Restore code
Chỉ xem, không đổi Never mind
Menu rewind với ba lựa chọn restore (code and conversation, conversation, code) kèm khi nào dùng, và nút Never mind

Một chi tiết tiện: sau khi Restore conversation, prompt gốc của message bạn chọn được đưa lại vào ô nhập, để bạn gửi lại hoặc sửa rồi gửi. Khỏi gõ lại từ đầu.

Bước 3: Summarize from/up to here, nén context có chọn lọc

Menu rewind có một nửa mà gần như mọi bài “rewind là undo” bỏ qua: hai lựa chọn summarize. Chúng không đảo trạng thái file, mà nén một phần hội thoại thành bản tóm tắt do AI viết, để giải phóng chỗ trong cửa sổ context.

Khác biệt nằm ở “phía” nào được nén:

  • Summarize from here nén message bạn chọn và mọi thứ SAU nó thành tóm tắt, giữ nguyên phần đầu chi tiết. Dùng để bỏ một nhánh thảo luận lạc đề mà vẫn giữ context gốc.
  • Summarize up to here nén phần TRƯỚC message chọn, giữ phần gần đây nguyên vẹn, và để bạn ở cuối hội thoại. Dùng để gom phần setup dài dòng lúc đầu, giữ lại công việc đang làm.

Trong cả hai, message gốc vẫn được lưu trong transcript của phiên, nên Claude tham chiếu lại chi tiết khi cần. Bạn còn gõ được chỉ dẫn để hướng bản tóm tắt tập trung vào điều mình muốn.

So sánh Summarize from here và up to here: phía nào của hội thoại bị nén thành tóm tắt, phía nào giữ chi tiết

Nghe quen không? Nó giống /compact, nhưng có chọn phía thay vì nén cả cuộc trò chuyện. Nếu bạn đang đau đầu với chuyện context đầy, đây là một công cụ tinh hơn. Mình hay dùng Summarize up to here sau một buổi debug dài: gom phần dò lỗi lúc đầu lại, giữ phần fix cuối cho gọn. Xem thêm ở bài tiết kiệm token trong Claude Code.

Khi nào nên rewind? (nguyên tắc slot-machine)

Câu trả lời ngắn: khi Claude đi lạc, lùi lại điểm tốt rồi thử lại từ đó, thay vì ngồi cãi để nó tự sửa. Nhiều người gọi đây là nguyên tắc “slot-machine”: kéo cần lại từ trạng thái sạch thường nhanh và sạch hơn là gắng vá một phiên đã trượt.

Lý do thực dụng. Khi Claude hiểu sai và bạn sửa bằng cách thêm prompt “không, ý mình là…”, cái context đang rối lại càng dày thêm. Lùi về checkpoint trước khi nó hiểu sai, rồi diễn đạt lại rõ hơn, thường ra kết quả tốt hơn nhiều. Tài liệu chính thức cũng đóng khung tính năng theo hướng này: checkpoint cho bạn theo đuổi việc lớn, rủi ro, vì luôn có đường về.

Bốn tình huống đáng rewind:

  1. Thử cách khác. Bạn muốn xem hướng triển khai B mà không mất hướng A. Lùi về điểm trước A, thử B.
  2. Hồi phục sau lỗi. Claude vừa thêm bug làm vỡ chức năng. Lùi về điểm chạy được.
  3. Lặp tính năng. Thử biến thể, biết là quay lại trạng thái tốt được nếu không ưng.
  4. Giải phóng context. Một buổi debug dài làm đầy cửa sổ. Dùng Summarize from here để nén từ giữa về sau.

Mình theo thói quen: khi thấy mình bắt đầu gõ câu prompt thứ ba để “giải thích lại cho Claude hiểu”, đó là tín hiệu nên rewind thay vì giải thích tiếp.

Cái bẫy lớn nhất: rewind KHÔNG phải undo toàn năng

Đây là phần quan trọng nhất bài, và là chỗ nhiều người vấp đau. Rewind chỉ hoàn tác những sửa file mà công cụ của Claude thực hiện. Mọi thứ khác, nó không đụng tới. Hiểu nhầm chỗ này là lý do có những thread kiểu “tôi rewind xong vẫn mất code”.

Rewind KHÔNG hoàn tác được:

Thay đổi do lệnh bash (rm, mv, cp, git push, npm publish) · file bạn sửa tay ngoài Claude Code · thay đổi từ session song song khác · gọi API, ghi database.

Bảng hai cột: rewind CÓ track (sửa file của Claude, code, hội thoại) và KHÔNG track (lệnh bash rm mv git push, sửa tay ngoài, session khác, API/database)

Cụ thể: nếu Claude chạy rm file.txt rồi bạn rewind, file đó không quay lại. Lệnh bash nằm ngoài tầm track của checkpoint. Tương tự, nếu bạn tự mở editor sửa một file ngoài Claude Code, rewind cũng không biết để hoàn tác, trừ khi tình cờ nó đụng đúng file mà phiên hiện tại có sửa.

Hệ quả thực tế cho dân DevOps: commit Git trước khi để Claude chạy các lệnh phá trạng thái. Rewind là lưới an toàn cho sửa file, còn Git là lưới an toàn cho mọi thứ. Hai cái bổ sung nhau, không thay nhau. Tài liệu nói thẳng: hãy coi checkpoint là “local undo”, còn Git là “permanent history”.

Rewind vs Git vs /compact vs fork: chọn cái nào?

Bốn công cụ này dễ lẫn vì đều dính tới “quay lại” hoặc “quản lý trạng thái”. Nhưng mỗi cái giải một bài khác nhau. Chọn đúng tiết kiệm cho bạn cả việc lẫn rủi ro mất dữ liệu.

Công cụ Giải quyết Khi nào dùng
/rewind Lùi code + hội thoại về checkpoint trong phiên Claude sửa file đi lạc, muốn quay lại nhanh
Git Lịch sử vĩnh viễn, branch, cộng tác Lưu mốc thật, undo lệnh bash, làm việc nhóm
/compact Nén toàn bộ context Cửa sổ context đầy, không cần lùi trạng thái
fork session Rẽ nhánh phiên, giữ bản gốc nguyên vẹn Muốn thử hướng khác mà vẫn giữ phiên cũ
Ma trận so sánh /rewind, Git, /compact và fork session: mỗi cái giải bài toán gì và khi nào dùng

Vài lưu ý ghép cặp. Khi bạn chỉ cần nén context chứ không lùi file, /compact hoặc Summarize gọn hơn rewind. Khi bạn muốn thử một hướng hoàn toàn khác mà không mất phiên đang chạy, dùng fork bằng claude --continue --fork-session, gần với tinh thần tạo worktree để thử nghiệm an toàn. Và như đã nói, mọi thứ liên quan tới lệnh bash thì Git mới là chỗ dựa.

/rewind, /clear, /resume, /compact đều là slash command của Claude Code, gõ thẳng trong phiên.

Sửa lỗi và sai lầm hay mắc

Phần lớn rắc rối với rewind đến từ kỳ vọng sai hơn là lỗi kỹ thuật. Dưới đây là các tình huống hay gặp và cách xử lý (nguồn: tài liệu Claude Code, truy cập 30/06/2026).

  • Rewind không thấy thay đổi để hoàn tác. Nhiều khả năng thay đổi đó do lệnh bash tạo ra, không phải công cụ sửa file. Checkpoint không track bash. Đây là hành vi đúng thiết kế, không phải lỗi.
  • Muốn quay lại phiên trước khi lỡ /clear. Nếu bạn đã chạy /clear cùng tiến trình, menu rewind hiện thêm dòng /resume <session-id> (previous session) ở đầu danh sách. Chọn nó để quay lại. Tính năng này cần Claude Code v2.1.191 trở lên; bản cũ hơn thì chạy /resume rồi chọn phiên trước trong danh sách.
  • Dùng trong VS Code. Theo tài liệu Claude Code, extension VS Code hỗ trợ checkpoint: hover lên một message để hiện nút rewind, rồi chọn trong các lựa chọn (gồm cả “Fork conversation from here”).
  • Cần rewind theo lập trình. Agent SDK có rewind_files() (Python) / rewindFiles() (TypeScript) để rewind file ngoài phiên tương tác. Đây là đường nâng cao, không cần cho dùng thường ngày.
  • Esc Esc không mở menu. Ô nhập của bạn đang có chữ. Xóa hết chữ (hoặc gõ /rewind) rồi thử lại.

Sai lầm hay mắc

  • Tưởng rewind cứu được mọi thứ rồi để Claude chạy rm/git push thoải mái. Commit Git trước khi shell-out.
  • Restore code and conversation trong khi chỉ cần Restore code, làm mất luôn mạch chỉ đạo đang tốt. Đọc kỹ ba lựa chọn.
  • Quên nửa summarize, cứ /compact cả phiên trong khi chỉ cần nén một đoạn. Summarize up to here gọn hơn nhiều.
  • Sửa file tay ngoài Claude Code rồi mong rewind hoàn tác. Nó không track thay đổi ngoài phiên.

FAQ

Undo một lần rewind được không?
Cẩn thận chỗ này. Bản thân thao tác rewind đưa trạng thái về điểm cũ; còn những thay đổi do lệnh bash thì vốn không hoàn tác qua rewind được. Nói cách khác, rewind không phải một chồng undo/redo vô hạn cho mọi loại thay đổi. Trước thao tác rủi ro, commit Git để có điểm tựa chắc chắn.

Rewind có xóa lịch sử Git không?
Không. Rewind chỉ tác động tới các sửa file trong phiên Claude Code, hoàn toàn tách biệt với Git. Commit, branch, lịch sử Git của bạn không bị đụng tới. Đó là lý do nên xem hai cái là hai lưới an toàn riêng.

Rewind khác /compact chỗ nào?
/compact nén toàn bộ hội thoại để giải phóng context, không lùi trạng thái file. Rewind thì lùi trạng thái (code, hội thoại, hoặc cả hai), và còn có lựa chọn Summarize để nén một phía có chọn lọc. Cần lùi file thì dùng rewind; chỉ cần dọn context thì compact hoặc summarize.

Rewind trong VS Code dùng sao?
Theo tài liệu Claude Code, extension VS Code hỗ trợ checkpoint. Bạn hover lên message muốn quay về để hiện nút rewind, rồi chọn lựa chọn phù hợp, trong đó có “Fork conversation from here” để rẽ nhánh từ điểm đó mà giữ nguyên code.

Checkpoint giữ được bao lâu?
Checkpoint lưu xuyên session và tự dọn cùng session sau 30 ngày. Con số 30 ngày này chỉnh được trong settings. Vì vậy đừng coi checkpoint là nơi lưu trữ dài hạn; việc đó là của Git.

Kết luận

Rewind là một trong những lưới an toàn đáng giá nhất của Claude Code, miễn là bạn hiểu đúng phạm vi của nó. Gõ /rewind, chọn một checkpoint, quyết định khôi phục code, hội thoại hay cả hai. Khi Claude đi lạc, lùi lại rồi thử lại thường nhanh hơn là cố cãi cho nó hiểu.

Nhưng nhớ một câu để khỏi mất code: rewind không hoàn tác được lệnh bash và thay đổi ngoài phiên. Nó là local undo, Git mới là lịch sử thật. Commit trước khi để Claude shell-out, và bạn có cả hai lớp bảo vệ.

Muốn đi tiếp về quản lý phiên và thử nghiệm an toàn, đọc thêm tạo worktree trong Claude Code và cách tiết kiệm token.



Similar Posts