- Cursor là trình soạn code có AI: gợi ý khi gõ, trò chuyện về mã nguồn, và agent làm việc trên nhiều tệp. Nó đọc thư mục dự án để làm những việc đó.
- Trang giá ngày 11/11/2026 có gói Free 0 USD với lượt AI giới hạn, các gói trả phí từ 8 USD mỗi tháng; gói 8 USD chỉ dùng mô hình Grok, mô hình của hãng khác ở các gói cao hơn tính riêng theo giá API.
- Privacy Mode có cho mọi gói; khi bật, Cursor không huấn luyện trên dữ liệu của bạn.
- Tệp .cursorignore chặn Agent và gợi ý đọc tệp bí mật, nhưng tài liệu nói terminal và công cụ MCP mà Agent dùng không bị chặn, và không bảo đảm tuyệt đối. Điều khoản yêu cầu từ 18 tuổi.
Bài dùng Python thuần cho phần soát tệp. Nguồn là trang Pricing, trang Security, trang Ignore file trong tài liệu và Điều khoản dịch vụ của Cursor, đọc ngày 11/11/2026, cùng tài liệu gitignore của Git để kiểm cách khớp mẫu. Cursor đổi gói và tính năng nhanh; bài tập trung vào cách dùng an toàn.
Cursor làm được gì
Cursor là một trình soạn code đầy đủ, có thêm AI ở ba mức. Mức nhỏ nhất là gợi ý khi gõ: bạn viết vài ký tự, nó đề xuất phần tiếp theo. Mức giữa là trò chuyện: bạn hỏi về một hàm, một tệp, hay cả dự án, và nhắc tới tệp cụ thể để nó đọc. Mức lớn nhất là agent: bạn mô tả một việc như "thêm chức năng đăng nhập", agent đọc nhiều tệp, sửa, chạy lệnh, rồi đưa bạn xem lại thay đổi. Trang giá còn liệt kê agent chạy trên đám mây, tự động hóa và rà soát code bằng AI ở các gói cao hơn.
So với trợ lý trò chuyện, khác biệt là Cursor làm việc ngay trong dự án của bạn, nên tiện hơn nhiều khi việc chạm vào nhiều tệp. Đổi lại, nó cần đọc mã nguồn, và với agent, cần chạy lệnh trên máy bạn. Bài so sánh các công cụ agent đặt Cursor cạnh các lựa chọn khác; bài này đi sâu vào Cursor.
Các gói
Trang giá ngày 11/11/2026 cho cá nhân có: Free 0 USD với lượt AI giới hạn cho agent và trò chuyện; Plus 8 USD mỗi tháng, ghi chú chỉ có mô hình Grok; Premium 30 USD, gấp 4 lần lượt dùng của Plus, thêm agent đám mây, tự động hóa, rà soát code, và dùng mô hình của hãng khác theo giá API niêm yết; Super 100 USD gấp 15 lần Plus; Ultra 200 USD gấp 50 lần Plus. Trang ghi giá chưa gồm thuế, và việc dùng mô hình của hãng khác không nằm trong giá tháng mà tính riêng theo lượng dùng. Trước khi trả tiền, đọc kỹ mục này: chọn một mô hình của hãng khác trong gói Premium trở lên sẽ phát sinh chi phí ngoài tiền thuê bao.
Privacy Mode
Mục Privacy Mode trên trang Security, cập nhật ngày 25/8/2026, ghi: chế độ này bật được trong cài đặt hoặc do quản trị viên của nhóm bật; có cho bất kỳ ai, gói miễn phí hay trả phí; khi bật, Cursor không huấn luyện trên dữ liệu của bạn, và có thêm các biện pháp kỹ thuật cùng ràng buộc hợp đồng với nhà cung cấp mô hình. Thành viên mới của nhóm nhận cài đặt của nhóm. Với dự án ở trường hay ở công ty, bật chế độ này trước khi mở thư mục đầu tiên.
Tệp .cursorignore và giới hạn của nó
Trang Ignore file giải thích Cursor đọc mã nguồn để chạy các tính năng, và bạn dùng tệp .cursorignore ở thư mục gốc để chặn thư mục hay tệp. Tệp này dùng cú pháp của .gitignore. Cursor tự bỏ qua tệp có trong .gitignore và một danh sách mặc định như các tệp khóa phiên bản thư viện. Danh sách bỏ qua toàn cục cho mọi dự án mặc định rỗng; tài liệu gợi ý thêm các mẫu cho tệp môi trường, tệp chứa thông tin đăng nhập, khóa và chứng chỉ.
Tài liệu cũng nói rõ hai giới hạn. Thứ nhất, tệp bị bỏ qua được chặn khỏi phần Agent và gợi ý đọc trực tiếp, nhưng terminal và các công cụ MCP mà Agent dùng không bị chặn: một lệnh in nội dung tệp vẫn đọc được tệp đó. Thứ hai, ngay cả với phần được chặn, tài liệu viết rằng không bảo đảm bảo vệ hoàn toàn vì mô hình ngôn ngữ khó đoán trước. Kết luận thực tế: .cursorignore là một lớp phòng thủ, không phải chỗ để yên tâm cất bí mật. Cách đúng là giữ khóa trong biến môi trường hoặc trình quản lý bí mật, ngoài thư mục dự án, như bài giữ khóa API an toàn hướng dẫn.
Ví dụ: soát tệp bí mật trước khi mở dự án
Chương trình mẫu nhận danh sách tệp của dự án, tìm những tệp giống tệp bí mật theo đúng các mẫu tài liệu gợi ý, rồi kiểm xem chúng đã bị .gitignore hay .cursorignore chặn chưa. Hàm bi_bo_qua cài phần cú pháp hay dùng của gitignore: dấu sao, hai dấu sao, dấu hỏi, thư mục kết thúc bằng gạch chéo, và phủ định bằng dấu chấm than. Danh sách tệp trong ví dụ là giả lập.
"""Soát tệp bí mật trong dự án trước khi mở bằng Cursor: tệp nào giống khóa, mật khẩu mà chưa bị .gitignore/.cursorignore chặn.
Theo trang Ignore file của Cursor (đọc 11/11/2026): .cursorignore dùng cú pháp .gitignore; Cursor tự bỏ qua tệp trong
.gitignore; danh sách bỏ qua toàn cục mặc định rỗng, tài liệu gợi ý thêm **/.env, **/.env.*, **/credentials.json,
**/secrets.json, **/*.key, **/*.pem, **/id_rsa. Tài liệu cũng ghi: terminal và công cụ MCP mà Agent dùng KHÔNG bị
.cursorignore chặn, và không bảo đảm chặn tuyệt đối. Vì vậy cách chắc nhất là không để bí mật trong thư mục dự án.
Hàm khop chỉ cài phần cú pháp hay dùng (*, **, ?, thư mục kết thúc bằng /, phủ định !), không đầy đủ như git.
Danh sách tệp trong chay_thu là GIẢ LẬP.
"""
import re
MAU_BI_MAT = ["**/.env", "**/.env.*", "**/credentials.json", "**/secrets.json", "**/*.key", "**/*.pem", "**/id_rsa"]
def _regex(mau):
thu_muc = mau.endswith("/")
mau = mau.rstrip("/")
neo = "/" in mau # có / ở giữa hoặc đầu thì tính từ gốc dự án, không thì khớp ở mọi độ sâu
mau = mau.lstrip("/")
r = ""
i = 0
while i < len(mau):
if mau.startswith("**/", i):
r += "(?:.*/)?"
i += 3
elif mau.startswith("**", i):
r += ".*"
i += 2
elif mau[i] == "*":
r += "[^/]*"
i += 1
elif mau[i] == "?":
r += "[^/]"
i += 1
else:
r += re.escape(mau[i])
i += 1
dau = "" if neo or r.startswith("(?:.*/)?") else "(?:.*/)?"
duoi = "/.*" if thu_muc else "(?:/.*)?"
return re.compile("^" + dau + r + duoi + "$")
def bi_bo_qua(duong, cac_mau):
ket = False
for mau in cac_mau:
mau = mau.split("#")[0].strip()
if not mau:
continue
phu_dinh = mau.startswith("!")
if _regex(mau[1:] if phu_dinh else mau).match(duong):
ket = not phu_dinh
return ket
def soat(tep, gitignore, cursorignore):
nguy_hiem = [t for t in tep if any(_regex(m).match(t) for m in MAU_BI_MAT)]
return [t for t in nguy_hiem if not bi_bo_qua(t, gitignore + cursorignore)]
TEP = [".env", "backend/.env.production", "backend/app.py", "deploy/server.pem", "keys/id_rsa",
"config/credentials.json", "notes/huong_dan.md", "dist/bundle.js"]
GITIGNORE = [".env", "dist/"]
CURSORIGNORE_YEU = ["# chỉ chặn tệp .env ở gốc", ".env"]
CURSORIGNORE_TOT = ["**/.env", "**/.env.*", "**/*.pem", "**/id_rsa", "**/credentials.json"]
def chay_thu():
dong = [f"Chỉ có .gitignore và .cursorignore sơ sài: còn lộ {soat(TEP, GITIGNORE, CURSORIGNORE_YEU)}",
f"Thêm mẫu theo gợi ý của tài liệu: còn lộ {soat(TEP, GITIGNORE, CURSORIGNORE_TOT) or 'không tệp nào'}",
f"dist/bundle.js bị bỏ qua nhờ .gitignore: {bi_bo_qua('dist/bundle.js', GITIGNORE)}",
f"Phủ định '!backend/.env.example' giữ lại tệp mẫu: {not bi_bo_qua('backend/.env.example', ['**/.env.*', '!backend/.env.example'])}"]
print("\n".join(dong))
return dong
if __name__ == "__main__":
chay_thu()
Với .gitignore chỉ chặn tệp .env ở gốc và thư mục dist, cộng một .cursorignore sơ sài, vẫn còn bốn tệp lộ: tệp môi trường của phần backend, chứng chỉ trong thư mục deploy, khóa SSH, và tệp thông tin đăng nhập. Thêm các mẫu theo gợi ý của tài liệu thì không còn tệp nào lộ. Dòng cuối cho thấy cách dùng phủ định: chặn mọi tệp .env có đuôi nhưng giữ lại tệp .env.example, thứ thường chỉ chứa tên biến chứ không chứa giá trị. Để chắc rằng cách khớp mẫu đúng, phần kiểm của bài so kết quả với lệnh git check-ignore trên 16 đường dẫn và chín mẫu; hai bên khớp hoàn toàn.
Dùng agent cho chắc tay
Trang Rules trong tài liệu giải thích mô hình không nhớ gì giữa các lần gọi, nên Cursor cho bạn viết quy tắc để đưa vào đầu ngữ cảnh mỗi lần: quy tắc của dự án đặt trong thư mục .cursor/rules dưới dạng tệp .mdc và được quản lý cùng git, quy tắc của người dùng áp cho mọi dự án, hoặc một tệp AGENTS.md đơn giản. Đây là chỗ ghi những điều agent phải theo: phiên bản Python, cách đặt tên, lệnh chạy test, thư mục không được sửa. Cách viết một chỉ dẫn cố định cho tốt giống như với system prompt: rõ vai trò, có lý do, nói nên làm gì.
Khi giao việc cho agent, giữ việc nhỏ và kiểm được: một chức năng, một lỗi, một tệp. Lưu trạng thái bằng git trước khi để agent sửa, để quay lại dễ dàng. Đọc từng thay đổi trước khi chấp nhận, đặc biệt các lệnh nó định chạy trên máy bạn. Và chạy test sau mỗi lần sửa thay vì tin rằng agent đã làm đúng.
Độ tuổi
Điều khoản dịch vụ cập nhật ngày 3/9/2026 ghi người dùng phải đủ tuổi trưởng thành theo luật nơi mình sống, hoặc 18 tuổi, lấy mức cao hơn. Học sinh phổ thông vì vậy chưa nên tự đăng ký; trong lúc chờ, có thể học với các công cụ có điều khoản phù hợp và với sự đồng ý của phụ huynh, hoặc qua chương trình của nhà trường. Bài đọc codebase với AI có cách dùng AI để hiểu dự án mà không cần công cụ trả phí.
- Mở dự án có tệp .env, khóa SSH hay chứng chỉ mà chưa bật Privacy Mode và chưa có .cursorignore.
- Tin rằng .cursorignore chặn được mọi thứ, kể cả lệnh terminal của Agent.
- Chọn mô hình của hãng khác ở gói Premium mà không biết nó tính tiền riêng.
- Để agent tự chạy lệnh mà không đọc lại thay đổi trước khi chấp nhận.
- Người dưới 18 tuổi tự đăng ký trái điều khoản.
Câu hỏi thường gặp
Cursor có miễn phí không?
Có gói Free 0 USD với lượt AI giới hạn, theo trang giá ngày 11/11/2026.
Privacy Mode có trong gói miễn phí không?
Có. Trang Security ghi chế độ này có cho mọi người, miễn phí hay trả phí.
.cursorignore khác .gitignore thế nào?
Cùng cú pháp; .cursorignore chặn Cursor đọc, .gitignore chặn git theo dõi. Cursor tôn trọng cả hai.
Học sinh dùng Cursor được không?
Điều khoản yêu cầu từ 18 tuổi hoặc tuổi trưởng thành theo luật nơi bạn sống.
Học tiếp
- Đặt Cursor cạnh các công cụ khác: so sánh các công cụ agent.
- Cất khóa ngoài dự án: giữ khóa API an toàn.
- Hiểu một dự án lạ với AI: đọc codebase với AI.
Nếu bạn muốn học Python và AI bài bản cùng giảng viên, tham khảo khóa học AI của Big-O Coding.
Khóa AI – Introduction to Machine Learning: nền tảng Máy học từ thuật toán cơ bản đến Neural Networks và LLM, học bằng Python. Học thử buổi 1 miễn phí.


