Authorization

Assign the minimum permission each tool needs.

Permissions are written beside agent construction and automatically synchronized to the dashboard. Dashboard changes remain useful for operations, but code stays the reviewable source of intended access.

Three effects

ALLOW
Execute immediately after all identity, policy and integrity checks pass.

DENY
Block before the tool implementation runs.

REQUIRE_APPROVAL
Pause and create a single-use human approval for the exact arguments.

Omitted
Remain default-denied.

Simple permissions

permissions = {
    "customer.read": "ALLOW",
    "email.send": "REQUIRE_APPROVAL",
    "customer.delete": "DENY",
}

Permissions with constraints

permissions = {
    "invoice.refund": {
        "effect": "REQUIRE_APPROVAL",
        "constraints": {
            "max_amount": 500,
            "allowed_currencies": ["USD"],
        },
    },
}
Important: only use constraint fields supported by your deployed policy evaluator. An unknown or invalid constraint must fail closed; verify it in staging before production.

What appears in the dashboard

After application startup you will see the agent, discovered actions, descriptions, policies, decisions and approval requests without manually recreating tools in the dashboard.

Naming

Python name invoice_refund becomes action invoice.refund. Permission keys must match this normalized action exactly.