
Api Governance
io.github.coderiftsv1.0.3更新于 Sep 29, 2026
Signed, offline-verifiable contract-change authorization. Only a granted change can proceed.
安装
在 SourceWeft 中
- 打开 控制台中的 Api Governance,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。
其他 MCP 客户端
把它添加到你客户端的 mcpServers 配置中。
{
"mcpServers": {
"api-governance": {
"type": "http",
"url": "https://app.coderifts.com/mcp"
}
}
}README
CodeRifts — contract-change authorization
Only a granted change can proceed. Before a contract change merges, deploys or registers, CodeRifts decides whether it is authorized — and the check is red without a grant.
One grant binds three things: the authorization, its single use, and the target state the change moves to. The decision is signed, and the receipt verifies offline — you do not have to trust our database to check what was authorized.
Every decision also names what it does not prove.
- Hosted MCP server:
https://app.coderifts.com/mcp - Manifest:
https://coderifts.com/mcp.json— the canonical published document. Themcp.jsonat the root of this repository is a pointer to it, not a second copy. - Official MCP Registry:
io.github.coderifts/api-governance - Website:
https://coderifts.com - Live demo PR:
https://github.com/coderifts/demo/pull/4
Install
GitHub Copilot reads the same server under three different root keys — servers in
.vscode/mcp.json, mcpServers in the cloud agent's MCP settings, and mcp-servers in a custom
agent's frontmatter — and npx coderifts copilot-setup writes all three (details below).
A key is needed only to authorize; get one at https://app.coderifts.com/api/signup.
Claude Code plugin
Install the CodeRifts marketplace, then the api-governance plugin (MCP server + skill).
Requires CODERIFTS_API_KEY for tool calls.
Local checkout (after clone):
The plugin wires the hosted MCP at https://app.coderifts.com/mcp and the
api-governance skill. Tools exposed: preflight_change_set, verify_receipt,
get_decision_details only.
Cursor plugin
Cursor Plugin package (measured Cursor layout: .cursor-plugin/plugin.json +
skills/ + rules/ + mcp.json + hooks/hooks.json). Same hosted MCP and the
same three tools as the Claude plugin — no fourth tool. Deterministic /
signed / fail-closed — not an AI compatibility scan.
Validate:
The generated-rule check is LIVE when CODERIFTS_APP_ROOT (default ~/coderifts-app)
has generated/agent-host/.cursor/rules/coderifts.mdc, and RECORDED against
fixtures/recorded/app-generator when it does not (weaker, named). A missing or
corrupt snapshot still exits 1 — no silent skip.
OpenAI / Codex package
Codex plugin package (measured OpenAI Codex layout: .codex-plugin/plugin.json +
.mcp.json + skills/ + AGENTS.md). Same hosted MCP and the same three tools
as the Claude plugin — no fourth tool.
Production pattern (function-calling apps)
OpenAI’s model only emits tool_call JSON; your app executes it. Wire governance at
that host loop — not as a Claude-style PreToolUse hook. Full steps + one canonical loop:
→ plugins/api-governance-openai/docs/openai-production-pattern.md
⚠ Still failing on the same one assertion, re-measured 2026-09-24: ALLOW factory ran — execute() did not run. The other eight assertions pass (4 ALLOW, 5 BLOCK), and the BLOCK side — the side that matters for a gate — is fully green: the factory does not run, the content is the gate denial with no fabricated success, and the decision identity is surfaced. The failing assertion is on the ALLOW path, where the dispatch wrapper returns the function result without having invoked the injected factory.
The 2026-09-14 version of this note ended "Investigation is in progress." That was dropped rather than re-dated: ten days on, it is a claim about activity that nothing here can verify, and a README that reports its own diligence is reporting the one thing a reader cannot check. What a reader can check is the assertion name and today's date.
Local checkout in Codex (team marketplace path):
Validate package consistency (manifest, tool parity, AGENTS.md empty-diff vs regeneration):
AGENTS.md regeneration is LIVE when ~/coderifts-app (or CODERIFTS_APP_ROOT) exists,
and RECORDED against fixtures/recorded/app-generator when it does not (weaker, named).
A missing or corrupt snapshot still exits 1. Directory listing / account submission steps are
not automated here.
GitHub Copilot kit
Reference copies of the generated Copilot MCP configs + instructions (single source:
coderifts-app generators). Same hosted MCP and the same three tools — no fourth tool.
Primary install (living command — prefer this over copying from the kit):
Agent-host instructions (including .github/copilot-instructions.md) come from:
Three Copilot surfaces (root keys differ)
From the generated guide (copilot/docs/copilot-mcp.md — do not re-author this table):
Tools allowlisted everywhere: preflight_change_set, verify_receipt, get_decision_details.
Vendored reference tree (copilot/)
Validate empty-diff vs regeneration + 3-tool discipline:
Empty-diff vs regeneration is LIVE when CODERIFTS_APP_ROOT has the generators, and
RECORDED against fixtures/recorded/app-generator when it does not (weaker, named).
A missing or corrupt snapshot still exits 1. The kit is a communication / distribution
mirror — npx coderifts copilot-setup remains the install path.
Agent Skill (skills.sh)
The skills CLI discovers skills/api-governance/SKILL.md at this repository's root and installs it under
the name api-governance. Where it lands depends on the agent (the CLI's own table): .agents/skills/api-governance/
for most agents (Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode, …) and .claude/skills/api-governance/ for
Claude Code.
skills/api-governance/SKILL.md is generated (node scripts/generate-root-skill.mjs; npm run validate:root-skill
checks it) from plugins/api-governance/skills/api-governance/SKILL.md — the same text, with the frontmatter name
set to the directory name. The plugin copy keeps name: coderifts, and skills.sh already lists it under that name
(--skill coderifts, measured 2026-09-27), so the same text is reachable as both coderifts and api-governance. The website's
.well-known/agent-skills/coderifts-api-governance/SKILL.md is a different rendering (the Cursor plugin's), not this file.
MCP server
CodeRifts runs as a hosted Streamable HTTP MCP server. Any MCP-compatible agent (Claude Desktop, Cursor, LangGraph, AutoGen, custom) can connect and run governance checks before tool calls or merges.
- Endpoint:
https://app.coderifts.com/mcp - Transport: Streamable HTTP (protocol version
2025-06-18) - Server:
CodeRifts API Governancev1.0.3— read frominitialize→result.serverInfo.versionon 2026-09-24. A version typed into a README is a claim with a date on it;npm run validate:tools-wirecompares the TOOLS to the live server on every push, pull request and daily cron, but nothing compares this line, so re-read it rather than trust it. - Auth:
initialize,tools/listand an analyzetools/callneed no key (measured live 2026-09-26). An authorize call mints a signed receipt and needs an API key — sendAuthorization: Bearer <key>orX-API-Key: <key>.
Connect
Verify the connection
Expected: a JSON-RPC result with serverInfo and capabilities.tools.
Try without a key
An analyze call over MCP needs no key:
Measured response (live, 2026-09-26 — removing name from GET /pets), in the tool result:
That is information, not permission: may_execute is false on every analyze answer. To act,
call again with preflight_mode: "authorize" and context.operation, with a key.
Two public REST endpoints need no auth at all:
Both return HTTP 200 without a key. They do not share a response shape:
GET /api/v1/public/preflightis analyze-only. There is nodecisionfield. The body carriesanalysis_outcome(Petstore URL:NO_BREAK_DETECTED),authorization_effect: NONE, andmay_execute: false.POST /api/v1/public/actionguard-checkdoes return adecisionfield (unpinneduses: @mainpayload:WARN) plusexecution_action: CONTINUE_WITH_MONITORING.
Tools
The hosted MCP server exposes exactly three tools (from live tools/list; pinned in this
repository as tools.wire.v1.json, which npm run validate:tools-wire
checks against the live server on every push, pull request and the daily cron):
On the authorize path of preflight_change_set, the decision envelope includes fields such as decision, execution_action, risk_score, safe_for_agent, and related analysis fields so agent runtimes can branch on a stable contract. Prefer branching on execution_action when present.
How agents use it
- Before merging an API change (or before an agent acts on a contract change), call
preflight_change_setwith full before/after artifacts andpreflight_mode: "authorize"(pluscontext.operation). - Branch on
execution_actiononly:CONTINUEproceeds,CONTINUE_WITH_MONITORINGproceeds with a wired monitoring sink,REQUEST_APPROVALpauses for a human,STOPstops the merge / aborts the agent step. Any other value is not permission — fail closed. - Before acting under the receipt you hold, call
verify_receiptwith the same context the preflight was made under, and act only whencurrently_authorizedistrue. Do not re-preflight unless the change set or operation changed. - To inspect a prior decision by id, call
get_decision_details.
Decision logic is deterministic: a single breaking change is never silently allowed. Tests can pass and still ship a broken contract — CodeRifts checks the contract itself at PR time.
Also available
- GitHub App on the GitHub Marketplace — installs without configuration and posts a signed contract-change decision (ALLOW / WARN / REQUIRE_APPROVAL / BLOCK) on every pull request, across four gates: API contract, schema-vs-code, auth surface and workflow actions. ⚠ It reports by default: the check's phase-1 conclusion is clamped to
neutralandMERGEGATE_ENFORCEdefaults false, so it prevents a merge only once the check is required on the branch and that variable is on. The platform truth table is the source of truth for that distinction: https://coderifts.com/docs/platform-truth-table/ - SDKs:
npm install @coderifts/sdk(TypeScript),pip install coderifts-sdk(Python). - CLI:
coderifts(npm) with a pre-push hook. - Integrations: Backstage plugin, VS Code extension, LangGraph / AutoGen / CrewAI.
Links
- Website: https://coderifts.com
- Decision Spec: https://coderifts.com/decision-spec/
- API reference: https://app.coderifts.com/api/docs
- Manifest: https://coderifts.com/mcp.json
- Receipt verifier (verify our receipts without trusting us): https://github.com/coderifts/receipt-verifier
- Contact: [email protected]
License
See LICENSE.
来源:README.md,提交 941eaab
工具
0版本历史
2- v1.0.3最新Sep 20, 2026
- v1.0.2Sep 16, 2026