Bảo mật và quyền riêng tư của MXterm Pro
Cập nhật lần cuối: Tháng 9 năm 2026
MXterm Pro có an toàn không? Ứng dụng không upload mật khẩu SSH, output terminal hay transcript của agent. Nó gửi một bộ dữ liệu ngắn, đã được liệt kê, tới mxterm.net và Google Analytics, và bạn có thể tắt các báo cáo sử dụng. Nó không phải sandbox. Một pane mạnh ngang với shell phía sau nó, kể cả AI agent chạy bên trong.
Khi nào MXterm Pro là lựa chọn sai
Các cơ chế kiểm soát ở đây phù hợp với developer chạy agent trong repository có thể reset được và muốn thấy app gửi đi những gì. Agent có shell thật, và bạn quyết định tin mỗi agent tới đâu. Một số nhu cầu được đáp ứng tốt hơn ở nơi khác.
- Bạn cần ranh giới cứng quanh output không đáng tin của agent. Hãy dùng container hoặc máy ảo, vì một pane ở đây có toàn bộ quyền truy cập của tài khoản bạn đang dùng.
- Chính sách của bạn cấm mọi kết nối ra ngoài. Không có cài đặt nào tắt được việc kiểm tra cập nhật hay yêu cầu lấy giới hạn gói Free. Bạn có thể chặn mxterm.net ở firewall, và app vẫn chạy bình thường.
- Bạn cần bản cài Windows đã ký số Authenticode. Bản hiện tại chưa ký số.
- Bạn cần Linux. Chưa có bản phát hành Linux.
Những gì rời khỏi máy bạn
Bảng này liệt kê những gì app tự gửi đi. Mỗi yêu cầu cũng để máy chủ nhận nó thấy địa chỉ IP của bạn. Các báo cáo nằm sau công tắc không bao giờ chứa nội dung terminal, lệnh, đường dẫn file, host SSH hay license key, và một bước kiểm tra sẽ loại bỏ mọi payload chứa từ nằm trong danh sách các thuật ngữ đó.
| Gửi gì và tới đâu | Khi nào | Nội dung gửi | Cách tắt |
|---|---|---|---|
| Kiểm tra cập nhật (mxterm.net) | 5 giây sau khi mở app, sau đó cứ 4 giờ một lần | Phiên bản app, hệ điều hành và ngôn ngữ giao diện | Không có cài đặt |
| Giới hạn gói Free (mxterm.net) | Cùng lịch | Không gì cả: một yêu cầu GET thuần, không kèm định danh | Không có cài đặt |
| Check-in hằng ngày (mxterm.net) | Mỗi ngày một lần | ID cài đặt ngẫu nhiên, phiên bản, Free hoặc Pro, phiên bản hệ điều hành, loại CPU, số lần mở app, bộ đếm lời nhắc nâng cấp, cờ báo crash | Cài đặt → Quyền riêng tư |
| Sự kiện lỗi (mxterm.net) | Khi một trong mười lăm lỗi đã liệt kê xảy ra | Một mã lý do, không bao giờ là nội dung thông báo lỗi | Cài đặt → Quyền riêng tư |
| Ping sử dụng (Google Analytics) | Một lần, lúc mở app | ID client ngẫu nhiên, phiên bản, tên hệ điều hành | Cài đặt → Quyền riêng tư |
| Kích hoạt license (mxterm.net) | Khi bạn kích hoạt hoặc huỷ kích hoạt | Key, dấu vân tay máy, hostname, phiên bản, nền tảng | Không cần nếu bạn dán một token đã ký |
| Lệnh gọi tài khoản Token Meter (API của nhà cung cấp) | Chỉ sau khi bạn bật giới hạn gói Claude hoặc Hạn mức Codex trực tiếp, hoặc thêm key của nhà cung cấp; tối đa 5 phút một lần | Thông tin đăng nhập, chỉ gửi tới đúng nhà cung cấp đó, để đọc mức dùng của gói hoặc số dư | Mặc định tắt |
Bản build bạn tự biên dịch không có key báo cáo nào, nhưng vẫn gửi yêu cầu cập nhật và yêu cầu lấy giới hạn gói Free. Công tắc được đọc lại trước mỗi lần gửi. Tài liệu tham chiếu telemetry liệt kê từng trường.
Có hai thứ nằm ngoài bảng. Các công cụ bạn chạy trong pane, như Claude Code hay Codex, tự gọi tới nhà cung cấp của chúng. Bất cứ nơi nào bạn kết nối tới, như một host SSH, một MXterm Host hay một trang trong cột xem trước, đều nhận những gì bạn gửi cho nó. Bản thân app không gửi yêu cầu nào tới mô hình AI: Command Recipes (⌘J) là một bảng từ khóa cục bộ.
Những gì ở lại trên máy bạn
MXterm Pro không có tài khoản cloud, nên những gì nó lưu đều lưu tại đây. Danh sách dưới đây cho biết mỗi loại dữ liệu nằm ở đâu và được bảo vệ ra sao.
| Dữ liệu | Nằm ở đâu |
|---|---|
| Mật khẩu SSH | Lưu trong kho lưu thông tin đăng nhập của hệ thống (Keychain trên macOS), theo từng host. App không bao giờ đọc lại mật khẩu để điền vào form hay gõ hộ bạn. Bạn tự nhập nó trong terminal. |
| File key và passphrase | Chỉ đường dẫn tới file key được lưu, và file vẫn nằm nguyên chỗ cũ. Danh sách host bỏ passphrase của key trước khi ghi xuống đĩa. |
| Host đã lưu, layout và cài đặt | Trong bộ lưu trữ cục bộ riêng của app, không được mã hóa và bất kỳ chương trình nào chạy bằng tài khoản của bạn cũng đọc được. Tên host, cổng, user, tab, thư mục và lựa chọn agent nằm ở đó. Mật khẩu thì không. |
| License token | Trong kho lưu thông tin đăng nhập và trong bộ lưu trữ cục bộ. Token được ký, không được mã hóa, và mang email cùng tên ghi trên license, gói, ID đơn hàng và ngày cấp. |
| Truy cập từ xa | Mật khẩu truy cập chỉ được giữ dưới dạng hash Argon2id trong kho lưu thông tin đăng nhập của hệ thống, không bao giờ nằm trong file, và không hiện lại sau khi bạn đặt. Token của các thiết bị đã ghép với máy Mac này được giữ dưới dạng hash SHA-256 trong một file ở thư mục dữ liệu của app. Token của một MXterm Host bạn đã thêm được giữ trong kho lưu thông tin đăng nhập. Chia sẻ không được lưu, nên sau khi khởi động lại, không pane nào được chia sẻ. |
| Output terminal | Trong bộ nhớ. App không tự lưu output của pane xuống đĩa, và scrollback mất sau khi bạn thoát app. File do chính bạn lưu, như báo cáo Control Room hay file tải xuống qua SFTP, là của bạn. |
| Token Meter | Số token theo giờ cho từng mô hình của Claude Code và Codex, giữ tối đa 30 ngày, lấy từ các transcript mà những công cụ đó vốn đã lưu. Prompt và câu trả lời không được sao chép. |
| Log chỉ lưu cục bộ | Ba log trong thư mục dữ liệu của app ghi lý do các pane kết thúc, quyết định của cơ chế gửi tin trong Control Room và các lần attach từ xa diễn ra thế nào. Chúng chỉ chứa từ cố định, số đếm và handle đã băm, không bao giờ có ID terminal, nội dung tin nhắn, đường dẫn hay địa chỉ, và không có gì gửi chúng đi. |
| Tệp chẩn đoán | Cài đặt → Quyền riêng tư → Tạo tệp chẩn đoán ghi ra một file JSON đã lược bỏ thông tin nhạy cảm. Bạn tự đọc và tự gửi email; app không upload gì. Cài đặt → Góp ý hoạt động theo cách tương tự: nó mở ứng dụng email của bạn với một thư gửi tới địa chỉ hỗ trợ đã soạn sẵn. Thư chỉ mang phiên bản MXterm, hệ điều hành và ngôn ngữ ứng dụng, và không có gì được gửi cho tới khi bạn bấm Gửi trong ứng dụng email. |
Một agent pane có thể làm gì
Một agent pane là một terminal thật chạy công cụ dòng lệnh của agent trong thư mục của bạn, bằng tài khoản của bạn. Nó đọc và xóa được những file bạn đọc và xóa được, dùng được thông tin đăng nhập git của bạn và truy cập được mạng của bạn. MXterm Pro không thêm lớp phân quyền nào cho những gì agent chạy.
Bypass Mode
Bypass Mode là một ô chọn trong trình tạo tab mới, mặc định tắt. Khi bật, nó thêm flag bỏ qua bước duyệt của chính agent đó lúc pane khởi động, và agent từ đó chạy lệnh và sửa file mà không hỏi. Các phiên bản cũ từng mặc định bật; bản cài chưa bao giờ đổi thiết lập này giờ bắt đầu ở trạng thái tắt.
| Agent | Flag được thêm |
|---|---|
| Claude Code | --dangerously-skip-permissions |
| Codex | --dangerously-bypass-approvals-and-sandbox |
| Gemini CLI và Qwen Code | --yolo |
| Grok | --always-approve |
Bảng trên chỉ nêu vài ví dụ: 14 agent có flag riêng, và Goose dùng một biến môi trường chỉ đặt được trong Cài đặt. Agent nào không có cả hai thì không nhận gì, nên thiết lập này không thay đổi gì với chúng.
Bước kiểm tra những gì bạn tự gõ
Có một bước kiểm tra đặt trước những gì bạn gõ. Nếu một dòng bạn gõ hoặc dán khớp với một danh sách cố định ngắn, chẳng hạn rm -rf / hay git push --force, app sẽ hỏi xác nhận trước. Danh sách chỉ là vài chuỗi con, nên cách viết khác sẽ lọt qua. Bước này không theo dõi những gì agent tự chạy.
MCP server cho phép agent làm gì
MXterm Pro chạy một MCP server cục bộ để agent điều khiển được một số phần của app. Nó có tám tool, và không tool nào đọc output của pane khác.
| Tool | Chức năng | Có sẵn khi |
|---|---|---|
browser.open_preview | Mở một URL http hoặc https trong cột xem trước bên cạnh pane đã gọi nó | Mọi pane |
worktree.spawn, list, remove | Tạo một git worktree dưới <repo>/.worktrees và mở một agent pane mới trong đó, liệt kê các worktree, hoặc xóa một cái. Thao tác xóa từ chối khi còn thay đổi chưa commit và từ chối đường dẫn nằm ngoài .worktrees. | Chỉ trong workspace bật cách ly worktree |
mxt_room.list_peers, send, read_inbox, claim | Liệt kê các thành viên trong phòng, nhắn cho họ, đọc hộp thư của chính bạn và đặt trước file | Chỉ với các pane trong một Control Room |
Có một tool cần cẩn thận. mxt_room.send ở chế độ execute gõ text vào terminal của một agent khác trong cùng phòng. Nó không thể nhắm tới Moderator, bị giới hạn 20 tin một phút và 8.192 byte, và agent nhận được sẽ được báo rằng văn bản đó là bàn giao từ một peer, không phải từ bạn. Claim file chỉ mang tính khuyến nghị: không có gì chặn việc ghi.
Token phiên và những file nó chạm tới
Token phiên của mỗi pane chính là ID terminal của nó, một UUID ngẫu nhiên. MXterm Pro export nó vào môi trường của pane dưới tên MXTERM_SESSION, nên bất kỳ chương trình nào trong pane đó đều đọc được. Server chỉ lắng nghe ở loopback. Chương trình cục bộ nào cũng chạm tới được cổng, nhưng mọi lệnh gọi đều cần token của một pane đang sống, và đóng pane là kết thúc token.
Để agent tìm thấy server, app sửa cấu hình nằm ngoài thư mục của chính nó ở mỗi lần khởi động. Nó thêm một mục mxterm vào ~/.claude.json, ~/.codex/config.toml và ~/.omp/agent/mcp.json, và tạo các file đó nếu chưa có. Nó cũng thêm một dòng vào cuối ~/.zshrc khi file đó tồn tại. Không file nào trong số này chứa secret, và các mục vẫn còn sau khi bạn thoát app.
Gemini CLI không đọc được token từ môi trường. Với một pane Gemini, token đang sống được ghi vào .gemini/settings.json trong dự án, và MXterm Pro thêm đường dẫn đó vào .gitignore của dự án để không bị commit nhầm.
Worktree và những gì chúng không làm
Git worktree cho mỗi agent nhánh và thư mục riêng dưới .worktrees, giúp giảm khả năng thay đổi của agent này va chạm với agent khác. Chúng không hoàn tác một lệnh sai bên trong worktree, và không ngăn agent chạm tới file bên ngoài nó. Trong một repo chưa có commit nào, cách ly worktree trước tiên tạo một Initial commit chỉ chứa một file .gitkeep rỗng, và không có gì khác trong thư mục được commit. Hướng dẫn worktree giải thích cơ chế.
Truy cập từ xa
Máy chủ host cho phép thiết bị khác điều khiển pane của bạn tắt cho tới khi bạn bấm Start Server (Bật server) trong Cài đặt → Remote Access & Devices. Một thiết lập, Tự chạy máy chủ host khi mở MXterm, mặc định tắt. Khi bạn bật nó, máy chủ chạy mỗi lần MXterm mở và thử lại tối đa 5 phút trong lúc mạng lên. Nó bind vào địa chỉ Tailscale nếu Mac có. Mạng riêng mặc định tắt; nếu bạn cho phép thì nó chạy song song với Tailscale, và nếu không có cả hai thì chỉ Mac này. Nó không bao giờ bind vào địa chỉ công cộng.
Việc chia sẻ theo từng pane và mặc định tắt. Bạn chia sẻ một pane ở chế độ chỉ xem hoặc có quyền điều khiển, trong 30 phút, 1 giờ, 8 giờ hoặc cho tới khi bạn dừng. Thiết bị đã ghép chỉ thấy các pane được chia sẻ, và chỉ gõ được trong pane chia sẻ có quyền điều khiển, mỗi lúc chỉ một người gõ. Sau khi khởi động lại, các lượt chia sẻ được khôi phục khi từng pane chạy lại, cho tới thời điểm đã đặt, và lượt chia sẻ không xác minh được sẽ bị bỏ.
Thiết bị mới ghép bằng mã ghép sáu ký tự, hết hạn sau 5 phút và chỉ dùng được một lần, và nhập sai mã nhiều lần sẽ khóa việc ghép trong 5 phút. Bạn còn bật được mật khẩu truy cập, cho phép thiết bị mới ghép bằng mật khẩu thay vì mã. Mật khẩu được nhận qua Tailscale và, nếu bạn cho phép truy cập mạng nội bộ, qua mạng nội bộ (nơi nó không được mã hóa), không bao giờ qua địa chỉ loopback của chính Mac này. Mặc định nó tắt. Gói Free đặt được mật khẩu Tạm thời tối đa 8 giờ, còn mật khẩu Thường trực không giới hạn thời gian cần Pro. Token thiết bị dài 256-bit, lưu dưới dạng hash trên host, hết hạn sau 30 ngày không dùng và có thể thu hồi ngay.
Khi máy chủ host đang chạy và có ít nhất một pane được chia sẻ, MXterm Pro giữ máy không tự chuyển sang ngủ, để thiết bị đã ghép vẫn vào được. Màn hình vẫn có thể tắt, và giấc ngủ do bạn chủ động, như gập nắp khi chạy pin, vẫn xảy ra. Mặc định nó bật và có công tắc trong Cài đặt → Remote Access & Devices. Nó được làm cho macOS và Windows; phần Windows chưa xác minh.
Server chạy HTTP thuần và WebSocket, và không tự thêm TLS. Trên mạng cục bộ, người khác trong mạng đó có thể đọc lưu lượng, và Cài đặt sẽ cảnh báo bạn. Tailscale mã hóa kết nối giữa các thiết bị của bạn, nên địa chỉ tailnet là lựa chọn an toàn hơn. Bài Địa chỉ nào MXterm Pro dùng giải thích thứ tự chọn.
Kiểm tra license
License là một token ký bằng Ed25519. App kiểm tra chữ ký của nó với public key được nhúng trong app, ngay trên máy bạn, ở mỗi lần khởi động. Khi có mạng, app còn hỏi mxterm.net xem license còn hiệu lực không, lúc khởi động và khoảng một lần mỗi ngày. Không có gì hết hạn: token ghi một ngày cấp để truy xuất nguồn gốc, và app không bao giờ so nó với đồng hồ.
Kích hoạt một key đã dán và lần kiểm tra lại định kỳ là các bước của license có dùng mạng. Khi kích hoạt, app gửi key, dấu vân tay máy, hostname máy tính của bạn, phiên bản app và nền tảng tới mxterm.net, nơi tính một seat và trả lại token đã ký. Dấu vân tay là hash SHA-256 rút gọn của ID phần cứng, và bản thân ID đó không được gửi đi.
Huỷ kích hoạt giải phóng seat theo cùng cách, và dán một token đã ký thì kích hoạt được offline. Một lần kiểm tra lại không thành công, hoặc khi bạn đang offline, không thay đổi gì. Chỉ khi server trả lời rõ ràng rằng license hoặc seat không còn, hai lần liên tiếp, thì Pro mới bị gỡ. Seat chỉ được tính khi bạn kích hoạt.
Bản tải về, ký số và cập nhật
Bản macOS được ký bằng chứng chỉ Developer ID, dùng hardened runtime, và được Apple notarize rồi staple. Đó là một universal binary. Nó không có App Sandbox và không giữ entitlement nào. Bạn tự kiểm tra được: so SHA-256 của DMG với giá trị trên trang changelog, rồi chạy spctl -a -t exec -vv trên app. Dòng source phải ghi Notarized Developer ID.
Bản cập nhật chỉ tải xuống sau khi bạn bấm. Trình cập nhật sau đó xác minh chữ ký minisign với public key nằm trong app trước khi cài bất cứ thứ gì. Bước kiểm tra này tách biệt với việc ký của Apple, và nó bảo vệ các bản cập nhật trên cả hai nền tảng.
Bản cài Windows x64 chưa ký số Authenticode, nên SmartScreen hiện Unknown publisher ở lần chạy đầu. Windows mới được hỗ trợ. Những phần chưa được xác minh trên Windows gồm kho lưu thông tin đăng nhập, panel file SSH và tunnel, nhận diện agent trong pane thường, cùng máy chủ host từ xa và việc giữ máy thức của nó.
Cửa sổ app không đặt content security policy nào. Nó chỉ tải code được đóng gói cùng app, và các bản xem trước trang mở trong webview riêng.
Các quyền app xin
Trên macOS bạn có thể thấy các lời nhắc này.
- Quyền truy cập thư mục Desktop, Documents và Downloads, khi một shell trong pane chạm tới chúng. Nội dung lời nhắc nói rõ lý do.
- Thông báo, lần đầu app gửi banner của agent.
- Mở cùng máy, chỉ khi bạn bật nó trong Cài đặt → Chung. macOS liệt kê nó dưới Login Items.
- Đọc thông tin đăng nhập đã lưu của Claude Code, chỉ sau khi bạn bật Giới hạn gói trong Cài đặt → Token Meter.
App không khai báo việc dùng micro, camera hay vị trí.
Những điều MXterm Pro không cam kết
Nó không sandbox hay hạn chế một terminal, hoặc một AI agent chạy trong đó. Nó không hứa rằng worktree, claim file hay bước kiểm tra những gì bạn gõ sẽ ngăn được mất dữ liệu. Chúng giảm rủi ro; không phải bảo đảm.
Hướng dẫn thực tế
- Xem lại những gì một AI agent sắp chạy trước khi bạn duyệt các lệnh có tính phá huỷ.
- Để Bypass Mode tắt, trừ khi repository đó là thứ bạn reset được từ remote.
- Bật cách ly worktree khi có nhiều hơn một agent làm việc trong cùng một repository.
- Đóng pane khi bạn dùng xong. Việc đó kết thúc token phiên của nó.
- Chỉ chia sẻ những pane bạn định chia sẻ, và bấm Stop Server (Dừng server) khi xong việc.
- Luôn cập nhật MXterm Pro để có các bản sửa lỗi bảo mật và xác minh license mới nhất.
- Báo cho support bất cứ điều gì trông giống lỗ hổng bảo mật, thay vì đăng công khai.
Câu hỏi thường gặp về bảo mật
MXterm Pro có lưu SSH key hay mật khẩu của tôi lên cloud không?
Không. MXterm Pro không có tài khoản cloud nào giữ chúng. Mật khẩu đã lưu đi vào kho lưu thông tin đăng nhập của hệ thống, chỉ đường dẫn của file key được lưu, và passphrase của key không được ghi xuống đĩa. Vài thứ app có gửi đi được liệt kê trong bảng ở trên.
AI agent có thể làm gì gây hại qua MXterm Pro không?
Có, theo cách mà bất kỳ chương trình nào có shell cũng làm được. Một pane mạnh đúng bằng shell phía sau nó, và MXterm Pro không sandbox nó. Các MCP tool thì hẹp, nhưng những lệnh agent chạy thì không bị giới hạn. Hãy xem lại các lệnh có tính phá huỷ, và dùng container hoặc máy ảo cho code bạn không tin tưởng.
MCP server có để lộ terminal của tôi ra mạng không?
Không. Nó chỉ lắng nghe ở 127.0.0.1, và mọi lệnh gọi đều cần token của một pane đang sống. Truy cập từ xa là một máy chủ host riêng, tắt cho tới khi bạn bấm Start Server (Bật server) trong Cài đặt → Remote Access & Devices, hoặc bật thiết lập tự chạy nó khi mở MXterm. Nó chỉ chia sẻ những pane bạn chọn.
License của tôi có bị kiểm tra online mỗi lần mở app không?
Không. Token đã ký được xác minh ngay trên máy Mac của bạn bằng chữ ký Ed25519 ở mỗi lần khởi động. Mạng chỉ được dùng khi bạn kích hoạt hoặc huỷ kích hoạt một key, không dùng lúc khởi động.
App gửi gì về tôi, và tôi có tắt được không?
Bản build chính thức gửi một check-in hằng ngày, các báo cáo lỗi và một ping Google Analytics. Một công tắc trong Cài đặt → Quyền riêng tư tắt cả ba, biến môi trường DO_NOT_TRACK cũng vậy. Việc kiểm tra cập nhật và yêu cầu lấy giới hạn gói Free không có công tắc.
Bypass Mode làm gì?
Nó thêm flag bỏ qua bước duyệt của chính từng agent được hỗ trợ, nên agent chạy lệnh và sửa file mà không hỏi. Mặc định nó tắt và có hiệu lực khi một pane khởi động. Chỉ dùng ở nơi bạn hoàn tác được các thay đổi.
Bản cài Windows có được ký số không?
Chưa ký số bằng Authenticode, nên SmartScreen hiện Unknown publisher ở lần chạy đầu. Các bản cập nhật mang chữ ký minisign.
Làm sao kiểm tra bản tải macOS là bản thật?
So SHA-256 của DMG với giá trị trên trang changelog, rồi chạy spctl -a -t exec -vv trên app. Một bản đúng sẽ báo accepted với source Notarized Developer ID.
Có câu hỏi về việc dùng an toàn? Viết cho support@mxterm.net. Xem thêm chính sách quyền riêng tư.
Hỏi AI về MXterm Pro
Mở câu trả lời trực tiếp trong ChatGPT, Claude hoặc Perplexity, dựa trên trang này. Trợ lý AI tự viết, không phải chúng tôi, nên hãy kiểm tra nguồn nó trích dẫn.
Câu hỏi được gửiMột AI agent làm được gì qua pane và MCP server của MXterm Pro, và thông tin đăng nhập SSH được lưu ở đâu?