Should a new public API version reuse existing OAuth clients and grants?
Reuse OAuth clients and grants across API versions only when the authorization contract stays materially the same and old approvals do not expand access.
Permissions, policies, and deciding who can do what.
Reuse OAuth clients and grants across API versions only when the authorization contract stays materially the same and old approvals do not expand access.
Choose atomic, filtered, or per-item authorization semantics for bulk reads, writes, exports, and imports without weakening single-object access checks.
Keep tenant context explicit per request so tabs, tokens, background work, and audit trails cannot cross organization boundaries.
Keep roles small and stable, move exceptions into permissions and scoped relationships, and plan migration, testing, and admin UX before custom roles.
A record moving from draft to finalized should not trigger a wholesale rewrite of permissions.
When two customer records are merged, permissions should not be blindly unioned or intersected.
A publish action should authorize the page and every embedded dependency before public release.
Design short-lived support access that keeps operator and customer identities separate, denies sensitive actions, supports revocation, and leaves useful audit trails.
Choose snapshot, continuous, or delegated authority per side effect, then define cancellation and audit behavior before a long-running job starts.
Turn raw permissions into grants with source, scope, owner, use, expiry, and removal impact so reviewers can make safe decisions.
Permission-filter tool discovery when tool names, schemas, or descriptions reveal sensitive operations, and enforce authorization again on every tool call.
Design sharing URLs as revocable, scoped credentials with explicit expiry, audience, and leakage controls.
How to authorize resource moves safely: check source and destination permissions, preview inherited-access changes, and update parent and permissions consistently.
Only a principal with explicit authority to disclose the selected data externally and bind it to the destination endpoint should configure that webhook.
Design tenant admin roles that stay inside one tenant, limit delegation paths, and keep platform-level authority in a separate control plane.
Decide whether dashboard access should inherit from each source dataset or from a separately approved derived output with its own policy.
Model approval as two checks: the actor must be an approver, and the actor must not be the author of the invoice revision being approved.
Check create permission on the parent project first, then enforce strict rules for the new child’s initial owner, collaborators, and inherited access.
Use one OAuth platform and one security baseline, but classify your own app and external apps into different trust levels for approval, scopes, consent, and revocation.
Prevent invite-based privilege escalation by binding each invite to tenant, recipient, role ceiling, expiry, single-use state, and current delegation authority at acceptance.
Treat PATCH as a set of explicit writes, authorize each requested field mutation, and fail closed on unknown or forbidden paths to prevent mass assignment.
Use immutable IDs, tombstones, ordered cleanup, and restore rules so deleted principals and resources cannot regain stale permissions.
Treat a duplicate as a new resource with a deliberate initial access policy.
Recommended clone semantics for automations: copy logic, require explicit rebinding of credentials and grants, and treat connection reuse as a separate authorization step.
Tool output should never pick the principal for the next API call.
Do not hand an AI agent your user session. Exchange it for a smaller, task-specific grant bounded by resource, action, purpose, time, spend, and delegation.
Give each downstream service a narrow token by separating subject, actor, audience, scope, lifetime, and audit context.