PATless

GitHub OIDC for protected MCP servers

Remove long-lived PATs from MCP agent workflows.

PATless is a vendor-neutral GitHub Action and CLI. The Action exchanges a job's OIDC identity with your provider for a short-lived, resource-bound MCP credential. The CLI finds existing PAT references, migrates them, and proves the new path fails closed.

  • No stored PAT and no browser OAuth step
  • Bring Auth0, a cloud service, or your own broker
  • One credential, one MCP resource, one short lifetime

Inside the agent job

- uses: bharath31/patless@<commit-sha>
  id: mcp_auth
  with:
    token_endpoint: ${{ vars.MCP_TOKEN_ENDPOINT }}
    audience: ${{ vars.MCP_AUDIENCE }}
    resource: https://mcp.example.com/mcp
    scope: tools:read

Output: steps.mcp_auth.outputs.access_token

Live credential playground

Revoke it. Retry it. Watch it fail.

Run the complete lifecycle in your browser, inspect the secret-free evidence tape, then move to the repository workflow for a real GitHub OIDC assertion.

  1. oauth/token200credential issued
  2. mcp/tools.call200scoped use allowed
  3. oauth/revoke200credential revoked
  4. mcp/tools.call401credential_revoked

The runtime path

Identity in. Scoped MCP credential out.

Workload GitHub job mints signed OIDC identity
Exchange PATless Action requests resource + scope
Policy Your provider validates identity + access
Credential MCP token one resource · short-lived
Standing PAT
not required
Browser flow
not required
Provider
your choice
Target
one MCP resource

Already using a PAT?

Replace it without guessing.

Before secrets.MCP_PAT long-lived · reusable
Migration patless migrate small, reviewable workflow diff
After steps.mcp_auth ephemeral Action output
Find
1 reference
Replace
reviewable diff
Use
HTTP 200
Revoke
HTTP 401

One toolchain, two jobs

Exchange at runtime. Prove the migration.

  1. 01

    Exchange in the job

    The GitHub Action obtains the job's OIDC assertion and sends a vendor-neutral JWT bearer exchange to your configured token endpoint.

  2. 02

    Remove the standing path

    The CLI finds PAT references and generates a conservative workflow migration. It never asks GitHub for the secret value.

  3. 03

    Prove it fails closed

    The CLI grants a credential, calls the MCP server, revokes it, retries, and requires an actionable HTTP 401 denial.

Provider-neutral by design

Your provider issues the token. PATless proves the migration.

Use Auth0, a cloud authorization service, a native runtime exchange, or the bundled reference broker. PATless owns discovery, repository remediation, and lifecycle evidence—not identity policy.

A secrets manager protects where a PAT sleeps. PATless removes the PAT from the workload path. The original PAT must still be revoked at its issuer.

Start with the workload you have

Exchange—or migrate.

Add the Action
npx patless scan