account-hygiene
Periodic hygiene review of a client's 1Password account for QBRs and license true-ups: reconciling active and suspended seats…
Mapping everything a departing user could reach in a client's Bitwarden organization: their membership, role and status, collections granted directly and through groups, their recent vault activity from the admin-gated event log, and the follow-up list (revoke in the Admin
Claude Code
$ npx -y skills add wyre-ai/msp-claude-plugins --skill offboarding-access-review --agent claude-code
Codex
$ npx skills add wyre-ai/msp-claude-plugins --skill offboarding-access-review -a codex -y
Cursor
$ npx skills add wyre-ai/msp-claude-plugins --skill offboarding-access-review -a cursor -y
Gemini CLI
$ npx skills add wyre-ai/msp-claude-plugins --skill offboarding-access-review -a gemini-cli -y
GitHub Copilot
$ npx skills add wyre-ai/msp-claude-plugins --skill offboarding-access-review -a github-copilot -y
OpenCode
$ npx skills add wyre-ai/msp-claude-plugins --skill offboarding-access-review -a opencode -y
Windsurf
$ npx skills add wyre-ai/msp-claude-plugins --skill offboarding-access-review -a windsurf -y
name: "Bitwarden Offboarding Access Review" description: > Mapping everything a departing user could reach in a client's Bitwarden organization: their membership, role and status, collections granted directly and through groups, their recent vault activity from the admin-gated event log, and the follow-up list (revoke in the Admin Console, rotate exposed shared credentials, rotate the organization API key if they were an owner). Read-only: the plugin reports, people act. when_to_use: >- When an employee or contractor leaves a client, changes role, or is suspected of misuse, and you need to know what shared credentials they could see. Use when: bitwarden offboarding, departing user bitwarden, what could this user access, which passwords need rotating, leaver access review, revoke bitwarden access, or bitwarden user audit.
When someone leaves, the MSP has to answer two questions: is their Bitwarden access gone, and which shared credentials did they hold that now need rotating? This skill answers both from the read-only Public API and hands back a checklist. It cannot revoke or remove anyone; an owner or admin does that in the Admin Console (Members > the member > Revoke access or Remove).
Tool tiers in Conduit:
`bitwarden_members_list_group_ids`, `bitwarden_groups_get`, `bitwarden_collections_list`, `bitwarden_collections_get`.
admin grant, the review still produces the access map but cannot say what the user actually opened or copied; state that gap in the report.
[security-posture](../security-posture/SKILL.md).
[event-log-review](../event-log-review/SKILL.md).
drives `bitwarden_members_get` and `bitwarden_members_list_group_ids`. The `userId` is the Bitwarden account and is what `actingUserId` takes in `bitwarden_events_list`. Invited members have no `userId` yet.
`collections` array lists direct grants. Each group they belong to adds that group's collections. Each grant carries `readOnly`, `hidePasswords` and `manage` flags; `hidePasswords: true` means the member could fill but not view the password.
encrypted in Bitwarden. If the response carries no readable name, report the collection ID and `externalId` and let a person match them in the Admin Console.
the item's name or secret.
usually provisioned from the client's directory (Directory Connector or SCIM). Remove them there too, or the sync may restore them.
1. **Find the member.** Call `bitwarden_members_list` and match the email case-insensitively. If the list is `truncated`, and the person is not in the returned part, say so rather than concluding they are absent. Record `id`, `userId`, `type` (role), `status`, `twoFactorEnabled` and `externalId`. 2. **Direct grants.** Call `bitwarden_members_get` with the member `id`. Note each collection with its `readOnly`, `hidePasswords` and `manage` flags. 3. **Group grants.** Call `bitwarden_members_list_group_ids`, then `bitwarden_groups_get` for each group to read its name and collections. 4. **Name the collections.** Use `bitwarden_collections_list` (or `bitwarden_collections_get` per ID) to attach whatever identifying metadata the API returns, and to see which other groups share each collection. 5. **Recent activity (admin-gated).** Call `bitwarden_events_list` with `actingUserId` set to the `userId` and a window that covers at least the last 90 days (`start`/`end`, under 367 days). Page with `continuationToken` until it is `null`. Pull out item views, password copies, vault exports and failed logins; see the event table in [event-log-review](../event-log-review/SKILL.md). 6. **Write the checklist** (below).
1. **Revoke or remove** the member in the Admin Console. Revoking keeps the record and its history; removing deletes the membership. 2. **If `externalId` is set**, remove the person from the synced directory group as well. 3. **If they were an Owner** (`type` 0): they could view the organization API key. An owner rotates it (Settings > Organization info > View API key > Rotate), then re-submits the Conduit Bitwarden connect form with the new client_secret. Until then this plugin keeps working on the old key, which the leaver may have copied. 4. **Rotate shared credentials**, in this order:
(`hidePasswords: false`);
worth rotating for high-value systems, since autofill reveals the value to a determined user. 5. **Vault export events** (their own or the organization's) mean everything they could see may have left the building; escalate to the client. 6. **Personal vault.** If OrganizationDataOwnership (policy type 5) is off, they may have saved company credentials in their personal vault, which no API can see. Note it as a residual risk.
member is still listed. That is a valid end state for an offboarding; just do not report the member as "still active".
One command to supercharge Claude Code for MSP workflows. Then restart Claude Code. That's it. Documentation: wyre-ai.github.io/msp-claude-plugins
Periodic hygiene review of a client's 1Password account for QBRs and license true-ups: reconciling active and suspended seats…
1Password MCP fundamentals through Conduit: the region plus two independent credential halves (Events Reporting token, Users API…
How to review a departing or departed user's 1Password footprint with the read-only tools: confirm the seat is suspended, find…
Triage of 1Password sign-in attempts for one client account: pulling the sign-in feed over a window, grouping failures by user,…
3CX's live-operations surface: read-only visibility into active calls, recordings, voicemail, department and queue membership,…
3CX's read-only directory surface: resolving a caller by email or by exact extension, searching the PBX's own phonebooks,…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.