ตั้งค่ากฎคุม
คู่มือนี้แสดงวิธีตั้งค่ากฎคุม: กฎที่ตัดสินว่าการกระทำของเอเจนต์จะรัน ถามขอ อนุมัติก่อน หรือถูกปฏิเสธ
กฎคุมครอบคลุมคลาสผลกระทบทั้งสิบสามที่เครื่องมือที่เปลี่ยนแปลงสถานะทุกตัว ประกาศไว้ มันถูกบังคับใช้ฝั่งเซิร์ฟเวอร์ ณ จุดที่เครื่องมือถูกเรียก ไม่ใช่ด้วย คำสั่งในพรอมป์ต์
ตั้งการตัดสินสำหรับคลาสการกระทำ
หัวข้อที่มีชื่อว่า “ตั้งการตัดสินสำหรับคลาสการกระทำ”- ไปที่ การตั้งค่า → เวิร์กสเปซ → สิทธิ์ของเอเจนต์
- เลือกขอบเขตด้วยตัวควบคุมแบบแบ่งส่วน: เวิร์กสเปซ, เอเจนต์ (จากนั้น เลือกเอเจนต์) หรือ สเปซ (จากนั้นเลือกสเปซ)
- ในแถวของคลาสการกระทำ เลือก อนุญาต, ถามก่อน หรือ ปฏิเสธ
- หากต้องการลบกฎที่คุณตั้งไว้ ให้กดปุ่มรีเซ็ตที่ปรากฏท้ายแถวนั้น (ล้างเป็นสืบทอด) — การตัดสินจะกลับไปใช้ขอบเขตที่กว้างกว่า
แต่ละแถวแสดงการตัดสินที่มีผลเป็นแท็กสถานะ พร้อมแบดจ์บอกว่ามันมาจากที่ใด:
ขอบเขตนี้, สืบทอด หรือ ค่าเริ่มต้นในตัว เมทริกซ์ตัดสินที่โหมด
เอเจนต์ (chat) ดังนั้น พรีเซ็ตโหมด จึงไม่ปรากฏที่นี่ — ใช้ตัวตรวจแบบ
สมมติโดยเลือกโหมดอ่านอย่างเดียวเพื่อดูชั้นนั้น
การเขียนกฎต้องใช้บทบาท admin ส่วนการอ่านเมทริกซ์ไม่ต้อง
จุดตรวจสอบ: ตั้ง พุชไปยังรีโมต เป็น ปฏิเสธ ที่ขอบเขตเวิร์กสเปซ แล้วรัน
ตัวตรวจแบบสมมติด้านล่างกับ git push origin main ผลลัพธ์จะอ่านว่า deny
โดยมีแหล่งที่มา workspace
ทำความเข้าใจว่าการตัดสินถูกกำหนดขึ้นอย่างไร
หัวข้อที่มีชื่อว่า “ทำความเข้าใจว่าการตัดสินถูกกำหนดขึ้นอย่างไร”การตัดสินใช้หลัก ความจำเพาะก่อน แล้วจึงความเข้มงวด:
- กฎระดับ สเปซ แล้วจึงเอเจนต์ แล้วจึงเวิร์กสเปซ ขอบเขตแรกที่มีกฎตรงกัน เป็นตัวตัดสิน และการตัดสินหยุดที่ตรงนั้น
- หากไม่มีกฎใดตรงกัน พรีเซ็ตโหมด จะมีผล — โหมดอ่านอย่างเดียว (plan, review, orchestrate) ปฏิเสธสิบเอ็ดคลาสจากสิบสามคลาส
- หากโหมดไม่ได้ระบุอะไร ค่าเริ่มต้นในตัว จะมีผล
ภายในขอบเขตเดียว กฎคำสั่งตัดสินด้วยคำนำหน้าที่ตรงกันยาวที่สุด และความขัดแย้งที่ จำเพาะเท่ากันจะตัดสินแบบ เข้มงวดที่สุด — ปฏิเสธชนะถามก่อน ถามก่อนชนะอนุญาต การกระทำที่ประกาศหลายคลาสจะตัดสินแต่ละคลาสแยกกัน แล้วจึงรวมกันแบบเข้มงวดที่สุด
การตัดสิน ถามก่อน จะแสดงพรอมป์ต์ขออนุมัติหนึ่งครั้งซึ่งครอบคลุมทุกคลาสที่
ตัดสินเป็น prompt หากไม่มีผู้อนุมัติเชื่อมต่ออยู่ จะถูกปฏิเสธ ทั้งสำหรับ
คำสั่งเชลล์และการเรียกเครื่องมือของฮาร์เนส นี่เป็นเจตนา: การรันที่ไม่มีประตู
กั้นแย่กว่าการรันที่ถูกปฏิเสธ
คลาสการกระทำและค่าเริ่มต้นในตัว
หัวข้อที่มีชื่อว่า “คลาสการกระทำและค่าเริ่มต้นในตัว”| คลาสการกระทำ | ค่าเริ่มต้นในตัว |
|---|---|
| ลบไฟล์ | ถามก่อน |
| เขียนนอก worktree | อนุญาต |
| สร้างคอมมิต | อนุญาต |
| พุชไปยังรีโมต | ถามก่อน |
| เปิด pull request | ถามก่อน |
| เผยแพร่รีวิวหรือรวม | ถามก่อน |
| เขียนไปยังตัวติดตามภายนอก | ถามก่อน |
| เข้าถึงเครือข่าย | อนุญาต |
| อ่านความลับ | อนุญาต |
| ติดตั้งแพ็กเกจ | อนุญาต |
| รันโพรเซส | อนุญาต |
| เปลี่ยนโครงสร้างเวิร์กสเปซ | อนุญาต |
| ควบคุมเอนโคลเจอร์ (ริก) | อนุญาต |
อนุกรมวิธานนี้เป็นชุดปิด เครื่องมือใหม่ที่เปิดตัวโดยไม่ประกาศคลาสของมันจะสอบ ไม่ผ่าน ratchet test ใน CI ดังนั้นจึงไม่มีสิ่งใดมาพร้อมชุดผลกระทบที่ว่างเปล่า อย่างเงียบ ๆ
ทดสอบกฎด้วยตัวตรวจแบบสมมติ
หัวข้อที่มีชื่อว่า “ทดสอบกฎด้วยตัวตรวจแบบสมมติ”ก่อนเปลี่ยนกฎ ให้ตรวจว่ากฎปัจจุบันตัดสินมันไว้อย่างไรแล้ว
- ในหน้าเดียวกัน เลื่อนไปที่ ถ้าหาก?
- เลือก การกระทำ (หนึ่งในสิบสามคลาส)
- จะกรอก คำสั่ง (ตัวอย่าง
git push origin main), เอเจนต์, สเปซ และ โหมด ก็ได้ - อ่านผลลัพธ์: การตัดสิน เหตุผล และ แหล่งที่มา:
ตัวตรวจใช้ตัวตัดสินตัวเดียวกับที่เส้นทางบังคับใช้ใช้ กับกฎจริงของคุณ คำตอบจึง แม่นยำ หากผลลัพธ์ทำให้คุณประหลาดใจ ให้เปลี่ยนกฎในเมทริกซ์ด้านบนแล้วตรวจอีกครั้ง
ตั้งปุ่มปรับความเป็นอิสระของสเปซ
หัวข้อที่มีชื่อว่า “ตั้งปุ่มปรับความเป็นอิสระของสเปซ”ปุ่มปรับนี้เป็นรายเอเจนต์ต่อสเปซ และทำงานร่วมกับกฎ ไม่ได้แทนที่กฎ
- เปิดสเปซ
- เปิด จัดการผู้เข้าร่วม จากส่วนหัวของสเปซ
- ใต้ ความเป็นอิสระ ในแถวของเอเจนต์ เลือกระดับ:
| ระดับ | ผล |
|---|---|
| ค่าเริ่มต้น | ไม่มีการตั้งค่าในสเปซ — ทำงานเหมือน ทำเมื่อได้รับอนุมัติ |
| เสนออย่างเดียว | เครื่องมือที่มีประตูกั้นทุกตัวถูกปฏิเสธทันที พร้อมข้อความบอกให้เอเจนต์เสนอการกระทำนั้นแทน |
| ทำเมื่อได้รับอนุมัติ | การกระทำที่มีความเสี่ยงจะชนประตูอนุมัติแบบปิดเมื่อล้มเหลว |
| ทำได้อย่างอิสระ | อนุมัติล่วงหน้าทุกสิ่งที่ไม่ได้ตัดสินเป็น deny แบบ hard |
ปุ่มปรับนี้ไปถึงเฉพาะฮาร์เนสในตัวเท่านั้น อะแดปเตอร์ Claude Code รันเครื่องมือ ของตัวเองนอกประตูนี้
รู้ว่ากฎคุมไปไม่ถึงตรงใด
หัวข้อที่มีชื่อว่า “รู้ว่ากฎคุมไปไม่ถึงตรงใด”ตาราง จุดที่บังคับใช้กฎ ท้ายหน้าเดียวกันคือเวอร์ชันในแอปของเรื่องนี้: ต่อ คลาสผลกระทบ มันบอกว่าแต่ละตัวรันจับคลาสนั้นที่ประตูนโยบาย ปล่อยให้เป็นหน้าที่ แซนด์บ็อกซ์ หรือสกัดไม่ได้เลย
- อะแดปเตอร์ Claude Code ถูกกั้นที่การเรียกเครื่องมือของตัวเองเพียงบางส่วน Claude
Code ถูกเรียกด้วย
--dangerously-skip-permissionsดังนั้นการเรียกอ่าน เขียน และแก้ไขของมันจึงไม่ผ่านประตูกั้นเลย คำสั่ง bash ของมันมาถึงประตูกั้นผ่านฮุกที่ จัดประเภทบรรทัดคำสั่ง และการพุชของมันผ่านเกตเวย์การพุชเหมือนของเอเจนต์ทุกตัว พื้นผิวเครื่องมือ MCP ที่มันเรียกกลับเข้ามา และคำสั่งเชลล์ที่ Control Center สปอว์นขึ้นมาเพื่อเปิดมัน ก็ถูกกั้นเช่นกัน - คำกริยาผลลัพธ์ของโหมดเอง (
submit_plan,propose_orchestration) ถูกปัก หมุดไว้และปฏิเสธไม่ได้เลย — ไม่เช่นนั้นโหมดจะผลิตสิ่งส่งมอบเดียวของมันไม่ได้ ในเชิงโครงสร้าง - การที่แซนด์บ็อกซ์หนุนกฎเหล่านี้หรือไม่ขึ้นอยู่กับโฮสต์ เมื่อ
cc_serverหาแบ็กเอนด์เจอ มันจะห่อ Claude Code CLI และเครื่องมือbashของฮาร์เนส ดังนั้นกฎที่คุณไม่ได้เขียนก็ยังมีพื้นของ OS อยู่ใต้มัน บน Windows ไม่มีเลย และบน Linux หรือ WSL2 ที่ไม่มีbwrapและsocatก็ไม่มีเช่นกัน — ที่นั่น กฎคุมบวกพื้นผิวเครื่องมือของโหมดคือการบังคับใช้ทั้งหมด ไม่ใช่ชั้นที่สองของ การบังคับใช้ ตรวจว่าคุณอยู่ในกรณีใดได้ที่ ตั้งค่านโยบายแซนด์บ็อกซ์