Handle Bitwarden access requests without the Slack chase

A request form plus an approval queue that shows what each person already has, applies the change in Bitwarden, and logs every decision.

App
BitwardenSlack BotGoogle SheetsOperationsOnboarding Automation
PromptCreate

Build me an app my team opens to handle Bitwarden access requests, so we stop chasing them in Slack threads. It has three views: a request form anyone can submit, a pending queue where an approver makes the decision, and a list of grants that have outstayed their welcome.

The request form is deliberately simple. It lists our real Bitwarden collections in a dropdown, loaded with List Collections, and asks which collection the person needs, what permission level they need (read only, edit, or manage), a short reason, and an optional "needed until" date. It also captures the requester's work email, which is what we use later to find them in Bitwarden and in Slack. Submitting creates a pending request in the app's own storage with the submitted time and a status of pending. Nothing is applied in Bitwarden at submit time.

The pending queue is the main working surface for approvers. Each row shows the request itself plus who is asking, enriched from List Members: their current role in the organization, their account status (invited, accepted, confirmed, or revoked), and the collections they can already reach. Make it obvious at a glance whether the person already has what they are asking for, either through a direct collection assignment or through a group, and call that out on the row so an approver can close it out instead of granting something twice. Rows where the requester is not in the organization at all, and rows where they are still sitting in invited status from an old invitation, should be visually distinct, because those need different handling.

Approving applies the change in Bitwarden. Use List Groups to find the group that carries the requested collection, since groups are the intended way to hand out collection access in bulk. If the requester is already in the organization, read their current group membership first, then call Update Member Groups with the full set of their existing groups plus the new one. This matters: Bitwarden treats these updates as full replacements, so sending only the new group silently strips every other bit of access the person had. If the requester is not in the organization yet, use Create Member with the right role, group, and collection access, which sends them an invitation. If they are already in the organization but stuck in invited status because an old invitation was never accepted, offer Reinvite Member to resend it. Use Update Member when the approval also involves changing the person's role rather than just their groups. After a successful approval, refresh the row from List Members and show the real resulting state, including invited status where the person has not accepted and been confirmed yet. Do not show access as live when Bitwarden says it is still pending acceptance.

Denying is a one-click action that requires a short reason before it will submit. Nothing is called in Bitwarden on a denial.

Every decision, approved or denied, goes back to the requester two ways. First a Slack direct message: look the person up from their work email with Look Up User by Email, open the DM with Open a Conversation, then Send a Message telling them the collection, the decision, the permission level they now have, the reason if it was denied, and the needed until date if one was set. Second, an audit row appended to a Google Sheet with Append Values, carrying requester, approver, collection, permission level, decision, reason, and timestamp. If either the Slack message or the sheet append fails, keep the decision recorded in the app and show the failure on the row so it can be retried, rather than losing the decision.

The third view lists expired grants: every approved request whose needed until date has passed, sorted by how overdue it is, showing the requester, the collection, the approver, and the original reason. Check each one against List Members so the view only shows access the person genuinely still has, and give the reviewer a way to mark a grant as revoked or extended once they have acted on it. This view exists so temporary access actually gets taken back rather than quietly becoming permanent.

Requesters should only see their own requests and their status. The pending queue and the expired grants view are for approvers, configured as a list of approver emails. Keep the whole thing readable on one screen per view, with the queue dense enough that an approver can work through a morning's requests without clicking into each one.

What does this prompt do?

  • Anyone on the team can ask for access to a specific password collection, say why they need it and how long for, using a form that lists your real Bitwarden collections
  • Approvers work one pending queue where every row shows the requester's current role, account status and the collections they can already reach, so it is clear whether the request is even needed
  • Approving applies the change in Bitwarden straight away by putting the person in the group that carries that collection, inviting them first if they are not in the organization yet
  • Every approval and denial goes back to the requester as a Slack direct message and lands as a row in a Google Sheet with who asked, who decided, what was granted and when
  • A second view lists access that is past its needed until date, so someone can actually take it back

What do I need to use this?

  • A Bitwarden Teams or Enterprise organization, and an owner who can share the organization's API access
  • Groups already set up in Bitwarden for the collections people tend to request, since approvals add someone to a group rather than handing out one off access
  • A Slack workspace, so decisions can be sent to requesters as direct messages
  • A Google Sheet to hold the audit trail

How can I customize it?

  • Choose who counts as an approver, and whether your most sensitive collections need a second sign off
  • Reword the Slack messages people get when a request is approved or denied
  • Set a default length for needed until, so temporary access is the norm rather than the exception
  • Change the columns in the audit sheet, or point it at an existing compliance workbook

FAQs

Can someone get access before it is approved?
No. Submitting the form only creates a pending request. Nothing changes in Bitwarden until an approver opens the queue and approves it, which is the whole point of running requests through the app instead of a chat thread.
What happens if the person is not in our Bitwarden organization yet?
The app invites them with the right role and group as part of the approval. Bitwarden keeps new people in an invited state until they accept the invite and an admin confirms them, and the queue shows that state honestly rather than claiming access is already live. If an old invite was never accepted, the approver can resend it.
Will approving a request wipe out the access someone already has?
No. Before making a change the app reads everything the person is already a member of and sends that back along with the new group, so existing access is preserved.
Do we need Bitwarden groups set up first?
Ideally yes. Groups are the intended way to hand out collection access in bulk, so the app grants access by adding someone to the group that carries the collection they asked for. If a collection has no group behind it, create one in Bitwarden first.
Does it remove access automatically when the needed until date passes?
No. It lists every grant that is past its date in a separate view, with who has it and how overdue it is, so a person can decide and take it back. Automatic removal is a change you can add later once you trust the list.

Related templates

Prospecting desk that builds account lists from the live web

Stop buying stale lists. Reps run a saved search, work the results like an inbox, and only the accounts they approve ever reach your CRM.

Hyperbrowser
HubSpot
Google Sheets
App
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
Influencer campaign roster board with AI creator briefs

Drag creators through Sourced to Wrapped on a board grouped by campaign, with audience stats on every card and a one-click brief for each creator.

HypeAuditor
Google Sheets
Notion
App

Stop approving password access in Slack threads.

Give your team one place to ask for access, and your approvers one queue with the full picture before they say yes.