agents.defaults.sandbox (toàn cục) hoặc agents.list[].sandbox (theo từng agent). Tiến trình Gateway luôn duy trì trên máy chủ; chỉ việc thực thi công cụ được chuyển vào sandbox khi tính năng này được bật.
Đây không phải là một ranh giới bảo mật hoàn hảo, nhưng nó hạn chế đáng kể quyền truy cập vào hệ thống tệp và tiến trình khi mô hình thực hiện hành động thiếu sáng suốt.
Những gì được chạy trong sandbox
- Thực thi công cụ:
exec,read,write,edit,apply_patch,process, v.v. - Trình duyệt sandbox tùy chọn (
agents.defaults.sandbox.browser).
- Bản thân tiến trình Gateway.
- Mọi công cụ được cho phép rõ ràng chạy bên ngoài sandbox thông qua
tools.elevated. Thực thi nâng cao bỏ qua sandbox và chạy trên đường dẫn thoát đã cấu hình (mặc định làgateway, hoặcnodekhi đích thực thi lànode). Nếu sandbox bị tắt,tools.elevatedkhông thay đổi gì vì việc thực thi đã chạy trên máy chủ. Xem Chế độ nâng cao.
Chế độ, phạm vi và backend
Ba thiết lập độc lập điều khiển hành vi của sandbox:
Chế độ kiểm soát thời điểm áp dụng sandbox:
off: không sử dụng sandbox.non-main: chạy mọi phiên trong sandbox, ngoại trừ phiên chính của agent. Khóa phiên chính luôn làagent:<agentId>:main(hoặcglobalkhisession.scopelà"global"); không thể cấu hình khóa này. Các phiên nhóm/kênh sử dụng khóa riêng nên luôn được xem là phiên không chính và được chạy trong sandbox.all: mọi phiên đều chạy trong sandbox.
agent: một container cho mỗi agent.session: một container cho mỗi phiên.shared: một container dùng chung cho tất cả các phiên chạy trong sandbox (các giá trị ghi đè theo từng agentdocker/ssh/browserbị bỏ qua trong phạm vi này).
agents.defaults.sandbox.ssh; cấu hình dành riêng cho OpenShell nằm trong plugins.entries.openshell.config.
Backend Docker
Docker là backend mặc định sau khi sandbox được bật. Nó chạy các công cụ và trình duyệt sandbox cục bộ thông qua socket của daemon Docker (/var/run/docker.sock); khả năng cách ly đến từ các namespace của Docker.
Giá trị mặc định: network: "none" (không có lưu lượng ra ngoài), readOnlyRoot: true, capDrop: ["ALL"], image openclaw-sandbox:bookworm-slim.
Để cho phép truy cập GPU của máy chủ, hãy đặt agents.defaults.sandbox.docker.gpus (hoặc giá trị ghi đè theo từng agent) thành một giá trị như "all" hoặc "device=GPU-uuid". Giá trị này được truyền vào cờ --gpus của Docker và yêu cầu một runtime máy chủ tương thích, chẳng hạn như NVIDIA Container Toolkit.
Trình duyệt sandbox
- Trình duyệt sandbox tự động khởi động (đảm bảo có thể kết nối CDP) khi công cụ trình duyệt cần đến. Cấu hình qua
agents.defaults.sandbox.browser.autoStart(mặc địnhtrue) vàautoStartTimeoutMs(mặc định 12 giây). - Các container trình duyệt sandbox sử dụng một mạng Docker chuyên dụng (
openclaw-sandbox-browser) thay vì mạngbridgetoàn cục. Cấu hình bằngagents.defaults.sandbox.browser.network. agents.defaults.sandbox.browser.cdpSourceRangegiới hạn lưu lượng CDP đi vào ở biên container bằng danh sách CIDR cho phép (ví dụ:172.21.0.1/32).- Quyền truy cập quan sát noVNC mặc định được bảo vệ bằng mật khẩu; OpenClaw tạo một URL token ngắn hạn để phục vụ trang khởi tạo cục bộ và mở noVNC với mật khẩu trong fragment của URL (không nằm trong chuỗi truy vấn hoặc nhật ký header).
agents.defaults.sandbox.browser.allowHostControl(mặc địnhfalse) cho phép các phiên trong sandbox nhắm rõ ràng đến trình duyệt của máy chủ.- Các danh sách cho phép tùy chọn kiểm soát
target: "custom":allowedControlUrls,allowedControlHosts,allowedControlPorts.
Backend SSH
Sử dụngbackend: "ssh" để chạy exec, các công cụ tệp và thao tác đọc nội dung đa phương tiện trong sandbox trên một máy bất kỳ có thể truy cập qua SSH.
command: "ssh", workspaceRoot: "/tmp/openclaw-sandboxes", strictHostKeyChecking: true, updateHostKeys: true.
- Vòng đời: OpenClaw tạo một thư mục gốc từ xa theo từng phạm vi bên dưới
sandbox.ssh.workspaceRoot. Trong lần sử dụng đầu tiên sau khi tạo hoặc tạo lại, nó khởi tạo không gian làm việc từ xa đó từ không gian làm việc cục bộ một lần. Sau đó,exec,read,write,edit,apply_patch, thao tác đọc nội dung đa phương tiện của prompt và việc đưa nội dung đa phương tiện đến vào vùng tạm sẽ chạy trực tiếp trên không gian làm việc từ xa qua SSH. OpenClaw không tự động đồng bộ các thay đổi từ xa trở lại không gian làm việc cục bộ. - Dữ liệu xác thực:
identityFile/certificateFile/knownHostsFiletham chiếu đến các tệp cục bộ hiện có.identityData/certificateData/knownHostsDatachấp nhận chuỗi nội tuyến hoặc SecretRefs, được phân giải thông qua ảnh chụp runtime bí mật thông thường, ghi vào các tệp tạm với chế độ0600và xóa khi phiên SSH kết thúc. Nếu cả biến thể*Filevà*Datađược đặt cho cùng một mục,*Datasẽ được ưu tiên trong phiên đó. - Hệ quả của việc lấy máy chủ từ xa làm chuẩn: không gian làm việc SSH từ xa trở thành trạng thái sandbox thực tế sau lần khởi tạo ban đầu. Các chỉnh sửa cục bộ trên máy chủ được thực hiện bên ngoài OpenClaw sau bước khởi tạo sẽ không hiển thị từ xa cho đến khi bạn tạo lại sandbox.
openclaw sandbox recreatexóa thư mục gốc từ xa theo từng phạm vi và khởi tạo lại từ cục bộ trong lần sử dụng tiếp theo. Backend này không hỗ trợ sandbox trình duyệt và các thiết lậpsandbox.docker.*không áp dụng cho nó.
Backend OpenShell
Sử dụngbackend: "openshell" để chạy các công cụ trong sandbox ở môi trường từ xa do OpenShell quản lý. OpenShell tái sử dụng cùng cơ chế truyền tải SSH và cầu nối hệ thống tệp từ xa như backend SSH thông thường, đồng thời bổ sung vòng đời OpenShell (sandbox create/get/delete/ssh-config) cùng chế độ đồng bộ không gian làm việc mirror tùy chọn.
mode: "mirror" (mặc định) giữ không gian làm việc cục bộ làm nguồn chuẩn: OpenClaw đồng bộ dữ liệu cục bộ vào sandbox trước exec và đồng bộ trở lại sau đó. mode: "remote" khởi tạo không gian làm việc từ xa một lần từ dữ liệu cục bộ, sau đó chạy exec/read/write/edit/apply_patch trực tiếp trên không gian làm việc từ xa mà không đồng bộ trở lại; các chỉnh sửa cục bộ sau khi khởi tạo sẽ không hiển thị cho đến khi bạn openclaw sandbox recreate. Trong scope: "agent" hoặc scope: "shared", không gian làm việc từ xa đó được dùng chung trong cùng phạm vi. Các hạn chế hiện tại: trình duyệt sandbox chưa được hỗ trợ và sandbox.docker.binds không áp dụng cho backend này.
openclaw sandbox list/recreate/prune đều xử lý runtime OpenShell giống như runtime Docker; logic dọn dẹp nhận biết backend.
Để xem đầy đủ các điều kiện tiên quyết, tham chiếu cấu hình, so sánh chế độ không gian làm việc và chi tiết vòng đời, hãy xem OpenShell.
Quyền truy cập không gian làm việc
agents.defaults.sandbox.workspaceAccess kiểm soát những gì sandbox có thể thấy:
Với backend OpenShell, chế độ
mirror vẫn sử dụng không gian làm việc cục bộ làm nguồn chuẩn giữa các lượt thực thi, chế độ remote sử dụng không gian làm việc OpenShell từ xa làm nguồn chuẩn sau lần khởi tạo ban đầu, còn workspaceAccess: "ro"/"none" vẫn hạn chế hành vi ghi theo cùng cách.
Nội dung đa phương tiện gửi đến được sao chép vào không gian làm việc sandbox đang hoạt động (media/inbound/*).
Skills: công cụ
read lấy gốc tại sandbox. Với workspaceAccess: "none", OpenClaw phản chiếu các skill đủ điều kiện vào không gian làm việc sandbox (.../skills) để có thể đọc chúng. Với "rw", có thể đọc các skill của không gian làm việc từ /workspace/skills, còn các skill được quản lý, đi kèm hoặc thuộc plugin đủ điều kiện được hiện thực hóa trong đường dẫn chỉ đọc được tạo /workspace/.openclaw/sandbox-skills/skills.Nhiều thư mục cho một agent
Sử dụng bind mount Docker khi một agent trong sandbox cần nhiều hơn không gian làm việc chính. Mỗi mục ánh xạ một thư mục máy chủ tới một đường dẫn container với chế độ truy cập rõ ràng:rođặt thư mục được gắn thành chỉ đọc bên trong sandbox.rwcho phép các công cụ và tiến trình trong sandbox thay đổi thư mục máy chủ.- Đường dẫn container là đường dẫn mà agent sử dụng. Các đường dẫn máy chủ không tự động được hiển thị.
research một không gian làm việc chính có thể ghi, tài liệu tham khảo chỉ đọc tại /reference và một thư mục đầu ra có thể ghi riêng tại /drafts:
workspaceAccess và các chế độ bind độc lập với nhau:
Việc thay đổi
workspaceAccess không thay đổi một bind bổ sung từ ro thành rw, hoặc ngược lại. Các docker.binds toàn cục và theo từng agent được hợp nhất. Giữ scope: "agent" hoặc "session" cho các bind theo từng agent; scope: "shared" bỏ qua mọi thiết lập ghi đè Docker theo từng agent và chỉ sử dụng các bind toàn cục.
Bind mount là ranh giới nhiều thư mục được hỗ trợ vì Docker xây dựng khung nhìn hệ thống tệp của container bằng khả năng cô lập mount, và chế độ ro/rw áp dụng cho mọi tiến trình trong sandbox. Ranh giới đó bao phủ exec, các công cụ hệ thống tệp, tiến trình con và thư viện mà không cần sao chép các bước kiểm tra ủy quyền đường dẫn trên từng đường dẫn mã OpenClaw. Danh sách cho phép đường dẫn phía máy chủ không thể cung cấp cùng một ranh giới đầy đủ khi một shell hoặc phần phụ thuộc được cho phép có thể truy cập trực tiếp vào tệp.
Tùy chọn chủ động dangerouslyAllowExternalBindSources chỉ cho phép các nguồn nằm ngoài các gốc không gian làm việc. Tùy chọn này không vô hiệu hóa các bước kiểm tra của OpenClaw đối với hệ thống bị chặn, thông tin xác thực, socket Docker, thư mục cha là liên kết tượng trưng hoặc đích dành riêng. Ưu tiên thư mục nhỏ nhất, sử dụng ro trừ khi bắt buộc phải ghi và tạo lại sandbox sau khi thay đổi các mount:
Hành vi bind khác
agents.defaults.sandbox.docker.binds cấu hình các mount toàn cục. Định dạng là cùng dạng host:container:mode (ví dụ: "/home/user/source:/source:rw").
agents.defaults.sandbox.browser.binds chỉ gắn các thư mục máy chủ bổ sung vào container trình duyệt sandbox. Khi được đặt (bao gồm []), tùy chọn này thay thế docker.binds cho container trình duyệt; khi bị bỏ qua, container trình duyệt quay về sử dụng docker.binds.
Image và thiết lập
Image Docker mặc định:openclaw-sandbox:bookworm-slim
Checkout mã nguồn so với cài đặt npmCác script trợ giúp
scripts/sandbox-setup.sh, scripts/sandbox-common-setup.sh và scripts/sandbox-browser-setup.sh chỉ khả dụng khi chạy từ một checkout mã nguồn. Chúng không có trong gói npm.Nếu bạn đã cài đặt OpenClaw qua npm install -g openclaw, hãy sử dụng các lệnh docker build nội tuyến được hiển thị bên dưới.1
Xây dựng image mặc định
Từ một checkout mã nguồn:Từ bản cài đặt npm (không cần checkout mã nguồn):Image mặc định không bao gồm Node. Nếu một skill cần Node (hoặc các runtime khác), hãy tích hợp sẵn vào một image tùy chỉnh hoặc cài đặt qua
sandbox.docker.setupCommand (yêu cầu truy cập mạng ra ngoài + thư mục gốc có thể ghi + người dùng root).OpenClaw không âm thầm thay thế bằng debian:bookworm-slim thuần túy khi thiếu openclaw-sandbox:bookworm-slim. Các lượt chạy sandbox nhắm đến image mặc định sẽ dừng ngay với hướng dẫn xây dựng cho đến khi bạn xây dựng image đó, vì image đi kèm chứa python3 dành cho các trình trợ giúp ghi/chỉnh sửa sandbox.2
Tùy chọn: xây dựng image thông dụng
Để có một image sandbox nhiều chức năng hơn với các công cụ thông dụng (ví dụ: Từ bản cài đặt npm, trước tiên hãy xây dựng image mặc định (xem phía trên), sau đó xây dựng image thông dụng dựa trên image đó bằng
curl, jq, Node 24, pnpm, python3 và git):Từ một checkout mã nguồn:scripts/docker/sandbox/Dockerfile.common từ kho lưu trữ.Sau đó đặt agents.defaults.sandbox.docker.image thành openclaw-sandbox-common:bookworm-slim.3
Tùy chọn: xây dựng image trình duyệt sandbox
Từ một checkout mã nguồn:Từ bản cài đặt npm, hãy xây dựng bằng
scripts/docker/sandbox/Dockerfile.browser từ kho lưu trữ.agents.defaults.sandbox.docker.network.
Giá trị mặc định của Chromium trong trình duyệt sandbox
Giá trị mặc định của Chromium trong trình duyệt sandbox
Image trình duyệt sandbox đi kèm áp dụng các cờ khởi động Chromium thận trọng cho khối lượng công việc chạy trong container:
--remote-debugging-address=127.0.0.1--remote-debugging-port=<derived from OPENCLAW_BROWSER_CDP_PORT>--user-data-dir=${HOME}/.chrome--no-first-run--no-default-browser-check--disable-dev-shm-usage--disable-background-networking--disable-breakpad--disable-crash-reporter--no-zygote--metrics-recording-only--password-store=basic--use-mock-keychain--headless=newkhibrowser.headlessđược bật.--no-sandbox --disable-setuid-sandboxkhibrowser.noSandboxđược bật.--disable-3d-apis,--disable-gpu,--disable-software-rasterizertheo mặc định; các cờ tăng cường bảo mật đồ họa này hỗ trợ những container không có khả năng hỗ trợ GPU. ĐặtOPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0nếu khối lượng công việc cần WebGL hoặc các tính năng 3D khác.--disable-extensionstheo mặc định; đặtOPENCLAW_BROWSER_DISABLE_EXTENSIONS=0cho các luồng phụ thuộc vào tiện ích mở rộng.--renderer-process-limit=2theo mặc định; được kiểm soát bởiOPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>, trong đó0giữ nguyên giá trị mặc định của Chromium.
browser.extraArgs để nối thêm các cờ khởi động.Mặc định bảo mật mạng
Mặc định bảo mật mạng
network: "host"bị chặn.network: "container:<id>"bị chặn theo mặc định (nguy cơ vượt qua bằng cách tham gia namespace).- Ghi đè khẩn cấp:
agents.defaults.sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true.
scripts/docker/setup.sh có thể khởi tạo cấu hình sandbox. Đặt OPENCLAW_SANDBOX=1 (hoặc true/yes/on) để bật đường dẫn đó. Ghi đè vị trí socket bằng OPENCLAW_DOCKER_SOCKET. Tài liệu thiết lập đầy đủ và tham chiếu biến môi trường: Docker.
setupCommand (thiết lập container một lần)
setupCommand chạy một lần sau khi container sandbox được tạo (không chạy trong mỗi lượt). Lệnh này thực thi bên trong container thông qua sh -lc.
Đường dẫn:
- Toàn cục:
agents.defaults.sandbox.docker.setupCommand - Theo agent:
agents.list[].sandbox.docker.setupCommand
Các lỗi thường gặp
Các lỗi thường gặp
docker.networkmặc định là"none"(không có lưu lượng ra ngoài), vì vậy việc cài đặt gói sẽ thất bại.docker.network: "container:<id>"yêu cầudangerouslyAllowContainerNamespaceJoin: truevà chỉ dành cho trường hợp khẩn cấp.readOnlyRoot: truengăn thao tác ghi; hãy đặtreadOnlyRoot: falsehoặc tạo sẵn một image tùy chỉnh.userphải là root để cài đặt gói (bỏuserhoặc đặtuser: "0:0").- Thao tác thực thi trong sandbox không kế thừa
process.envcủa máy chủ. Hãy dùngagents.defaults.sandbox.docker.env(hoặc image tùy chỉnh) cho các khóa API của skill. - Các giá trị trong
agents.defaults.sandbox.docker.envđược truyền dưới dạng biến môi trường tường minh của container Docker. Bất kỳ ai có quyền truy cập daemon Docker đều có thể kiểm tra chúng bằng các lệnh siêu dữ liệu Docker nhưdocker inspect. Hãy dùng image tùy chỉnh, tệp bí mật được gắn kết hoặc một phương thức phân phối bí mật khác nếu việc lộ siêu dữ liệu đó không thể chấp nhận được.
Chính sách công cụ và cơ chế thoát
Các chính sách cho phép/từ chối công cụ vẫn được áp dụng trước các quy tắc sandbox. Nếu một công cụ bị từ chối trên toàn cục hoặc theo agent, sandbox không thể khôi phục công cụ đó.tools.elevated là một cơ chế thoát tường minh, chạy exec bên ngoài sandbox (gateway theo mặc định, hoặc node khi đích thực thi là node). Các chỉ thị /exec chỉ áp dụng cho người gửi được ủy quyền và được duy trì theo từng phiên; để vô hiệu hóa hoàn toàn exec, hãy dùng chính sách công cụ để từ chối (xem Sandbox, chính sách công cụ và chế độ nâng quyền).
Gỡ lỗi:
openclaw sandbox listhiển thị các container sandbox, trạng thái, mức độ khớp image, tuổi, thời gian nhàn rỗi và phiên/agent liên kết.openclaw sandbox explain [--session <key>] [--agent <id>]kiểm tra chế độ sandbox có hiệu lực, workspace máy chủ, thư mục làm việc runtime, các điểm gắn kết Docker, chính sách công cụ và các khóa cấu hình cần sửa. TrườngworkspaceRootvẫn là thư mục gốc sandbox đã cấu hình;effectiveHostWorkspaceRootcho biết workspace đang hoạt động thực sự nằm ở đâu.openclaw sandbox recreate [--all | --session <key> | --agent <id>] [--browser] [--force]xóa các container/môi trường để chúng được tạo lại với cấu hình hiện tại trong lần sử dụng tiếp theo.- Xem Sandbox, chính sách công cụ và chế độ nâng quyền để hiểu mô hình tư duy về câu hỏi “tại sao nội dung này bị chặn?”.
Ghi đè đa agent
Mỗi agent có thể ghi đè sandbox và công cụ:agents.list[].sandbox và agents.list[].tools (cộng thêm agents.list[].tools.sandbox.tools cho chính sách công cụ sandbox). Xem Sandbox và công cụ đa agent để biết thứ tự ưu tiên.
Ví dụ bật tối thiểu
Liên quan
- Sandbox và công cụ đa agent — các ghi đè theo agent và thứ tự ưu tiên
- OpenShell — thiết lập backend sandbox được quản lý, các chế độ workspace và tham chiếu cấu hình
- Cấu hình sandbox
- Sandbox, chính sách công cụ và chế độ nâng quyền — gỡ lỗi “tại sao nội dung này bị chặn?”
- Bảo mật