Sửa code bằng Claude Code: quy trình an toàn cho người mới

Nội dung

Bài hướng dẫn quy trình sửa code bằng Claude Code an toàn cho người mới: cách viết yêu cầu, duyệt quyền, kiểm tra thay đổi, kiểm thử và khôi phục khi lỗi.

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.

Sửa code bằng Claude Code với diff trước và sau khi thay đổi trong terminal
Claude Code sửa file theo từng diff mà bạn duyệt, không phải một bản ghi bí ẩn.

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 /rewind hoặ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 status sạ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]

Sơ đồ vòng quy trình sửa code an toàn gồm prompt, permission, diff, test và rewind
Vòng sửa code an toàn: mỗi vòng kết thúc bằng test và commit, và luôn có đường quay lại.

Quy trình sửa code an toàn trong 6 bước

  1. 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.
  2. Để 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.
  3. Đọ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.
  4. 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.
  5. 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.
  6. 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]

Hộp thoại xin quyền trong Claude Code với các lựa chọn Yes và No trước khi sửa file
Hộp thoại xin quyền là điểm kiểm soát cuối cùng trước khi Claude chạm vào file.

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ôiKhá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 điTruy 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àyRefactor 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.

Cấu trúc prompt sửa code gồm mục tiêu, phạm vi file, ràng buộc và cách kiểm chứng
Prompt đủ 4 phần giúp Claude sửa đúng chỗ ngay từ lần đầ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]

Menu rewind trong Claude Code với các lựa chọn khôi phục code và hội thoại
Lệnh /rewind mở danh sách checkpoint — chọn đúng yêu cầu là quay lại được cả code lẫn hội thoại.

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.

  1. Claude Code Docs — Overview
  2. Claude Code Docs — Configure permissions
  3. Claude Code Docs — Checkpointing
  4. Claude Code Docs — Common workflows
  5. Claude Code Docs — Permission modes
  6. 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.

Tú Anh

Cây bút chính tại VietnamTutor

Bài viết cùng chuyên mục

CLAUDE.md là gì? Cách ghi quy tắc dự án để Claude Code làm đúng

Bài giải thích CLAUDE.md là gì, file này load từ đâu, nên ghi nội dung nào và cách bảo trì để Claude Code làm đúng quy

7 lệnh Claude Code cần biết: /help, /clear, /compact và cách dùng

Bài hướng dẫn 7 lệnh Claude Code quan trọng nhất cho người mới bắt đầu, kèm ví dụ thực tế và thời điểm nên dùng từng

Claude Code là gì? Hướng dẫn cài đặt và chạy dự án đầu tiên

Bài giải thích Claude Code là gì, cách cài đặt đúng trên macOS, Windows và Linux, cùng quy trình chạy dự án đầu tiên an toàn

Prompt vibe coding: mẫu brief để AI hiểu rõ sản phẩm

Prompt vibe coding hiệu quả bắt đầu từ một brief rõ, không phải một câu lệnh dài. Mẫu này giúp bạn mô tả sản phẩm, giới

WordPress cho developer 2026: những thay đổi cần kiểm tra

Bài viết tóm tắt các thay đổi WordPress cho developer 2026 đáng chú ý trong tháng 5: Gutenberg, REST API, block editor, theme và kiểm thử

@wordpress/build là gì? Tooling mới cho plugin WordPress

@wordpress/build là hướng tooling mới cho plugin WordPress: build nhanh hơn, convention-based, hỗ trợ script modules và tự tạo file PHP registration.

Docker sandbox AI coding agent: cấu hình an toàn

Bài viết hướng dẫn lập trình viên cấu hình Docker sandbox AI coding agent để giảm rủi ro khi agent đọc repo, sửa file và chạy

Vibe coding và nợ kỹ thuật thầm lặng: kiểm soát bằng kỹ thuật ngữ cảnh

Vibe coding tăng tốc nhưng âm thầm tích lũy nợ kỹ thuật. Bài này giải thích vì sao và cách context engineering giúp bạn giữ codebase

Git stash: lưu tạm công việc dở và khôi phục đúng lúc

Git stash cho phép lưu tạm các thay đổi chưa commit để chuyển sang task khác, rồi khôi phục lại đúng lúc — tránh commit dở

Git rebase bị conflict: cách sửa hoặc abort an toàn

Hướng dẫn xử lý git rebase bị conflict: cách kiểm tra file lỗi, sửa conflict marker, tiếp tục rebase, abort an toàn và khi nào không

Bảo mật vibe coding: đừng để AI sinh lỗ hổng website

Bảo mật vibe coding không chỉ là quét lỗi sau khi AI viết code. Bài viết đưa ra checklist kiểm soát secret, prompt injection, dependency, auth

Kiểm thử code do AI tạo: danh sách kiểm tra trước khi deploy

Code do AI tạo cần được kiểm thử theo nhiều lớp trước khi lên website thật. Checklist này giúp bạn kiểm tra chức năng, bảo mật,