Grant Bitwarden access to new hires and role changers

See who has vault access and who does not, pick a saved access template, preview exactly what it grants, and send the invite without guessing at groups.

App
BitwardenBambooHRSlack BotHR & PeopleOperationsOnboarding Automation
PromptCreate

Build me an access desk app that IT opens whenever someone joins or changes roles, so we grant password manager access consistently from saved templates instead of hand-picking Bitwarden groups from memory and quietly over-granting. It has three tabs: an access desk, a pending queue, and a movers tab. Nothing runs on a schedule, a person opens this and works in it.

The main access desk screen lists people from BambooHR using Get Employee Directory, joined against their current Bitwarden state from List Members. Match a person to a Bitwarden member on work email, case insensitive, and show the pair as one row with name, job title, department, and a status column. Derive the status from the join so I can immediately see who is a new hire with no Bitwarden member record at all, who is already an active member, who is sitting in an invited or accepted state, and who has changed department recently and is therefore probably in the wrong groups. Let me filter and search by department and status, and default the view to the people who need action rather than the full roster. Use Get Employee when I open a single person and want the fuller job detail behind the directory row.

Access templates are the core concept and they are the app's own data, not a Bitwarden concept, so store them in the app's own storage. A template has a name such as Engineering, Finance or Contractor, an optional description, a Bitwarden member role to assign, and the set of Bitwarden group ids and collection ids it grants. Give me a screen to create and edit templates where the group and collection pickers are populated from List Groups and List Collections so I am always choosing real objects rather than typing ids. Show on each template which collections come along implicitly through its groups, because groups carry collection assignments of their own and I want to see the true resulting access, not just what I ticked.

The invite flow is: I pick a person, I pick a template, and the app shows me a preview before anything is sent. The preview spells out the role the person will get, every group they will be placed in by name, and every collection they will be able to reach as a result, including the collections inherited through those groups. Only after I confirm does the app call Create Member with the role and the group membership baked into the create call, so the person is never briefly in the organization with no groups. Immediately after a successful create, message the person a welcome note through Slack Bot. Use Open a Conversation to get the direct message channel for their Slack user first, then Send a Message. The welcome note should say which access they have been granted in plain language and tell them to watch for the Bitwarden invitation email and accept it. If the Slack message fails, do not treat the whole invite as failed, since the member has already been created. Surface the messaging failure separately with a retry.

The second tab is a pending queue of everyone still sitting in Invited status from List Members. Show each person, the template they were granted if the app recorded one, and how many days they have been waiting, sorted longest wait first and visually flagged past a threshold I can configure. Give each row a resend button wired to Reinvite Member. Be honest about the real state of provisioning here: a member who was invited is not actually usable until they accept the invitation and then an admin confirms them in the Bitwarden console, and the Bitwarden public API cannot perform that confirmation. So model the queue as distinct outstanding stages, waiting on the person to accept and waiting on an admin to confirm, and show the confirm stage as a genuine outstanding step with a note that it has to be done by a vault admin in the Bitwarden console. Never render an invited or accepted person as finished or fully provisioned.

The third tab is movers. It compares each person's current BambooHR job title and department against what the app recorded the last time it granted them access, and lists the people whose role has changed since. For each mover, show their current Bitwarden groups, suggest the template that matches their new department, and show a diff of which groups would be added and which would be removed if I applied it. Applying a move calls Update Member Groups.

Two constraints have to be handled properly rather than papered over. First, Bitwarden group updates are full replacements, meaning any group left out of the submitted set is removed from the member. So before any group change, read the member's existing groups with Retrieve Member Group IDs, merge them with the template's groups according to what the diff showed me, and submit the complete intended set. Never send only the new groups. The diff in the preview is what I am approving, so it must accurately reflect the final submitted set, including anything being kept. Second, as above, invited is not active. The app should treat confirmation as an unfinished step owned by a human.

Keep a record in the app's own storage of every grant the app makes: who was granted, which template, which groups were submitted, who clicked the button, and when. Use it to power the movers comparison and to give me a simple history on a person's row, so months later I can see why someone has the access they have. The app only reads from BambooHR and never writes back to it.

What does this prompt do?

  • Lists everyone from your HR system next to their current password manager status, so new hires with no access, people already set up, and anyone who recently changed department are all obvious at a glance
  • Lets you save access templates such as Engineering, Finance or Contractor, each one a named bundle of the groups and shared collections that role should get
  • Shows a full preview of exactly what a template grants before anything is sent, then creates the invite and posts a Slack welcome note in one step
  • Keeps a pending queue of people who were invited but are not live yet, with how long they have been waiting, a resend button, and the manual confirmation an admin still owes them

What do I need to use this?

  • A Bitwarden organization on a Teams or Enterprise plan, plus owner access so you can create the organization API key
  • A BambooHR account you can read the employee directory from
  • A Slack workspace with a bot that can send messages to people
  • Your groups and shared collections already created in Bitwarden, since the app assigns existing ones rather than inventing new ones

How can I customize it?

  • Edit the access templates: add one per department, team or contractor type, and change which groups and collections each one grants
  • Set how many days an invite can sit unanswered before the pending queue flags it as stale
  • Reword the welcome message, or send it to a shared channel instead of a direct message

FAQs

Does this fully finish setting someone up in Bitwarden?
Not by itself, and the app is honest about that. Sending the invite puts the person into your organization in an invited state. They still have to accept it, and an admin still has to confirm them inside the Bitwarden console before their access actually works. Bitwarden does not allow that final confirmation to happen automatically, so the app shows it as a real outstanding step in the pending queue instead of pretending provisioning is complete.
Will this accidentally strip access someone already has?
No. Bitwarden replaces a person's entire group list whenever it changes, so the app always reads what someone already belongs to first and then submits the complete intended set. The preview screen shows you what is being added and what is being kept before you save anything.
Do I need a paid Bitwarden plan?
Yes. The organization API key this app relies on is only available on Teams and Enterprise plans, and only an organization owner can view it.
What are access templates, and where are they stored?
They are your own saved bundles, for example Engineering or Contractor, each mapping to a set of Bitwarden groups and shared collections. Bitwarden itself has no concept of templates, so the app stores them in its own storage and you can edit them whenever your teams change.
Can I use an HR system other than BambooHR?
The app reads its list of people from BambooHR as built. If your team runs on a different HR platform, you can ask for the people list to come from there instead when you build it.

Related templates

Share of voice dashboard for your brand and competitors

See how your brand's news coverage and sentiment stack up against four competitors, then let an assistant write the weekly report for you.

GDELT
Notion
Slack Bot
App
Approval war room for every social post awaiting sign-off

One screen showing every social post waiting on approval, sorted by deadline, so reviewers can approve or reject without leaving the page.

Hootsuite
Slack Bot
App
Turn champion job changes into new pipeline in Attio

Every Monday, find the past champions and closed-won contacts who changed jobs, update Attio, and get the moves worth chasing in Slack.

Boomerang
Attio
Slack Bot
Agentic Task
Collect social post requests and schedule them in Hootsuite

Staff submit what happened, your social manager edits the copy, picks the accounts and puts it on the calendar without a single spreadsheet.

Hootsuite
Slack Bot
General Input Database
App
Voice agent QA review board for your Hume EVI calls

Open one board each morning, see which voice calls went badly, replay the exact moment the caller got frustrated, and file the fix.

Hume
Linear
Slack Bot
App
Clear your Guru verification backlog in one weekly app

A personal queue of every overdue Guru card, sorted by how late it is, with one-click verify, reassign, comment, and an agent that drafts the refresh for you.

Guru
Slack Bot
App

Stop hand-picking Bitwarden groups from memory.

Run joiners and movers through one consistent access desk, with a clear record of what each person was granted and what is still outstanding.