Appropriate use
Use for role-based access control, organisation switching, shared resources, admin features, APIs, invitations, and security-sensitive workflows.
Validates authentication and authorisation across roles, tenants, ownership states, endpoints, operations, cached sessions, and direct-object access.
This page defines the behaviour, controls, evidence, and outputs required from the skill. It does not claim that a language model can enforce security or correctness by wording alone.
Use for role-based access control, organisation switching, shared resources, admin features, APIs, invitations, and security-sensitive workflows.
Do not use as a full penetration test, with real customer accounts, or without an isolated permission matrix and explicit security handling.
Each phase has explicit inputs and outputs. Approval gates are hard stops bound to exact versions and hashes.
Resolve roles, permissions, tenants, resource ownership, inheritance, feature flags, endpoints, UI controls, token types, and authorised expectations.
Create isolated users, tenants, memberships, tokens, ownership states, and session transitions. Record how each identity is independently verified.
Create positive and negative combinations for read, create, update, delete, share, invite, export, and administrative operations.
Review invitations, emails, exports, deletions, audit events, rate limits, and any tests that could expose or modify sensitive data.
Test both visible controls and direct requests. Verify role, tenant, ownership, endpoint, and operation before every assertion.
Test role changes, organisation switches, token expiry, cached permissions, revoked access, concurrent sessions, and reauthentication.
Classify over-permission, under-permission, information leakage, inconsistent UI/API, stale authorisation, or requirement gap.
Publish through the appropriate security or product channel, remove isolated identities and resources, and preserve redacted evidence.
An approval cannot be reused after its environment, source, action plan, or approved document changes.
| Gate | Decision | Required binding |
|---|---|---|
| 1 | Gate 1 · approve permission model | Approval stores approver, role, timestamp, context hash, approved document hash, expiry, and invalidation state. |
| 2 | Gate 2 · approve actions | Approval stores approver, role, timestamp, context hash, approved document hash, expiry, and invalidation state. |
| 3 | Gate 3 · confirm finding | Approval stores approver, role, timestamp, context hash, approved document hash, expiry, and invalidation state. |
| 4 | Gate 4 · publish | Approval stores approver, role, timestamp, context hash, approved document hash, expiry, and invalidation state. |
Attempt outcomes remain separate from these workflow results. Errors, cancellations, and invalid context are never silently converted into a pass.
The verified actor receives the approved decision for the tested operation and resource state.
An actor can perform or observe an operation that should be denied.
An actor is incorrectly denied an approved operation.
The response reveals resource existence or sensitive details beyond the actor's permission.
UI and API, sessions, or related endpoints enforce different decisions.
The authorised permission expectation is missing or contradictory.
Evidence has provenance, capture context, privacy classification, retention, and integrity metadata. A convenient artifact is not automatically sufficient proof.
| Claim | Primary evidence | Required validation |
|---|---|---|
| Identity | Independent role and tenant attestation | The tested token and session belong to the intended actor. |
| UI authorisation | Screenshot and interaction trace | Visibility and enabled state match the expected capability. |
| API authorisation | Request and response capture | Endpoint, method, status, body, and relevant headers are recorded. |
| Object isolation | Resource IDs and ownership map | Cross-tenant and non-owner access are directly attempted. |
| State change | Before-and-after resource verification | Denied operations create no hidden side effect. |
| Auditability | Audit-log entry where required | Allowed and denied sensitive actions produce the expected record. |
These controls belong in the runtime, connector permissions, sandbox, renderer, storage layer, and review process.
Use synthetic tenants and resources; never enumerate real customer objects.
Potential security issues are not published in ordinary public channels.
UI labels alone do not prove the active role or tenant.
Hidden UI controls do not substitute for server-side enforcement.
Delete and export tests require approved ownership and sinks.
Tokens, cookies, and credentials never enter reports or model-visible evidence.
The first applicable high-severity outcome takes precedence. A manual override is recorded separately and never rewrites the calculated result.
Over-permission, information leakage, or cross-tenant access requires restricted handling.
Required permission behaviour is incorrect.
Identity, expectation, or safe test data cannot be established.
Required checks pass but accepted optional combinations remain.
All required permission combinations enforce the approved decisions.
The workflow documents what it cannot prove and what further evidence would change confidence.
Human summaries are generated from validated structured records. They are not maintained as separate, drifting sources of truth.
permission-context.jsonVersioned output produced by the workflow.
identity-map.jsonVersioned output produced by the workflow.
permission-matrix.csvVersioned output produced by the workflow.
action-plan.mdVersioned output produced by the workflow.
attempt-ledger.jsonlVersioned output produced by the workflow.
evidence-manifest.jsonVersioned output produced by the workflow.
findings/Versioned output produced by the workflow.
cleanup-report.mdVersioned output produced by the workflow.
permission-report.htmlVersioned output produced by the workflow.
artifacts/qa/permission-qa/<run-id>/ ├── permission-context.json ├── identity-map.json ├── permission-matrix.csv ├── action-plan.md ├── attempt-ledger.jsonl ├── evidence-manifest.json ├── findings/ ├── cleanup-report.md └── permission-report.html
Test whether Members can view but not edit another organisation's shared playlist. Check both UI controls and direct API requests after switching organisations.
Permission result: SECURITY ESCALATION Finding: A Member cannot see the Edit control in the UI but can update the playlist name through a direct API request after switching organisations. Classification: Cross-tenant over-permission. Evidence: Verified Member token, organisation membership map, request/response capture, and before/after resource state. Publication: Restricted security route required.
The written skill is only one layer. The repository, runtime, connectors, evidence storage, and publication path must implement these requirements.
Validates authentication and authorisation across roles, tenants, ownership states, endpoints, operations, cached sessions, and direct-object access.