Bạn vừa nhờ AI sửa một hàm nhỏ, 30 giây sau repo của bạn bỗng có thêm 5 file bị đổi — trong đó có cả file bạn chưa từng mở?
Tình huống này gần như ai mới dùng AI coding cũng gặp ít nhất một lần. Tin tốt là: sửa code bằng Claude Code hoàn toàn có thể an toàn, miễn là bạn giữ đúng vai trò “người duyệt” thay vì giao toàn quyền cho agent.
Đây là bài thứ tư trong series Claude Code. Nếu bạn chưa cài tool, hãy đọc Claude Code là gì? Hướng dẫn cài đặt. Nếu chưa quen slash command, xem thêm 7 lệnh Claude Code cần biết. Bài này tập trung vào câu hỏi thực tế nhất: làm sao để Claude Code sửa code mà bạn vẫn kiểm soát được từng thay đổi.

Tóm tắt nhanh
- Giữ chế độ xin quyền, đọc kỹ hộp thoại và kiểm tra diff trước khi chấp nhận.
- Luôn commit hoặc dọn working tree trước khi để AI sửa.
- Prompt tốt gồm 4 phần: mục tiêu – phạm vi – ràng buộc – cách kiểm chứng.
- Khi sửa hỏng, dùng
/rewindhoặc nhấn Esc hai lần để quay lại. - Ba lỗi phổ biến nhất: yêu cầu quá rộng, bấm “don’t ask again” mù quáng, và quên chạy test.
Sửa code bằng Claude Code có an toàn không?
Có — nếu bạn giữ vai trò người duyệt, không phải người xem. Claude Code có hai lớp bảo vệ mặc định: mọi thay đổi file và lệnh shell đều phải xin quyền trước khi thực thi, và mỗi lần bạn gửi yêu cầu, tool tự tạo một checkpoint để quay lại. [1] [2]
Khi Claude muốn sửa file hoặc chạy lệnh, terminal sẽ hiện hộp thoại mô tả rõ hành động sắp diễn ra. Bạn chọn Yes, No, hoặc Yes, and don't ask again. Trong chế độ Manual — mặc định cho người mới — không có hành động nào được thực hiện âm thầm. [2]
- Permission prompt
- Hộp thoại hỏi quyền trước mỗi hành động nhạy cảm như sửa file hoặc chạy lệnh shell.
- Checkpoint
- Bản chụp trạng thái code tự động trước mỗi lượt yêu cầu, cho phép quay lại trạng thái cũ.
Rủi ro lớn nhất không nằm ở tool, mà nằm ở thói quen bấm Yes của bạn. Nếu duyệt mọi thứ mà không đọc, mọi lớp bảo vệ đều trở nên vô nghĩa. Phần còn lại của bài này là cách để thói quen đó luôn đúng.
Chuẩn bị trước khi để Claude Code sửa code
Chỉ cần 5 phút chuẩn bị, bạn sẽ đỡ mất hàng giờ khắc phục sau này. Ba việc nên làm trước khi giao file cho AI:
- Commit hoặc stash trước. Checkpoint của Claude Code chỉ hữu ích trong phiên hiện tại, và không theo dõi thay đổi từ lệnh shell.
git statussạch trước khi sửa là bảo hiểm rẻ nhất bạn có. [3] - Mở Claude đúng thư mục. Agent chỉ thấy và xin quyền trong thư mục đang làm việc. Mở đúng thư mục con của dự án sẽ giới hạn vùng Claude có thể đụng tới.
- Có file CLAUDE.md nếu dự án có quy ước riêng. File quy tắc giúp Claude chọn đúng lệnh test và tránh sửa những folder bị cấm — xem bài về CLAUDE.md nếu chưa tạo.
Bạn đang đọc bài thuộc chuyên mục Lập trình của VietnamTutor — nơi mình viết về workflow thực chiến cho dev và doanh nghiệp. Nếu đang tự code bằng AI theo kiểu vibe coding, phần chuẩn bị này chính là “điểm quay lại” mà vibe coding hay thiếu nhất.
Quy trình 6 bước sửa code an toàn
Luồng chuẩn: mô tả lỗi có phạm vi → để Claude đọc code → duyệt từng quyền → xem diff → chạy test → commit. Đây là quy trình tài liệu chính thức khuyến nghị khi sửa lỗi, cộng thêm hai bước kiểm soát của bạn ở giữa. [4]

Quy trình sửa code an toàn trong 6 bước
- Mô tả lỗi và phạm vi rõ ràng. Nói rõ triệu chứng, file hoặc module liên quan, và lệnh để tái hiện lỗi — ví dụ dán nguyên thông báo lỗi từ npm test.
- Để Claude đọc code trước khi sửa. Yêu cầu Claude giải thích nguyên nhân gốc và đề xuất hướng sửa. Bước này giúp bạn phát hiện chẩn đoán sai sớm.
- Đọc hộp thoại xin quyền rồi mới duyệt. Mỗi hộp thoại ghi rõ file hoặc lệnh sắp chạy. Chọn Yes cho từng hành động; chỉ dùng don’t ask again cho lệnh bạn hiểu rõ như chạy test.
- Xem diff sau khi sửa. Chạy git diff hoặc xem phần thay đổi Claude hiển thị. Đảm bảo code mới đúng ý, không xóa logic cũ, không sửa ngoài phạm vi.
- Chạy test và kiểm tra thủ công. Chạy lại lệnh tái hiện lỗi và bộ test liên quan. Không có test thì tự chạy app hoặc script để xác nhận.
- Commit thành một đơn vị nhỏ. Khi test xanh, commit ngay với message mô tả bản sửa. Commit nhỏ giúp quay lại chính xác nếu sau này phát hiện side effect.
Lưu ý ở bước 3: hộp thoại xin quyền còn cho phép bạn ghi chú lý do. Trên hầu hết hộp thoại, di chuyển tới Yes hoặc No rồi nhấn Tab sẽ mở ô ghi chú — hữu ích khi bạn từ chối nhưng muốn Claude thử hướng khác thay vì dừng hẳn lượt làm việc. [2]
Với thay đổi lớn, hãy bật chế độ plan bằng Shift+Tab. Claude sẽ chỉ đọc và phân tích, không sửa gì cả, để bạn duyệt kế hoạch trước. [5]

Cách viết prompt sửa code hiệu quả
Prompt tốt nên có đủ 4 phần: mục tiêu – phạm vi – ràng buộc – cách kiểm chứng. Thiếu phần nào, Claude phải đoán phần đó — và đoán chính là lúc file lạ bị đổi.
| Prompt mơ hồ | Prompt đủ 4 phần |
|---|---|
| Sửa lỗi login giúp tôi | Khách không đăng nhập được sau khi đổi mật khẩu, lỗi 401 trong auth/login.ts. Chỉ sửa trong thư mục auth/, không đổi schema database. Chạy npm test auth để kiểm tra. |
| Code này chậm, tối ưu đi | Truy vấn danh sách đơn hàng chậm ~3 giây trong orders/service.ts. Tối ưu truy vấn nhưng giữ nguyên định dạng response. So sánh thời gian trước sau bằng console.time. |
| Refactor file này | Refactor utils/date.ts sang dayjs, giữ nguyên export và hành vi cũ. Không sửa file nào khác ngoài test tương ứng. Chạy vitest date để kiểm tra. |
Ba mẹo nhỏ hay dùng: dán nguyên thông báo lỗi và stack trace thay vì kể lại; nói rõ lỗi xảy ra liên tục hay chỉ thỉnh thoảng; và khi lỗi hiển thị trên màn hình, dán ảnh chụp bằng Cmd+V trên macOS hoặc Ctrl+V trên Windows để Claude thấy đúng chỗ đang hỏng. [4] [6]
Mình cũng khuyên mỗi lần ra lệnh chỉ giao một nhiệm vụ có mục tiêu rõ ràng: một file, một lỗi, một hướng sửa cụ thể. Nếu Claude đề xuất sửa rộng hơn, tách thành hai lượt — mỗi lượt là một checkpoint riêng và một commit riêng, quay lại dễ hơn nhiều.

Khi Claude sửa hỏng thì làm sao?
Gõ /rewind, hoặc nhấn Esc hai lần khi ô nhập trống, để mở menu checkpoint. Claude Code tự tạo checkpoint trước mỗi yêu cầu bạn gửi, giữ tới 100 checkpoint gần nhất và lưu cùng phiên — nên vẫn quay lại được sau khi mở lại phiên cũ. [3]
Menu này liệt kê các yêu cầu bạn đã gửi trong phiên. Chọn điểm muốn quay lại rồi chọn một trong các hành động: Restore code and conversation (quay cả code lẫn hội thoại), Restore conversation (giữ code, quay hội thoại), Restore code (quay code, giữ hội thoại) hoặc các tuỳ chọn Summarize để nén ngữ cảnh. [3]

Checkpoint có giới hạn bạn cần biết trước khi phụ thuộc vào nó:
- Không theo dõi thay đổi từ lệnh Bash. File chỉ bị lệnh shell đổi sẽ không được khôi phục — phải dùng Git để quay lại.
- File do subagent sửa thường không quay lại được. Trừ một số trường hợp chạy trực tiếp trong phiên, sửa đổi của subagent nằm ngoài checkpoint.
- Không đụng file ngoài phiên. Sửa tay trong trình soạn thảo khác hoặc phiên Claude khác chạy song song không nằm trong bản chụp.
- Symlink và hard-link bị bỏ qua khi khôi phục.
Công thức an toàn: checkpoint cho lỗi trong phiên – Git cho mọi thứ khác. Nếu Claude đang chạy sai hướng, nhấn Esc để dừng giữa chừng — phần việc đã làm vẫn được giữ, và bạn có thể đổi hướng ngay hoặc quay lại trước lượt đó. [3] [6]
3 lỗi người mới hay mắc nhất
Ba lỗi chiếm phần lớn sự cố người mới: yêu cầu quá rộng, bật duyệt tự động quá sớm, và tin kết quả mà không chạy test. Tất cả đều sửa được bằng quy trình phía trên.
- Yêu cầu “sửa hết lỗi trong project”. Phạm vi mở khiến Claude đụng nhiều file. Cách khắc phục: một lượt một lỗi, nêu rõ thư mục được phép sửa.
- Bật “don’t ask again” hoặc chế độ auto quá sớm. Quyền sửa file kéo dài hết phiên, còn quyền Bash lưu vĩnh viễn vào cấu hình repo. Người mới nên giữ Manual và chỉ mở rộng cho lệnh test đã quen. [2] [5]
- Không đọc diff và không chạy test. Code nhìn “hợp lý” vẫn có thể xóa logic cũ hoặc phá các trường hợp biên. Hai phút đọc diff rẻ hơn nhiều một giờ gỡ lỗi sau này.
- Dùng checkpoint như quản lý phiên bản. Checkpoint chỉ sống theo phiên và có thời hạn lưu giữ — lịch sử lâu dài phải là Git. [3]
Nếu bạn là chủ doanh nghiệp nhờ AI sửa website, nguyên tắc y hệt: mô tả triệu chứng cụ thể, giới hạn phạm vi, và luôn có bản backup hoặc môi trường thử nghiệm trước khi áp dụng. Cách tiếp cận này cũng trùng với các nguyên tắc trong bảo mật vibe coding: càng cho agent nhiều quyền, càng cần ranh giới rõ.
Nguồn tham khảo
Các nguồn kiểm tra ngày 03/11/2026. Tính năng Claude Code thay đổi nhanh — bạn nên đối chiếu docs chính thức và lệnh /help trong phiên khi đọc lại bài.
- Claude Code Docs — Overview
- Claude Code Docs — Configure permissions
- Claude Code Docs — Checkpointing
- Claude Code Docs — Common workflows
- Claude Code Docs — Permission modes
- Claude Code Docs — Interactive mode
Câu hỏi thường gặp khi sửa code bằng Claude Code
Claude Code có tự sửa file mà không hỏi không?
Không trong chế độ Manual mặc định. Chỉ khi bạn chủ động chọn don’t ask again hoặc bật chế độ auto/bypassPermissions thì Claude mới thực thi mà không hỏi từng lần.
Người không biết code có nên dùng Claude Code sửa website không?
Được, nhưng chỉ nên làm thay đổi nhỏ, mô tả triệu chứng cụ thể và luôn có backup hoặc môi trường thử nghiệm. Nếu sửa hỏng, /rewind hoặc bản backup là đường quay lại của bạn.
Checkpoint khác Git thế nào?
Checkpoint là bản chụp tạm trong phiên, tiện để quay lại ngay khi AI sửa sai. Git là lịch sử lâu dài, theo dõi cả thay đổi từ lệnh shell — thứ checkpoint không bắt được. Hai cơ chế bổ sung nhau.
Nhấn Esc khi Claude đang chạy có mất công không?
Không. Esc chỉ dừng thao tác đang chạy; phần việc đã làm vẫn được giữ trong phiên. Bạn có thể đổi hướng bằng yêu cầu mới, hoặc /rewind nếu muốn quay cả phần đã làm.
Khi nào nên bật chế độ plan?
Khi thay đổi đụng nhiều file, khi bạn chưa rõ cấu trúc dự án, hoặc khi yêu cầu là refactor lớn. Ở chế độ plan Claude chỉ đọc và phân tích rồi trình bày phương án; bạn duyệt kế hoạch xong mới cho phép sửa.
Claude Code sửa code có miễn phí không?
Claude Code chạy bằng gói Claude hoặc tài khoản Anthropic Console trả theo mức dùng. Cài tool thì miễn phí, nhưng mỗi lần sửa code đều tốn token của gói bạn đang dùng.
Sửa code bằng Claude Code không khó. Khó là giữ được thói quen đúng từ đầu: yêu cầu hẹp – đọc kỹ hộp thoại – xem diff – chạy test – rồi mới commit. Làm quen vòng này hai ba lần, bạn sẽ thấy AI sửa nhanh hơn rất nhiều mà vẫn nằm trong tầm kiểm soát của mình.
Bạn đã thử để Claude Code sửa code chưa? Gặp “tai nạn” nào thú vị nhất? Chia sẻ ở phần bình luận nhé, mình sẽ đọc hết.
