Skip to main content

umbra-reviewer

An advisory PR reviewer that finds architecture + security issues, cross-verifies them against deterministic gates, and tells you whether a change is safe to merge — without ever merging on its own judgement.

Part of the Umbra platform.


What it does

On every pull request, it:

  1. Finds issues with a deterministic scanner over the diff — introduced secrets, dangerous CI permission / OIDC changes, pull_request_target + curl|sh footguns, unpinned third-party actions, prompt-injection surfaces in instruction files (README/CLAUDE.md/…), dynamic-exec / disabled-TLS smells, and changes to protected paths.
  2. Cross-verifies those findings against deterministic gates: the repo's required status check (looked up from the GitHub API), a clean secret scan, and no forbidden permission change.
  3. Recommends a verdict — 🟢 safe · 🟡 needs_human · 🟣 third_party (escalate to a code owner) · 🔴 block — and posts one PR comment.
  4. Optionally, enables auto-merge — opt-in, off by default, and only ever on a safe verdict whose eligibility came from green deterministic gates (see the safety model).

The safety model (why it won't rubber-stamp your repo)

This mirrors Umbra's own principle: an agent must not approve its own authority.

  • The reviewer is advisory. Its findings never grant mergeability.
  • The authority to merge is the deterministic gate — a required status check + a clean secret scan + no forbidden permission change — plus a human.
  • A model finding (if you wire one in) is recorded but can never be blocking and can never flip a gated-clean PR away from safe on its own.
  • Auto-merge is opt-in and, even then, uses GitHub's native auto-merge (the PR merges only when branch-protection required checks pass). The bot never force-merges; the platform does, only if your rules allow.
  • A blocking finding or a failed/absent required check → block / needs_human. Sensitive surface (workflows, Dockerfiles, auth, secrets) → third_party, always escalated to a human.
  • A green verdict is not a guarantee — deterministic scanners have false negatives. It's defense-in-depth, not a proof.

Use it (GitHub Action)

# .github/workflows/review.yml
name: Umbra Reviewer
on: { pull_request: {} }
permissions:
  contents: read
  pull-requests: write     # to post the review comment (+ enable auto-merge if opted in)
  checks: read
jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with: { fetch-depth: 0 }
      - uses: bkd-dotcom/umbra-reviewer@v1
        with:
          required-check: "Umbra Admission"   # cross-verify your merge gate (optional)
          protected-paths: "infra/**,src/auth/**"
          # auto-merge: "true"                 # opt in; still needs green branch-protection checks

Use it (CLI)

pip install umbra-reviewer

git diff origin/main...HEAD | umbra-reviewer review --repo owner/name --pr 12 \
  --required-check success --comment-out comment.md
# exit 1 on a BLOCK verdict, so it gates CI. Add --fail-on-needs-human for a stricter gate.

Pairs with the rest of Umbra

  • umbra-action is the hard gate (the required check + signed receipt). umbra-reviewer is the advisory layer on top; point required-check at the Umbra Admission check to cross-verify.
  • umbra-core is the governance kernel.

License

MIT © 2026 Binay Dalai.

Metadata

Release files for umbra-reviewer 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for umbra-reviewer 0.1.0
File Size Uploaded
umbra_reviewer-0.1.0.tar.gz 25.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for umbra-reviewer 0.1.0
File Interpreter ABI Platform
umbra_reviewer-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 44.6 kB

Release files / umbra_reviewer-0.1.0.tar.gz

Download URL umbra_reviewer-0.1.0.tar.gz
Size 25.7 kB
Tags Source
SHA-256 checksum
How to use checksums
8824d1b4381b805959c0045193b3c8120e4aba4235a8ec571052dec60cc0c776
BLAKE2b-256 checksum
How to use checksums
f54e01da4d3715e987064b70fab2853333dabcdfd768a6ddf435fd5185fda75a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.

Transparency log

Release files / umbra_reviewer-0.1.0-py3-none-any.whl

Download URL umbra_reviewer-0.1.0-py3-none-any.whl
Size 18.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fa30bb55d75f3832ab23ea9bf52736a24e67849ab671102abd77a5a74c1a73b3
BLAKE2b-256 checksum
How to use checksums
00dd4d83421c3fce37087e2fd8359a1e4667e0f9240b7ecbfc875272f74426d6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 29, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page