Governed Agent Run Receipt

Blocked: PR attempted capability escalation beyond repository policy

An agent opened a pull request that would add evil.example.com to the network allow-list and curl, wget to the tool set. The constitutional gate detected two policy violations and blocked the merge automatically.

Verdict: Blocked Policy: fee235e Commit: 0a164d0

A live proof object. Every artifact on this page links to real GitHub objects.

Run summary

PR
Repository
coproduct-opensource/nucleus
PR title
feat: add network access and tools for external API integration
Verdict
BLOCKED
Violations
2 policy violations detected
Commit
0a164d0bdcd0
Capability escalation +evil.example.com, +curl, +wget
I/O surface widened +evil.example.com (outbound)

Constitution in force

The repository's PolicyManifest.toml defines invariants that every change must preserve. The gate checked these clauses against the PR diff.

Monotonicity invariants enforced by kernel

violated
require_monotone_capabilities
Capabilities cannot escalate. The PR added evil.example.com to network_allow and curl, wget to tools_allow.
violated
require_monotone_io
I/O surface cannot widen. The PR added evil.example.com to outbound_domains.
ok
require_monotone_proofreq
Proof requirements cannot weaken. No changes to [proof_requirements].

Policy boundaries from PolicyManifest.toml

🌐
network_allow
["crates.io", "github.com"]
PR attempted: + "evil.example.com"
🔧
tools_allow
["Read", "Edit", "Write", "Bash", "Grep", "Glob"]
PR attempted: + "curl", "wget"
📡
outbound_domains
["crates.io", "github.com"]
PR attempted: + "evil.example.com"
🔒
may_not_modify
["PolicyManifest.toml", "LICENSE", "SECURITY.md"]

What the PR changed and what the gate ruled

The PR modified one file: PolicyManifest.toml. The gate compared the proposed policy against the current policy on main and detected two monotonicity violations.

PolicyManifest.toml
+3 -3
[capabilities]
- network_allow = ["crates.io", "github.com"]
+ network_allow = ["crates.io", "github.com", "evil.example.com"]
Blocked Matched: require_monotone_capabilities Capability escalation: network_allow +[evil.example.com]
- tools_allow = ["Read", "Edit", "Write", "Bash", "Grep", "Glob"]
+ tools_allow = ["Read", "Edit", "Write", "Bash", "Grep", "Glob", "curl", "wget"]
Blocked Matched: require_monotone_capabilities Capability escalation: tools_allow +[curl, wget]
[io_surface]
- outbound_domains = ["crates.io", "github.com"]
+ outbound_domains = ["crates.io", "github.com", "evil.example.com"]
Blocked Matched: require_monotone_io I/O surface widened: outbound_domains +[evil.example.com]

Decision path

PR opened
PR #268
Webhook received
constitutional-gate
Policy loaded
fee235e
Capability escalation detected
require_monotone_capabilities
I/O surface widening detected
require_monotone_io
PR blocked
check run + comment posted

Resulting GitHub artifacts

Every object below is live. Click through to verify independently.

Pull request

Titlefeat: add network access and tools for external API integration
Branchdemo/capability-escalation
Check runChanges needed
Files changed1
Open PR #268 in GitHub →

Bot comment (posted automatically)

Capability Non-Escalation

This PR adds capabilities the current policy doesn't allow.

> PolicyManifest.toml → [capabilities]

> Capability escalation: ["network_allow: +[evil.example.com]", "tools_allow: +[curl, wget]"]

I/O Confinement

This PR widens the I/O surface.

> PolicyManifest.toml → [io_surface]

> I/O surface widened: ["outbound_domains: +[evil.example.com]"]

View bot comment →

Policy file

PathPolicyManifest.toml
Commitfee235e
network_allowcrates.io, github.com
tools_allowRead, Edit, Write, Bash, Grep, Glob
Monotonicitycaps: on, io: on, proofreq: on
View policy file →

Evidence bundle

The gate's decision is backed by a signed, content-addressed witness bundle. The kernel that produced it has 48 Kani formal verification proofs.

Decision details

Patch classConfig
Invariants checkedrequire_monotone_capabilities, require_monotone_io, require_monotone_proofreq
Violations found2 (capability escalation, I/O widening)
DecisionRejected
Signatures4-role Ed25519 (Build, Proof, Replay, Admission)
Kernelck-kernel — 48 Kani proofs on admission invariants

Verification

blake3:4b29d170…

The witness bundle is content-addressed via BLAKE3. Any third party can independently verify the decision by replaying the admission against the policy snapshot.

Verify locallycargo install constitutional-caps-cli

What this demonstrates

The gate caught it automatically

No human reviewer needed to spot that this PR adds evil.example.com to the network allow-list. The kernel detected the capability escalation and blocked the merge.

The reasons are precise

The bot comment names the exact policy clauses violated: require_monotone_capabilities and require_monotone_io. Not "looks risky" — deterministic rule matching.

Everything is inspectable

The PR, the policy file, the bot comment, and the kernel source are all live GitHub objects. No trust in this page required — verify independently.