---
title: "Sign-in, members, and roles"
description: "How a Slack person becomes a Chickpea member, what Owners, Admins, and Members may do, and what suspending or removing someone changes."
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.chickpea.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Sign-in, members, and roles

A **Chickpea membership** is one Slack person's standing in your deployment: an exact `(team_id, user_id)` binding, a role, and an access status. Where a channel grant decides which Agent may work in which channel, a membership decides who may sign in to Admin and change what the Agents are. This page covers how memberships appear, the three roles and what each may do, who may edit an Agent, what suspension and removal change, and personal tokens.

## Sign-in

**Slack OIDC is the only human sign-in. No passwords.** There is no email link, no password reset, and no second identity provider. Email is mutable contact information, not the identity key.

A valid Slack identity is not sufficient by itself. Every Admin request re-resolves the canonical `(team_id, user_id)` binding and requires an active Chickpea membership. Sign in from the wrong workspace, as a guest, as a Slack Connect participant, or before you have a membership, and the page reads **That Slack account cannot access Chickpea**, with the instruction to interact with an Agent first and then sign in as that same active Slack member. No account and no role are created by a denied attempt.

A browser session goes idle after 7 days, is refreshed at most once every 24 hours, and expires 30 days after it was created whatever happens in between.

## How someone becomes a member

**The first Owner is the installer.** After Slack installation, the installer completes Sign in with Slack. Chickpea compares the OpenID Connect `team_id` with the installed workspace and atomically binds the installer's Slack `user_id` as the first Owner. Slack's own app-management policy decides who may install; Chickpea does not impose a second Slack-role requirement.

**Everyone else is provisioned by talking to an Agent.** The first time a full member of the installed workspace interacts with an Agent, Chickpea creates the user, the membership, and the Slack binding in one transaction, with the role `member` and the status `active`. Nothing is inferred from a display name or an email address. Automatic provisioning starts only once Slack sign-in is active for the deployment, so the first Owner comes first.

These Slack identities are never provisioned and stay conversational only: guests (restricted and ultra-restricted accounts), people from another workspace including Slack Connect, bots and app users, and deactivated accounts.

## The three roles

The roles are Owner, Admin, and Member. Slack workspace roles grant nothing here: a Slack Owner who has never talked to an Agent has no Chickpea membership at all.

| What it allows | Member | Admin | Owner |
|---|:---:|:---:|:---:|
| See your own account | ✓ | ✓ | ✓ |
| Create Agents | ✓ | ✓ | ✓ |
| Connect a personal account | ✓ | ✓ | ✓ |
| Create a schedule | ✓ | ✓ | ✓ |
| Change deployment configuration | | ✓ | ✓ |
| See the team roster | | ✓ | ✓ |
| Connect a team account | | ✓ | ✓ |
| Change a member's role or access | | | ✓ |
| Promote someone to Owner | | | ✓ |
| Run Slack credential recovery | | | ✓ |

The same table holds behind all three management doors. In Slack and over the management MCP, an operation that needs configuration authority is refused for a Member with `operational_access_required`, and a membership change attempted by anyone but an Owner is refused with `owner_required`.

## What each role sees in Admin

A Member's Admin has one section: Agents. Destinations, Team, Usage, and Settings appear only for roles that hold configuration authority, which is Admin and Owner.

Team is read-only for Admins. In **Team**, only an Owner sees the role selector and the per-person action menu, and an Owner never sees those controls on their own row. The screen states the rule plainly: membership is automatic, full Slack members join the first time they interact with an Agent, and guests and Slack Connect users are not provisioned.

## Who can edit an Agent

Owners and Admins can edit every Agent. For a Member, the Agent's own setting decides. In **Agents → the Agent → Advanced → Who can edit**, the choice is **Creator and workspace admins**, the default, or **Any workspace member**. A Member who is not the creator can edit only Agents set to the second value.

Editing authority is not a way around Slack. **An editor may publish only to a channel they belong to.** Chickpea Admin status does not bypass Slack channel membership.

## Suspended and removed

A membership is `active`, `suspended`, or `removed`. Owners change it from Team, and Chickpea shows what each choice means before applying it.

**Suspend** is reversible. The confirmation reads: they will not be able to use Agents, sign in to Chickpea, or use their personal connections; scheduled work running as them will pause; their Agents and saved configuration remain, and an Owner can restore access later.

**Remove** is not. Removed people disappear from the roster, and talking to an Agent again does not re-provision them.

> **Removal is permanent**
>
> The Team confirmation says it in one line: they will lose Chickpea access immediately, and removal is permanent. Suspend instead when you may want the person back.

Slack can suspend a membership without anyone opening Admin. A signed `user_change` event that marks the account deleted, a bot, or an app user suspends that membership. The reverse never happens: an active payload never restores authority.

**The last active Owner is protected.** Demoting, suspending, or removing them is refused with `At least one active Owner is required`. When Slack deactivates the only Owner, Chickpea keeps the Owner record and suspends access through a separate overlay, so the deployment is never left without an Owner.

## What changes when authority changes

- **Sessions and tokens end immediately.** Any change to a role or an access status revokes that membership's active personal tokens and browser sessions in the same transaction, and deletes the sign-in sessions bound to that person.
- **MCP authority is live, not token-lifetime.** A demoted, suspended, removed, or mismatched person loses management MCP authority even if a previously issued access token has not reached its nominal expiry.
- **Approvals are re-checked at the moment of confirmation.** A proposal created by an Owner is refused at confirmation if that person is no longer an Owner.
- **Schedules stop.** A schedule runs as the member who created it. When that membership is no longer active, the run is refused because the Runs as member is no longer active.

## Personal tokens

A **personal token** is a machine credential for the Admin API, sent as a bearer token instead of a browser session. Chickpea stores only a SHA-256 hash and a 12-character prefix, never the token. The token carries its membership's role, is rejected the moment the membership is not active, and cannot reach the account or team endpoints at all, so no machine credential can read the roster or change a role. Admin has no screen for issuing one today.

## Why it works this way

Chickpea keeps no directory of its own. The identity key is the exact Slack workspace and user pair, so leaving the Slack workspace is enough to lose access, and there is no second list of people to keep in step. Provisioning on first interaction means the roster describes who actually uses Chickpea rather than who was once invited.

Roles are read from stored state and re-checked at each use rather than carried in a session or a token. That is the same rule the rest of the product runs on: authority comes from stored grants and saved instructions, read from stored state and re-checked at the moment of each use, never from anything produced during the turn.

## What is not covered

- **Membership is not permission to talk to an Agent.** Slack participants interact with Agents without any management authority. Membership governs Admin, Slack management tools, and MCP administration.
- **Admin has no invite flow.** You cannot add someone who has never interacted with an Agent, and you cannot pre-assign a role.
- **Slack roles are not Chickpea roles.** A Slack Owner holds nothing here, and a Chickpea Owner holds nothing in Slack.
- **One deployment currently serves one Slack workspace.** A second workspace is a second deployment with its own memberships.
- **There is no migration into Slack sign-in.** Deployments that used a password, Cloudflare Access, or a shared token have no upgrade path; use a fresh deployment.

## Next steps

- [Admin](/admin): the rest of this section, including a tour of the app and the management MCP.
- [Security model](/security/security-model): the guarantees behind sign-in, authority, and confirmation.
- [How Chickpea works](/start/how-it-works): where grants, memory, and connections sit around a membership.
- [What an Agent is](/agents/agents): what an Agent is made of, and who its editors can change.

Source: https://docs.chickpea.co/admin/sign-in-and-roles/index.mdx
