ActGate
Local IntentLedger: propose a tool action, record approve or deny in an append-only hash-chained ledger, verify the chain before you trust it.
This is not an MCP proxy yet. This is not a SaaS. Everything runs offline against files on disk.
dry-run and approve record decisions only; they do not execute tools.
Install
pip install -e .[dev]
Quickstart
actgate init
actgate propose --tool shell.exec --args '{"cmd":"ls"}' --blast-tags fs.read
actgate dry-run <intent_id>
actgate approve <intent_id>
actgate verify
actgate list
Deny path:
actgate deny <intent_id> --reason "too broad"
# exits 1
Exit codes
| Code | Meaning |
|---|---|
| 0 | ok (propose, approve, verify clean, show/list) |
| 1 | deny recorded, or verify found a broken chain / bad seal |
| 2 | setup error (missing ledger, bad path, invalid args) |
Intent shape
{
"tool": "shell.exec",
"args": {"cmd": "ls"},
"args_hash": null,
"blast_tags": ["fs.read"],
"requested_mode": "execute",
"created_at": "2026-09-06T00:00:00+00:00"
}
Provide either args or args_hash (sha256 of canonical JSON args). Optional
blast_tags and requested_mode.
Ledger
.actgate/ledger.jsonl is append-only. Each line has prev_hash / entry_hash
(sha256). Bare verify checks chain integrity only: a rewritten but
internally consistent chain still passes. It is not a signature check unless
you opt in.
Optional authenticity: set ACTGATE_SEAL_KEY when writing so entries get an
HMAC seal. Then verify (with the key set) requires matching seals, or pass
verify --require-seal to fail when seals are missing.
Path escapes outside the ledger root are rejected (exit 2).
What this is not
- Not an MCP proxy (yet)
- Not a hosted approval product
- No network calls in the core path
Development
pip install -e .[dev]
pytest
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file actgate-0.1.0.tar.gz.
File metadata
- Download URL: actgate-0.1.0.tar.gz
- Upload date:
- Size: 11.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed5532217fef26f00909193d12b538236f9456d5ffc0b290ade7ca66e3697e79
|
|
| MD5 |
a34bc73b5f6bc4c510831038847b5f87
|
|
| BLAKE2b-256 |
9df58963605d82360a360a375b51bcaf821e99afc6a2529e012242c0e570f7e5
|
Provenance
The following attestation bundles were made for actgate-0.1.0.tar.gz:
Publisher:
publish.yml on kartsan03/actgate
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
actgate-0.1.0.tar.gz -
Subject digest:
ed5532217fef26f00909193d12b538236f9456d5ffc0b290ade7ca66e3697e79 - Sigstore transparency entry: 2732095264
- Sigstore integration time:
-
Permalink:
kartsan03/actgate@c9588f6078dc6d5203812044ac278eadc9f55d89 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/kartsan03
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c9588f6078dc6d5203812044ac278eadc9f55d89 -
Trigger Event:
push
-
Statement type:
File details
Details for the file actgate-0.1.0-py3-none-any.whl.
File metadata
- Download URL: actgate-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13cc6d0b52a14f85a7f4efbb9e3a99a95ad6e1470ba840c02f2594b3c48fc40c
|
|
| MD5 |
8d1e389db9b6a47ee75324d7fb6a3a5d
|
|
| BLAKE2b-256 |
b32eb9458582397be6df058feadccfe8153eb8255c46b997fdb4ea62afdd7b9c
|
Provenance
The following attestation bundles were made for actgate-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on kartsan03/actgate
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
actgate-0.1.0-py3-none-any.whl -
Subject digest:
13cc6d0b52a14f85a7f4efbb9e3a99a95ad6e1470ba840c02f2594b3c48fc40c - Sigstore transparency entry: 2732096091
- Sigstore integration time:
-
Permalink:
kartsan03/actgate@c9588f6078dc6d5203812044ac278eadc9f55d89 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/kartsan03
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c9588f6078dc6d5203812044ac278eadc9f55d89 -
Trigger Event:
push
-
Statement type: