Repository navigation
FAQ
Does the demo call PayPal?
No. Every demo uses the mock rail. At 9900817, only server.py --sandbox (via SandboxPayPalClient) touches PayPal's sandbox.
What can I run with no keys and no LLM?
python demo.py, python demo_sla_escrow.py --fast, python trace.py, python server.py, and python -m pytest -q.
Why does demo_six_beat.py fail for me?
It drives a real LLM through the runner in PERMIT_GROK_CLI, which is required and has no default. If it is unset or not a file, the demo stops at the first agent beat with setup guidance. Set it, or pass --replay <transcript.jsonl> with a transcript from an earlier live run (none is committed). See Running the Demos.
Can a blocked spend reach PayPal?
No. check() returns before authorize(). trace.py proves this with a spy whose authorize() raises if it is called.
Can a retry double-charge?
The capture uses a stable PayPal-Request-Id ({permit_id}:{auth_id}:capture). The mock returns the same capture for the same key. The sandbox relies on PayPal honouring the header.
What happens if the capture response is lost?
The escrow goes UNKNOWN. Nothing else happens until reconcile. See UNKNOWN and Reconcile.
Does e-stop stop a whole delegation tree?
Not in code. /estop revokes one permit, while /revoke-cascade revokes the subtree. See E-Stop and Revocation.
Is the ledger proof of payment? No. It is an internally consistent, in-memory hash chain. It is not signed, not durable, and not a PayPal record.
What currency? CAD on the sandbox rail. Amounts are integer cents everywhere.
Does trace.py still collide with a server on 8741?
No. Since 17943eb it uses a free loopback port.
Where do I report a security issue? GitHub private vulnerability reporting. See Contributing.
Permit · payment authority for AI agents · MIT · Wiki facts verified against commit 9900817 on 2026-10-07 (America/Edmonton). Where this wiki and the code disagree, the code wins.
Concepts
- Overview and Problem
- The Four-Clause Gate
- Spend Pipeline
- Delegation and Sub-Permits
- Principal Approvals
- Tighten-Only Narrowing
- E-Stop and Revocation
- Claim Ledger
- UNKNOWN and Reconcile
Using it
Design and status
Reference