Skip to main content

CHAINBREAK

An empirical benchmark for authorization behavior in delegated and agentic cloud systems.

CHAINBREAK measures the gap between the authority a security policy intended to grant and the authority a delegated workload actually holds when it executes.

Status: v0.1.1 — M0–M16 complete, including dedicated-account acceptance for M8/M9. Three valid real-AWS M17 blocks completed on 2026-08-18 (n=32, n=23, n=32), with all six negative controls DETECTOR_OK, complete analysis and export, and exact cleanup; M18 compare/archive/migration was exercised on those bundles, including honest lower-confidence cross-operator and heterogeneous behavior. 1,815 tests pass in the current unit/integration gate, and CI enforces lint, types, import boundaries, security scans, schema/scenario/Terraform checks and offline tests on every push. The M17 numbers are measurements for one account, one region and one point in time, and nothing more; the remaining scope is stated in docs/research/results-v0.1.md. PROJECT_STATUS.md is the authoritative per-milestone record; CHANGELOG.md is the release history.


The problem

Modern cloud systems hand authority down chains of identities. A human authorizes a service, the service assumes a role, that role assumes another role, a workload receives short-lived credentials, and somewhere at the end of the chain an autonomous process performs an action. Every hop is supposed to attenuate authority — grant a subset, never a superset — and every policy change is supposed to propagate promptly.

Those are assumptions. They are rarely measured.

CHAINBREAK asks two questions and answers them with reproducible evidence rather than assertion:

  1. Does effective authority evolve the way the policy intended? (intended authority vs. effective authority)
  2. Does authority at execution time still match authority at delegation time? (delegation-time authority vs. execution-time authority)

What CHAINBREAK is not

CHAINBREAK is a defensive measurement instrument, not an offensive tool. It operates exclusively on infrastructure the operator creates for the benchmark, in an AWS account the operator explicitly declares, using resources under a unique namespace prefix, with only benign read/write/invoke probes against benchmark-owned markers.

It contains no capability for credential theft, authentication bypass, privilege escalation against third parties, persistence, or monitoring evasion — and contributions adding such capability will be rejected. See SECURITY_MODEL.md for the enforced invariants and THREAT_MODEL.md for the risk analysis.

The five benchmark families

Family Question it answers Primary measurement
Scope attenuation Does a delegated identity ever hold authority beyond what the hop granted? Set difference: observed capabilities − intended capabilities
Delegation drift Across a multi-hop chain, where does effective authority first diverge from intent? First divergence hop, per-hop gain/loss vectors
Revocation propagation How long does previously granted authority remain effective after a policy change? Interval between last success and first denial, with uncertainty bounds
Stale authority Does a deferred task execute with current or historical authority? Authority state classification at execution time
Silent narrowing When authority is legitimately reduced, does the workload fail loudly or produce quiet partial output? Failure transparency classification

Each family ships with negative controls — intentionally misconfigured benchmark scenarios whose divergence CHAINBREAK must detect. A benchmark that only ever reports PASS has not demonstrated it can detect a failure.

Architecture in one diagram

      chainbreak CLI
            |
            v
       Safety Gate
            |
            v
     Scenario Loader
            |
            v
    Scenario Compiler
            |
            v
   Authorization Graph .......... intended authority
            |
            v
    Provider Adapter ---------->  [ controlled benchmark infrastructure ]
      (aws | fake)
            |
            v
     Execution Engine ........... delegation + probes
            |
            v
    Observation Engine .......... raw outcomes
            |
            v
  [ normalized evidence ] ....... JSONL + manifest
            |
            v
         Analysis ............... observed authority, divergence
            |
            v
         Findings
            |
            v
  Per-category scoring
            |
            v
          Report ................ terminal / HTML

Plain text on purpose: this file is the package description on PyPI, which renders no diagrams. ARCHITECTURE.md carries the rendered component and data-flow diagrams.

The core benchmark engine has no dependency on AWS IAM semantics. Scenarios are written against abstract capabilities (objectstore.read), which a provider adapter maps to provider actions (s3:GetObject) and probe implementations. That indirection is what makes the v0.2+ roadmap (OIDC, SPIFFE, Azure, GCP) possible without rewriting v0.1.

Offline quickstart

chainbreak scenario validate scenarios/scope-attenuation/basic.yaml
chainbreak run scenarios/scope-attenuation/basic.yaml --provider fake --seed 1729
chainbreak analyze <run-id>
chainbreak report <run-id> --format html

The wheel ships the complete 24-scenario corpus, the capability catalog, and the runtime JSON Schemas. chainbreak scenario list and chainbreak validate use that packaged corpus by default, so validation, fake runs, analysis, reporting, and evidence export --archive work from an empty directory after installation. Repository paths such as scenarios/scope-attenuation/basic.yaml remain convenient authoring paths when working from a checkout.

The infra and --provider aws workflows are real-account operations documented in EXPERIMENT_PROTOCOL.md; they are not part of this offline quickstart.

Documentation map

Start here

Model specifications

Security and method

Project management

Requirements

  • Python 3.12+
  • Terraform 1.9+
  • An AWS account created for this benchmark with no production workloads
  • Estimated cost per full experiment suite: under USD 1.00 (see AWS_PROVIDER_SPEC.md)

For an installed offline distribution, build or download a wheel and run pip install chainbreak-*.whl. The wheel carries the complete 24-scenario corpus, runtime schemas, and capability catalog; no checkout is needed for the fake-provider workflow or archives.

CI does not require AWS credentials. Unit and integration layers run entirely against a deterministic fake provider.

License

Apache-2.0 — the unmodified licence text is in LICENSE. NOTICE carries an informational statement of the authors' intended scope of use; it is not a licence term and modifies nothing. See SECURITY.md for vulnerability reporting and the same scope of acceptable use stated at length.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chainbreak-0.1.1.tar.gz (912.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

chainbreak-0.1.1-py3-none-any.whl (356.8 kB view details)

Uploaded Python 3

File details

Details for the file chainbreak-0.1.1.tar.gz.

File metadata

  • Download URL: chainbreak-0.1.1.tar.gz
  • Upload date:
  • Size: 912.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for chainbreak-0.1.1.tar.gz
Algorithm Hash digest
SHA256 6c49388f999c302fefbc542d785d172a5992ee6759ecf58f21ca022e3497dadb
MD5 8d6093d3b999f1402564e3e6b19f321b
BLAKE2b-256 6e158d5a4adfed8a357578e204243bb4f483fd42e5e81e565a5eef7e2396a046

See more details on using hashes here.

Provenance

The following attestation bundles were made for chainbreak-0.1.1.tar.gz:

Publisher: release.yml on KubixDesiney/chainbreak

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chainbreak-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: chainbreak-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 356.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for chainbreak-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 979d7b36fb0f00aa104c0ec28ce292a1c0f23c9e08a649bf2ea471cbed18a49a
MD5 d43d78faaea2c9b62e606f6cea1fdeb0
BLAKE2b-256 bccb0be55fcba899dbe1859271815edd76db64967b711d905dfc1451a1bd359b

See more details on using hashes here.

Provenance

The following attestation bundles were made for chainbreak-0.1.1-py3-none-any.whl:

Publisher: release.yml on KubixDesiney/chainbreak

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 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