feat(gatekeeper): thin pre-tool hook adapter, integration tests, and architecture alignment #4

Merged
clawdie merged 4 commits from feat/gatekeeper-hook-adapter into main 2026-09-23 19:21:23 +02:00
Owner

Summary

Implements the thin Hermes pre_tool_call adapter and aligns documentation with Colibri canonical ownership:

  1. Translation-Only Hook Adapter (scripts/clawdie-gatekeeper-hook.py):

    • Pure translation layer: zero duplicated threshold math, zero regex matchers, zero token parsers.
    • Translates Hermes pre_tool_call JSON to Colibri clawdie.gatekeeper-eval.v1 request.
    • Invokes colibri-gatekeeper eval via stdin/stdout IPC.
    • Translates verdicts: allow -> {} (proceed); require_token and block -> {"decision": "block", "reason": "..."}.
    • Fail-closed on evaluator timeout, missing binary, or malformed input/output.
  2. Integration Test Suite (tests/test_clawdie_gatekeeper_hook.py):

    • 7 unit/integration tests verifying non-sensitive tool bypass, fail-closed handling on missing/malformed evaluator, and live integration against colibri-gatekeeper binary (safe commands allowed, destructive commands blocked without token, unknown commands blocked fail-closed, valid bound grants allowed, and grant action mismatch attacks blocked).
  3. Documentation Realignment (docs/security/clawdie-gatekeeper.md):

    • Establishes Colibri as the canonical owner of contracts, deterministic policies, token verification, and offline allowlist.
    • Positions Hermes strictly as an edge client/adapter.
    • Preserves FreeBSD-specific Vaultwarden deployment lifecycle (sentinel, nullfs, readiness probing).
### Summary Implements the thin Hermes pre_tool_call adapter and aligns documentation with Colibri canonical ownership: 1. **Translation-Only Hook Adapter (`scripts/clawdie-gatekeeper-hook.py`)**: - Pure translation layer: zero duplicated threshold math, zero regex matchers, zero token parsers. - Translates Hermes `pre_tool_call` JSON to Colibri `clawdie.gatekeeper-eval.v1` request. - Invokes `colibri-gatekeeper eval` via stdin/stdout IPC. - Translates verdicts: `allow` -> `{}` (proceed); `require_token` and `block` -> `{"decision": "block", "reason": "..."}`. - Fail-closed on evaluator timeout, missing binary, or malformed input/output. 2. **Integration Test Suite (`tests/test_clawdie_gatekeeper_hook.py`)**: - 7 unit/integration tests verifying non-sensitive tool bypass, fail-closed handling on missing/malformed evaluator, and live integration against `colibri-gatekeeper` binary (safe commands allowed, destructive commands blocked without token, unknown commands blocked fail-closed, valid bound grants allowed, and grant action mismatch attacks blocked). 3. **Documentation Realignment (`docs/security/clawdie-gatekeeper.md`)**: - Establishes Colibri as the canonical owner of contracts, deterministic policies, token verification, and offline allowlist. - Positions Hermes strictly as an edge client/adapter. - Preserves FreeBSD-specific Vaultwarden deployment lifecycle (sentinel, nullfs, readiness probing).
feat(gatekeeper): thin pre-tool hook adapter, integration tests, and architecture alignment
Some checks failed
CI / Check contributors (pull_request) Has been cancelled
CI / Check uv.lock (pull_request) Has been cancelled
CI / Check no committed infographics (pull_request) Has been cancelled
CI / package-lock.json diff (pull_request) Has been cancelled
CI / Lint Docker scripts (pull_request) Has been cancelled
CI / Build&Test Docker image (pull_request) Has been cancelled
CI / Supply-chain scan (pull_request) Has been cancelled
CI / Review label gate (pull_request) Has been cancelled
CI / CI review comment (live) (pull_request) Has been cancelled
CI / All required checks pass (pull_request) Has been cancelled
CI / CI timing report (pull_request) Has been cancelled
CI / Generate slices (pull_request) Has been cancelled
CI / save-durations (pull_request) Has been cancelled
CI / e2e (pull_request) Has been cancelled
CI / List npm workspaces (pull_request) Has been cancelled
CI / PowerShell installer tests (pull_request) Has been cancelled
CI / Playwright E2E (Linux) (pull_request) Has been cancelled
CI / docs-site-checks (pull_request) Has been cancelled
CI / check-common-ancestor (pull_request) Has been cancelled
CI / check-attribution (pull_request) Has been cancelled
CI / uv lock --check (pull_request) Has been cancelled
CI / check-no-committed-infographics (pull_request) Has been cancelled
CI / package-lock.json semantic diff (pull_request) Has been cancelled
CI / Lint Dockerfile (hadolint) (pull_request) Has been cancelled
CI / Lint docker/ shell scripts (shellcheck) (pull_request) Has been cancelled
CI / build (amd64, type=gha,scope=docker-amd64, type=gha,mode=max,scope=docker-amd64, linux/amd64, ubuntu-latest) (pull_request) Has been cancelled
CI / build (arm64, type=gha,scope=docker-arm64, type=gha,mode=max,scope=docker-arm64, linux/arm64, ubuntu-24.04-arm) (pull_request) Has been cancelled
CI / publish (amd64, type=gha,scope=docker-amd64, type=gha,mode=max,scope=docker-amd64, linux/amd64, ubuntu-latest) (pull_request) Has been cancelled
CI / publish (arm64, type=gha,scope=docker-arm64, type=gha,mode=max,scope=docker-arm64, linux/arm64, ubuntu-24.04-arm) (pull_request) Has been cancelled
CI / merge (pull_request) Has been cancelled
8e3768348f
test(gatekeeper): align integration test with v2 bound grants and isolated runtime secret
Some checks failed
CI / Check contributors (pull_request) Has been cancelled
CI / Check uv.lock (pull_request) Has been cancelled
CI / Check no committed infographics (pull_request) Has been cancelled
CI / package-lock.json diff (pull_request) Has been cancelled
CI / Lint Docker scripts (pull_request) Has been cancelled
CI / Build&Test Docker image (pull_request) Has been cancelled
CI / Supply-chain scan (pull_request) Has been cancelled
CI / Review label gate (pull_request) Has been cancelled
CI / CI review comment (live) (pull_request) Has been cancelled
CI / All required checks pass (pull_request) Has been cancelled
CI / CI timing report (pull_request) Has been cancelled
CI / Generate slices (pull_request) Has been cancelled
CI / save-durations (pull_request) Has been cancelled
CI / e2e (pull_request) Has been cancelled
CI / List npm workspaces (pull_request) Has been cancelled
CI / PowerShell installer tests (pull_request) Has been cancelled
CI / Playwright E2E (Linux) (pull_request) Has been cancelled
CI / docs-site-checks (pull_request) Has been cancelled
CI / check-common-ancestor (pull_request) Has been cancelled
CI / check-attribution (pull_request) Has been cancelled
CI / uv lock --check (pull_request) Has been cancelled
CI / check-no-committed-infographics (pull_request) Has been cancelled
CI / package-lock.json semantic diff (pull_request) Has been cancelled
CI / Lint Dockerfile (hadolint) (pull_request) Has been cancelled
CI / Lint docker/ shell scripts (shellcheck) (pull_request) Has been cancelled
CI / build (amd64, type=gha,scope=docker-amd64, type=gha,mode=max,scope=docker-amd64, linux/amd64, ubuntu-latest) (pull_request) Has been cancelled
CI / build (arm64, type=gha,scope=docker-arm64, type=gha,mode=max,scope=docker-arm64, linux/arm64, ubuntu-24.04-arm) (pull_request) Has been cancelled
CI / publish (amd64, type=gha,scope=docker-amd64, type=gha,mode=max,scope=docker-amd64, linux/amd64, ubuntu-latest) (pull_request) Has been cancelled
CI / publish (arm64, type=gha,scope=docker-arm64, type=gha,mode=max,scope=docker-arm64, linux/arm64, ubuntu-24.04-arm) (pull_request) Has been cancelled
CI / merge (pull_request) Has been cancelled
f58ec6567d
docs(gatekeeper): document v2 bound grants, replay protection, and UID separation model
Some checks failed
CI / Check contributors (pull_request) Has been cancelled
CI / Check uv.lock (pull_request) Has been cancelled
CI / Check no committed infographics (pull_request) Has been cancelled
CI / package-lock.json diff (pull_request) Has been cancelled
CI / Lint Docker scripts (pull_request) Has been cancelled
CI / Build&Test Docker image (pull_request) Has been cancelled
CI / Supply-chain scan (pull_request) Has been cancelled
CI / Review label gate (pull_request) Has been cancelled
CI / CI review comment (live) (pull_request) Has been cancelled
CI / All required checks pass (pull_request) Has been cancelled
CI / CI timing report (pull_request) Has been cancelled
CI / Generate slices (pull_request) Has been cancelled
CI / save-durations (pull_request) Has been cancelled
CI / e2e (pull_request) Has been cancelled
CI / List npm workspaces (pull_request) Has been cancelled
CI / PowerShell installer tests (pull_request) Has been cancelled
CI / Playwright E2E (Linux) (pull_request) Has been cancelled
CI / docs-site-checks (pull_request) Has been cancelled
CI / check-common-ancestor (pull_request) Has been cancelled
CI / check-attribution (pull_request) Has been cancelled
CI / uv lock --check (pull_request) Has been cancelled
CI / check-no-committed-infographics (pull_request) Has been cancelled
CI / package-lock.json semantic diff (pull_request) Has been cancelled
CI / Lint Dockerfile (hadolint) (pull_request) Has been cancelled
CI / Lint docker/ shell scripts (shellcheck) (pull_request) Has been cancelled
CI / build (amd64, type=gha,scope=docker-amd64, type=gha,mode=max,scope=docker-amd64, linux/amd64, ubuntu-latest) (pull_request) Has been cancelled
CI / build (arm64, type=gha,scope=docker-arm64, type=gha,mode=max,scope=docker-arm64, linux/arm64, ubuntu-24.04-arm) (pull_request) Has been cancelled
CI / publish (amd64, type=gha,scope=docker-amd64, type=gha,mode=max,scope=docker-amd64, linux/amd64, ubuntu-latest) (pull_request) Has been cancelled
CI / publish (arm64, type=gha,scope=docker-arm64, type=gha,mode=max,scope=docker-arm64, linux/arm64, ubuntu-24.04-arm) (pull_request) Has been cancelled
CI / merge (pull_request) Has been cancelled
3da53ed41d
fix(gatekeeper): resolve COLIBRI_BIN dynamically and inject CLAWDIE_RUNTIME_DIR for FreeBSD non-root tests
Some checks failed
CI / merge (pull_request) Has been cancelled
CI / Desktop E2E (pull_request) Has been cancelled
CI / Docs Site (pull_request) Has been cancelled
CI / Deny unrelated histories (pull_request) Has been cancelled
CI / Check contributors (pull_request) Has been cancelled
CI / Lint Docker scripts (pull_request) Has been cancelled
CI / Build&Test Docker image (pull_request) Has been cancelled
CI / Supply-chain scan (pull_request) Has been cancelled
CI / Review label gate (pull_request) Has been cancelled
CI / CI review comment (live) (pull_request) Has been cancelled
CI / All required checks pass (pull_request) Has been cancelled
CI / Lint Dockerfile (hadolint) (pull_request) Has been cancelled
CI / CI timing report (pull_request) Has been cancelled
CI / Generate slices (pull_request) Has been cancelled
CI / save-durations (pull_request) Has been cancelled
CI / e2e (pull_request) Has been cancelled
CI / List npm workspaces (pull_request) Has been cancelled
CI / PowerShell installer tests (pull_request) Has been cancelled
CI / Playwright E2E (Linux) (pull_request) Has been cancelled
CI / docs-site-checks (pull_request) Has been cancelled
CI / check-common-ancestor (pull_request) Has been cancelled
CI / check-attribution (pull_request) Has been cancelled
CI / uv lock --check (pull_request) Has been cancelled
CI / check-no-committed-infographics (pull_request) Has been cancelled
CI / package-lock.json semantic diff (pull_request) Has been cancelled
CI / Lint docker/ shell scripts (shellcheck) (pull_request) Has been cancelled
CI / build (amd64, type=gha,scope=docker-amd64, type=gha,mode=max,scope=docker-amd64, linux/amd64, ubuntu-latest) (pull_request) Has been cancelled
CI / build (arm64, type=gha,scope=docker-arm64, type=gha,mode=max,scope=docker-arm64, linux/arm64, ubuntu-24.04-arm) (pull_request) Has been cancelled
CI / publish (amd64, type=gha,scope=docker-amd64, type=gha,mode=max,scope=docker-amd64, linux/amd64, ubuntu-latest) (pull_request) Has been cancelled
CI / publish (arm64, type=gha,scope=docker-arm64, type=gha,mode=max,scope=docker-arm64, linux/arm64, ubuntu-24.04-arm) (pull_request) Has been cancelled
cc549ba84d
clawdie deleted branch feat/gatekeeper-hook-adapter 2026-09-23 19:21:23 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
clawdie/hermes-bsd!4
No description provided.