# Review every Docker Hub member and access token in one place

> See who and what can reach your Docker Hub organization, spot the stale and never-used credentials, and shut them off without leaving the page.

- Workflow type: app
- Services: Docker Hub
- Categories: Engineering, Operations
- Published: 2026-08-21

## What it does

- Puts your Docker Hub members, organization access tokens, personal access tokens and pending invites behind four tabs on one screen, each showing role, creation date, last use and whether the credential is still live.
- Flags the risky rows for you automatically: credentials that have never been used once, anything older than a year, and invitations still sitting unanswered after a couple of weeks.
- Lets you act straight from the row. Revoke an organization credential, switch off or delete a personal one, withdraw a stale invitation, or hand the right team access to a repository.
- Adds a Look into this account button that sends a background assistant through your recent Docker Hub activity trail and writes a short plain-language brief on what that person or credential has actually been doing, so you can decide before you revoke.
- Keeps its own record of every review decision, so next quarter you can see who was checked, what was done and what has changed since.

## What you'll need

- A Docker Hub account that is an owner or administrator of the organization you want to review.
- A Docker Hub organization on a plan that includes organization access tokens and the activity trail, which is where the member, credential and audit views come from.
- The name of the organization you are reviewing. The app asks for it once and remembers it.
- Nothing else. This app talks only to Docker Hub, so there is no spreadsheet, HR system or chat tool to connect.

## Prompt

Build me an app that gives me one screen for reviewing who and what can reach our Docker Hub organization, so our quarterly access review stops being a spreadsheet exercise. It should be an interactive console I open and work in, not a scheduled report. Keep it single integration: everything comes from Docker Hub, and nothing runs on a timer.

At the top of the app, let me set and store the organization namespace I am reviewing, and show it persistently in the header. Be explicit about scope throughout the UI, because Docker Hub scopes these lists differently: members, organization access tokens and invites are organization-scoped, while personal access tokens belong to the account whose credential is connected. Label each view with the namespace it is actually reading so nobody misreads a personal token list as an organization-wide one.

The main surface is four tabs. Members, from List Organization Members, showing username, full name, email, role and the date they joined. Organization access tokens, from List Organization Access Tokens, showing the token name, creation date, last used date and whether the token is still active. Personal access tokens, from List Personal Access Tokens, with the same columns: name, creation date, last used and active state. Pending invites, from List Organization Invites, showing the invited email, the role or team they were invited into, the date the invite was sent and how many days it has been outstanding.

Every list highlights the risky rows automatically. A token that has never been used at all is risky. A token created more than 365 days ago is risky. An invite still outstanding after 14 days is risky. Show these as a clear visual treatment on the row plus a short reason chip such as Never used or 412 days old, and put a count of risky rows at the top of each tab so I can see the size of the problem immediately. Put all three thresholds in a settings panel so they can be changed without editing code.

From each row I need to act without leaving the app. On an organization access token, a Revoke action calling Delete Organization Access Token. On a personal access token, two actions: Disable, which calls Update Personal Access Token to set it inactive while keeping it in the list, and Delete, which calls Delete Personal Access Token to remove it entirely. On a pending invite, a Withdraw action calling Cancel Invite. Every destructive action needs a confirmation dialog naming exactly what is about to be removed, and the list should refresh in place afterward. Surface API errors inline on the row, since a token belonging to another account or a plan limitation will come back as a permission error rather than a success.

I also want to fix a permission on the spot. Give me an action that grants a team access to a repository using Assign Group to Repository, with the group picker populated by List Organization Groups, the repository picker populated by List Repositories in a Namespace, and a permission level selector. This is the one thing in the app that grants access rather than removing it, so make it visually distinct from the revoke actions.

Add a button that exports the whole member list as a CSV for the auditors, using Export Organization Members, and downloads the file directly from the Members tab.

Put a Look into this account button on every member row and every token row. It starts a background agent embedded in the app. The agent pulls the recent audit trail with List Audit Log Events for the organization over the last 90 days, filters those events down to that specific person or that specific token, and writes a short plain-language activity brief: what they have actually been doing lately, how recently they were active, which repositories or actions show up most, and whether the access still looks justified, ending with a plain recommendation such as looks active and justified, or looks dormant and safe to revoke. No jargon, a few sentences a reviewer can read in ten seconds. The brief is written back into the app's own storage keyed to that member or token, and the row shows the run state as queued, running or ready. Clicking the row opens a detail panel showing the finished brief with its timestamp, and I can re-run it later to get a fresh one. The point is that I read the brief before I decide, so make the brief visible next to the revoke button rather than on a separate page.

Finally, the app keeps a record of each review decision. This is app-local persistence, not a Docker Hub feature, so store it in the app's own data. Every revoke, disable, delete, withdraw and team assignment writes a row capturing what was reviewed, the subject type, the action taken, who took it, the timestamp and an optional note. Also give me a Mark as reviewed, no change action, so a credential I deliberately kept is recorded as checked rather than looking untouched. Add a History tab listing those decisions newest first, filterable by date range and action type, and show a last reviewed date on each row in the main tabs. That way next quarter I can open the app and immediately see who was checked last time and what has changed since.

Design notes: this is a dense operational console, so favor compact tables over cards, keep all four tabs reachable without scrolling, and make the risky rows readable at a glance from across a desk. Show sensible empty states, since an organization on a plan without organization access tokens or the audit log will get empty lists rather than errors.

## How to customize

- Change what counts as risky. The default is never used, older than 365 days, and invitations outstanding for more than 14 days, and all three thresholds sit in a settings panel.
- Point the app at a different organization, or switch between several if you run more than one.
- Widen or narrow how far back the account brief looks. It reads the last 90 days of activity by default.
- Add your own note field to the review record if your auditors want a reason captured alongside each decision.

## FAQ

### Will this delete anything on its own?

No. Nothing is removed unless you click the button on that row and confirm it. The app is a review console, not an automated cleanup job, and it never runs on a schedule.

### Why do the personal access tokens look different from the member list?

Docker Hub treats them differently. Members, organization credentials and invitations belong to the organization, while personal access tokens belong to the individual account you connected. The app labels each view so you always know which one you are looking at.

### We have credentials nobody remembers creating. Is that normal?

Yes, and it is a big part of why this app exists. Docker Desktop can quietly create personal access tokens on someone's behalf, so most organizations are carrying credentials nobody deliberately made. Those show up here alongside everything else.

### What does the Look into this account button actually do?

It starts a background assistant that reads your recent Docker Hub activity, narrows it to that one person or credential, and writes a few plain sentences on what they have been doing lately and whether the access still looks justified. The brief lands back in the app next to the row, and you can run it again whenever you like.

### Can I give the results to an auditor?

Yes. There is a one-click export of the full member list as a spreadsheet file, and the app keeps its own running record of every review decision, so you can show both the current picture and the history of what you changed.

### Do I need a Docker Hub Business plan?

Organization access tokens and the activity trail are features of Docker's paid organization plans. The members, invitations and personal access token views work more broadly, and the app simply shows an empty state for anything your plan does not cover.

Use this prompt in General Input: https://www.generalinput.com/prompts/review-every-docker-hub-member-and-access-token-in-one-place