Parity matrix

September 9, 2026 · View on GitHub

This table tracks which security guarantees Doberman proves on each host it fronts, and which gaps are still open. Each row is a guarantee; each column a host. Generated by python -m tools.parity.generate_parity; do not edit it by hand.

  • : a CI test proves the cell on that host (the link opens the test file).
  • : an open, contributor-sized gap not yet proven (see issues labeled parity).
  • : the host cannot express this guarantee today (see the footnotes).

Host cells on the weakening row prove the hook side only: an agent cannot mutate .doberman/ policy state, and a weakening edit to the repo-root doberman.policy.yaml is clamped at load until doberman policy-file --accept; the CLI gate itself is proven by tests/integration/test_drift_gate.py.

GuaranteeClaude CodeCodexCursorMcp ProxyOpenclaw
Destructive shell commands are blocked or AUTH-gated
Deleting unrecoverable gitignored data is gated (AN-1)
A session that read a secret gets a raised floor on egress
An outbound value matching a read secret is blocked
Tool output carrying credentials is blocked from the model
The agent cannot edit Doberman's own config or hooks
Approvals are single-use and bound to one action id
AUTH challenges auto-deny at the wall-clock deadline
A timeout is logged distinctly from a refusal
Policy weakening requires the human-approved path

Footnotes for cells

  • Tool output carrying credentials is blocked from the model (openclaw): the OpenClaw adapter has no after_tool_call hook in the current slice, so it cannot scan tool output (documented limitation, not a gap to fill)