The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Kcp Harness — KCP compliance proxy listing page.
Deterministic knowledge governance for any AI agent.
Your agent can read every file in your project. Can it prove why it read what it read?
KCP Harness is an MCP compliance proxy that sits between an AI coding agent and its tools. It intercepts knowledge-related calls, routes them through the kcp-agent deterministic planner (14-gate cascade, no LLM), and produces compliance artifacts — decision traces, audit logs, budget ledgers — as a side effect of normal agent operation.
The agent can't bypass governance because it only talks to the proxy's MCP interface. The proxy decides what knowledge is accessible, tracks spend, and logs every decision. Fail-closed: if the harness can't verify a request, the agent gets nothing.
Enterprises need agents that are defensible — auditable, reproducible, budget-controlled, temporally pinned. Today's agents can't prove why they read what they read. The harness adds a compliance layer without replacing the agent.
| What you keep | What the harness adds |
|---|---|
| Your agent (Claude Code, Cursor, Copilot, ...) | Deterministic knowledge selection |
| Your workflow (coding, reviewing, shipping) | Decision traces (14 gates per unit) |
| Your tools (MCP servers, shell, browser) | Budget enforcement (ceiling, per-currency) |
| Temporal governance (drift detection) | |
| Append-only audit log | |
| Replay / cross-examination | |
| Human-approval gates (named reviewer + policy citation) | |
| Confidence gating (post-synthesis, route-to-human) |
You sell the compliance layer. The agents are pluggable.
Or use without installing:
Pre-built binaries (no Node/Deno required) for Linux x64/arm64, macOS x64/arm64, and Windows x64 — grab them from a release. To build one yourself:
Your agent now routes knowledge access through the harness. Every decision is logged.
| Agent | Config | Integration |
|---|---|---|
| Claude Code | .mcp.json + PreToolUse hooks | kcp-harness integrate claude-code |
| Cursor | .cursor/mcp.json + .mdc rules | kcp-harness integrate cursor |
| GitHub Copilot | .vscode/mcp.json (uses "servers" key) | kcp-harness integrate copilot |
| Windsurf | global config + .windsurfrules | kcp-harness integrate windsurf |
| Cline | MCP settings + .clinerules | kcp-harness integrate cline |
| Continue | .continue/mcpServers/*.yaml | kcp-harness integrate continue |
| Crush | crush.json + PrepareStep | kcp-harness integrate crush |
| OpenClaw | openclaw.json + plugin hooks | kcp-harness integrate openclaw |
| Pi | .pi/mcp.json + project skills | kcp-harness integrate pi |
Each agent has its own MCP config format, rules file, and quirks. The integrate command handles
them all — one governance layer, any agent.
Every tool call flows through a five-stage pipeline:
The classifier examines each tool call and determines whether it targets governed knowledge.
Read("docs/api.md") where docs/ is governed? Route through the planner. Read("package.json")
where package.json isn't governed? Pass through. KCP tools (kcp_plan, kcp_load) are always
governed.
Two automated modes, plus a human gate that outranks both:
kcp_plan first. The harness caches the approved
plan. Subsequent reads are checked against the cached plan — no re-planning.kcp_plan.governance.approvals rule are held for a named
reviewer (pending), no matter what the automated paths would decide. Tickets survive
restarts and resolve via the kcp-harness approvals CLI (or any custom ApprovalProvider
channel). Resolutions require a named reviewer and a policy citation.Every knowledge unit is evaluated through 14 deterministic gates, in order:
A unit must pass all gates. The gate that blocks it is recorded in the decision trace. Same inputs → same plan. No model involved.
For the skill_eligibility gate's subject matter — governed kind: skill units — the
authoring conventions, linter, and conformance vectors live in
Cantara/kcp-skill.
Once connected, agents can use these governance tools:
| Tool | Description |
|---|---|
kcp_plan | Deterministic load plan — which units, in what order, which skipped and why |
kcp_load | Plan + load eligible unit content |
kcp_trace | Full 14-gate decision trace |
kcp_validate | Lint a knowledge.yaml |
harness_status | Current governance state |
harness_session | Approved plans + known units for this session |
harness_budget | Itemized spend tracking |
harness_temporal_check | Plan drift detection |
harness_approvals | Human-approval tickets (pending / approved / dismissed / expired) |
harness_assess | Confidence-gate a synthesized answer before acting on it |
Append-only JSONL. Every decision — governed or pass-through — is logged with sequence number, timestamp, tool, targets, and governance decision:
Append-only itemized spend tracking. Per-currency running totals. Ceiling enforcement — a load that would exceed the budget is rejected atomically (no partial loads).
Plans are registered with a temporal watcher. On subsequent calls, the watcher re-evaluates against the current time. If units have drifted (expired, newly valid), the harness emits a drift event. Long-running sessions stay honest.
Calls matching an approval rule open a durable ticket
(pending_review → approved | dismissed | expired). The ticket store survives restarts —
sessions are ephemeral, human review is not. Every resolution records who approved,
when, and which policy it satisfies — evidence generated at approval time, never
reconstructed from logs.
harness_assess runs kcp-agent's post-synthesis
assess() over a synthesized answer before it may be acted on. The planner gates loading,
grounding gates asserting, this gates acting. Below-threshold verdicts on routed configs
open an approval ticket with the full verdict embedded as evidence.
Forking agents puts you in competition. A harness puts you in composition.
Covers the classifier, governor (incl. approval precedence), approval state machine + providers, confidence-gate wiring, proxy, audit, budget ledger, temporal watch, evidence export, dashboard, and all agent integrations.
Apache-2.0 · By eXOReaction AS, hosted under Cantara.