See every CircleCI deploy waiting on your approval
One screen showing every CircleCI workflow held for manual approval across all your projects, longest waits first, with approve and cancel built in.
I want an app my release manager opens every afternoon that shows every CircleCI workflow currently waiting on a manual approval across all of our projects in one list, instead of clicking into each project's workflow page one at a time. The whole point is to replace the per-project hunting the native CircleCI UI forces, where you have to open each project's Workflows page and select the hold job inside it.
The main screen is a single list of held workflows. Build it in three steps: call CircleCI "Get a list of pipelines" for the organization to get recently built pipelines, then "Get a pipeline's workflows" for each pipeline, then "Get a workflow's jobs" for the workflows that are on hold. A workflow belongs in the list when one of its jobs is an approval job sitting in an on-hold state. Keep the held job's id from that jobs response on the row, because the approval action needs it later.
Each row shows the project, the branch, the commit message, who triggered the run, which job is holding, and how long it has been waiting expressed in plain language like "waiting 3 days" or "waiting 6 hours". Sort the longest waits to the top, since those are the ones at risk of being forgotten. Flag anything that has been waiting longer than a week with a clear visual warning, because CircleCI stops accepting approvals on a held job after 90 days and the run can no longer be resumed after that. Give the page a refresh control so the manager can re-pull the list without reloading.
When a row is opened, show the matching GitHub pull request alongside the build details so the manager can judge whether the change was actually reviewed before approving. Find it with GitHub "List Pull Requests" filtered to the build's branch as the head branch, then "Get a Pull Request" for the full record, and "List Pull Request Reviews" to show whether anyone approved it and who. Display the pull request title, its author, and a clear reviewed or not reviewed indicator. If no matching pull request exists for that branch, say so plainly on the row rather than showing an empty panel.
From a row I want three actions, each behind a confirmation dialog that names the project and branch so nobody approves the wrong thing. Approve the held job with CircleCI "Approve a job", passing that held job's own id as the approval request id, which means the handler must read the workflow's jobs before it can approve. Cancel a workflow that should not ship with "Cancel a workflow". Rerun a failed one from its failed job with "Rerun a workflow". After each action, refresh the affected row so its new state is visible immediately.
Whenever someone approves or cancels, post a short note to our release channel with Slack "Send a Message", naming who did it along with the project, branch, and what happened, for example "Priya approved the production deploy on acme/api, branch release-2.4". Capture the name of the person acting in the app so the channel has a real record of who released what. Do not post anything for reruns, only approvals and cancellations.
Two details to get right. CircleCI project slugs are formed as vcs/org/repo with gh or bb as the prefix, and the slashes in them are not URL-encoded. The pipelines list covers the most recently built projects you follow, up to 250, so treat that as the scope of the app rather than promising literally every project ever created. Do not offer build artifact viewing anywhere in the app, since that is not available to us.
Keep the design dense but legible: this is a working surface someone scans quickly once a day, so favor a compact table with clear status and age indicators over large cards. If nothing is currently held, show a calm empty state confirming there is nothing waiting rather than an error.
What does this prompt do?
- Lists every build across all your projects that is paused and waiting for someone to approve it, so you stop opening each project's page one at a time
- Shows the project, branch, commit message, who kicked off the run, which step is holding, and how long it has been sitting there
- Pulls up the matching pull request next to each row, including its title, author, and whether anyone actually reviewed it before you sign off
- Lets you approve the held step, cancel a run that should not ship, or rerun a failed one, each behind a confirmation step
- Posts a short note to your release channel whenever someone approves or cancels, naming the person who did it
- Sorts the longest waits to the top and flags anything older than a week, because CircleCI stops accepting approvals after 90 days
What do I need to use this?
- A CircleCI account with access to the projects your team ships from
- A GitHub account connected to the same repositories, so the app can match each build to its pull request
- A Slack workspace and the channel where your team announces releases
- Permission to approve builds in CircleCI, since the app acts on your behalf
How can I customize it?
- Change the age threshold for the warning flag, so runs are highlighted after three days instead of a week
- Point the announcements at a different Slack channel, or add a second channel for cancellations only
- Narrow the list to specific projects or branches, for example only production and release branches
- Adjust what each row shows, such as adding the pull request review count or hiding runs triggered by scheduled jobs
FAQs
Will this work if my team uses Bitbucket instead of GitHub?
Does approving from this app do the same thing as approving inside CircleCI?
Why does it warn me about builds older than a week?
Can it see every project in my organization?
Who gets named in the Slack note?
Can I see the build artifacts or logs from here?
Related templates
Search creators for free, shortlist the best with your team, and spend an audit credit only when you decide someone is worth a closer look.
One screen showing invited, completed, and shortlisted counts for every open role, plus the stalled invites that have quietly gone nowhere.
Open one board each morning to see which of your facilities, suppliers and shipping lanes are sitting near trouble in the news right now.
Pick creators from your saved list and see their best and worst Instagram posts side by side, so your brief is built on what actually lands.
One screen where your hiring team watches every unscored candidate, reads the transcript alongside each answer, and scores and shortlists on the spot.
Drag every new company from your Harmonic saved searches through New, Tracking, Meeting and Passed, with a one click diligence brief on every card.
Stop clicking through every project to find what is waiting on you.
Open one screen every afternoon, see every held release in order of how long it has waited, and approve or cancel without leaving the page.