# Members & roles

> Workspace member list: invite, change role, remove, transfer ownership. Lives at Settings → Members & Roles.

Source: https://productos.ca/documentation/pages/settings/members-and-roles (last reviewed 2026-09-24)

The **Members & Roles** section (Settings → Members & Roles) is the workspace's access control. Every person who can sign in is listed here with their role and 2FA status.

## What you'll see

- **Member list**: name, email, role badge, and 2FA status (owners and admins see it and can reset a member's authenticator)
- **Roster badge**: each row shows "In roster" or "Add to roster" indicating whether the member has a corresponding [Team](https://productos.ca/documentation/pages/workspace/team) entry. Click "Add to roster" to create one without leaving Settings.
- **Pending invites**: emails that haven't accepted yet (resend, revoke), with the team member each one will be linked to
- **Invite member** form: email, role and an optional **Link to team member**, then **Send invite** (admin+). If the email can't be delivered, the invite link is shown so you can share it yourself

## Inviting

Pick a role at invite time. ProductOS sends a magic-link sign-up email. The link expires in 14 days; resend or revoke from the pending-invite row.

On accept, ProductOS also wires up the invitee's [team roster](https://productos.ca/documentation/pages/workspace/team) entry. If you picked a team member in **Link to team member**, that row is linked to the new account as-is, keeping its role, team, capacity and ownership. The picker lists only roster rows with no linked account and no other pending invite. Otherwise, if a `team_members` row with the same email already exists (and isn't linked elsewhere), it gets attached to the new profile and any role/team/skills the admin pre-set are preserved. Otherwise a fresh roster row is created. Either way the new member is immediately assignable as a feature Lead or an initiative owner.

## Role semantics

ProductOS has five roles in a strict total order: `viewer < commenter < member < admin < owner`.

| Role | Reads | Writes | Manages members | Manages integrations |
| :--- | :---: | :---: | :---: | :---: |
| **Owner** | All | All | Yes | Yes |
| **Admin** | All | All | Yes | Yes |
| **Member** | All (no audit log) | All entities; no permanent delete | No | No |
| **Commenter** | All (no audit log) | None of the structured entities | No | No |
| **Viewer** | All workspace entities; no audit log | None | No | No |

Owner is unique per workspace, transfer first if you need to leave or delete the account. See [Workspaces and roles](https://productos.ca/documentation/guides/concepts/workspaces-and-roles) for the full capability matrix.

## Changing a role

Dropdown on each member row. Owners also see **Owner** in the list: picking it transfers ownership to that member and demotes you to admin, after a confirmation. Demotion takes effect immediately, existing sessions don't need to re-auth, and any API tokens the user holds at a role above their new one are auto-revoked by a database trigger. Past edits stay attributed to the user.

## Removing a member

Use the remove icon on the row (non-owners can also leave the workspace this way; the owner has to transfer ownership first). Their account survives; they just lose workspace access and any tokens they issued in this workspace are revoked. Their team roster row is unlinked and flagged `offboarded`: past feature/initiative ownership stays attributed, but the row stops appearing in owner pickers and "My Work" filters. Re-add with the same email any time.

## Related

- [Workspaces and roles concept](https://productos.ca/documentation/guides/concepts/workspaces-and-roles)
- [Audit log](https://productos.ca/documentation/pages/settings/audit-log)
