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.
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.
What does this prompt do?
- 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 do I need to use this?
- 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.
How can I customize it?
- 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.
FAQs
Will this delete anything on its own?
Why do the personal access tokens look different from the member list?
We have credentials nobody remembers creating. Is that normal?
What does the Look into this account button actually do?
Can I give the results to an auditor?
Do I need a Docker Hub Business plan?
Related templates
A board that lines up the versions you tagged against the images your registry actually has, so a quiet build failure never reaches a customer.
See which repositories are hoarding old tags, let an agent draft a keep-versus-delete plan, then approve it yourself before anything is removed.
On the first working day of each month, compare who can reach your Docker Hub organization with your active staff list and post the gaps to Slack.
Every weekday morning, get a clean Slack summary of which Docker Hub images picked up new tags in the last day, grouped by repository.
Every morning we scan your Docker Hub activity for risky changes and post a plain-English alert to Slack, staying quiet when nothing needs your attention.
Every Monday, get a short written rundown of how your public Docker images are doing, ranked by pulls with stars and fresh releases called out.
Stop running your access review out of a spreadsheet.
Open one screen, see every person and credential that can reach your Docker Hub organization, and clear out the stale ones in a single sitting.