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
The explicit uvx authzloom mcp form and the authzloom-mcp entry point remain
available for compatibility. Catalogs and managed launchers should identify the
authzloom package; invoking the package without a CLI subcommand starts MCP
over standard input and output.
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.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| authzloom-1.0.2.tar.gz | 48.6 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| authzloom-1.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 94.2 kB
Release files / authzloom-1.0.2.tar.gz
| Download URL | authzloom-1.0.2.tar.gz |
|---|---|
| Size | 48.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0f3e21b31ac613361a60086ceef00c01c0b58946c290e39f4f404f50115bc9fe
|
|
BLAKE2b-256 checksum How to use checksums |
90d55497c40d0297d1012dc6032d2baf0eff616eb2c2f541199b9805007d4f94
|
| 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 logRelease files / authzloom-1.0.2-py3-none-any.whl
| Download URL | authzloom-1.0.2-py3-none-any.whl |
|---|---|
| Size | 45.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b61353e551a96f621fdc22a2feef836915cdcf6f7759673d1e375408e0d0fc52
|
|
BLAKE2b-256 checksum How to use checksums |
8535b3a0510bcdcefe240acf10c458b9c30796c0ca616b776d892918c44fd3bd
|
| 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 logSecurity for authzloom 1.0.2
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.
Attestation for authzloom-1.0.2.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 logA 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.