ข้ามไปยังเนื้อหา

ตั้งค่ากฎคุม

คู่มือนี้แสดงวิธีตั้งค่ากฎคุม: กฎที่ตัดสินว่าการกระทำของเอเจนต์จะรัน ถามขอ อนุมัติก่อน หรือถูกปฏิเสธ

กฎคุมครอบคลุมคลาสผลกระทบทั้งสิบสามที่เครื่องมือที่เปลี่ยนแปลงสถานะทุกตัว ประกาศไว้ มันถูกบังคับใช้ฝั่งเซิร์ฟเวอร์ ณ จุดที่เครื่องมือถูกเรียก ไม่ใช่ด้วย คำสั่งในพรอมป์ต์

  1. ไปที่ การตั้งค่า → เวิร์กสเปซ → สิทธิ์ของเอเจนต์
  2. เลือกขอบเขตด้วยตัวควบคุมแบบแบ่งส่วน: เวิร์กสเปซ, เอเจนต์ (จากนั้น เลือกเอเจนต์) หรือ สเปซ (จากนั้นเลือกสเปซ)
  3. ในแถวของคลาสการกระทำ เลือก อนุญาต, ถามก่อน หรือ ปฏิเสธ
  4. หากต้องการลบกฎที่คุณตั้งไว้ ให้กดปุ่มรีเซ็ตที่ปรากฏท้ายแถวนั้น (ล้างเป็นสืบทอด) — การตัดสินจะกลับไปใช้ขอบเขตที่กว้างกว่า

แต่ละแถวแสดงการตัดสินที่มีผลเป็นแท็กสถานะ พร้อมแบดจ์บอกว่ามันมาจากที่ใด: ขอบเขตนี้, สืบทอด หรือ ค่าเริ่มต้นในตัว เมทริกซ์ตัดสินที่โหมด เอเจนต์ (chat) ดังนั้น พรีเซ็ตโหมด จึงไม่ปรากฏที่นี่ — ใช้ตัวตรวจแบบ สมมติโดยเลือกโหมดอ่านอย่างเดียวเพื่อดูชั้นนั้น

การเขียนกฎต้องใช้บทบาท admin ส่วนการอ่านเมทริกซ์ไม่ต้อง

จุดตรวจสอบ: ตั้ง พุชไปยังรีโมต เป็น ปฏิเสธ ที่ขอบเขตเวิร์กสเปซ แล้วรัน ตัวตรวจแบบสมมติด้านล่างกับ git push origin main ผลลัพธ์จะอ่านว่า deny โดยมีแหล่งที่มา workspace

ทำความเข้าใจว่าการตัดสินถูกกำหนดขึ้นอย่างไร

หัวข้อที่มีชื่อว่า “ทำความเข้าใจว่าการตัดสินถูกกำหนดขึ้นอย่างไร”

การตัดสินใช้หลัก ความจำเพาะก่อน แล้วจึงความเข้มงวด:

  1. กฎระดับ สเปซ แล้วจึงเอเจนต์ แล้วจึงเวิร์กสเปซ ขอบเขตแรกที่มีกฎตรงกัน เป็นตัวตัดสิน และการตัดสินหยุดที่ตรงนั้น
  2. หากไม่มีกฎใดตรงกัน พรีเซ็ตโหมด จะมีผล — โหมดอ่านอย่างเดียว (plan, review, orchestrate) ปฏิเสธสิบเอ็ดคลาสจากสิบสามคลาส
  3. หากโหมดไม่ได้ระบุอะไร ค่าเริ่มต้นในตัว จะมีผล

ภายในขอบเขตเดียว กฎคำสั่งตัดสินด้วยคำนำหน้าที่ตรงกันยาวที่สุด และความขัดแย้งที่ จำเพาะเท่ากันจะตัดสินแบบ เข้มงวดที่สุด — ปฏิเสธชนะถามก่อน ถามก่อนชนะอนุญาต การกระทำที่ประกาศหลายคลาสจะตัดสินแต่ละคลาสแยกกัน แล้วจึงรวมกันแบบเข้มงวดที่สุด

การตัดสิน ถามก่อน จะแสดงพรอมป์ต์ขออนุมัติหนึ่งครั้งซึ่งครอบคลุมทุกคลาสที่ ตัดสินเป็น prompt หากไม่มีผู้อนุมัติเชื่อมต่ออยู่ จะถูกปฏิเสธ ทั้งสำหรับ คำสั่งเชลล์และการเรียกเครื่องมือของฮาร์เนส นี่เป็นเจตนา: การรันที่ไม่มีประตู กั้นแย่กว่าการรันที่ถูกปฏิเสธ

คลาสการกระทำ ค่าเริ่มต้นในตัว
ลบไฟล์ ถามก่อน
เขียนนอก worktree อนุญาต
สร้างคอมมิต อนุญาต
พุชไปยังรีโมต ถามก่อน
เปิด pull request ถามก่อน
เผยแพร่รีวิวหรือรวม ถามก่อน
เขียนไปยังตัวติดตามภายนอก ถามก่อน
เข้าถึงเครือข่าย อนุญาต
อ่านความลับ อนุญาต
ติดตั้งแพ็กเกจ อนุญาต
รันโพรเซส อนุญาต
เปลี่ยนโครงสร้างเวิร์กสเปซ อนุญาต
ควบคุมเอนโคลเจอร์ (ริก) อนุญาต

อนุกรมวิธานนี้เป็นชุดปิด เครื่องมือใหม่ที่เปิดตัวโดยไม่ประกาศคลาสของมันจะสอบ ไม่ผ่าน ratchet test ใน CI ดังนั้นจึงไม่มีสิ่งใดมาพร้อมชุดผลกระทบที่ว่างเปล่า อย่างเงียบ ๆ

ก่อนเปลี่ยนกฎ ให้ตรวจว่ากฎปัจจุบันตัดสินมันไว้อย่างไรแล้ว

  1. ในหน้าเดียวกัน เลื่อนไปที่ ถ้าหาก?
  2. เลือก การกระทำ (หนึ่งในสิบสามคลาส)
  3. จะกรอก คำสั่ง (ตัวอย่าง git push origin main), เอเจนต์, สเปซ และ โหมด ก็ได้
  4. อ่านผลลัพธ์: การตัดสิน เหตุผล และ แหล่งที่มา:

ตัวตรวจใช้ตัวตัดสินตัวเดียวกับที่เส้นทางบังคับใช้ใช้ กับกฎจริงของคุณ คำตอบจึง แม่นยำ หากผลลัพธ์ทำให้คุณประหลาดใจ ให้เปลี่ยนกฎในเมทริกซ์ด้านบนแล้วตรวจอีกครั้ง

ปุ่มปรับนี้เป็นรายเอเจนต์ต่อสเปซ และทำงานร่วมกับกฎ ไม่ได้แทนที่กฎ

  1. เปิดสเปซ
  2. เปิด จัดการผู้เข้าร่วม จากส่วนหัวของสเปซ
  3. ใต้ ความเป็นอิสระ ในแถวของเอเจนต์ เลือกระดับ:
ระดับ ผล
ค่าเริ่มต้น ไม่มีการตั้งค่าในสเปซ — ทำงานเหมือน ทำเมื่อได้รับอนุมัติ
เสนออย่างเดียว เครื่องมือที่มีประตูกั้นทุกตัวถูกปฏิเสธทันที พร้อมข้อความบอกให้เอเจนต์เสนอการกระทำนั้นแทน
ทำเมื่อได้รับอนุมัติ การกระทำที่มีความเสี่ยงจะชนประตูอนุมัติแบบปิดเมื่อล้มเหลว
ทำได้อย่างอิสระ อนุมัติล่วงหน้าทุกสิ่งที่ไม่ได้ตัดสินเป็น 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 ก็ไม่มีเช่นกัน — ที่นั่น กฎคุมบวกพื้นผิวเครื่องมือของโหมดคือการบังคับใช้ทั้งหมด ไม่ใช่ชั้นที่สองของ การบังคับใช้ ตรวจว่าคุณอยู่ในกรณีใดได้ที่ ตั้งค่านโยบายแซนด์บ็อกซ์