Skip to content

GitHub Action

Umbra Admission governs every pull request — from Claude Code, Codex, Cursor, Copilot, Devin, or a human — and attaches a signed receipt. On the GitHub Marketplace.

Usage

name: Umbra Admission
on:
  pull_request:
permissions:
  contents: read
  pull-requests: write
jobs:
  admit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
        with:
          ref: ${{ github.event.pull_request.head.sha }}
          fetch-depth: 0                       # base must be reachable for the diff
      - uses: bkd-dotcom/umbra-action@v1
        with:
          min-authority: "1"                   # 0 observe · 1 analyze · 2 branch-PR
          signing-key: ${{ secrets.UMBRA_SIGNING_KEY }}   # optional: stable receipts

Make "Umbra Admission" a required status check in branch protection (enable it for administrators too) and nothing merges without a receipt.

Inputs

Input Default Description
mission review prompt The bounded task the change claims to perform.
min-authority 1 Fail unless the change earns at least this level (0/1/2).
agent "" Force codex-cli/claude-code to re-run; blank governs the existing diff.
signing-key "" Base64 Ed25519 key (32+ bytes) for stable receipts.
require-sandbox false Fail closed if code-executing checks can't run sandboxed.
umbra-version latest Pin a specific umbra-core version.
python-version 3.12 Python to run on.

Behavior

The action stages the PR's change as a working-tree diff, runs umbra admit, posts the verdict as a PR comment, uploads the signed receipt as an artifact, and fails the check below the required authority. On Linux it installs bubblewrap so checks run sandboxed by default (the achieved tier is recorded in the receipt).

Pin @v1 (moving major) or an exact @v0.1.3+ tag. auto_merge is always false.