Standing credentials over-authorize
An agent with a long-lived token can perform actions no one decided to allow, across every code path that token reaches.
Machine-authorization infrastructure
MNDe ensures that consequential machine actions execute only with valid, specific, unconsumed authority for the exact requested action.
MNDe distinguishes implemented reference components, limited paths, and target-state controls. Production claims require deployment evidence. The status labels used throughout this site are defined under status discipline.
The buyer problem
Agents are increasingly given broad, standing credentials. Once an agent holds a credential, it can act outside the authorization decision that was supposed to constrain it. A signed audit record describes what happened — it does not, by itself, prevent unauthorized execution.
An agent with a long-lived token can perform actions no one decided to allow, across every code path that token reaches.
Prompt-injection detection, traffic inspection, and agent monitoring watch behavior. They do not gate the consequential action on specific authority.
A tamper-evident log is necessary for evidence, but a record written after execution cannot stop the execution it records.
Core invariant: No consequential machine action executes unless it presents valid, specific, unconsumed authority for that exact action.
MNDe is positioned as authorization infrastructure — a certificate authority, HSM, and tamper-evident black box for machine actions — not as another monitoring layer. The enforceable form of the invariant is short: no valid grant, no protected execution.
Core architecture
Select a component to see its responsibility, trust boundary, input, output, failure behavior, and implementation state. Nothing here is described as deployed unless its status label says so.
Status discipline
A real reference artifact or executable implementation exists in this repository.
An interface or partial path exists, but the complete security boundary is not demonstrated.
Required end-state architecture that is not yet proven in production.
A security claim that still needs deployment evidence.
Reserved. Used only when an authentic production artifact supports the claim. Currently unused.
Exact-action grant
A grant authorizes a single action against a single resource, with parameters bound by a canonical digest, a short expiration, and a single-use nonce. Changing a meaningful field produces a different grant identity — and fails verification.
| Field | Value |
|---|---|
| grant_id | grant:9f2a71c4e0b8 |
| execution_id | exec:4c81a0f7d219 |
| actor | agent:payments-bot |
| principal | service:release-orchestrator |
| authority | delegated:release-merge |
| action | merge_pull_request |
| resource | github.com/acme/payments |
| environment | reference |
| canonical_param_digest | sha256:2b8f…c1a4 (illustrative) |
| limits | max_risk=medium; required_checks=[ci/build, ci/tests, security/scan] |
| policy_hash | sha256:7d3e…9f02 (illustrative) |
| delegation_tip | delegation:release-orchestrator->payments-bot |
| issued_at | 2026-08-20T17:00:00Z |
| expires_at | 2026-08-20T17:02:00Z |
| nonce | nonce:1f6b…8ad2 (single-use) |
| max_uses | 1 |
| issuer_key_id | key:authority-3ab1 |
| sig_alg | ECDSA P-256 / SHA-256 (ES256) |
| signature | MEUCIQ…<base64> (illustrative) |
Mutation invalidates the grant
merge_pull_request(
repository=acme/payments,
pr=4182,
head_sha=a19f…,
method=squash
)
merge_pull_request(
repository=acme/payments,
pr=4183,
head_sha=a19f…,
method=squash
)
Grant lifecycle
A grant is single-use. Reservation and consumption are atomic, so under concurrent presentation exactly one executor wins. Every path also has a terminal alternative.
Authority can be delegated, but only narrowed. A delegate can never exceed the authority of its delegator; the delegation-chain tip is bound into every grant and resolved during verification.
Revoked delegation must fail closed. Verifiers must check revocation within a freshness window; a stale checkpoint yields INDETERMINATE, never a silent allow.
Credential dispossession
Non-bypassability must be enforced by provider permissions, identity policy, and network boundaries — not by voluntary SDK usage. Until a deployment enforces this, it is target-state, not a current fact.
Evidence
Authorization and execution are recorded as separate, independently signed objects and bound together, so the record of what was authorized cannot silently diverge from what was executed.
// signed by the authority key { "type": "authorization", "statement": "MNDe authorized execution X under policy P using grant G", "execution_id": "exec:4c81…", "grant_hash": "sha256:…", "policy_hash": "sha256:…", "issuer_key_id": "key:authority-3ab1" }
// signed by a separate executor key { "type": "execution", "statement": "Executor Y used grant G for execution X and observed result Z", "execution_id": "exec:4c81…", "grant_hash": "sha256:…", "authorization_receipt_hash": "sha256:…", "result_hash": "sha256:…", "executor_key_id": "key:executor-8ad2" }
Linked by
Independent witnesses and a transparency log provide inclusion and consistency proofs, so no single party can present a split view of the record.
Optional content-risk adapters feed signals into policy evaluation. They inform the decision; they never replace the requirement for a valid, specific, unconsumed grant.
Reference integration
The first concrete integration binds authorization to a single pull-request merge. Select a scenario to see the expected verdict, whether the provider is contacted, and why. Provider calls are labeled reference behavior — no external system is contacted from this page.
Agent requests permission to merge a specific pull request → MNDe evaluates policy and delegation → issues an exact-action grant → the protected executor atomically consumes it → the credential broker releases a GitHub App installation credential to the executor → the executor merges the exact authorized commit → MNDe emits linked authorization and execution receipts.
Implementation Evidence Lab
This lab runs ECDSA P-256 / SHA-256 locally in your browser. It generates separate authority and executor keys, canonicalizes and hashes an exact-action request, signs two linked receipts, verifies them, detects a parameter mutation, and exports a downloadable evidence bundle. Its source lives in this repository.
The exported JSON contains public verification material and an explicit list of limitations. The production-verified count is zero: a browser simulation is never labeled production verified.
Acceptance controls
Console
Attack & failure scenarios
For every scenario: the violated invariant, the detection point, the enforcement point, the expected verdict, whether the provider call begins, the evidence emitted, and the residual risk. Nothing here claims a red-team result — these are the designed behaviors and their honest current limits.
Implementation blueprint
Build order, most security-critical first.
Buyer-facing proof requirements
| Claim | Required artifact | Status | Remaining blocker |
|---|---|---|---|
| Agent cannot access the provider credential | Agent secret inventory + broker audit log | Target | Deployed broker with enforced isolation |
| Direct provider bypass is denied | Failed direct-call transcript + provider permission export | Unproven | Provider-enforced executor identity |
| Grants are single-use under concurrency | Linearizability history + provider request log | Limited | Deployed ledger test |
| Receipts verify offline | Signed receipt bundle + offline-verifier output | Reference | Independent verifier packaging |
| Revocation is timely | Revocation timing trace | Target | Deployed revocation service |
| Record cannot be split | Witness signatures + inclusion/consistency proofs | Target | Independent witnesses |
Technical pilot
The pilot centers on the GitHub protected-merge integration. The objective:
Success is measured against those four conditions with the evidence artifacts listed under proof requirements. If a condition is not yet demonstrable, the pilot reports it as such rather than claiming it.