Work your whole Terraform approval queue from one board

By General Input

Every Terraform run that needs a human, across every workspace, on one board with approve, discard, and plain English plan summaries.

Integrations

  • HCP Terraform (Terraform Cloud)
  • Jira

Type

App

Categories

  • Engineering
  • Operations

Build me an app my platform team opens every morning to work the Terraform run queue across our entire HCP Terraform organization, instead of clicking into workspaces one at a time. HCP Terraform's own UI is workspace scoped, so there is no single screen that answers "what needs my approval right now" across the org. That screen is this app.

The main view is one board of every run that currently needs a human. Load it with List Organization Runs against our organization name, which is a setting on the app. The runs that need a human are the non_final and discardable status groups plus anything errored, so use filter[status_group] to pull non_final and discardable and also pull errored runs, then merge and de-duplicate by run id. Enrich each run with Show Run for its full status, timestamps, status timestamps, plan relationship and available actions, and with Show Workspace for the workspace name and the project it belongs to. Page through the results rather than showing only the first page, since a busy org will have more than one page of runs.

Group the board into three sections in this order: Needs approval, Errored, and Stuck in progress. Needs approval is runs sitting at planned, policy_override, or policy_soft_failed, meaning a plan finished and is waiting on a person to confirm. Errored is runs in the errored status. Stuck in progress is everything still moving or queued, such as pending, fetching, plan_queued, planning, cost_estimating, policy_checking, confirmed, apply_queued, and applying. Sort every group oldest first, so the run that has been waiting longest is the first thing an approver sees. Show a count next to each group heading.

Each card shows the workspace name, the project the workspace belongs to, who queued the run, the run message or commit message, the current status as a badge, and the run id. Include a link out to the run in HCP Terraform for anyone who wants the raw logs. Make the card readable at a glance: a person should be able to scan twenty of these and know which ones matter.

Waiting time is the headline element on every card, because approvals quietly sitting for days is the real pain this app fixes. Compute how long the run has been in its current waiting state from the run's timestamps and display it prominently in human terms, like "waiting 3 days" or "waiting 4 hours". Escalate the card visually as it ages, for example neutral under a day, amber past a day, and red past three days, and make those thresholds configurable. Sorting oldest first plus the age on the card is what stops old approvals from being invisible.

Every card carries inline action buttons so an approver never leaves the page. Apply Run confirms and applies a planned run. Discard Run throws it away. Force Execute Run jumps a pending run past the workspace queue. Only show each button when it is actually valid for that run's status, using the actions HCP Terraform reports on the run: apply and discard belong on runs awaiting confirmation, force execute belongs on runs stuck behind a queue. Ask for a short confirmation before applying or discarding, show the button in a pending state while the action runs, surface any error returned by the API on the card itself, and refresh that card's state afterwards so the board reflects what just happened.

Each card also gets a File a ticket button that creates a Jira issue with Create Issue. Prefill the summary with the workspace name and what went wrong, and prefill the description with the run's error message, the status, the workspace and project, who queued it, and a link back to the run in HCP Terraform. Let the person confirm or edit the project, issue type, and summary before it is filed, then show the resulting issue key on the card so nobody files the same ticket twice. Filing is always a deliberate click, never automatic.

Every card waiting for approval gets a Review this plan button that kicks off a background agent. The agent reads the run with Show Run, reads the plan with Show Plan for the change counts, and reads the machine readable plan with Get Plan JSON Output for the actual per resource actions. It then writes a plain English summary of what the apply will really do, in a few sentences an approver can read in ten seconds. It must explicitly call out any resource being destroyed or replaced, naming those resources, and lead with that when it finds any, since a replace on a database or a stateful resource is the thing an approver most needs to catch. If nothing is destroyed or replaced it should say so plainly.

The agent's verdict lands back on the card, stored against the run id so it persists and is visible to whoever opens the board next. Show the review inline on the card above the Apply button, so the approver reads the verdict before clicking Apply rather than after. Show the review's state on the card while it is running, and stamp it with when it was generated. Let a person re-run the review, and make it easy to review every waiting card at once rather than clicking each one.

Add a refresh control for the whole board and show when the data was last loaded, since this is a screen people leave open. When a group is empty, say so in a way that reads as good news rather than as an error, for example "Nothing waiting on approval".

Related prompts

Explore more prompts
One triage console for every Jira service desk queueRun your Terraform workspace audit from one live boardSee and fix Terraform variable drift across every workspaceInternet scanning campaign explorer for security teamsBulk IP triage queue that clears your SIEM alert backlogPatch prioritization board built on live exploitation dataSee every open Confluence action item on one boardDatadog alert noise cleanup board for monthly monitor reviewAttack surface inventory board your team triages each morningIndicator investigation workbench for security analysts