Skip to main content

AuthzLoom

I built AuthzLoom to make authorization testing easier to repeat and easier to review. You describe the identities, controlled objects and operation you want to test. AuthzLoom builds the matrix, runs it within the limits you set and keeps redacted evidence of what happened.

It works with REST and GraphQL and can be used from the command line, through MCP, through its local HTTP API or with the optional Burp Suite extension.

AuthzLoom does not decide whether something is a vulnerability and it does not assign severity. It collects evidence. The final judgment stays with the person reviewing the result.

What it protects

Authorization testing can change data, so I designed the tool around explicit limits:

  • Every scenario defines its allowed hosts, methods, request budget and rate.
  • Every request goes through the same policy validation, including identity probes.
  • An operation that changes state must have a readback step.
  • Cleanup runs after a mutation may have been sent, even when the case fails or is cancelled.
  • Direct connections are limited to local labs and never follow redirects.
  • Traffic to anything outside the local machine must use a Burp or CDP session controlled by the operator.
  • Live credentials do not belong in scenario files. Burp keeps the original request and gives Python an opaque cap_* handle instead.
  • Local runs stay local. Exported capsules are redacted and never contain raw Burp capture bytes.

Only use AuthzLoom on systems you own or have explicit permission to test.

Installation

You need Python 3.11 or newer.

On Windows:

git clone <repository-url> authzloom
cd authzloom
powershell -ExecutionPolicy Bypass -File ./setup-env.ps1 -Dev

If you already manage your own Python environment:

python -m pip install -e '.[dev]'

The optional dependency groups are yaml, cdp and dev.

Try it from the command line

The included example expects a synthetic service on 127.0.0.1:8877. Validation and planning are offline. Running the scenario requires the local lab service.

./.venv/Scripts/authzloom.exe init ./scenario.json
./.venv/Scripts/authzloom.exe validate ./examples/rest.json
./.venv/Scripts/authzloom.exe plan ./examples/rest.json --explain
./.venv/Scripts/authzloom.exe run ./examples/rest.json
./.venv/Scripts/authzloom.exe status
./.venv/Scripts/authzloom.exe export <RUN_ID> --output capsule.redacted.json
./.venv/Scripts/authzloom.exe schema > schemas/scenario.v1.json

There is also a GraphQL example in examples/graphql.json. To see structured logs without secrets, set AUTHZLOOM_LOG=1.

You can run the module directly too:

./.venv/Scripts/python.exe -m authzloom.cli --help

Using AuthzLoom with an AI client

AuthzLoom includes an MCP server:

./.venv/Scripts/authzloom.exe mcp

For an installed registry package, the canonical package launcher is:

uvx authzloom mcp

authzloom-mcp remains available as a compatibility entry point, but catalogs and managed launchers should identify the authzloom package and invoke the mcp subcommand.

MCP communicates over standard input and output. If you start it by hand, it will appear to wait silently. That is expected. Normally, your MCP client starts and controls the process:

{
  "mcpServers": {
    "authzloom": {
      "command": "C:/absolute/path/authzloom/.venv/Scripts/python.exe",
      "args": ["-m", "authzloom.cli", "mcp"],
      "env": {
        "AUTHZLOOM_DATA_DIR": "C:/absolute/path/authzloom/.authzloom"
      }
    }
  }
}

The available tools are authzloom_ingest, authzloom_plan, authzloom_run, authzloom_status and authzloom_export. Always plan a scenario before running it.

Using the Burp extension

Burp Suite is not included. Point BURP_JAR to your local Burp installation, build the extension and start the launcher:

$env:BURP_JAR = 'C:\path\to\burpsuite.jar'
powershell -ExecutionPolicy Bypass -File ./burp-extension/build.ps1
powershell -ExecutionPolicy Bypass -File ./start-authzloom-burp.ps1

Load burp-extension/build/authzloom-burp.jar through Burp's extension settings if it is not already loaded.

The launcher creates a temporary shared token, starts the local API on 127.0.0.1:8891 and opens Burp. The extension runs its replay bridge on 127.0.0.1:8892 and adds Send to AuthzLoom to Burp's context menu.

When you send a request to AuthzLoom, the live bytes stay inside Burp. Python receives the host, method, path and an opaque handle. During replay, only an allowlisted overlay is applied. Authorization and Cookie headers remain under Burp's control.

The local API provides GET /health, GET /ready and GET /version. /status accepts limit and offset. It only binds to loopback.

Development

Run the complete local check before submitting a change:

powershell -ExecutionPolicy Bypass -File ./verify-integration.ps1

Please keep the public repository independent. Private paths, client configuration, target evidence, credentials and generated run data should never be committed.

License

AuthzLoom is available under the MIT License. See LICENSE.

Metadata

Release files for authzloom 1.0.1

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

Source distribution (sdist)

Source distribution for authzloom 1.0.1
File Size Uploaded Provenance
authzloom-1.0.1.tar.gz 48.5 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for authzloom 1.0.1
File Interpreter ABI Platform
authzloom-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 94.1 kB

Release files / authzloom-1.0.1.tar.gz

Download URL authzloom-1.0.1.tar.gz
Size 48.5 kB
Tags Source
SHA-256 checksum
How to use checksums
5e88df12faee31b188a16bb5f75ed7854db52bc1cc73e73ee0808e950d89c681
BLAKE2b-256 checksum
How to use checksums
79732490faa2c768debb4d8dc7d2dc166535bcf9088d5d177dba70f1732edb81
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 Sep 22, 2026.

Transparency log

Release files / authzloom-1.0.1-py3-none-any.whl

Download URL authzloom-1.0.1-py3-none-any.whl
Size 45.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bac20c3099a34a5429849bd00806d8bea4fcc09bf0a022082c3e33e70d327df5
BLAKE2b-256 checksum
How to use checksums
b3c7c4e484dd1940987d4dd6646e2f29c1d51fd4f27dcb301a9752d93e3aeafb
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 Sep 22, 2026.

Transparency log

Security for authzloom 1.0.1

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for authzloom-1.0.1.tar.gz

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 Sep 22, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files Full provenance

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