OPEN REFERENCE

GitHub Copilot

Let GitHub Copilot use consequential tools without treating access to a tool as unlimited authority.

This is a reference, not a hosted lab. The source and instructions are open and it runs on your machine in minutes. Nothing on this page executes here, and no integration is hosted for you.

Ratify Protocol is an open protocol for proving delegated authority: a principal signs a bounded delegation naming what an agent may do, and any receiver can verify that proof offline, before acting, without calling the issuer. This page is one open reference implementation of it.What Ratify Protocol is ↗

An independent Ratify Protocol project. Not a GitHub- or Microsoft-endorsed integration.

Why would a developer or enterprise need this?

GitHub and Copilot already provide important controls over access: which users, agents, repositories, plugins, MCP servers, credentials, and tools are available. Ratify is complementary. It gives the system that owns the consequence evidence of the narrower mandate behind one action.

Question GitHub and Copilot controls Ratify authority
Can this agent reach the tool? Yes Not its purpose
Does the agent have a usable credential? Yes Not its purpose
Did a recognized principal authorize this exact action? Not expressed by tool access alone Yes
Is the authority limited to this repository, service, and environment? Repository and tool policy may constrain access Signed into the delegation and checked by the receiver
Can another organization verify the mandate independently? Depends on shared platform and credential policy Yes, using portable proof and configured trust roots
Was the proof changed, revoked, expired, or replayed? Separate control Verified before the handler runs

The practical distinction is simple:

Diagram loading…

This matters when:

  • a coding agent holds credentials broader than the current task;
  • production actions need stronger evidence than a prompt or approval click;
  • an MCP or SaaS provider receives calls from agents it did not issue;
  • customer, vendor, or partner agents cross an organizational boundary; or
  • security and audit teams need to answer who authorized what, for which agent, resource, operation, and time window.

The outcome is not “more cryptography.” The outcome is that enterprises can permit more agent automation while the receiver retains a precise, auditable, fail-closed decision boundary.

What does this reference do?

The included principal delegates only:

scope       custom:github:deploy
repository  identities-ai/copilot-authority-demo
path        /services/payments/environments/staging

Copilot sees one ordinary MCP tool named deploy_service. The model never receives the signing key and never constructs the Ratify proof.

Diagram loading…

The receiver—not the prompt, skill, model, or adapter—is the enforcement boundary. A caller cannot reach the protected handler by skipping Ratify proof presentation.

Who implements what

Four roles, and only two of them write anything. GitHub implements nothing. The plugin uses the existing plugin manifest and MCP mechanisms, so no change to Copilot, GitHub, or any Microsoft surface is required for this to work.

Role Who this usually is What they do What they build
Principal The person or organization accountable for the action Signs a bounded delegation naming the scope, resource, and expiry No code. Issues a delegation with the SDK or Ratify Verify, and decides what the bounds should be
Agent operator The team running Copilot Installs the plugin and points it at their receiver and trust root No code, but real configuration: the receiver address, the trusted principal, and which tools are protected
Receiver operator Whoever owns the consequence: the deploy service, the SaaS API, the MCP server Issues challenges, verifies the proof, and guards the protected handler The verification path. In this reference src/receiver.ts is 138 lines: the verifyBundle call is about 15 of them, and the rest is challenge issuance, session binding, comparing the verified root against the trust policy, and making the handler unreachable except through the allow branch
GitHub / Copilot The agent platform Routes the tool call it already routes Nothing. The plugin uses the existing plugin manifest and MCP mechanisms

The receiver number is worth being precise about, because the verification call on its own is not an integration. The surrounding work is where a receiver operator spends their effort, and most of it is deciding what this deployment trusts rather than writing protocol code.

Diagram loading…

The asymmetry is the point. The party that carries the risk is the party that gets to check, and they can check without trusting the agent, the model, the prompt, or the platform that routed the call.

What the reference proves

Request Receiver decision Protected handler
Payments to staging with fresh valid authority Allow Invoked once
Payments to production Deny Not invoked
Different repository Deny Not invoked
Artifact changed after challenge issuance Deny Not invoked
Revoked delegation Deny Not invoked
Replayed proof Deny Not invoked again
Untrusted principal Deny Not invoked

Seven deterministic tests pass with zero failures and zero skips. The plugin was also installed directly from this public GitHub repository and exercised through Copilot CLI against the independent receiver.

Which path should I use?

Diagram loading…

Your situation Recommended path Available now?
Understand the model or run the Copilot demonstration This open reference Yes
Build an internal prototype with your own receiver Fork this reference and use the open SDK Yes
Self-host production verification Use the open protocol and SDK, with production key custody, TLS, durable state, policy, and audit Build and operate it yourself
Need managed multi-tenant trust, revocation, replay protection, policy, receipts, audit, availability, or support Ratify Verify Under development; design partners wanted

Open source

Use the open reference and SDK when you want inspectable protocol semantics, local evaluation, customization, or full operational ownership. The proof format and receiver decision remain portable. This repository is the immediate starting point.

Do not deploy the reference unchanged to production. Its keys are public test material, its state is in memory, its receiver uses local HTTP, and its handler is intentionally a counter.

Ratify Verify

Ratify Verify is the managed commercial path under development. It is intended for organizations that want Ratify to operate the verification control plane:

  • tenant-specific trust roots and organization connections;
  • durable atomic challenges and replay protection;
  • fresh revocation and policy decisions;
  • signed verification receipts and audit retention; and
  • production availability, observability, and support.

If that matches your deployment, contact partners@ratifyprotocol.com with “Ratify Verify design partner” in the subject. Useful context includes the agent runtime, protected action, receiving system, organizational boundary, and compliance or audit requirement. This is the current lead and design-partner path; Ratify Verify is not yet offered here as a generally available service.

Run it yourself

Before you start: Node.js 20 or later, and GitHub Copilot CLI for the Copilot path.

Clone ratify-protocol, then from the repository root:

cd references/github-copilot
./run-reference-check.sh

7 deterministic cases pass, zero failures, zero skips.

NEXT

Read the reference, or watch verification run.