OpenClaw มีการควบคุมที่เกี่ยวข้องกันสามอย่าง (แต่แตกต่างกัน):Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
- แซนด์บ็อกซ์ (
agents.defaults.sandbox.*/agents.list[].sandbox.*) กำหนดว่า เครื่องมือทำงานที่ใด (แบ็กเอนด์แซนด์บ็อกซ์หรือโฮสต์) - นโยบายเครื่องมือ (
tools.*,tools.sandbox.tools.*,agents.list[].tools.*) กำหนดว่า เครื่องมือใดพร้อมใช้งาน/ได้รับอนุญาต - ยกระดับสิทธิ์ (
tools.elevated.*,agents.list[].tools.elevated.*) เป็น ช่องทางออกเฉพาะexecเพื่อรันนอกแซนด์บ็อกซ์เมื่อคุณอยู่ในแซนด์บ็อกซ์ (gatewayตามค่าเริ่มต้น หรือnodeเมื่อเป้าหมายexecถูกกำหนดค่าเป็นnode)
ดีบักอย่างรวดเร็ว
ใช้ตัวตรวจสอบเพื่อดูว่า OpenClaw กำลังทำอะไร จริงๆ:- โหมด/ขอบเขต/การเข้าถึงพื้นที่ทำงานของแซนด์บ็อกซ์ที่มีผล
- เซสชันปัจจุบันอยู่ในแซนด์บ็อกซ์หรือไม่ (หลักเทียบกับไม่ใช่หลัก)
- การอนุญาต/ปฏิเสธเครื่องมือแซนด์บ็อกซ์ที่มีผล (และมาจาก agent/global/default หรือไม่)
- เกตการยกระดับสิทธิ์และพาธคีย์สำหรับแก้ไข
แซนด์บ็อกซ์: เครื่องมือรันที่ใด
การใช้แซนด์บ็อกซ์ถูกควบคุมโดยagents.defaults.sandbox.mode:
"off": ทุกอย่างรันบนโฮสต์"non-main": เฉพาะเซสชันที่ไม่ใช่หลักเท่านั้นที่อยู่ในแซนด์บ็อกซ์ (กรณี “น่าประหลาดใจ” ที่พบบ่อยสำหรับกลุ่ม/ช่องทาง)"all": ทุกอย่างอยู่ในแซนด์บ็อกซ์
Bind mounts (การตรวจสอบความปลอดภัยแบบรวดเร็ว)
docker.bindsเจาะผ่าน ระบบไฟล์ของแซนด์บ็อกซ์: สิ่งใดก็ตามที่คุณเมานต์จะมองเห็นได้ภายในคอนเทนเนอร์ด้วยโหมดที่คุณตั้ง (:roหรือ:rw)- ค่าเริ่มต้นคืออ่าน-เขียนหากคุณละโหมดไว้ ควรใช้
:roสำหรับซอร์ส/ความลับ scope: "shared"จะไม่ใช้ bind ราย agent (ใช้เฉพาะ bind ระดับโกลบอล)- OpenClaw ตรวจสอบแหล่งที่มาของ bind สองครั้ง: ครั้งแรกบนพาธต้นทางที่ทำให้เป็นมาตรฐานแล้ว จากนั้นตรวจอีกครั้งหลังจาก resolve ผ่าน ancestor ที่มีอยู่ลึกที่สุด การหนีผ่านพาเรนต์ที่เป็น symlink จะไม่ข้ามการตรวจสอบพาธที่ถูกบล็อกหรือรากที่ได้รับอนุญาต
- พาธปลายทาง leaf ที่ยังไม่มีอยู่ยังคงถูกตรวจสอบอย่างปลอดภัย หาก
/workspace/alias-out/new-fileresolve ผ่านพาเรนต์ที่เป็น symlink ไปยังพาธที่ถูกบล็อกหรืออยู่นอกรากที่ได้รับอนุญาตที่กำหนดค่าไว้ bind จะถูกปฏิเสธ - การ bind
/var/run/docker.sockเท่ากับมอบการควบคุมโฮสต์ให้แซนด์บ็อกซ์โดยมีผลจริง ทำเฉพาะเมื่อเจตนาเท่านั้น - การเข้าถึงพื้นที่ทำงาน (
workspaceAccess: "ro"/"rw") เป็นอิสระจากโหมด bind
นโยบายเครื่องมือ: เครื่องมือใดมีอยู่/เรียกใช้ได้
มีสองเลเยอร์ที่สำคัญ:- โปรไฟล์เครื่องมือ:
tools.profileและagents.list[].tools.profile(allowlist พื้นฐาน) - โปรไฟล์เครื่องมือของผู้ให้บริการ:
tools.byProvider[provider].profileและagents.list[].tools.byProvider[provider].profile - นโยบายเครื่องมือระดับโกลบอล/ราย agent:
tools.allow/tools.denyและagents.list[].tools.allow/agents.list[].tools.deny - นโยบายเครื่องมือของผู้ให้บริการ:
tools.byProvider[provider].allow/denyและagents.list[].tools.byProvider[provider].allow/deny - นโยบายเครื่องมือของแซนด์บ็อกซ์ (ใช้เฉพาะเมื่ออยู่ในแซนด์บ็อกซ์):
tools.sandbox.tools.allow/tools.sandbox.tools.denyและagents.list[].tools.sandbox.tools.*
denyชนะเสมอ- หาก
allowไม่ว่าง ทุกอย่างที่เหลือจะถือว่าถูกบล็อก - นโยบายเครื่องมือคือจุดหยุดเด็ดขาด:
/execไม่สามารถข้ามexectool ที่ถูกปฏิเสธได้ - นโยบายเครื่องมือกรองความพร้อมใช้งานของเครื่องมือตามชื่อ ไม่ได้ตรวจสอบผลข้างเคียงภายใน
execหากอนุญาตexecแล้ว การปฏิเสธwrite,editหรือapply_patchไม่ได้ทำให้คำสั่ง shell เป็นแบบอ่านอย่างเดียว /execเปลี่ยนเฉพาะค่าเริ่มต้นของเซสชันสำหรับผู้ส่งที่ได้รับอนุญาต ไม่ได้ให้สิทธิ์เข้าถึงเครื่องมือ คีย์เครื่องมือของผู้ให้บริการรับได้ทั้งprovider(เช่นgoogle-antigravity) หรือprovider/model(เช่นopenai/gpt-5.4)
กลุ่มเครื่องมือ (ชวเลข)
นโยบายเครื่องมือ (โกลบอล, agent, แซนด์บ็อกซ์) รองรับรายการgroup:* ที่ขยายเป็นหลายเครื่องมือ:
group:runtime:exec,process,code_execution(bashยอมรับเป็น alias สำหรับexec)group:fs:read,write,edit,apply_patchสำหรับ agent แบบอ่านอย่างเดียว ให้ปฏิเสธgroup:runtimeรวมถึงเครื่องมือระบบไฟล์ที่แก้ไขได้ เว้นแต่นโยบายระบบไฟล์ของแซนด์บ็อกซ์หรือขอบเขตโฮสต์แยกต่างหากจะบังคับข้อจำกัดอ่านอย่างเดียวgroup:sessions:sessions_list,sessions_history,sessions_send,sessions_spawn,sessions_yield,subagents,session_statusgroup:memory:memory_search,memory_getgroup:web:web_search,x_search,web_fetchgroup:ui:browser,canvasgroup:automation:heartbeat_respond,cron,gatewaygroup:messaging:messagegroup:nodes:nodesgroup:agents:agents_list,update_plangroup:media:image,image_generate,music_generate,video_generate,ttsgroup:openclaw: เครื่องมือ OpenClaw ในตัวทั้งหมด (ไม่รวม Plugin ของผู้ให้บริการ)
ยกระดับสิทธิ์: “รันบนโฮสต์” เฉพาะ exec
การยกระดับสิทธิ์ ไม่ได้ ให้เครื่องมือเพิ่ม เพียงมีผลกับexec เท่านั้น
- หากคุณอยู่ในแซนด์บ็อกซ์
/elevated on(หรือexecพร้อมelevated: true) จะรันนอกแซนด์บ็อกซ์ (การอนุมัติอาจยังคงมีผล) - ใช้
/elevated fullเพื่อข้ามการอนุมัติ exec สำหรับเซสชัน - หากคุณรันแบบตรงอยู่แล้ว การยกระดับสิทธิ์แทบไม่มีผล (แต่ยังถูก gate)
- การยกระดับสิทธิ์ ไม่ได้ ผูกกับ Skills และ ไม่ได้ ข้าม allow/deny ของเครื่องมือ
- การยกระดับสิทธิ์ไม่ได้ให้ override ข้ามโฮสต์แบบอิสระจาก
host=auto; จะทำตามกฎเป้าหมาย exec ตามปกติ และคงnodeไว้เฉพาะเมื่อเป้าหมายที่กำหนดค่า/เป้าหมายของเซสชันเป็นnodeอยู่แล้ว /execแยกจากการยกระดับสิทธิ์ ใช้ปรับเฉพาะค่าเริ่มต้นของ exec ต่อเซสชันสำหรับผู้ส่งที่ได้รับอนุญาต
- การเปิดใช้:
tools.elevated.enabled(และอาจรวมถึงagents.list[].tools.elevated.enabled) - allowlist ของผู้ส่ง:
tools.elevated.allowFrom.<provider>(และอาจรวมถึงagents.list[].tools.elevated.allowFrom.<provider>)
วิธีแก้ “คุกแซนด์บ็อกซ์” ที่พบบ่อย
“Tool X ถูกบล็อกโดยนโยบายเครื่องมือของแซนด์บ็อกซ์”
คีย์แก้ไข (เลือกหนึ่งรายการ):- ปิดแซนด์บ็อกซ์:
agents.defaults.sandbox.mode=off(หรือราย agentagents.list[].sandbox.mode=off) - อนุญาตเครื่องมือภายในแซนด์บ็อกซ์:
- ลบออกจาก
tools.sandbox.tools.deny(หรือราย agentagents.list[].tools.sandbox.tools.deny) - หรือเพิ่มลงใน
tools.sandbox.tools.allow(หรือ allow ราย agent)
- ลบออกจาก
“ฉันคิดว่านี่เป็น main ทำไมจึงอยู่ในแซนด์บ็อกซ์?”
ในโหมด"non-main" คีย์กลุ่ม/ช่องทาง ไม่ใช่ main ใช้คีย์เซสชันหลัก (แสดงโดย sandbox explain) หรือเปลี่ยนโหมดเป็น "off"
ที่เกี่ยวข้อง
- การใช้แซนด์บ็อกซ์ — เอกสารอ้างอิงแซนด์บ็อกซ์ฉบับเต็ม (โหมด, ขอบเขต, แบ็กเอนด์, อิมเมจ)
- แซนด์บ็อกซ์และเครื่องมือแบบหลาย Agent — override ราย agent และลำดับความสำคัญ
- โหมดการยกระดับสิทธิ์