Platform truth table — what actually enforces, where
Every cell is source-verified. PREVENTS means the action physically cannot proceed on that path. REPORTS means the result is visible while merge or deploy can still proceed. INSTRUCTS means durable guidance the agent reads; it is not enforcement. “With opt-in” names the switch that turns reporting into prevention.
See What each path does — and does not.
| Surface | What it gates | Default | With opt-in | How to enable |
|---|---|---|---|---|
| Claude Code — PreToolUse hook | Contract-touching Write/Edit/MultiEdit at tool-call time | — | PREVENTS (exit 2 on BLOCK/STOP) | coderifts claude-hook + settings.json recipe |
| Claude Code — MCP plugin | preflight/verify/details as tools | REPORTS (decision surface) | — | plugin install (3 canonical tools) |
| OpenAI / Codex — dispatcher | Every registered mutating tool call | — | PREVENTS (proof-bound return; BLOCK → raw function does not run) | withCodeRiftsOpenAI + executeOpenAIToolCall loop (production pattern) |
| Anthropic / Gemini / LangGraph — dispatcher | Same, framework-native faces | — | PREVENTS | execute*ToolCall wrappers (guard ≥6.4.0) |
| GitHub PR — contract check | Breaking API changes on PRs | REPORTS (visible check; phase-1 conclusion clamped to neutral, not failure) | PREVENTS (merge physically blocked) | required check via coderifts setup-required-check --apply (+ --enforce-admins); hard failure needs MERGEGATE_ENFORCE |
| Deploy gate | Deploying an artifact whose receipt is stale/mismatched | REPORTS (advisory, exit 0) | PREVENTS (exit 1) | CI enforce signal (phase-3 posture) |
| Publish gate | Releasing without a verified receipt / authorize decision surface | — | PREVENTS (exit 1 on BLOCK/STOP) | coderifts publish-gate in npm prepublishOnly |
| git pre-push hook | Pushing spec changes without authorization | — | PREVENTS (non-zero exit) | coderifts hook install |
| Rule files (6 platforms) | Agent knows when/how to consult CodeRifts | INSTRUCTS | — | coderifts agent-setup |
| MCP server (hosted) | analyze = information only; authorize = receipt issuance | REPORTS + issues receipts | (feeds every PREVENTS path above) | app.coderifts.com/mcp |
Boundary
Prevention holds inside the wired boundary — a host that bypasses the guarded table, uninstalls the hook, or merges on a repository without the required check is outside it, and the proofs say so rather than pretending otherwise. Live proof: the demo repository’s blocked PR is physically unmergeable.
Last verified: 2026-08-15. Cell changes require source quotes.