计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
intercom-enterprise-rbac【效率与协作】Configure Intercom enterprise OAuth, admin roles, and app-level access control. Use when implementing OAuth integration, managing admin permissions, or setting up organization-level controls for Intercom — e.g. gating a delete endpoint by role, installing a public app for a customer workspace, or adding admin audit logging. Trigger with phrases like …
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
name: intercom-enterprise-rbac description: | Configure Intercom enterprise OAuth, admin roles, and app-level access control. Use when implementing OAuth integration, managing admin permissions, or setting up organization-level controls for Intercom — e.g. gating a delete endpoint by role, installing a public app for a customer workspace, or adding admin audit logging. Trigger with phrases like "intercom OAuth", "intercom RBAC", "intercom enterprise", "intercom roles", "intercom permissions", "intercom admin access". allowed-tools: Read, Write, Edit version: 1.6.0 license: MIT author: Jeremy Longshore jeremy@intentsolutions.io tags:
Configure enterprise-grade access control for Intercom integrations with OAuth scopes, admin role management, and app-level permission enforcement.
The workflow covers the full path: enumerate the workspace's admins and teams, authorize a public app with least-privilege scopes, enforce per-operation permissions at the application layer, route conversations to teams, and audit sensitive admin actions.
The high-level workflow lives here; complete, copy-ready code for every step is in references/implementation.md, and end-to-end scenarios are in references/examples.md.
intercom-client installed and INTERCOM_ACCESS_TOKEN (or OAuth client
credentials) available in the environmentIntercom has built-in admin roles that control workspace access:
| Role | API Access | Capabilities |
|---|---|---|
| Owner | Full | All operations, billing, workspace settings |
| Admin | Full | Manage contacts, conversations, content |
| Agent | Limited | Reply to conversations, view contacts |
| Custom roles | Configurable | Enterprise plan feature |
These built-in roles govern access inside the Intercom UI and API. Map them onto explicit permissions (Step 3) rather than trusting the role name alone.
Follow the five steps in order. Each step's full code is in references/implementation.md under the matching heading — the skeletons below show the essential call surface.
Enumerate every admin and team to map real identities to permissions.
const client = new IntercomClient({ token: process.env.INTERCOM_ACCESS_TOKEN! });
const adminList = await client.admins.list();
// admin.type is "admin" or "team" — teams are used for routing in Step 4
For public apps, request the minimal scopes required, build the authorization
URL with a CSRF state, and exchange the returned code for a per-workspace token.
const authUrl = getAuthUrl(crypto.randomUUID()); // redirect the user here
const { token } = await exchangeCode(code); // on callback
Store one token per workspace (WorkspaceAuth) for multi-tenant installs. Full
exchange + storage code: see references.
Define an explicit IntercomPermission union, map each role to a permission set,
and gate operations with middleware — never rely on the role name at the call site.
function checkPermission(role: string, perm: IntercomPermission): boolean { /* … */ }
app.delete("/api/contacts/:id", requirePermission("contacts:delete"), handler);
Filter admins where type === "team", then assign conversations to the right
team by topic via client.conversations.assign(...).
Record every privileged action to a durable audit store, mirror it as an Intercom
data event for visibility, and warn on delete/settings operations.
For the OAuth scope-to-endpoint mapping, see the OAuth Scope Reference table in references/implementation.md.
Applying this skill produces:
client.admins.list() (name, email, id, type).WorkspaceAuth record.ROLE_PERMISSIONS, checkPermission, requirePermission)
that returns 403 Forbidden with the missing permission when a caller lacks it.admin-action-logged Intercom data
events, with console warnings on sensitive actions.| Issue | Cause | Solution |
|---|---|---|
| OAuth callback fails | Wrong redirect URI | Match exactly in Developer Hub |
forbidden (403) | Missing OAuth scope | Add scope, user must re-authorize |
| Token revoked | User uninstalled app | Handle gracefully, notify admin |
| Admin not found | Admin left workspace | Remove from the local system |
| Team assignment fails | Team ID invalid | List teams first with admins.list() |
403. See references/examples.md § Example 1.For major workspace migrations that move data and reconfigure roles at scale, see
the intercom-migration-deep-dive skill, which builds on the RBAC primitives
established here.