Skip to content

About

AI coding 治理的動作層:五個可執行 hook 實際攔截危險指令、無證據的完成宣稱與紅燈仍提交,含可重現安裝與 live-fire 驗證,Windows 優先|Execution layer of an AI coding governance stack — runtime guardrail hooks that actually block.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

English | 中文版

Harness Guard

CI License: MIT

把「請 AI 記得守規則」變成會實際攔截的檢查。

Harness Guard 是一套給 AI coding agent 使用的 guardrail kit:提供 5 個 hook、12 套 workflow skills、Claude / Gemini 規則檔範本,以及可重現安裝與 live-fire 驗證腳本。Windows 是本 fork 的主要強化方向。

本 repo fork 自 agentcrew-academy/harness-starter-kit;上游來源、改寫範圍與 attribution 見 FORK.md 與 NOTICE。

為什麼需要它

提示詞裡的規則會隨長對話被稀釋;hook 則是在 agent 動手前後或準備結束時由程式執行的檢查。

Harness Guard 專注在幾個容易造成實際損失的情境:

  • 說「測試過了」卻沒有可對帳的測試紀錄。
  • 測試失敗後仍因錯誤的 shell 串接繼續 commit / push。
  • 對主分支強推、誤刪根目錄或 .git、把 .env / 私鑰送出去。
  • 收工前沒有通過專案指定的 lint / check。
  • 需要明確禁止 emoji 的文件或程式碼工作流。

這些 guardrail 是額外防線,不是 sandbox,也不是形式化安全政策。規則以模式比對與 agent hook 介面實作,仍可能有誤判或漏判。

5 個 guardrail hooks

Hook 作用
claim-guard 記錄搜尋/測試/改檔等工具證據,結束前對帳完成宣稱;最後一次驗證之後又改過檔,該驗證不算數
test-gate-guard 阻止測試與 git commit / git push 用 ; 或換行錯誤串接
danger-zone-guard 攔截特定災難性刪除、保護分支強推與敏感檔外洩
lint-gate turn 結束前執行專案指定檢查;Windows 可用 .lint-gate.json 啟用
no-emoji-guard 在指定寫入流程中阻止 emoji;屬偏好型 guardrail,可不安裝

完整 hook 介面與平台版本見 hooks/。

選裝:anti-doom-loop-guard

同一個 Bash/Read 呼叫連續重複 3 次、中間沒有任何其他工具呼叫時擋下;中間夾一次改檔(或其他被登記的工具)就歸零,所以正常的「跑測試、改檔、再跑測試」不受影響。它逼 agent 換做法,而不是原樣重試。一支檔案同時服務 Claude Code、Codex、Cursor 與 Antigravity,各自用該 agent 的 deny 格式回應;門檻用環境變數 ANTI_DOOM_LOOP_THRESHOLD 調整,任何錯誤一律放行。

它不在預設清單、也不計入上面的 5 個;用 --hooks anti-doom-loop-guard(或 --hooks all)才會安裝。例如只裝它:

python scripts/install.py --dry-run --agent codex --hooks anti-doom-loop-guard
python scripts/install.py --agent codex --hooks anti-doom-loop-guard

12 套 workflow skills

explain、polite、first-principles、checkpoint、neat-freak、review-loop、info-diet、asd-ste100、iso-24495、phantom-pushback、verification-protocol、task-orchestrator。

這些是可選的工作流程,不是五個安全 hook 的必要依賴。內容在 skills/。

支援範圍

Agent / 環境 Hooks Skills / Rules 安裝方式
Claude Code 5 個 hook;Windows 會選 Python 版本;另可選裝 anti-doom-loop-guard ~/.claude/skills/ + CLAUDE 規則範本 install.py 自動安裝
OpenAI Codex 5 個 hook;Windows 用 Python 版並寫入絕對路徑;另可選裝 anti-doom-loop-guard(PreToolUse,只計 shell 指令) ~/.agents/skills/ install.py --agent codex
Google Antigravity / Gemini 5 個 hook 加選裝的 anti-doom-loop-guard,各自登記為 hooks.json 裡的具名 hook:PreToolUse 可否決、Stop 可用 continue 擋下結束;claim-guard 查驗端靠讀 transcript,格式官方未文件化(見 docs/antigravity-install.md) skills + GEMINI.md 範本 install.py --agent antigravity 安裝 skills;--hooks <名稱> 安裝 hook
Cursor 5 個 hook,寫入 ~/.cursor/hooks.json(Cursor 扁平格式);另可選裝 anti-doom-loop-guard(preToolUse) ~/.cursor/skills/;若本機已有 ~/.agents/skills/ 也會一併合併 install.py --agent cursor

因此 --agent all 目前代表 Claude Code + Antigravity + Cursor + Codex。Cursor 的 stop 不能否決已結束的回合,所以 claim-guard / lint-gate 在 Cursor 上改為 follow-up,不是 veto。

快速開始

Claude Code

先預覽,不修改任何設定:

python scripts/install.py --dry-run --hooks all --skills all

確認後正式安裝:

python scripts/install.py --hooks all --skills all

Google Antigravity / Gemini

python scripts/install.py --dry-run --agent antigravity --skills all
python scripts/install.py --agent antigravity --skills all

不帶 --hooks 時 Antigravity 只裝 skills。要裝 hook,明確指定名稱(danger-zone-guard、test-gate-guard、no-emoji-guard、claim-guard、lint-gate、anti-doom-loop-guard,或 all):

python scripts/install.py --dry-run --agent antigravity --hooks danger-zone-guard,test-gate-guard,no-emoji-guard,claim-guard,lint-gate
python scripts/install.py --agent antigravity --hooks danger-zone-guard,test-gate-guard,no-emoji-guard,claim-guard,lint-gate

會把腳本放進 ~/.gemini/config/hooks/,並在 ~/.gemini/config/hooks.json 合併一筆以 hook 名稱為 key 的登記(先備份到 ~/.gemini/backups/、寫完讀回驗證)。Antigravity 的 hook 命令可能被它自己直接切字串(內建文件寫的是 cmd /c/sh -c,但沒有保證能去引號),所以命令不加引號,路徑也不能含空白,兩種解讀下都能執行;含空白時安裝器會拒絕,請用 --gemini-dir 指到沒有空白的位置。hooks.json 若還留著 Claude Code 版面的頂層 hooks 區塊(Antigravity 會整份拒絕),安裝器直接拒絕寫入並說明,不會假裝裝好。herdr 自己的 herdr-agent-state.ps1 不在安裝範圍內。細節與每個 hook 的限制見 docs/antigravity-install.md。

Cursor

python scripts/install.py --dry-run --agent cursor --hooks all --skills all
python scripts/install.py --agent cursor --hooks all --skills all

Cursor 使用者層 hook 寫在 ~/.cursor/hooks.json。shell 攔截走 beforeShellExecution;emoji 攔截走 preToolUse(Write);anti-doom-loop-guard 走 preToolUse(Shell|Read|Write|Delete)。細節見 docs/cursor-install.md。

OpenAI Codex

python scripts/install.py --dry-run --agent codex --hooks all --skills all
python scripts/install.py --agent codex --hooks all --skills all

安裝器會合併進既有的 ~/.codex/hooks.json,並使用絕對路徑的 python/python3,避免 Windows 上 python3 ~/.codex/hooks/... 那種無聲失敗。skills 依 Codex 現行使用者層契約安裝到 ~/.agents/skills/;既有的 legacy ~/.codex/skills/ 不會自動刪除或搬移。

Hooks 預設啟用;若曾關閉,請在 config.toml 設定 [features].hooks = true。新增或修改註冊後,在 Codex 執行 /hooks 檢視並信任目前定義。verify-install.py 會直接 live-fire 腳本,但不能代替 TUI 的 trust 檢查。

目前所有自動化環境一起處理

python scripts/install.py --dry-run --agent all --hooks all --skills all
python scripts/install.py --agent all --hooks all --skills all

安裝程式會盡量合併而不是覆蓋既有設定;Claude Code 正式寫入前會備份 settings.json。既有同名 skill 預設不覆蓋,除非明確使用 --force。

但 hook 腳本本身是整支覆蓋的,所以「直接改腳本裡的設定」會在下次安裝時被洗掉,而且是往「又開始擋了」的方向洗,不會有任何提示。要能撐過重裝的設定放在腳本旁邊的 JSON 檔,安裝程式永遠不碰那些檔案:

// ~/.claude/hooks/no-emoji-guard.json
{ "enabled": false }                                  // 保持安裝但關閉
{ "exempt_path_substrings": ["/my-notes/"] }          // 只放行特定資料夾

.lint-gate.json 也是同樣的道理,只是它放在專案根目錄。設定檔壞掉時一律回到內建預設(也就是繼續擋),因為打錯字不該變成一種悄悄關掉護欄的方式。

驗證安裝

Claude Code hook 安裝後,重新啟動 agent,再跑:

python scripts/verify-install.py

這支工具不只讀設定檔,而會對已安裝 hook 餵合成 payload,確認它真的執行並產生預期的 allow / block 行為。exit code 0 才代表它檢查到的項目通過。

它主要驗證 Claude Code hook 與 Antigravity skills 目錄,並在本機已安裝時檢查 Cursor / Codex 的設定檔與 live-fire 行為;anti-doom-loop-guard 在四個 agent 上都會用各自的 payload 與 deny 格式 live-fire。Antigravity 已登記的每個 hook 都會檢查登記版面並用 Antigravity 形狀的 payload live-fire 一次放行、一次攔截。

Windows

Windows 原生環境不要直接使用依賴 jq 的 shell 版本。安裝器會替 Claude Code 選擇 Python 版本,避免 hook 因 jq 缺失或 WSL bash 路徑而 fail-open。

詳細說明見 docs/windows-install.md。Antigravity / Gemini 見 docs/antigravity-install.md。

安裝前的安全原則

這個 repo 的程式會修改 agent 設定,且 hook 會攔截後續操作。安裝任何網路下載的 guardrail 前,都應先閱讀腳本或要求 agent 解釋它會:

  1. 複製哪些檔案。
  2. 修改哪些設定。
  3. 在什麼事件阻擋操作。
  4. 如何停用與移除。

不需要全裝。先裝真正對你的風險有價值的 guardrail,比把所有規則堆進 agent 更好。

給不熟終端機的使用者

可以把這個 repo 網址交給 AI coding agent,請它先閱讀 AGENTS.md,用白話解釋要改哪些檔案,先執行 dry-run,再逐項安裝。不要要求 agent 略過預覽與驗證。

開發與驗證

本 repo 的 CI 會在 Linux 與 Windows 執行核心 Python syntax / regression checks、安裝器 dry-run 契約測試,以及既有 hook 測試。

主要回歸測試:

python hooks/danger-zone-guard/tests/run-tests.py
python hooks/test-gate-guard/tests/run-tests.py
python hooks/tests/run-encoding-tests.py
python -m unittest discover -s tests -p "test_*.py"

維護與安裝規則見 AGENTS.md;版本沿革見 CHANGELOG.md。

相關工具

這五個 repo 各自治理 AI coding 的一層,可以單獨用,也可以疊起來用:

層 Repo 做什麼
供應鏈 SkillSpector 裝進來之前先掃:agent skill 的漏洞與惡意樣式偵測,輸出風險分數與 SAFE/CAUTION/DO_NOT_INSTALL 建議
派工決策 agent-advisor 風險分流路由 solo/delegate/audit/full:決定這件事要不要派工、派給誰
動作攔截 Harness Guard(你在這裡) agent runtime hook,在動手前後與收工時實際攔截危險指令、無證據宣稱、紅燈提交
產出品質 ai-quality-gates 可執行規格與量化門檻:覆蓋率、突變測試、圈複雜度、依賴結構、有界 loop policy
交付流程 paulsha-cortex 多 Agent lifecycle:Candidate → Verify → Independent Review → Delivery → CompletionRecord

相鄰但不同層:agent-governance-toolkit 治理的是上線後自主運行的 agent——政策強制、零信任身分、沙箱執行與可稽核記錄——不是寫程式的 coding agent。opencodex 是供應商代理,決定這些 agent 背後能跑哪些 LLM,本身不約束 agent 行為。

多 Agent 流水線

本 repo 是 agent-relay 多 Agent 派工與驗收流水線的一環(角色:阻擋 hook)。與 agent-relay 的整合規劃中(Phase 3)。協定規格與所有相關 repo 的總目錄見 agent-relay。

授權

MIT License,見 LICENSE。原作者、fork 來源與改寫自其他作品的 attribution 見 NOTICE。

About

AI coding 治理的動作層:五個可執行 hook 實際攔截危險指令、無證據的完成宣稱與紅燈仍提交,含可重現安裝與 live-fire 驗證,Windows 優先|Execution layer of an AI coding governance stack — runtime guardrail hooks that actually block.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages