Chock.sh Build your plugin

Get started

Docs

How chock works and how to use it: plugins for your agent, or hooks in your repo.

Chock turns guardrail policies into hooks your AI coding agent runs. There are two ways in. The plugin path builds one plugin for one agent from the policies you pick. The repo path wires a repository's own hooks, git hooks and CI, so every clone carries the policies.

Two paths

Plugin path

pipx install chock

Pick policies on the builder. It gives you a share code and the command for your agent. The command takes this form (ask the user before running it):

chock install --selection <code> --client <agent> --apply
chock install --selection <code> --client <agent>

Quickstart: plugin

Repo path

pipx install chock
cd /path/to/your/project
chock init .
chock add protect-main-branch
chock sync --repo .

Quickstart: repo

What a label means

Every policy carries one label per agent. These are the engine's label words:

LabelMeaning
blocksThe agent refuses the action.
asksThe agent stops and asks you.
warnsThe action goes ahead, with a warning.
advisoryThe agent reads the text, and nothing stops a violation.

Grades and what they rest on

Agentseam grades what each agent can enforce before a tool runs. The evidence caps the grade: a row that rests on vendor docs never reads enforceable. Counts at the pinned agentseam release:

  • Best-effort: 16 agents
  • Enforceable: 1 agents
  • None: 10 agents

Basis of each row

  • Live-run: 1 agents
  • Live-run-partial: 3 agents
  • Third-party-install: 1 agents
  • Vendor-docs: 21 agents
  • Vendor-source: 1 agents

Tested and documented

Tested means a person saw chock refuse an action in that agent, with that install method, and the engine's list of live tests records the date and method. Documented means the claim rests on the vendor's docs or source. The engine's list of live tests at this commit has 10 rows.

From the engine docs: docs/concepts.md

Policy

The unit of governance. A policy is a self-contained folder under .agents/policies/<id>/ that says "here is a rule, and here is how it's enforced and proven." Every policy has a manifest.yaml manifest; depending on its type it also carries a script, a gate, and evals.

Gate

A hook's hook.gate in manifest.yaml selects a deterministic kind (content_regex, forbidden_ref, dependency_allowlist, test_integrity, script for a check the policy's own program makes, or egress_allowlist at the gateway), its params, the events it runs on (on: [commit|push|tool_use|tool_call]), its action (block by default, or ask or warn), and the message shown when it fires. tool_call gates any tool by name. chock compile flattens it to gate.json, which the vendored .chock/bin/gate.py runner enforces at git-hook time. See Gate DSL.

Enforcement surface

Where a compiled control runs. Chock models nine: ambient-rule, git-hook, ci-gate, pre-tool-use, stop, agent-hooks, managed-setting, gateway, mcp-gateway. Different agents support different surfaces, gateway is modeled but not emitted yet, and some surfaces need an explicit installer before they enforce anything — see Enforcement Surfaces.

From the engine docs: docs/coverage-levels.md

The levels

For each policy × agent, the compiler records one of eight levels in .chock/coverage.json. The first four come from the in-agent ladder — agentseam's own honest, per-agent vocabulary (agentseam.matrix.enforcement_level, owner decision #9) for an installed, in-agent pre-execution control, plus one level of chock's own — because a hook that fails OPEN on a crash is a materially weaker promise than one that fails closed, and an adopter deciding on trust needs to see the difference.

LevelMeaning
enforcedAn installed, hard, pre-execution in-agent control that fails CLOSED — a crashed hook still blocks.
enforceableInstalled and blocks, and CAN be told to fail closed, but does not by default — what an adopter may claim depends on how the hook was installed.
fail-to-askInstalled and blocks, and when the control itself cannot decide the action does not proceed unattended — it is put to a human. The host may still fail open if the hook never runs at all, which is why this sits below enforceable. Chock does not earn this level today; see below.
best-effortInstalled and blocks, but fails OPEN — a crashed hook silently allows. claude_code's PreToolUse is this tier today.
enforced-at-commitThe policy emitted a git-hook (installed automatically) or a CI gate whose workflow install-ci has actually written — hard at commit time or over the PR's commit range, advisory in-agent. Chock's own commit-time mechanism, outside agentseam's per-agent-hook model.
advisoryOnly the ambient rule applies — compiled prose the agent is asked to follow. Also outside agentseam's model: an ambient rule is not a lifecycle hook of any kind.
noneNothing the policy emitted reaches this agent.
disabledThe policy is listed in policies.disabled and produces no artifacts or hooks.

Built from engine 5a4b6287a46e and catalog 1e60d211c1bb.