Change-control plane for coding agents·Codex + GPT-5.6

Trust, earnedand proven.

Before a coding agent is trusted with your repo, Umbra tests whether it can be trusted in your repo — and grants only the authority it earns.

Umbra decides how much authority each change has earned.

An executable contract bounds the change · untrusted repo text is quarantined · an independent verifier the writer can't bypass checks it · only the authority it earns is granted · sealed in an Ed25519-signed receipt. It never merges.

For the platform & security lead rolling out Codex across dozens of repos who has to prove the agent stayed in bounds.

judge mode · instant · no sign-inHow admission works ↓
Executable change contractUntrusted-content quarantineIndependent verifierSigned remediation receiptNever auto-merges

Or run a live scan on a public repo

Night shiftReplay
W
WATCHMANstandby
awaiting dispatch
R
REVIEWERstandby
awaiting dispatch
D
DETECTIVEstandby
no active incident
J
JANITORstandby
awaiting dispatch
A
ASK UMBRAstandby
ready for questions
02:00 — repository connectedgrounded in OSV + git history · never fabricated

The Agent Admission Test

Test the agent before you trust it with your repo.

“AI finds a CVE and opens a PR” is a crowded category. Umbra’s wedge is one layer up: one governed, deterministic pipeline runs before any PR and decides whether a change is even allowed — then grants only the authority it earns.

01
Change contract
allowed paths · diff budget · required checks — evaluated outside the model, fails closed
02
Trust boundary
repo text is untrusted; flagged injection in README / AGENTS.md is redacted on disk before the run (the quarantine, not perfect detection, is the guarantee)
03
Required checks
run sandboxed (bubblewrap / unshare) with a secret-stripped env — a non-profile command is refused
04
Independent verifier
a separate deterministic pass the writer can't bypass — re-checks scope, secrets, and that the bump actually clears the CVE
05
Earned authority
L0 observe · L1 analyze · L2 branch-PR — revocable, bound to the exact run, 7-day expiry
06
Signed receipt
the whole chain sealed in an Ed25519 envelope, verifiable against Umbra's pinned key (a dev key in the public demo, labelled as such)

Earned-authority passport

Authority is earned per run, and revocable.

L0observeL1analyzeL2branch-PR

Bound to the exact run (receipt hash, base commit, executor + Codex config hash), 7-day expiry. A server-side Emergency Brake forces Level 0 — and the PR route refuses to open a PR for a repo that’s revoked, below L2, or expired. auto_merge is false at every level.

Caught in the act

A fix that didn’t actually fix it.

Umbra once opened a bump — next 14.2.5 → 14.2.7 “to remediate GHSA-h25m-26qc-wcjf.” But 14.2.7 is still inside that advisory’s vulnerable range. The independent verifier is now CVE-aware: it reads the produced manifest and confirms the bump actually clears the named advisory (real fix: 15.0.8) — and regenerates the lockfile.

Umbra never claims a remediation it can’t stand behind.

Why it isn’t just glue over existing tools

Review bots (CodeRabbit, Greptile, Qodo)
comment on the change — advisory
Umbragate the agent's authority to write — a decision, fail-closed
Dependency bots (Dependabot, Snyk)
open the bump PR
Umbraindependently verify the bump actually clears the cited CVE
The coding agent itself (Codex, Devin)
trusts its own output
Umbraa verifier the writer can't bypass, plus a signed receipt

Capability comparison

typical/default behaviour per category · products evolve

CapabilityReview botsDependency botsCoding agentsUmbra
Comments / reviews a change
Opens dependency-fix PRs
Decides if the agent is allowed to change (fail-closed contract)
Quarantines prompt-injection on disk before the run
Independent verifier the writer can't bypass
Verifies the bump actually clears the cited CVE
Earned, revocable, run-bound authority (L0/L1/L2)
Ed25519-signed, independently verifiable receipt
Never auto-merges

does this · partial · different scope (not a shortcoming). Basis: OWASP Top 10 for LLM Apps 2025 (LLM01, LLM06) and each product’s public docs.

Why now: teams are adopting coding agents (Codex, Claude Code, Devin) across their repos today — and the two risks Umbra is built to contain are named in the OWASP Top 10 for LLM Apps (2025). There is no repeatable way to prove an agent stayed in bounds. Umbra is that proof.

Run the Admission demo

The Evidence Locker

One night. One repo. Every receipt.

Every captured shift opens to the full chain — OSV advisories, the Codex diff, the provider ledger, and the earned authority level, plus an exportable Evidence Pack (stamped with a recomputable SHA-256 integrity hash) and a signature-verifiable, Ed25519-signed Remediation Receipt.

26 advisories found·next 14.2.5 14.2.33·osv.dev · repo-clone · codex-cli·human review required

Bounded specialists, one shift.

Each works a disposable clone and files a grounded artifact — no fabrication, no auto-merge.

Specialists on shift

Watchman
Hunts CVEs across resolved dependencies, live against OSV.dev.

Specialist 1 of 6: Watchman

Evidence · last nightSample

What Umbra found last night.

A representative finding — a sample of the real output shapes: an OSV advisory, a commit from git blame, a proposed patch. Reasoned by OpenAI, grounded in your repo, never invented. Run your own scan to see live labels.

Case file · CVE-2024-29041 High

Open redirect via malformed URL in Express

Affected
express@4.17.1
Detected by
◉ WATCHMAN · via OSV.dev advisories
Root cause
commit a9c31f · “refactor static serving”
Fix
→ upgrade to express@4.19.2
PR-ready diff preparedbranch only · you review & merge
Incident · root cause

⌁ DETECTIVE traced 500s on /checkout to one commit — reasoned over real git history, not guessed.

commit a9c31f — “refactor cart totals”
3 days ago · @dev
PR review · verdict

◈ REVIEWER scored the fix: blast-radius low · safe to merge.

Provider ledgerOSV.dev · advisorygit blame · commitCodex · patch diffGPT‑5.6 · reasoning
grounded, never fabricated · your own scan shows live / cache / unavailable

The night crew

Specialists on station. Every change still governed.

Open the file on each. They investigate and prepare work — but nothing reaches your repo without passing the contract, the verifier, and you.

Agent 1 of 5: Watchman, Dependency sentinel

W
Night shift · Unit 01
Watchman
Dependency sentinel
on watch

Hunts known CVEs across every resolved dependency, live against OSV.dev advisories. Never sleeps.

Last action02:07:14·flagged express@4.17.1 · package-lock.json
Dependency scan · OSV live
lodash@4.17.21✓ clear
react@18.2.0✓ clear
express@4.17.1 CVE-2024-29041 · HIGH
minimist@1.2.8✓ clear
SpecialtyOSV.devCVSSblast-radius

The night shift · six stationscaptured · calhacks-12

One night, start to sunrise.

Scroll a single real shift end to end — from the first OSV lookup to the diff Codex left for review. Nothing here is staged: every advisory, provider label and diff line is replayed from a genuine captured run.

Pranav-Karra-3301/calhacks-1202:00 → 05:15 · now 02:00
1 / 6Scan02:00
  1. 02:00Scan
  2. 02:45Triage
  3. 03:30Root cause
  4. 04:10Draft fix
  5. 04:45Evidence
  6. 05:15Human gate
01
Scan
Watchman reads the resolved lockfile against OSV.dev
02:00
Dependency manifest · OSV.dev LIVE
@deepgram/sdk@4.11.2✓ clear
@livekit/components-react@2.6.4✓ clear
@supabase/supabase-js@2.76.1✓ clear
clsx@2.1.1✓ clear
livekit-client@2.5.8✓ clear
livekit-server-sdk@2.6.1✓ clear
next@14.2.5 flagged
qrcode.react@4.2.0✓ clear
react@18.2.0✓ clear
react-dom@18.2.0✓ clear
tailwind-merge@2.5.2✓ clear
26 advisories· top severity HIGH1 of 11 dependencies flagged

How OpenAI is used

Built on Codex and GPT reasoning.

Four moving parts, each labelled with what produced it — so you always know when a result is live, cached, or unavailable.

Codex CLI

codex-cli

Proposes code diffs inside a disposable clone with no origin remote. Write credentials are never handed to the Codex process.

codex exec · disposable clone · diff-only artifact · no auto-merge

GPT‑5.6 reasoning

gpt‑5.6

Explains blast-radius, root cause, and PR risk over real repo evidence — when live reasoning is enabled for your account.

Responses streaming

responses-api-stream

Ask Umbra streams grounded answers token-by-token, each backed by a real file:line reference — never invented.

Provider ledger

provider ledger

Every output carries its source: live, cache, demo, or unavailable. Honesty is a first-class feature, not an afterthought.

Where this goes next

From a draft you check to a fix you ship.

Umbra already works in a disposable checkout and verifies before it hands you anything. Here’s what runs today — and the next step that turns each agent from a junior into a senior.

Contract-declared checks

Today
Runs the contract's required checks (allowlisted profiles, secret-stripped env) on the base commit and the changed tree, capping authority when they don't pass.

Next
Broader check profiles and richer per-check provenance in the signed receipt.

Proactive incidents

Today
Paste an error and the Detective traces it to a root-cause commit.

Next
Sentry / Datadog webhooks trigger the investigation before you even notice.

Grounded at scale

Today
Every answer cites a real file:line — never fabricated.

Next
AST / LSP-backed grounding for cross-file correctness across millions of lines.

Umbra inside ChatGPT

Not trapped inside a dashboard.

Ask about your repository, investigate an incident, understand a change — without leaving the conversation. Umbra ships as a GPT Action, grounded in real OSV and git data, never invented. The read-only actions are public; no sign-in required.

ChatGPT · Umbra GPTpublic · no sign-in
you

Scan github.com/expressjs/express for security risks.

Umbra Score 78/100 · Needs attention

● HIGH express@4.17.1 — CVE-2024-29041 · open redirect
→ fix: upgrade to 4.19.2 (PR-ready diff · branch only)

Grounded in OSV.dev advisories. Nothing was merged.

via scanRepo action
you

Why did /checkout start returning 500s?

Traced to one commit in real git history — not guessed:

commit a9c31f — “refactor cart totals”
3 days ago · @dev · touches cart/totals.js:42
via investigateIncident action
Ask about any repo, incident, or file…

Read-only actions

scanRepo

Umbra Score + live CVEs for any public repo.

investigateIncident

An error → the root-cause commit from real git history.

askUmbra

A question → an answer with real file:line references.

Scan github.com/expressjs/expressWhy did checkout fail?Which file handles routing?Trace this stack trace to a commitSummarize the dependency risk

The operator

Built because software teams shouldn’t wake up to yesterday’s problems.

Your next night shift

Point the crew at a repo.

Umbra
Findings are real and grounded. Live Codex runs on your own account or the founder's.
Built with Codex for OpenAI Build Week 2026.