← Back to Proof
AgentProof
Generated authorization checks
Tests access invariants across generated users, workspaces, resources, delegations and approval sequences.
authorization-tenant-properties
See how it helpsWhen is it useful?
Use when a few example permission tests cannot cover the combinations in a multi-tenant application.
What does it help you do?
- Checks that operations in one tenant neither expose nor change another tenant's state.
- Verifies revocation and expiry cannot expand effective access.
- Tests hidden fields, delegation limits and approval rules after payload changes.
Try asking this
Generate permission scenarios for expense approvals, including dual memberships, revoked delegation and editing an already approved request. Keep the smallest failing combination of memberships and record state. Replaying it should demonstrate the denied action and confirm that no balance changed.
Detailed documentation
Read the skill’s original instructions, examples and checks in their authored language.
Show less
Authorization & Tenant Properties
Use this skill when verifying multi-tenant isolation, role/attribute/relationship permissions, delegation rules, field-level visibility, or approval gates across generated actors, workspaces, and resources.
Core Security & Isolation Invariants
- Universal Cross-Tenant Non-Interference:
- Generate multi-tenant worlds with tenants $T_A \neq T_B$, users with varying memberships (member of $T_A$ only, member of both $T_A$ and $T_B$ with different roles, suspended member), and resources owned by each tenant.
- Read / Search / Export Isolation: Any query, list, search, autocomplete, or report executed under active context $T_A$ must return zero records or aggregates from $T_B$, even when filter payloads explicitly inject $T_B$'s resource IDs.
- Write / Mutation Isolation: Executing any create, update, delete, bulk action, or background job in $T_A$ must leave the complete state snapshot of $T_B$ bit-for-bit identical: $\text{State}(T_B){\text{after}} \equiv \text{State}(T_B){\text{before}}$.
- Authorization Matrix & Monotonic Revocation:
- For any generated $(actor, action, resource, context)$ tuple where the policy specification denies access, the operation must fail with zero side effects and zero sensitive data leakage.
- Removing a role, revoking a delegation, or suspending workspace membership must monotonically shrink or preserve the set of permitted actions—never expand it: $\text{Perms}(\text{after_revoke}) \subseteq \text{Perms}(\text{before_revoke})$.
- Delegation & Escalation Prevention:
- An actor $A$ cannot grant or delegate a permission $p$ to actor $B$ unless $A$ holds $p$ (and delegation authority) in the same scope, and $B$'s effective delegated access must automatically vanish when $t \ge \text{expires_at}$ or when $A$'s own access is revoked.
- Field-Level Redaction Invariant:
- For any actor lacking field-level read permission on sensitive attributes $F_{\text{secret}}$, no API response, GraphQL selection, sort/filter oracle, or export may expose values from $F_{\text{secret}}$.
- Approval Gate & Segregation of Duties (SoD):
- For any operation exceeding an approval threshold or requiring four-eyes review:
- The requester cannot approve their own request ($\text{approver_id} \neq \text{requester_id}$).
- Mutating the request payload after approval invalidates the approval or is rejected.
- No state transition to
executedis reachable without the required valid approvals.
- For any operation exceeding an approval threshold or requiring four-eyes review:
Checklist
- Does the generator include users who belong to multiple tenants with different roles, plus cross-tenant resource IDs in request payloads?
- Is tenant $T_B$'s state verified to remain completely unchanged after arbitrary operations executed in tenant $T_A$?
- Are delegation expiry, role revocation, and membership suspension tested to confirm immediate loss of access?
- Are self-approval and post-approval payload tampering tested and rejected across all generated approval flows?
Included files 1
SKILL.md
