Chock.sh Build your plugin

Agentseam

What agentseam is

Agentseam, the library under chock: one handler API over each coding agent's own hooks.

Agentseam is the stdlib-only Python library and CLI that chock builds on. It turns each coding agent's hook payload into one normalized Event, and a handler's Decision back into that agent's own reply. You can use it on its own, without chock.

The release these pages document

Package
agentseam 0.4.1
Python
>=3.9
Licence
Apache-2.0
Runtime dependencies
none
Console script
agentseam

The agentseam pages

From the agentseam docs: README.md

How it works

An adapter per agent owns three things: payload parsing, the response dialect and the config shape. Adapters are data (src/agentseam/data/vendors/<agent>.json, validated against schema.json) plus a small family module when a vendor speaks a new dialect. The matrix is data too, and matrix.enforcement_level(agent, event) is the authority for every grade below.

324 cells (27 agents by 12 events), from matrix.enforcement_level() run at a100491: 203 none, 74 detect, 45 best-effort, 2 enforceable, 0 enforced.

LevelMeaningAgents at pre_tool today
enforcedthe agent blocks, and fails closed if the hook diesnone
enforceableit blocks and can be told to fail closed, but doesn't by default1: Cursor
best-effortit blocks, but fails open (a crashed hook allows)16: Claude Code, VS Code Copilot, Codex CLI, Gemini CLI, Windsurf, Devin, Grok CLI, Antigravity, Kimi Code, Junie, Tabnine, goose, OpenHands, Factory Droid, Mistral Vibe, Cline
detectobservable after the fact only; prevention is not available0 (74 cells at other events)
nonenothing agentseam can gate: no hook surface, or no adapter yet (unadapted)10: aider and Zed (no hook surface); Amp, Copilot CLI, DeepSeek Harness, Kilo Code, Kiro, OpenCode, Replit, Roo Code (unadapted)

A row is only claimed when a verified: {basis, version, date} record backs it. Run agentseam doctor to see what is wired on this machine and flag rows not re-verified in 90 days. Grading never exceeds evidence: enforcement_level() caps every grade by what its own basis can support, so a vendor-docs row cannot back enforced. A pre-tool guard is one layer, not the whole defence: pair it with a git hook or CI gate that the agent cannot skip.

From the agentseam docs: docs/design.md

  • stdlib only. No dependencies, ever, in the adapter path — adapters must stay copy-portable into other projects that vendor single files.
  • Adapters own all vendor knowledge. Adding an agent in an existing family is a config entry plus a matrix row; no consumer changes.
  • Ownership-marked wiring. Install is idempotent and uninstall is surgical: your own hooks in the same config are never touched.
  • The matrix carries provenance. Every row records the version and date it was verified, and how.

ARCHITECTURE.md explains why those choices, what they cost, and the bug classes they exist to prevent.

Built from engine 5a4b6287a46e and catalog 1e60d211c1bb.